El intercambio no funciona en una instalación limpia 14.04 usando el hogar encriptado

28

Actualización 3:

Decidí reinstalar el sistema desde cero para eliminar cualquier vieja grieta que había por ahí ya que también había experimentado otros problemas después de la actualización. Sin embargo, este problema persistió.

En una instalación limpia, la elección de instalar usando "hogar cifrado" conduce a una configuración de intercambio cifrada rota.

Actualización 2:

Arreglé el orden de partición del que se quejaba cfdisk, pero el problema persiste. El intercambio ahora está en / dev / sda6, y puedo ponerlo en funcionamiento de la siguiente manera:

~$ sudo mkswap /dev/sda6
Setting up swapspace version 1, size = 7998460 KiB
no label, UUID=18881d0f-d9ec-43be-a23f-0cbd78ea6d22

$sudo nano /etc/crypttab # Update crypttad with new UUID

$ sudo /etc/init.d/cryptdisks reload
 * Stopping remaining crypto disks...
 * cryptswap1 (stopped)...                                               [ OK ] 
 * Starting remaining crypto disks...                                        
 * cryptswap1 (starting)..
 * cryptswap1 (started)...                                               [ OK ] 
$ sudo swapon -a

$ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:04 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:08 18881d0f-d9ec-43be-a23f-0cbd78ea6d22 -> ../../sda6
lrwxrwxrwx 1 root root 10 May 11 09:04 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:04 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:04 D28230E68230D129 -> ../../sda2
lrwxrwxrwx 1 root root 10 May 11 09:08 fcc8c419-8fec-4d4d-b55e-9e4c3b04d21d -> ../../dm-0

Pero después de que un intercambio de reinicio no se activa y una vez más se ve así:

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 09:12 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May 11 09:12 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda5
lrwxrwxrwx 1 root root 10 May 11 09:12 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May 11 09:12 D28230E68230D129 -> ../../sda2

Supongo que en este momento es que al configurar el disco como cifrado, Linux ya no reconoce el tipo de partición y, por lo tanto, no lo carga correctamente, lo que hace que no se registre para su UUID y, por lo tanto, cryptswap no puede encontrarlo causando la falla. Pero no sé cómo solucionarlo ...

Pregunta actualizada:

Pruebas adicionales revelaron que podría poner en marcha el intercambio ejecutando $ mkswap / dev / sda5

y luego actualizando / etc / crypttab con el UUID correcto y siguiendo los pasos descritos aquí: ¿Cómo configuro un archivo de intercambio cifrado?

Sin embargo, el problema persiste cuando reinicio la computadora, el / dev / sda5 no aparece cuando ejecuto

$ ls -l /dev/disk/by-uuid/

Si lo hago:

$ cfdisk /dev/sda 

Obtuve el siguiente error:

FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap
                      Press any key to exit cfdisk

La utilidad gráfica "Disks" no se queja de ningún error al abrir el disco usándolo.

$ sudo fdisk -l

Disk /dev/sda: 256.1 GB, 256060514304 bytes
255 heads, 63 sectors/track, 31130 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x619aebf1

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848   100870143    50331648    7  HPFS/NTFS/exFAT
/dev/sda3       191397888   192397311      499712   83  Linux
/dev/sda4       192399358   500117503   153859073    5  Extended
/dev/sda5       484118528   500117503     7999488   82  Linux swap / Solaris
/dev/sda6       192399360   484118527   145859584   83  Linux

Partition table entries are not in disk order

Pregunta original

Después de actualizar a 14.04 (desde 13.04) mi computadora ha estado experimentando desaceleraciones severas, cuando ejecuté la parte superior noté que kswap0 ocupaba mucho tiempo de CPU. ¡También noté que no tenía ningún espacio de intercambio!

$ sudo swapon -a
swapon: /dev/mapper/cryptswap1: stat failed: No such file or directory

Parece que hay algún problema con mi configuración de intercambio encriptada (ni siquiera sabía que tenía una)

$ cat /etc/crypttab 
cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May  6 11:00 08b07f88-6da5-4b40-b062-42b3bb1c5f00 -> ../../sda3
lrwxrwxrwx 1 root root 10 May  6 11:00 19aa372c-05c8-4226-8f09-c54e5566e816 -> ../../sda6
lrwxrwxrwx 1 root root 10 May  6 11:00 A800B16E00B143DA -> ../../sda1
lrwxrwxrwx 1 root root 10 May  6 11:00 D28230E68230D129 -> ../../sda2

