Le swap ne fonctionne pas sur une installation 14.04 propre en utilisant la maison cryptée


28

Mise à jour 3:

J'ai décidé de réinstaller le système à partir de zéro pour supprimer toute vieille déchirure qui traînait depuis que j'avais également rencontré d'autres problèmes après la mise à niveau. Cependant, ce problème a persisté.

Sur une installation propre, le choix d'installer à l'aide de "la maison cryptée" conduit à une configuration de swap cryptée cassée.

Mise à jour 2:

J'ai corrigé l'ordre de partage dont cfdisk s'est plaint, mais son problème persiste. Le swap est maintenant sur / dev / sda6, et je peux le faire fonctionner comme suit:

~$ 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

Mais après un redémarrage, le swap ne s'active pas et il ressemble à nouveau à ceci:

$ 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

Ma conjecture pour le moment est que lors de la configuration du disque comme étant chiffré, Linux ne reconnaît plus le type de partition et ne le charge donc pas correctement, ce qui ne l'enregistre pas pour son UUID et donc cryptswap ne peut pas le trouver à l'origine de l'échec. Mais je ne sais pas comment y remédier ..

Question mise à jour:

Des tests supplémentaires ont révélé que je pouvais obtenir l'échange en cours d'exécution en exécutant $ mkswap / dev / sda5

puis mettre à jour / etc / crypttab avec l'UUID correct et suivre les étapes décrites ici: Comment configurer un fichier d'échange chiffré?

Cependant, le problème persiste lorsque je redémarre l'ordinateur, le / dev / sda5 n'apparaît pas lorsque j'exécute

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

Si je fais:

$ cfdisk /dev/sda 

J'obtiens l'erreur suivante:

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

L'utilitaire graphique "Disques" ne se plaint d'aucune erreur lors de l'ouverture du disque l'utilisant.

$ 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

Question d'origine:

Après la mise à niveau vers 14.04 (à partir du 13.04), mon ordinateur a connu de graves ralentissements, lorsque j'ai exécuté top, j'ai remarqué que kswap0 prenait beaucoup de temps processeur. J'ai aussi remarqué que je n'avais pas d'espace de swap!

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

