web-dev-qa-db-fra.com

Le double amorçage d'Ubuntu avec LVM et l'installation de LUKS échoue

J'ai un ordinateur portable HP Pavilion G7 avec prise en charge UEFI et un disque SSD GPT de 250 Go. Windows 8 était initialement installé sur un ordinateur portable, mais plus tard, j’ai effectué une installation propre de Windows 10 et réservé un espace vide pour Linux.

Maintenant, je souhaite disposer de disques dualboot, LUKS cryptés avec LVM, Win10 et Ubuntu16 Mate 16.04 LTS.

Ce type de configuration à deux démarrages avec LUKS et LVM n'est pas possible avec le programme d'installation de l'interface graphique Ubuntu Mate, mais j'ai trouvé les instructions suivantes à suivre (testé pour Ubuntu 13.04):

Comment puis-je installer Ubuntu chiffré avec LUKS avec double démarrage?

J'ai essayé de suivre ces instructions, mais je ne peux toujours pas ouvrir le disque chiffré lors du démarrage, car cryptsetup échoue.

Voici ma procédure, la numérotation est la même que dans les instructions:

  1. Démarrez à partir d’un DVD live ou d’une clé USB Ubuntu, puis sélectionnez "Essayer Ubuntu".
  2. Créez des partitions à l'aide de GParted inclus dans le disque live. GParted. Création de 2 partitions: démarrage et données pour LUKS. Windows esp sera également utilisé pour Ubuntu.

    (parted) print list                                                       
    Model: ATA Samsung SSD 850 (scsi)
    Disk /dev/sda: 250GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End    Size    File system  Name                          Flags
     1      1049kB  473MB  472MB   ntfs         Basic data partition          hidden, diag
     2      473MB   578MB  105MB   fat32        EFI system partition          boot, esp
     3      578MB   595MB  16.8MB               Microsoft reserved partition  msftres
     4      595MB   123GB  123GB   ntfs         Basic data partition          msftdata
     5      123GB   124GB  835MB   ntfs                                       hidden, diag
     6      124GB   125GB  524MB   ext4         NotUsed
     7      125GB   126GB  1049MB  ext4         linux-boot
     8      126GB   250GB  124GB                linux-data
    
    ubuntu-mate@ubuntu-mate:~$ lsblk
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda      8:0    0 232.9G  0 disk 
    ├─sda1   8:1    0   450M  0 part 
    ├─sda2   8:2    0   100M  0 part (This is Windows esp)
    ├─sda3   8:3    0    16M  0 part 
    ├─sda4   8:4    0 114.4G  0 part 
    ├─sda5   8:5    0   796M  0 part 
    ├─sda6   8:6    0   500M  0 part 
    ├─sda7   8:7    0  1000M  0 part (boot)
    └─sda8   8:8    0 115.7G  0 part (LUKS)
    

    partitions de format sda7, sda8

  3. Créez un conteneur LUKS à l'aide de ces commandes

    Sudo cryptsetup luksFormat /dev/sda8
    Sudo cryptsetup luksOpen /dev/sda8 pv_data
    
  4. Il est essentiel d’initialiser correctement le nouveau conteneur LUKS.

    ubuntu-mate@ubuntu-mate:~$ Sudo dd if=/dev/zero of=/dev/mapper/pv_data bs=16M
    dd: error writing '/dev/mapper/pv_data': No space left on device
    7469+0 records in
    7468+0 records out
    125303783424 bytes (125 GB, 117 GiB) copied, 381.69 s, 328 MB/s
    
  5. Dans le conteneur LUKS monté, créez un volume physique LVM, un groupe de volumes et deux volumes logiques. Le premier volume logique sera monté sur/et le second sera utilisé en tant que swap.

    ubuntu-mate@ubuntu-mate:~$ Sudo pvcreate /dev/mapper/pv_data
      Physical volume "/dev/mapper/pv_data" successfully created
    
    ubuntu-mate@ubuntu-mate:~$ Sudo vgcreate vg_data /dev/mapper/pv_data
      Volume group "vg_data" successfully created
    
    ubuntu-mate@ubuntu-mate:~$ Sudo lvcreate -n lv_swap -L 12g vg_data
      Logical volume "lv_swap" created.
    
    ubuntu-mate@ubuntu-mate:~$ Sudo lvcreate -n lv_root -L 80g vg_data
      Logical volume "lv_root" created.
    
    ubuntu-mate@ubuntu-mate:~$ lsblk
    NAME                  MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    sda                     8:0    0 232.9G  0 disk  
    ...
    └─sda8                  8:8    0 115.7G  0 part  
    └─pv_data           252:0    0 115.7G  0 crypt 
        ├─vg_data-lv_swap 252:1    0    12G  0 lvm   
        └─vg_data-lv_root 252:2    0    80G  0 lvm   
    
  6. Créer des systèmes de fichiers pour les deux volumes logiques

    ubuntu-mate@ubuntu-mate:~$ Sudo mkfs.ext4 /dev/mapper/vg_data-lv_root
    mke2fs 1.42.13 (17-May-2015)
    Creating filesystem with 20971520 4k blocks and 5242880 inodes
    Filesystem UUID: 1cbd1ea6-fa20-41f6-a870-5c159301bee4
    Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done   
    
    ubuntu-mate@ubuntu-mate:~$ Sudo mkswap /dev/mapper/vg_data-lv_swap
    Setting up swapspace version 1, size = 12 GiB (12884897792 bytes)
    no label, UUID=d665e5d7-b81f-4078-a5d5-bb1dd137fce2
    
  7. Installez Ubuntu à l’aide du programme d’installation graphique, en choisissant le partitionnement manuel.

    Attribuer: / à /dev/mapper/vg_data-lv_root, /boot à /dev/sda7, basculer en /dev/mapper/vg_data-lv_swap

    marquer les autres partitions "ne pas utiliser" sauf sda7 boot, lv_root, lv_swap, sda2 efi windows boot manager

    Sélectionnez le périphérique pour l'installation du chargeur de démarrage sur /dev/sda

  8. Une fois l’installateur graphique terminé, sélectionnez "poursuivre les tests" et ouvrez un terminal.

  9. Recherchez l'UUID des partitions LUKS: /dev/sda8

    ubuntu-mate@ubuntu-mate:~$ Sudo blkid
    /dev/sda1: LABEL="Recovery" UUID="FABE4708BE46BCBF" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="69ee7fd0-ed56-41b2-b974-b76647cb98d5"
    /dev/sda2: UUID="9A47-7CB4" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="3cfbb43a-3bfd-48ac-b673-109f469c4d72"
    /dev/sda4: UUID="82324D05324D0021" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="342a1cfb-8587-4dbc-a180-4872aa23aff5"
    /dev/sda5: UUID="D606B52306B50611" TYPE="ntfs" PARTUUID="6bebe835-96b9-422e-b9c1-baf69ae085b3"
    /dev/sda6: UUID="341a01d8-dcb7-4c51-99aa-22a84d53054b" TYPE="ext4" PARTLABEL="NotUsed" PARTUUID="f2524ea7-8736-4998-8705-5e9d22c42b3c"
    /dev/sda7: UUID="d0033e81-c785-4efc-a0d3-1128b7a99792" TYPE="ext4" PARTLABEL="linux-boot" PARTUUID="08e453f9-84ca-48b0-a26f-915f2462c578"
    /dev/sdb1: LABEL="UBUNTU-MATE" UUID="8EDE-65EA" TYPE="vfat" PARTLABEL="Microsoft Basic Data" PARTUUID="2c0f92b3-5d67-45c7-bc1b-ce8a1a284015"
    /dev/loop0: TYPE="squashfs"
    /dev/sda8: UUID="ec4c6b1d-0bf1-41d4-81ec-754987a5532f" TYPE="crypto_LUKS" PARTLABEL="linux-data" PARTUUID="18bf1837-1dda-477a-9007-e3478e12f565"
    /dev/sdc1: LABEL="FAT32GB" UUID="FE56-878C" TYPE="vfat" PARTUUID="58ee1847-01"
    /dev/mapper/pv_data: UUID="11kz5r-WtT9-c2oU-sDrB-ObWm-OCiP-t0JG9c" TYPE="LVM2_member"
    /dev/mapper/vg_data-lv_swap: UUID="d665e5d7-b81f-4078-a5d5-bb1dd137fce2" TYPE="swap"
    /dev/mapper/vg_data-lv_root: UUID="57c480e3-59c7-4203-ac5c-2a08075fd71c" TYPE="ext4"
    /dev/dm-1: UUID="d665e5d7-b81f-4078-a5d5-bb1dd137fce2" TYPE="swap"
    /dev/sda3: PARTLABEL="Microsoft reserved partition" PARTUUID="dfbb8924-81a1-4646-9baa-3a4977641f5e"
    
  10. Montez les périphériques appropriés aux emplacements appropriés dans/mnt et chrootez dedans:

    Sudo mount /dev/mapper/vg_data-lv_root /mnt
    Sudo mount /dev/sda7 /mnt/boot
    Sudo mount --bind /dev /mnt/dev
    Sudo chroot /mnt
    
  11. Créez un fichier nommé/etc/crypttab dans l'environnement chrooté:

    root@ubuntu-mate:/# cat /etc/crypttab
    # <target name> <source device> <key file> <options>
    pv_data UUID=ec4c6b1d-0bf1-41d4-81ec-754987a5532f none luks,retry=1,lvm=vg_data
    
  12. Créez un fichier nommé /etc/initramfs-tools/conf.d/cryptroot dans l'environnement chrooté:

    root@ubuntu-mate:/# cat /etc/initramfs-tools/conf.d/cryptroot
    CRYPTROOT=target=pv_data,source=/dev/disk/by-uuid/ec4c6b1d-0bf1-41d4-81ec-754987a5532f
    
  13. Exécutez la commande suivante dans l'environnement chrooté:

    root@ubuntu-mate:/# update-initramfs -k all -c
    update-initramfs: Generating /boot/initrd.img-4.4.0-38-generic
    cat: /proc/cmdline: No such file or directory
    update-initramfs: Generating /boot/initrd.img-4.4.0-31-generic
    cat: /proc/cmdline: No such file or directory
    

    Ces erreurs sont-elles critiques?

  14. Editez le fichier nommé/etc/default/grub dans l’environnement chrooté:

    root@ubuntu-mate:/# cat /etc/default/grub
    # If you change this file, run 'update-grub' afterwards to update
    # /boot/grub/grub.cfg.
    # For full documentation of the options in this file, see:
    #   info -f grub -n 'Simple configuration'
    
    GRUB_DEFAULT=0
    #GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    #GRUB_CMDLINE_LINUX=""
    GRUB_CMDLINE_LINUX="cryptopts=target=pv_data,source=/dev/disk/by-uuid/ec4c6b1d-0bf1-41d4-81ec-754987a5532f,lvm=vg_data"
    
    # Uncomment to enable BadRAM filtering, modify to suit your needs
    # This works with Linux (no patch required) and with any kernel that obtains
    # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
    #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
    
    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console
    
    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo'
    #GRUB_GFXMODE=640x480
    
    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true
    
    # Uncomment to disable generation of recovery mode menu entries
    #GRUB_DISABLE_RECOVERY="true"
    
    # Uncomment to get a beep at grub start
    #GRUB_INIT_TUNE="480 440 1"
    root@ubuntu-mate:/# 
    
  15. Exécutez la commande suivante dans l'environnement chrooté:

    root@ubuntu-mate:/# update-grub
    Generating grub configuration file ...
    ...
    /proc/devices: fopen failed: No such file or directory
    Found linux image: /boot/vmlinuz-4.4.0-38-generic
    Found initrd image: /boot/initrd.img-4.4.0-38-generic
    /proc/devices: fopen failed: No such file or directory
    device node not found
    /proc/devices: fopen failed: No such file or directory
    device node not found
    Found linux image: /boot/vmlinuz-4.4.0-31-generic
    Found initrd image: /boot/initrd.img-4.4.0-31-generic
    /proc/devices: fopen failed: No such file or directory
    /proc/devices: fopen failed: No such file or directory
    /proc/devices: fopen failed: No such file or directory
    device node not found
    ...
    device node not found
    /proc/devices: fopen failed: No such file or directory
    device node not found
    Found memtest86+ image: /memtest86+.elf
    Found memtest86+ image: /memtest86+.bin
    grep: /proc/mounts: No such file or directory
    Cannot find list of partitions!  (Try mounting /sys.)
    done
    root@ubuntu-mate:/# 
    

    Des dizaines d'erreurs device node not found supprimées ici, est-il normal que update-grub génère autant d'erreurs?

  16. Redémarrez et démarrez dans Ubuntu crypté. Vous devriez être invité à entrer un mot de passe.

    Lors du redémarrage, Windows 10 démarre par défaut. Si je frappe Esc et sélectionnez Ubuntu dans la liste, Ubuntu commence à démarrer mais cryptsetup échoue avec les messages d'erreur suivants:

    cryptsetup: cryptsetup failed, bad password or options?
    /scripts/local-top/cryptroot: line:1 /sbin/cryptsetup: not found.
    

