Моя паранойя уже давно не позволяет использовать нешифрованные диски, которые имеют шанс быть украденными или потерянными. В частности, которые в ноутбуках, и просто внешние. Ничего сугубо секретного у меня там нет, но сам факт, что кто-то левый сможет легко получить доступ к моим личным данным, меня огорчает.
Но уже давно меня смущала одна штука — сам диск шифрованный (LUKS’ом), а маленький раздел /boot, где живёт grub со своимим модулями и конфигом, ядро и initrd, – нешифрованный. А это в принципе позволяет хакерам подсунуть в initrd троянов и прочую фигню..
И вот недавно я обнаружил, что grub, оказывается, умеет в процессе загрузки читать всё нужное с шифрованного раздела. И тогда /boot уже не обязательно делать отдельным разделом, а можно оставить внутри шифрованной корневой файловой системы.
Для этого grub’у всего-то надо подгрузить модули cryptodisk и luks (а также gcry_rijndael и gcry_sha1). Естественно, это всё делается не вручную, а добавлением параметра GRUB_ENABLE_CRYPTODISK
в /etc/default/grub и перезапуском grub-install.
Но как всегда, и тут нашлись грабельки: если попытаться запустить grub-install без этого параметра, когда /boot на шифрованном разделе, то grub-install отваливается, сообщая, что надо добавить параметр GRUB_ENABLE_CRYPTODISK=1
. Но и с таким значением он всё равно не работает, потому что правильное значение: GRUB_ENABLE_CRYPTODISK=yes
.
Оригинал этой записи в личном блоге.