Y mirando mi fstab

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=19aa372c-05c8-4226-8f09-c54e5566e816 /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda3 during installation
UUID=08b07f88-6da5-4b40-b062-42b3bb1c5f00 /boot           ext2    defaults        0       2
# swap was on /dev/sda5 during installation
#UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Supongo que hay algo mal en la configuración de sda5, pero no sé cómo solucionarlo, ya que está configurado para encriptarse. Agradecería un poco de ayuda sobre cómo proceder.

ajn
fuente
No sé nada sobre particiones cifradas, pero ese primer error sugiere que la partición de intercambio no se ha montado. También se comenta la línea de montaje en / etc / fstab. Intentaría simplemente descomentar esa línea y reiniciar para verificar si eso lo soluciona
Anake
Estoy bastante seguro de que se supone que debe comentarse y que la línea cryptswap1 es responsable de montarla indirectamente utilizando la información en / etc / crypttab. ¿Su sugerencia seguramente lo montaría sin cifrar?
ajn
1
esto funcionara? https://ubuntuforums.org/showthread.php?t=2224129 No estoy seguro acerca de algunos de los comandos y no quiero arruinar Ubuntu.
Parece similar a lo que probé, esperaría que funcione para un reinicio y luego deje de funcionar nuevamente una vez que haya activado el intercambio cifrado por primera vez.
ajn
Por el momento, acabo de volver a usar el intercambio regular. El escenario principal contra el que estoy usando el cifrado es si alguien roba mi computadora portátil y alguien con habilidades moderadas de Linux decidieron buscar para ver si pueden encontrar algo interesante, es decir, lo más probable es que solo intente arrancar usando USB y montar mi partición de inicio. No tengo nada que creo que alguien encuentre lo suficientemente valioso como para intentar comenzar a recuperar fragmentos del intercambio. Realmente debería ser una opción de instalación para usar el hogar cifrado + intercambio regular.
ajn

Respuestas:

16

Error conocido

Hay un error (ver más abajo) que sobrescribe UUIDla partición tan pronto como se escriben los datos. Por lo tanto, no puede utilizar UUIDpara hacer referencia a la partición que se utilizará para el intercambio cifrado.

En estos días, el espacio de intercambio casi nunca se usa. En mi máquina, el intercambio solo se usa cuando abro la pestaña 40. Cuando no tengo intercambio, de repente mi computadora comienza a retrasarse y el navegador se cierra solo. O, en el caso del Chromiumnavegador, muchas pestañas "mueren" de repente.
Por esta razón, hacer referencia /dev/disk/by-uuid/en su dispositivo/etc/crypttab podría parecer que funciona por un tiempo, pero tan pronto como se utilice su espacio de intercambio, se sobrescribirá UUIDporque toda la partición se utiliza para el almacenamiento de datos cifrados.

Arreglo fácil

La solución fácil es hacer referencia a la partición de intercambio por dispositivo en su /etc/crypttab, por ejemplo:

cryptswap1 /dev/sda5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256

Advertencia: esto probablemente sea seguro en una computadora portátil (lo uso así), pero si está en una computadora de escritorio con unidades intercambiables o tiene otras razones para cambiar el diseño de la unidad / partición, no desea hacer esto, ya que La partición de almacenamiento normal podría utilizarse de repente para el intercambio.

Nota: debe reiniciar para que este cambio surta efecto, porque solo cuando se creará el arranque /dev/mapper/cryptswap1.

Corrección adecuada

La forma correcta de solucionar esto es asegurarse de que la parte de la partición sin procesar que almacena el UUIDarchivo no se sobrescriba con los datos de intercambio cifrados, por lo que aún estará allí al reiniciar. Sin embargo, no estoy seguro de dónde UUIDestá escrito y cuántos bytes ocupa. Podría, bajo su propio riesgo, probarlo así:

cryptswap1 UUID=abe3c568-c8fd-4dfb-b8e9-0520d442dd61 /dev/urandom swap,offset=36,cipher=aes-cbc-essiv:sha256

Tenga en cuenta el offset=36.

