LINUX.ORG.RU

SeaBIOS + Full Disk Encryption, возможно?

 , ,


2

1

На Thinkpad x230 прошил свежий Coreboot с SeaBIOS в качестве Payload. Работает без вопросов.

Подскажите пожалуйста, как теперь установить Debian GNU\Linux 10 c Full Disk Encryption на диск?

Заменить SeaBIOS на GRUB2 не подходит вариант (в текущем состоянии компилируется с ошибкой и иногда Windows нужен с другого диска).

прошил свежий Coreboot с SeaBIOS

как теперь установить Debian GNU\Linux 10 c Full Disk Encryption на диск?

«Я перенёс добровольную кастрацию, как мне теперь иметь детей?»

и иногда Windows нужен с другого диска

А что, GRUB2 на одном диске как-то запрещает грузиться с другого диска? BIOS вообще плевать, оно курит MBR, и про GRUB2 на другом диске после их физической замены даже не вспомнит.

А если UEFI (coreboot умеет в?), то клади загрузчик в {esp}\EFI\Boot\Bootx64.efi и проблем не будет. Иначе каждый раз придётся брать в руки efibootmgr и насильно учить UEFI своим записям заново.

mord0d ★★★★★
()

Заменить SeaBIOS на GRUB2 не подходит вариант (в текущем состоянии компилируется с ошибкой и иногда Windows нужен с другого диска).

Хм, я несколько дней назад собирал из master, вроде все нормально было.

GRUB надо собрать как payload и добавить его в CBFS в img/, что-то вроде

cbfstool build/coreboot.rom add-payload -n img/grub2 -f grub.elf
(это не точно, по памяти пишу).

Тогда SeaBIOS найдет его и при включении предложит его в списке с чего загружаться, вместе со всеми дисками. Таким образом будет и SeaBIOS и GRUB на флешке.

ch1p
()
Ответ на: комментарий от mord0d

UEFI (coreboot умеет в?)

Да, с Tianocore в качестве полезной нагрузки.

beresk_let ★★★★★
()
Ответ на: комментарий от ch1p

А что, GRUB2 на одном диске как-то запрещает грузиться с другого диска? BIOS вообще плевать, оно курит MBR

Мне нужен GRUB2 не на диске, а в качестве Payload внутри SeaBIOS, тогда получится зашифровать весь диск с Debian полностью вместе с разделом /boot.

Хм, я несколько дней назад собирал из master, вроде все нормально было.

Причина была в том, что нужно было установить зависимости: libfreetype6 libfreetype6-dev unifont

GRUB надо собрать как payload и добавить его в CBFS в img/

Спасибо. Нашел указанную вами команду тыц и тыц

Мог бы кто-то по шагам провести меня?

1. Собрать GRUB2 в качестве отдельного payload и добавить его в coreboot.rom (включающий SeaBIOS)

По ссылке https://www.coreboot.org/GRUB2#Out_of_tree_compilation выполнил:

git clone git://git.savannah.gnu.org/grub.git
cd grub
./bootstrap
./autogen.sh
./configure --with-platform=coreboot
make
sudo make install

Дальше ступор, где брать grub.cfg? Какие изменения в него вносить?

2. Установить Debian с Full Disk Ecnryption Нашел мануал, будет ли он работать в моем случае?

Кому интересно прошивал Coreboot по этой статье, все очень подробно и просто для новичка

koteg94
() автор топика
Ответ на: комментарий от koteg94

Можно проще. Соберите coreboot с grub и с помощью cbfstool извлеките из coreboot.rom payload в файл. Потом соберите обратно с SeaBIOS и добавьте ранее извлеченный payload.

ch1p
()
Ответ на: комментарий от ch1p

Собрал Coreboot с GRUB2, не подскажете команду которой можно извлечь payload в файл?