Il semble y avoir un problème avec ma configuration de swap crypté (je ne savais même pas que j'en avais un)

$ 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

Et en regardant mon 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

Je suppose qu'il y a quelque chose qui ne va pas dans la configuration de sda5, mais je ne sais pas comment le réparer car il est configuré pour être crypté. J'apprécierais un peu d'aide sur la façon de procéder.


Je ne sais rien des partitions chiffrées, mais cette première erreur suggère que la partition de swap n'a pas été montée. La ligne de montage de celle-ci dans / etc / fstab est également commentée. J'essaierais simplement de décommenter cette ligne et de redémarrer pour vérifier si cela la corrige
Anake

Je suis sûr qu'il est censé être commenté et que la ligne cryptswap1 est responsable de le monter indirectement en utilisant les informations dans / etc / crypttab. Votre suggestion le monterait sûrement de manière non cryptée?
AJN

1
Est-ce que ça va marcher? https://ubuntuforums.org/showthread.php?t=2224129 Je ne suis pas sûr de certaines des commandes et je ne veux pas bousiller Ubuntu.

Cela ressemble à ce que j'ai essayé, je m'attendrais à ce qu'il fonctionne pendant un redémarrage puis cesse de fonctionner une fois que vous avez activé l'échange crypté pour la première fois.
AJN

Pour le moment, je reviens à l'utilisation du swap régulier. Le scénario principal contre lequel j'utilise le cryptage est si quelqu'un vole mon ordinateur portable et qu'une personne ayant des compétences Linux modérées décide de fouiller pour voir si elle peut trouver quelque chose d'intéressant, c'est-à-dire très probablement juste essayer de démarrer en utilisant USB et monter ma partition domestique. Je n'ai rien que je pense que quelqu'un trouverait assez précieux pour essayer de commencer à en récupérer des fragments à partir du swap. Cela devrait vraiment être une option d'installation pour utiliser la maison cryptée + l'échange régulier.
AJN

Réponses:


16

Bug connu

Il existe un bogue (voir ci-dessous) qui écrase UUIDla partition dès que les données y sont écrites. Par conséquent, vous ne pouvez pas utiliser le UUIDpour référencer la partition à utiliser pour l'échange crypté.

De nos jours, l'espace d'échange n'est presque jamais utilisé. Sur ma machine, l'échange n'est utilisé que lorsque j'ouvre mon 40e onglet. Quand je n'ai pas d'échange, soudain mon ordinateur commence à traîner et le navigateur se ferme. Ou dans le cas du Chromiumnavigateur, de nombreux onglets vont soudainement «mourir».
Pour cette raison, le référencement /dev/disk/by-uuid/dans votre /etc/crypttabpeut sembler fonctionner pendant un certain temps, mais dès que votre espace de swap est réellement utilisé, il remplacera le UUIDcar la partition entière est utilisée pour le stockage de données cryptées.

Easy Fix

La solution simple consiste à référencer la partition de swap par périphérique dans votre /etc/crypttab, par exemple:

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

Avertissement: cela est probablement sans danger sur un ordinateur portable (je l'utilise comme ça), mais si vous êtes sur un bureau avec des lecteurs échangeables ou si vous avez d'autres raisons de changer la disposition du lecteur / de la partition, vous ne voulez pas le faire, en tant que une partition de stockage normale peut soudainement être utilisée pour l'échange.

Remarque: Vous devez redémarrer pour que cette modification prenne effet, car uniquement lorsque le démarrage sera /dev/mapper/cryptswap1créé.

Correctif correct

La bonne façon de résoudre ce problème est de vous assurer que la partie de la partition brute qui stocke le UUIDn'est pas remplacée par des données d'échange cryptées, de sorte qu'elle sera toujours là au redémarrage. Cependant, je ne sais pas où UUIDest écrit le et combien d'octets il prend. Vous pouvez, à vos risques et périls, le tester comme ceci:

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

Notez le offset=36.

S'il vous plaît, si vous avez un compte Ubuntu One , connectez-vous et accédez au bogue # 1310058 sur Launchpad et choisissez (ou cliquez ici): "Ce bogue m'affecte également", de sorte que le bogue gagnera en popularité et sera plus susceptible d'être corrigé.


Mise à jour 2014-10-27

J'ai également trébuché là-dessus. Non vérifié par moi. Cela ressemble à une offsetastuce avec plus de verbosité et de commentaires sur la reconstruction d'un swap cassé.

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


5
Je veux juste noter que le bug est suivi sur bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/953875 il y a quelques jours (mi-mars 2015), le statut est "version fixe", bien que ce correctif ne s'applique explicitement qu'à 15.04. Je cherche à voir s'il est rétroporté vers 14.04 LTS ... et quelle pourrait être la procédure de mise à jour "officielle"
Tommy Trussell

1
@TommyTrussell: Ne pas rétroporter serait fou pour LTS. Les bugs pour des choses cruciales comme celle-ci restent ouverts presque un an après la sortie, c'est pourquoi même les distributions Linux biggist ne seront jamais à égalité avec OSX et Windows. Malheureusement.
Redsandro

Je ne suis pas au courant des discussions publiques sur les bogues car ils sont corrigés dans OSX et Windows, alors comment peuvent-ils être "à la hauteur"? D'après mon expérience avec OSX, les bugs sont corrigés ou non; pas de discussion publique, ils sont donc "opaques". J'ai simplement mentionné le nouveau numéro de bogue (car celui que vous avez lié avait été marqué comme étant en double) afin que vous puissiez mettre à jour votre référence. Comme vous pouvez le voir dans la discussion lors de la publication sur le forum mentionnée dans le bogue 953875, le correctif le plus stable peut différer en fonction du système init, qui change en 15.04. Le correctif 14.04 peut donc présenter des problèmes techniques de compatibilité ascendante.
Tommy Trussell

Je dis simplement que vous ne verrez jamais quelque chose comme "Oh au fait, SWAP est cassé" sur un système comme Windows ou OSX. C'est le genre de fonctionnalité de base qui n'obtiendrait jamais RTM avant d' être testée et corrigée. C'est tout. Quant à la sécurité, pas de discussions publiques mais il y a quand même des statistiques .
Redsandro

@Redsandro Eh bien, c'est un système d'exploitation gratuit et des trucs comme ça ne seront corrigés avant la sortie que si les gens découvrent le bogue lors du test de la version. Après la publication, il est tout simplement trop risqué que la correction du bogue brise quelque chose d'autre dans la configuration de quelqu'un. Cependant, il peut être corrigé dans une version plus récente - il peut donc être utile de l'utiliser - mais les versions intermédiaires sont généralement plus instables que les versions LTS car l'accent est davantage mis sur les mises à jour générales. Mais vous avez identifié pourquoi le test / la correction / l'assurance qualité (QA) des bogues est si important et Ubuntu s'améliore.
Ads20000

9

J'avais le même problème exact dans Ubuntu 14.04 et suis tombé sur ce fil; ce lien fourni par le mutant a bien fonctionné pour moi. J'ai utilisé la /dev/disk/by-idréférence plutôt que / dev / sdXY, car cette référence ne pointe pas toujours vers la même partition physique. Mon /etc/crypttabfini comme:

cryptswap1 /dev/disk/by-id/wwn-0x500...-part6 /dev/urandom swap, cipher=aes-cbc-essiv:sha256

3
Ceci est la solution appropriée et facile !
Serge Stroobandt

7

Utilisez simplement un échange non chiffré

... et garder / home crypté

J'ai essayé quelques autres solutions suggérées ici. Même s'ils ont continué à fonctionner après un redémarrage à chaud, ils ont finalement tous échoué après un arrêt et un redémarrage à froid.

Cela nous dit que nous avons en fait affaire avec un double bug:

  1. L'UUID du lecteur de swap est remplacé par le système de cryptage, et
  2. Il y a un problème de temporisation lors du démarrage.

Ces pensées sont également reflétées dans les commentaires sur le bogue correspondant déposé sur Launchpad . Cependant, avec le passage imminent d'Upstart à systemd, peu est fait pour résoudre le bogue sur les systèmes LTS actuels.

À ce stade, les pensées suivantes m'ont traversé l'esprit:

  1. Pendant l'installation du système, j'ai demandé de chiffrer uniquement ma \homepartition, rien d'autre.
  2. Les risques liés à l'absence d'une partition de swap chiffrée sont plutôt limités.
  3. C'est à Canonical de nettoyer leur acte. Je ne perdrai plus de temps avec ça.

Voici donc ma solution pour restaurer l'échange comme un échange normal et non chiffré sans avoir à réinstaller tout le système d'exploitation.

  1. Si vous ne l'avez pas déjà fait, installez blkid:$ sudo apt-get install blkid
  2. Modifiez /etc/crypttabet supprimez toute la cryptswap1ligne:$ sudo nano /etc/crypttab
  3. Démarrez GParted à partir du menu Paramètres système.
  4. Vous verrez une partition avec un point d'exclamation. Cela devrait être la partition de swap défectueuse. Sélectionnez-le soigneusement et reformatez-le sur une linux-swappartition. Après avoir appliqué cette opération, vous êtes informé du nouvel UUID de la partition de swap normale restaurée. Vous avez la possibilité de sauvegarder ces informations. Si vous ne le faites pas, sachez que vous pouvez toujours récupérer le nouvel UUID à partir de la ligne de commande avec blkid:$ sudo blkid
  5. Maintenant, il est temps de retrouver /etc/fstabson ancienne gloire:$ sudo nano /etc/fstab

    • Supprimez la ligne entière contenant une référence à /dev/mapper/cryptswap1.
    • Décommentez l'ancienne swapligne en supprimant le hachage #devant UUID=....
    • Maintenant, remplacez l'ancien UUID par le nouveau obtenu précédemment.
    • Écrivez le fichier en appuyant sur Ctrl+ O et quittez nanoavec Ctrl+ X.
  6. Une fois tout cela fait, vous pouvez déjà commencer à utiliser le nouveau swap non chiffré avec: $ sudo swapon -a
  7. Cette solution survit à la fois aux redémarrages à chaud et aux arrêts avec redémarrage à froid.

1
C'est la seule réponse qui a fonctionné pour moi, même si j'ai essayé tout le reste.
fifaltra

Dans gparted, ma partition de swap a le drapeau de démarrage. Est-ce que cela fonctionnera toujours ou serai-je incapable de démarrer?
Christian Skjødt

@ ChristianSkjødt Votre partition de swap ne devrait pas avoir son indicateur de démarrage défini. Quoi qu'il en soit, la procédure ci-dessus n'affecterait rien de tout cela.
Serge Stroobandt

2

Jetez un oeil à cela . J'ai résolu ce problème en remplaçant simplement UUID = ... par / dev / sda3 dans / etc / crypttab.


1
exécutez d'abord "sudo fdisk -l" pour vérifier le nom de votre partition de swap, elle peut être "/ etc / sda5" ou autre, puis éditez cryptab comme décrit par mutant. Cela a fonctionné pour moi et survit à un redémarrage. C'est définitivement un bug car j'ai eu ce problème avec une nouvelle installation sur un nouveau SSD. J'ai opté pour l'option "crypter le répertoire personnel" lors de l'installation, beaucoup mieux pour crypter / home après l'installation, surtout si vous copiez des fichiers d'un ancien / home d'une installation précédente.
Paul Williams

Le sudo fdisk -létait quelque chose que personne racontait. Merci pour cela! :)
Aman Alam

Vous devez au moins avertir les gens que les /dev/sd*chemins peuvent changer sur un coup de tête et entraîner la destruction de la mauvaise partition par les données d'échange. /dev/disk/by-idest supérieur.
underscore_d

0

J'ai ce problème, tout comme les personnes en question 332625 . Une combinaison de suspension et de redémarrage perd l'UUID de votre partition de swap (comme le dit le commentaire dans votre / etc / fstab , confirmez-le avec sudo blkd), donc la ligne dans votre / etc / crypttab pour utiliser cet UUID comme swap crypté échoue.

Je n'ai aucune chance de changer / etc / crypttab pour utiliser le /devnom de la partition ( / dev / sda6 dans votre cas) ou le dev/disk/by-id/nom au lieu de l'UUID en voie de disparition.

L'abandon de l'échange crypté est malheureusement la solution la plus simple et la meilleure.


ce problème est très ancien, je me demande pourquoi ils ne l'ont pas déjà résolu, maintenant je suis confronté au même problème avec mon bureau et je ne peux pas le faire fonctionner, je l'ai résolu sur mon ordinateur portable dans le passé mais je ne me souviens pas comment :(
tomasb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.