Quelle est la raison de cet échec et comment puis-je le réparer?

Le fichier /etc/modules est vide. Devrait-il y avoir quelque chose?

3
user4955663

J'ai enfin eu le temps de réparer ça.

L'erreur était à l'étape 10. J'ai raté cette partie:

mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts

Après avoir résolu le problème, l'installation s'est bien déroulée.

Autres notes concernant le réponse référencée :

  • L'auteur a modifié la réponse de sorte que si vous lisez tous les commentaires disant que vous pouvez ignorer les étapes 12,14,15, vous vous trompez. Les modifications prennent en compte ces commentaires et ces étapes sont déjà supprimées des instructions. Ne sautez donc aucune étape.
  • J'ai installé Ubuntu Mate LTS 16.4.1 avec ces instructions.

J'ai aussi remarqué que il est en fait possible d'installer le double démarrage avec une partition chiffrée LUKS sans quitter l'interface graphique du programme d'installation d'Ubuntu . La réduction de cette option est que vous ne pouvez créer qu'une seule partition chiffrée. Donc, avec l’installateur graphique, vous pouvez avoir une configuration comme celle-ci:

  • démarrage non crypté
  • racine cryptée

puis créez un fichier d'échange à l'intérieur de la racine cryptée si nécessaire avec ces instructions

3
user4955663