Всем привет! Столкнулся с проблемой запуска 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
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:
В сети искал решение, где-то пишут, что бывает баг, когда 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 выключен.