$ ./build/cbfstool ./build/coreboot.rom print
FMAP REGION: COREBOOT
Name                           Offset     Type           Size   Comp
cbfs master header             0x0        cbfs header        32 none
fallback/romstage              0x80       stage           78572 none
cpu_microcode_blob.bin         0x13400    microcode       26624 none
fallback/ramstage              0x19c80    stage          113446 none
config                         0x35800    raw               557 none
revision                       0x35a80    raw               674 none
cmos.default                   0x35d80    cmos_default      256 none
vbt.bin                        0x35ec0    raw              1433 LZMA (4281 decompressed)
cmos_layout.bin                0x364c0    cmos_layout      1804 none
fallback/postcar               0x36c40    stage           17688 none
fallback/dsdt.aml              0x3b1c0    raw             14631 none
fallback/payload               0x3eb40    simple elf     451633 none
(empty)                        0xacfc0    null           270872 none
bootblock                      0xef200    bootblock        3016 none
koteg94
() автор топика
Ответ на: комментарий от ch1p

1. grub.cfg извлек:

$ ./build/cbfstool build/x200_8mb_usqwerty_txtmode.rom extract -n grub.cfg -f grub.cfg
Found file grub.cfg at 0x4400, type raw, compressed 4620, size 4620

2. grub2.elf извлек:

$ ./build/cbfstool -h
extract [-r image,regions] [-m ARCH] -n NAME -f FILE [-U]   Extracts a file from ROM
$ ./build/cbfstool build/coreboot.rom extract -m x86 -n fallback/payload -f grub2.elf
Found file fallback/payload at 0x3eb40, type simple elf, compressed 451633, size 451633

3. Собрал Coreboot с SeaBIOS

4. Добавил grub.cfg в coreboot.rom:

$ ./build/cbfstool build/coreboot.rom add -f grub.cfg -n etc/grub.cfg -t raw

5. Добавил grub2.elf в качестве payload в coreboot.rom:

$ ./build/cbfstool build/coreboot.rom add-payload -f grub2.elf -n img/grub2 -c lzma

Прошил и запустил. Завтра доделаю.

koteg94
() автор топика
Ответ на: комментарий от ch1p

GRUB payload в меню SeaBIOS появляется и загружается, также загружается grub.cfg с различными опциями.

Установил Debian 10 на диск по мануалу.

Однако Debian не запускается. Пытаюсь дать команды в консоли grub:

cryptomount -a
set root='lvm/matrix-rootvol'
linux /vmlinuz root=/dev/mapper/matrix-rootvol cryptdevice=/dev/mapper/matrix-rootvol:root
initrd /initrd.img
Уже первая команда дает ошибку:
file /boot/grub/i386-coreboot/cryptodisk.mod not found

Также ни одна из опций grub.cfg его не запускает, первую опцию я модифицировал по мануалу.

koteg94
() автор топика
Ответ на: комментарий от Deleted

А чего ты добиться хочешь ?

Я написал несколько раз, хочу полностью зашифрованный диск включая раздел /boot.

Вдруг кто-то тебе подсунет вредоносный mbr ?

Или что угодно еще.

koteg94
() автор топика
Ответ на: комментарий от ch1p

Вытащил payload GRUB2.elf из образа Libreboot и прошил, стало лучше, 2 команды проходят.

cryptomount -a
set root='lvm/matrix-rootvol'
На третьей команде:
linux /vmlinuz root=/dev/mapper/matrix-rootvol cryptdevice=/dev/mapper/matrix-rootvol:root
Ошибка:
error: disk 'lvm/matrix-rootvol' not found
error: you need to load the kernel first

Устанавливал в точности по мануалу, несколько раз переустанавливал, ошибка повторяется.

koteg94
() автор топика
Ответ на: комментарий от koteg94

Проблема решена!

GRUB2 не поддерживает LUKS2, необходимо ставить дистрибутив с LUKS1.

reddit.com/r/coreboot/comments/cyn807/what_grub2_extra_modules_needed_for_working_full/

blogs.coreboot.org/blog/2019/08/16/gsoc-coreboot-coverity-weeks-11-12/

koteg94
() автор топика
4 июня 2020 г.
Ответ на: комментарий от koteg94

savannah.gnu.org/bugs/index.php?55093

Осталось дождаться релиза GRUB2 с добавленной поддержкой LUKS2.

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