Двойная загрузка Ubuntu с LVM и LUKS не удалась
У меня есть ноутбук HP Pavilion G7 с поддержкой UEFI и жесткий диск GPT объемом 250 ГБ. Изначально на ноутбуке была установлена Windows 8, но позже я сделал чистую установку Windows 10 и зарезервировал некоторое свободное место для Linux.
Теперь я хочу иметь двойную загрузку Win10 & Ubuntu16 Mate 16.04 LTS, зашифрованные диски LUKS с LVM.
Такая конфигурация двойной загрузки с LUKS и LVM невозможна с установщиком Ubuntu Mate GUI, но я обнаружил следующие инструкции (протестировано для Ubuntu 13.04):
Как я могу установить Ubuntu, зашифрованный с помощью LUKS с двойной загрузкой?
Я пытался следовать этим инструкциям, но всегда при загрузке не могу открыть зашифрованный диск, потому что cryptsetup
выходит из строя.
Вот моя процедура, нумерация такая же, как в инструкции:
- Загрузитесь с живого DVD или USB-накопителя Ubuntu и выберите "Попробуйте Ubuntu".
Создавайте разделы с помощью GParted, включенного в живой диск. GParted. Создано 2 раздела: загрузочный и данные для LUKS. Windows ESP также будет использоваться для 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)
формат разделов sda7, sda8
Создайте контейнер LUKS, используя эти команды
sudo cryptsetup luksFormat /dev/sda8 sudo cryptsetup luksOpen /dev/sda8 pv_data
Очень важно правильно инициализировать новый контейнер 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
Внутри подключенного контейнера LUKS создайте физический том LVM, группу томов и два логических тома. Первый логический том будет смонтирован в /, а второй будет использован как своп.
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
Создайте файловые системы для двух логических томов
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
Установите Ubuntu с помощью графического установщика, выбрав ручную разметку.
Назначение:
/
в/dev/mapper/vg_data-lv_root
,/boot
в/dev/sda7
поменять на/dev/mapper/vg_data-lv_swap
пометьте другие разделы как "не использовать", кроме sda7 boot, lv_root, lv_swap, sda2 efi windows boot manager
Выберите устройство для установки загрузчика в
/dev/sda
Как только графический установщик закончится, выберите "продолжить тестирование" и откройте терминал.
Найдите UUID разделов 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"
Смонтируйте соответствующие устройства в соответствующие места в /mnt и выполните в нем chroot:
sudo mount /dev/mapper/vg_data-lv_root /mnt sudo mount /dev/sda7 /mnt/boot sudo mount --bind /dev /mnt/dev sudo chroot /mnt
Создайте файл с именем /etc/crypttab в среде chrooted:
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
Создайте файл с именем /etc/initramfs-tools/conf.d/cryptroot в среде chrooted:
root@ubuntu-mate:/# cat /etc/initramfs-tools/conf.d/cryptroot CRYPTROOT=target=pv_data,source=/dev/disk/by-uuid/ec4c6b1d-0bf1-41d4-81ec-754987a5532f
Выполните следующую команду в изолированной среде:
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
Эти ошибки важны?
Отредактируйте файл с именем /etc/default/grub в изолированном окружении:
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:/#
Выполните следующую команду в изолированной среде:
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:/#
Дюжины
device node not found
здесь удалены ошибки, это нормально, что update-grub выдаёт столько ошибок?Перезагрузитесь и загрузитесь в зашифрованную Ubuntu. Вам будет предложено ввести пароль.
Во время перезагрузки Windows 10 начинает загружаться по умолчанию. Если я нажимаю Esc и выбираю Ubuntu из списка, Ubuntu начинает загрузку, но
cryptsetup
завершается со следующими сообщениями об ошибках:cryptsetup: cryptsetup failed, bad password or options? /scripts/local-top/cryptroot: line:1 /sbin/cryptsetup: not found.
В чем причина этого сбоя и как я могу это исправить?
/etc/modules
файл пуст Должно ли быть что-то?
1 ответ
Наконец-то у меня появилось время исправить это.
Ошибка была в шаге 10. Я пропустил эту часть:
mount -t proc proc /proc
mount -t sysfs sys /sys
mount -t devpts devpts /dev/pts
После исправления установка прошла нормально.
Другие примечания относительно ссылочного ответа:
- Автор изменил ответ так, чтобы, если вы прочитали все комментарии, сказав, что можете пропустить шаги 12,14,15, вы ошибетесь. Модификации учитывают эти комментарии, и эти шаги уже удалены из инструкций, поэтому не пропускайте никаких шагов.
- Я установил Ubuntu Mate LTS 16.4.1 с этими инструкциями.
Я также заметил, что на самом деле можно установить двойную загрузку с зашифрованным разделом LUKS без выхода из графического интерфейса установщика Ubuntu. Уменьшение этой опции заключается в том, что вы можете создать только 1 зашифрованный раздел. Таким образом, с помощью GUI-инсталлятора вы можете получить такую конфигурацию:
- незашифрованная загрузка
- зашифрованный корень
и затем создайте файл подкачки внутри зашифрованного корня, если необходимо, с этими инструкциями