Por favor, si tiene una cuenta de Ubuntu One , inicie sesión y vaya al Bug # 1310058 en Launchpad y elija (o haga clic aquí): "Este error también me afecta a mí" para que el error gane 'popularidad' y sea más propenso a ser reparado.


Actualización 27/10/2014

También me topé con esto. No verificado por mí Parece un offsettruco con más verbosidad y comentarios sobre la reconstrucción de un intercambio roto.

https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1310058/comments/22

Redsandro
fuente
55
Solo quiero señalar que el error se está rastreando en bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/953875 desde hace unos días (mediados de marzo de 2015) el estado es "liberado fijo", aunque esa solución solo se aplica explícitamente a 15.04. Estoy mirando para ver si se está transfiriendo a 14.04 LTS ... y cuál podría ser el procedimiento de actualización "oficial"
Tommy Trussell
1
@TommyTrussell: No hacer backport sería una locura para LTS. Los errores para cosas cruciales como esta todavía se abren casi un año después del lanzamiento, por eso incluso las distribuciones de Linux biggist nunca estarán a la par con OSX y Windows. Desafortunadamente.
Redsandro
No estoy al tanto de la discusión pública sobre los errores, ya que se están reparando en OSX y Windows, entonces, ¿cómo pueden estar "a la par"? En mi experiencia con OSX, los errores se corrigen o no; sin discusión pública, por lo que son "opacos". Simplemente mencioné el nuevo número de error (porque el que vinculaste había sido marcado como duplicado) para que puedas actualizar tu referencia. Como puede ver en la discusión en la publicación del foro mencionada en el Bug 953875, la solución más estable puede diferir dependiendo del sistema init, que está cambiando en 15.04. Por lo tanto, la solución 14.04 puede tener desafíos técnicos para la compatibilidad hacia adelante.
Tommy Trussell
Simplemente digo que nunca verá algo como "Ah, por cierto, SWAP está roto" en un sistema como Windows u OSX. Este es el tipo de funcionalidad central que nunca obtendría RTM antes de ser probado y reparado. Eso es todo. En cuanto a la seguridad, no hay debates públicos, pero todavía hay estadísticas .
Redsandro
@Redsandro Bueno, es un sistema operativo gratuito y cosas como esta solo se solucionarán antes del lanzamiento si las personas descubren el error al probar el lanzamiento. Después del lanzamiento, es demasiado arriesgado que la corrección de errores rompa algo más en la configuración de alguien. Sin embargo, puede corregirse en una versión más reciente, por lo que puede valer la pena usar eso, pero las versiones provisionales suelen ser más inestables que las versiones LTS de todos modos, ya que el enfoque está más en las actualizaciones generales. Pero sí identificó por qué la prueba / corrección de errores / Garantía de calidad (QA) es tan importante y Ubuntu está mejorando en eso.
Ads20000
9

Estaba teniendo el mismo problema exacto en Ubuntu 14.04 y encontré este hilo; este enlace que me proporcionó el mutante funcionó bien para mí. /dev/disk/by-idUsé la referencia en lugar de / dev / sdXY, ya que esa referencia no siempre apunta a la misma partición física. Mi /etc/crypttabterminó como:

cryptswap1 /dev/disk/by-id/wwn-0x500...-part6 /dev/urandom swap, cipher=aes-cbc-essiv:sha256
DoubleE
fuente
3
¡Esta es la solución adecuada y fácil !
Serge Stroobandt
7

Simplemente use un intercambio sin cifrar

... y mantener / inicio encriptado

Intenté algunas de las otras soluciones sugeridas aquí. Aunque siguieron trabajando después de un reinicio en caliente, eventualmente todos fallaron después de un apagado y un reinicio en frío.

Esto nos dice que en realidad estamos lidiando con un error doble:

  1. El UUID de la unidad de intercambio se anula por el sistema de cifrado, y
  2. Hay un problema de tiempo de espera durante el arranque.

Estos pensamientos también se reflejan en los comentarios al error correspondiente presentado en Launchpad . Sin embargo, con el movimiento pendiente de Upstart a systemd, se hace poco para resolver el error en los sistemas LTS actuales.

