Вопрос или проблема
Я пытаюсь создать мультизагрузочный USB-накопитель для образов Debian, включая живую систему, netinst и DVD-1 iso.
Я дошел до создания разделов
- EFI fat32
- Boot luks2
- ISOs luks2
Затем я устанавливаю grub, нацеливаясь на EFI и загрузочные разделы, добавляю vmlinuz и initrd в загрузочный раздел вместе с пользовательским grub.cfg.
Grub успешно разблокирует загрузочный раздел, а затем запускает ядро. Однако на этом этапе я не могу заставить ядро разблокировать раздел ISOs, где находятся iso-образы.
Насколько я понимаю, файл initrd, загруженный с:
https://deb.debian.org/debian/dists/bookworm/main/installer-amd64/current/images/hd-media/
не включает поддержку cryptsetup, как и любой другой образ initrd, который я пробовал. Похоже, мне нужно редактировать или сделать свой собственный. Моя хост-система (тоже Debian) способна разблокировать раздел luks, так что это очевидно возможно, но я не знаю шагов, которые нужно предпринять, чтобы настроить это на USB-накопителе.
Мои grub.cfg
menuentries выглядят примерно так:
# Обходная ошибка "недостаток памяти"
rmmod tpm
menuentry "Установка" {
set isofile="/debian-${VERSION}-amd64-${installer}.iso"
set options="cryptdevice=UUID=${cryptuuid}:luks root=/dev/mapper/luks quiet splash"
linux /vmlinuz iso-scan/filename=$isofile $options
initrd /initrd.img
}
menuentry "Живая" {
loopback loop ($root)$isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile
initrd (loop)/live/initrd.img
}
На данный момент iso-scan не может найти iso-образ, и, похоже, что 3-й раздел никогда не разблокируется.
Я немного запутался с созданием пользовательского initrd и не знаю, с чего начать. Многие документы предполагают, что вы выполняете команды на локальной системе для локальной системы.
ИЗМЕНЕНИЕ:
Мне удалось добиться некоторого успеха, используя debootstrap
, а затем chroot
, установив несколько вещей, а затем используя mkinitramfs
, однако он не загружается должным образом
Сдался, ожидая устройство корневой файловой системы. Общие проблемы:
…
ALERT! /dev/mapper/luks не существует. Переход к оболочке!
Ответ или решение
Создание многоцелевого USB-накопителя с шифрованием и поддержкой метода загрузки через GRUB, включая поддержку LUKS2 и cryptsetup, может быть сложной задачей. Поскольку вы уже создали структуру разделов и установили GRUB, давайте разобьем вашу задачу на несколько четких шагов для достижения успеха.
Шаг 1: Установка необходимых пакетов
Прежде всего, убедитесь, что на вашем Debian-системе установлены необходимые пакеты для работы с LUKS и создания initrd:
sudo apt update
sudo apt install cryptsetup initramfs-tools
Шаг 2: Создание пользовательского initrd
Поскольку стандартные initrd образы могут не включать поддержку cryptsetup, вы можете создать свой собственный initrd. Следуйте этим шагам:
-
Настройка среды:
Создайте временный каталог для монтирования системы с помощьюdebootstrap
и перейдите в него:mkdir ~/custom_initrd cd ~/custom_initrd debootstrap --variant=minbase bookworm ./chroot http://deb.debian.org/debian/
-
Пакеты для initramfs:
Пройдите в chroot и установите необходимые пакеты для работы с шифрованием:sudo mount -o bind /dev ./chroot/dev sudo mount -o bind /proc ./chroot/proc sudo mount -o bind /sys ./chroot/sys sudo chroot ./chroot apt install cryptsetup
-
Создание initramfs:
Внутри chroot выполните команду для созданияinitramfs
:update-initramfs -c -k all exit
-
Копирование initrd:
После выхода из chroot скопируйте созданный initrd в нужное место на USB-накопителе:cp ./chroot/boot/initrd.img-* /path/to/your/usb/boot/
Шаг 3: Обновление конфигурации GRUB
Теперь, когда у вас есть собственный initrd, обновите конфигурацию GRUB, добавив необходимые параметры:
menuentry "Install" {
set isofile="/debian-${VERSION}-amd64-${installer}.iso"
set options="cryptdevice=UUID=${cryptuuid}:luks root=/dev/mapper/luks quiet splash"
linux /vmlinuz iso-scan/filename=$isofile $options
initrd /boot/initrd.img
}
menuentry "Live" {
set isofile="/debian-${VERSION}-amd64-${installer}.iso"
loopback loop ($root)$isofile
linux (loop)/live/vmlinuz boot=live findiso=$isofile
initrd (loop)/live/initrd.img
}
Шаг 4: Проверка UUID и прав доступа
Убедитесь, что UUID для вашего зашифрованного раздела корректен. Вы можете проверить его с помощью команды:
blkid
Проверьте, что ваш USB-накопитель и другие необходимые устройства доступны и корректно монтируются. Если перед загрузкой GRUB, вы можете увидеть, что /dev/mapper/luks
не существует, убедитесь, что полное имя устройства совпадает с тем, что вы указали в cryptdevice
.
Шаг 5: Тестирование
Теперь вы можете протестировать загрузку с USB-накопителя. Убедитесь, что GRUB может разблокировать зашифрованные разделы, а затем что initrd
корректно поддерживает cryptsetup
и может осуществлять доступ к ISO-файлам.
Заключение
Создание зашифрованного многоцелевого USB-накопителя требует внимания к деталям и знания работы с загрузчиками и шифрованием. Пройдя предложенные шаги и убедившись в корректности настроек, вы сможете использовать ваш USB для установки Debian через GRUB и взаимодействия с различными зашифрованными образами.
Если у вас возникнут дальнейшие вопросы, не стесняйтесь задавать их!