LINUX.ORG.RU

Не удается загрузить kubuntu на lvm + luks шифрованном диске

 , , , ,


0

1

Всем привет! Столкнулся с проблемой запуска Kubuntu на зашифрованном диске.

Имеется ноутбук HP ProBook 450 G3. На него установил kubuntu 14.04 LTS. Установил новое ядро 4.2.8 - на старом 3.13 не работал WiFi.

Через какое-то время перенес кубунту с HDD на новый SSD. SSD размечен следующим образом:

  • /dev/sda1 fat32 147.00 MiB boot - раздел EFI
  • /dev/sda4 unknown 3.00 MiB bios_grub
  • /dev/sda2 ext2 boot 1000MiB - раздел boot
  • /dev/sda3 crypt-luks 458.98GiB - шифрованный с помощью cryptsetup раздел

Поверх шифрованного раздела /dev/sda3 был поднят LVM с разделами vg-root, vg-home, vg-swap. С помощью rsync кубунта была перенесена с HDD на SSD.

Загрузился с LiveCD Kubuntu. Зачрутился внутрь vg-root:

mount /dev/mapper/vg-root /mnt
mount /dev/sda2 /mnt/boot
mount /dev/sda1 /mnt/boot/efi
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt

Исправил /etc/fstab:

UUID=b90c3e6b-d624-4f45-b81e-4f8df7ae55c1  /boot  ext2 defaults 0 2
/dev/mapper/vg-root  /   ext4   errors=remount-ro  0 1
/dev/mapper/vg-home  /home   ext4   defaults 0  1
/dev/mapper/vg-swap  none    swap   sw       0  0

Сделал файл /etc/crypttab:

lvm UUID=5ba966a0-a552-4f1c-b728-48ff6396ebd9  none  luks,cipher=aes-xts-plain64:sha512

В файл /etc/initramfs-tools/modules добавил модули:

dm_mod
dm_crypt
sha256
sha512
aes_generic

Создал файл /etc/initramfs-tools/hooks/cryptokeys с таким скриптом:

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
prereqs)
        prereqs
        exit 0
        ;;
esac

if [ ! -x /sbin/cryptsetup ]; then
        exit 0
fi

. /usr/share/initramfs-tools/hook-functions
mkdir ${DESTDIR}/etc/console
copy_exec /sbin/cryptsetup /sbin

Создал файл /etc/initramfs-tools/scripts/local-top/cryptokeys со скриптом:

PREREQ="udev"

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac
modprobe -b dm_crypt
modprobe -b aes_generic
modprobe -b sha256
modprobe -b sha512
modprobe -b xts

echo 'HELLO'

while ! /sbin/cryptsetup luksOpen /dev/disk/by-uuid/5ba966a0-a552-4f1c-b728-48ff6396ebd9 lvm; do
       echo "Try again..."
done

Сделал:

chmod +x /etc/initramfs-tools/hooks/cryptokeys
chmod +x /etc/initramfs-tools/scripts/local-top/cryptokeys
update-initramfs -u -k all

Изменил файл /etc/default/grub:

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 nosplash"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="cryptdevice=/dev/disk/by-uuid/5ba966a0-a552-b728-48ff6396ebd9:vg root=/dev/mapper/vg-root"

#GRUB_TERMINAL=console
#GRUB_GFXMODE=640x480
#GRUB_GFXMODE=auto

#GRUB_DISABLE_LINUX_UUID=true

#GRUB_DISABLE_RECOVERY=true

#GRUB_INIT_TUNE="480 440 1"

Установил GRUB2:

update-grub2
grub-install --boot-directory=/boot --bootloader-id=ubuntu  --target=x86_64-efi --efi-directory=/boot/efi --recheck /dev/sda
grub-mkconfig -o /boot/efi/EFI/GRUB/grub.cfg

Теперь при старте системы вижу меню GNU GRUB version 2.02~beta2-9ubuntu1.7:

Ununtu
Advanced options for Ubuntu
   Ubuntu, with Linux 4.2.8-040208-generic
   Ubuntu, with Linux 4.2.8-040208-generic (recovery mode)
System setup

При выборе пункта Ubuntu не происходит ничего - просто черный экран и никакой реакции на клавиши. При выборе /Advanced options/Ubuntu, with Linux 4.2.8 появляется:

Loading Linux 4.2.8-040208-generic ...
Loading initial ramdisk ...
И опять никакой реакции на клавиши.

При выборе /Advanced options/Ubuntu, with Linux 4.2.8 (recovery mode) появляется:

Loading Linux 4.2.8-040208-generic ...
Loading initial ramdisk ...
потом много всякого...
затем всё стирается и появляется следующее:
Begin: Loading essential drivers ... [6.506507] sha256_ssse3: Using AVX2 optimized SHA-256 imlementation
done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... HELLO
Enter passphrase for /dev/disk/by-uuid/5ba966a0-a552-4f1c-b728-48ff6396ebd9: [593472279] random: nonblocking pool is initialized
Далее никакой реакции на ввод или Enter. Если нажать клавишу Esc - появляется мигающий логотип Kubuntu. Если опять нажать Esc - возвращаемся назад, но ниже добавляются следующие строки:
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... HELLO
Enter passphrase for /dev/disk/by-uuid/5ba966a0-a552-4f1c-b728-48ff6396ebd9:
И т.д.. можно нажимать esc и каждый раз будут добавляться те же 3 строчки.

В сети искал решение, где-то пишут, что бывает баг, когда Grub2 работает в графическом режиме, игнорируя ввод пользователя. Рекомендуют перевести в текстовый режим с помощью этих строчек:

GRUB_CMDLINE_LINUX_DEFAULT="quiet nosplash"
GRUB_TERMINAL=console
GRUB_GFXMODE=640x480
#GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=text
Игрался с настройками граба по-всякому (поэтому в конфиге есть закомменченые строчки), но не удалось его заставить работать - после выбора варианта запуска системы выводит ошибку:
error: invalid video mode specification 'text'
booting in blind mode
После чего, разумеется, вообще ничего не показывает. Если вводить пароль «вслепую» - ничего не происходит.

Уже несколько дней бьюсь, пытаясь заставить систему принимать пароль. Куда хоть двигаться дальше (кроме замены ОС)? Думал уже поставить ELILO вместо GRUB2, но пока не нашел подробностей установки его при наличии шифрованного раздела (хотя и не его это, наверное, проблемы - /boot всё равно не шифрован).

P.S. SSD имеет таблицу GPT. Загрузка ноутбука проходит в режиме UEFI (legacy boot выключен). Если загрузиться с LiveCD, то шифрованный раздел нормально расшифровывается и подхватываются разделы LVM. Все манипуляции по установке GRUB и т.п. делались после chroot, ошибок при установке GRUB2 не возникает. Secure boot выключен.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.