En este punto, los siguientes pensamientos pasaron por mi mente:

  1. Durante la instalación del sistema, solo pedí cifrar mi \homepartición, nada más.
  2. Los riesgos que implica no tener una partición de intercambio cifrada son bastante limitados.
  3. Depende de Canonical limpiar su acto. No perderé más tiempo con esto.

Entonces, aquí está mi solución para restaurar el intercambio como un intercambio normal sin cifrar sin tener que reinstalar todo el sistema operativo.

  1. Si aún no lo ha hecho, instale blkid:$ sudo apt-get install blkid
  2. Edite /etc/crypttaby elimine toda la cryptswap1línea:$ sudo nano /etc/crypttab
  3. Inicie GParted desde el menú de Configuración del sistema.
  4. Verá una partición con un signo de exclamación. Esta debería ser la partición de intercambio defectuosa. Selecciónelo cuidadosamente y vuelva a formatearlo en una linux-swappartición. Después de haber aplicado esta operación, se le informa sobre el nuevo UUID de la partición de intercambio normal restaurada. Se le ofrece la oportunidad de guardar esta información. Si no lo hace, sepa que siempre puede recuperar el nuevo UUID desde la línea de comando con blkid:$ sudo blkid
  5. Ahora, es hora de restaurar /etc/fstabsu antigua gloria:$ sudo nano /etc/fstab

    • Elimine la línea completa que contiene una referencia a /dev/mapper/cryptswap1.
    • Elimine el comentario de la swaplínea anterior quitando el hash #delante de UUID=....
    • Ahora, reemplace el UUID antiguo con el nuevo obtenido anteriormente.
    • Escriba el archivo presionando Ctrl+ O y salga nanocon Ctrl+ X.
  6. Una vez hecho todo eso, ya puede comenzar a usar el nuevo intercambio sin cifrar con: $ sudo swapon -a
  7. Esta solución sobrevive tanto a los reinicios en caliente como al apagado con reinicio en frío.
Serge Stroobandt
fuente
1
Esta es la única respuesta que funcionó para mí, aunque intenté todo lo demás.
fifaltra
En gparted mi partición de intercambio tiene la bandera de arranque. ¿Funcionará esto o no podré arrancar?
Christian Skjødt
@ ChristianSkjødt Su partición de intercambio no debe tener establecida su bandera de arranque. De todos modos, el procedimiento anterior no afectaría nada de eso.
Serge Stroobandt el
2

Echa un vistazo a esto . Solucioné este problema simplemente reemplazando UUID = ... con / dev / sda3 en / etc / crypttab.

mutante
fuente
1
ejecute "sudo fdisk -l" primero para verificar cómo se llama su partición de intercambio, puede ser "/ etc / sda5" u otro, luego edite cryptab como lo describe el mutante. Esto funcionó para mí y sobrevive a un reinicio. Esto definitivamente es un error, ya que tengo este problema con una nueva instalación en un nuevo SSD. Elegí la opción "encriptar directorio de inicio" en la instalación, mucho mejor encriptar / inicio después de la instalación, especialmente si está copiando archivos de un antiguo / inicio de una instalación anterior.
Paul Williams
La sudo fdisk -lera algo que nadie estaba diciendo. ¡Gracias por esto! :)
Aman Alam
Al menos debe advertir a las personas que las /dev/sd*rutas pueden cambiar por capricho y provocar que la partición incorrecta sea destruida por los datos de intercambio. /dev/disk/by-ides superior
underscore_d
0

Tengo este problema, al igual que las personas en cuestión 332625 . Alguna combinación de suspender y reiniciar pierde el UUID de su partición de intercambio (como dice el comentario en su / etc / fstab , confirme esto con sudo blkd), por lo que la línea en su / etc / crypttab para usar ese UUID como intercambio cifrado falla.

No tengo suerte cambiando / etc / crypttab para usar la partición/dev nombre de ( / dev / sda6 en su caso) o el dev/disk/by-id/nombre en lugar del desaparecido UUID.

Lamentablemente, abandonar el intercambio cifrado es la solución más fácil y hasta ahora la mejor.

esquiador
fuente
este problema es muy antiguo, me pregunto por qué no lo arreglaron ya, ahora estoy enfrentando el mismo problema con mi escritorio y no puedo ejecutarlo, lo solucioné en mi computadora portátil en el pasado pero no recuerdo cómo :(
tomasb