Как загрузить записываемый образ диска (созданный с помощью dd из Debian или другого дистрибутива) с помощью GRUB?

Вопрос или проблема

Я создал multi-boot USB-накопитель для загрузки различных ISO-файлов, которые могут быть как живыми системами, так и использоваться для установки различных дистрибутивов Linux.

sda
 -sda1     1M      | BIOS Boot раздел для хранения MBR
 -sda2     64M     | ESP для UEFI загрузки
 -sda3     100G    | EXT4 для ISO & IMAGE 

Я могу легко запустить такие ISO-файлы, как Debian, Ubuntu, Kali или другие дистрибутивы с него, используя соответствующую menuentry в

/efi/boot/grub/grub.cfg

Теперь у меня есть disk-image, созданный с помощью dd с целого USB-накопителя, где установлен Debian.

Однако это не настоящий ISO или образ, а скорее disk-image (снимок/резервная копия) USB-накопителя со всеми его разделами, с именованным примером debian1.iso или debian2.img

Сейчас я скопировал этот файл на раздел sda3 вместе с другими правильными ISO.

Я создал следующую menuentry с chainloader, но при первой попытке GRUB просто перезапускает процесс загрузки, а при второй попытке я получаю ошибку ‘invalid signature’.

menuentry "Chainload GRUB from USB Image debian1.iso" {
    loopback loop (hd0,3)/debian1.iso
    set root=(loop,1)
    chainloader +1
}

menuentry "Boot Debian from ISO on USB (UEFI)" {
    set root=(hd0,3)
    loopback loop /debian2.img
    set root=(loop,1)
    chainloader /EFI/debian/grubx64.efi
}

Как я могу запустить этот disk-image из GRUB и как должна выглядеть запись в меню?

Возможно, это возможно, если образ диска записан в отдельный раздел, но я этого не хочу.

Вот записи, которые я нашел, но они в основном касаются ISO-файлов.

GRUB2: загрузка на второй (другой) жесткий диск

Использование загрузочного образа live CD, смонтированного на жестком диске

Загрузка файла образа EXT4 из GRUB2

как загрузить из файлового образа, содержащего несколько разделов?

установить grub на образ диска

Как загрузить Linux из образа на диске или “установка для бедных”?

GRUB загрузка ISO/образа диска из раздела NTFS

MEMDISK может загружать образы флоппи, образы жестких дисков и некоторые ISO образы.

Сначала я думал, что это невозможно, но потом обнаружил, что это может быть возможно с memdisk или GRUB2, используя loopback и overlayfs.

Так что это действительно возможно.

Memdisk

Memdisk в первую очередь предназначен для временных загрузочных сред,
например, запуска установочных программ или диагностических инструментов, где
постоянное хранение не требуется или не желательно.

Он очень полезен, если вы просто хотите протестировать образ диска.

loopback и overlayfs

Вы можете загрузить образ диска с помощью функции loopback в GRUB и сделать
файловую систему записываемой, объединив ее с overlayfs. Слой наложения
размещается поверх образа только для чтения, записывая изменения в отдельный
раздел или файл. Таким образом, оригинальный образ остается неизменным, и
вы можете сохранить модификации.

Мне нужно понять, как обрабатывать изменения, если это сработает.

Мой GRUB установлен на USB-накопитель без операционной системы, поэтому я не могу использовать grub-mkconfig.

Поэтому мне нужно вносить все изменения вручную.

Возможно ли загрузить disk-image через GRUB, который будет записываемым, вносить изменения и чтобы эти изменения записывались прямо в образ и как?

Есть ли другой способ кроме memdisk для загрузки, где я могу вносить изменения?

Если это работает с loopback и overlayfs, что мне нужно учитывать, как его настроить и как выглядит menuentry?

Существует ли какой-то небольшой хак, или мне стоит загрузить дополнительные файлы на USB GRUB, чтобы это работало и как?

Диск-образ также имеет GRUB, и операционная система на нем зашифрована с помощью LUKS.

Возможно ли распаковать образ в память с помощью GRUB, вызвать GRUB из образа диска, разблокировать LUKS, загрузить ОС, внести изменения и сохранить все это как новый образ диска на какой-то раздел?

.

Ответ или решение

Чтобы загрузить образ диска, созданный с помощью dd из Debian или другой дистрибуции, с помощью GRUB, необходимо учитывать множество деталей.

Теоретическая часть

Загрузка образа диска, созданного с помощью dd, представляет собой задачу, включающую работу с несколькими технологиями: GRUB, loopback и потенциально overlayfs. GRUB — это загрузчик, который поддерживает множество возможностей, включая загрузку образов и поддержание многоядерной среды. Основные задачи при загрузке через GRUB включают определение целевого устройства загрузки, настройку loopback для доступа к образу и потенциальное применение наложенных файловых систем для обеспечения возможности записи.

Loopback способен монтировать ISO и другие образы дисков как блоки устройств в памяти, но к ним изначально доступен только режим чтения. Для записи изменений в такие монтируемые образы потребуется использование overlayfs, который позволяет наложить writable слой поверх read-only источника. Overlayfs записывает все изменения в отдельное место, например в файл или на раздельный раздел, оставляя оригинал без изменений.

Пример

Рассмотрим конфигурацию загрузки с помощью GRUB:

menuentry "Boot Debian Image with OverlayFS" {
    insmod part_gpt
    insmod ext2
    set root='hd0,gpt3'
    set isofile='/debian2.img'

    # Настройка loopback устройства
    loopback loop (hd0,gpt3)$isofile

    # Проверка, имеется ли раздел для наложенных файлов
    if test -e (hd0,gpt3)/overlay ; then
        insmod overlay
        # Настройка overlayfs с помощью GRUB2
        set overlay_dir='(hd0,gpt3)/overlay' # Путь к местоположению открытых файлов
        loopback overlay $overlay_dir
    fi

    boot
}

В данном примере мы монтируем указанный образ через loopback и предполагаем, что если существуют корректно настроенные разделы для записи, они будут использоваться overlayfs.

Применение

  • Создание разметки файловой системы: вам нужно подготовить раздел, где будут сохраняться все изменения. Это может быть отдельный файл для overlayfs, который можно будет использовать для работы с изменениями. Сначала создайте директорию для хранения данных overlay, например, командой mkdir /media/usb/overlay.

  • Обновление конфигурации GRUB: необходимо вручную отредактировать файл конфигурации GRUB, добавив необходимые инструкции для загрузки образа в режим записи. Для этого можно использовать как примеры конфигурации, так и императивные подходы, проверяя каждые шаги на наличие ошибок в процессе загрузки.

  • Экспериментальное тестирование: после внесения изменений в конфигурацию загрузчика, необходимо протестировать решением загрузку, убедившись, что образ доступен и изменения возможны.

Преимущество описанного подхода в том, что он позволяет разграничить оригинальный образ от изменений, которые будут сохранены. Это дает возможность отката в случае неудачной модификации системы.

Заключение

Хотя задача по настройке загрузки образа диска в режиме записи несколько сложна, она осуществима благодаря мощным инструментам GRUB и overlayfs. Важно учитывать, что работая с защищенными образами (например, LUKS), потребуются дополнительные шаги для разблокировки и маунтирования разделов. Знание всех деталей процесса загрузки и основных команд GRUB поможет в успешной загрузке и редактировании операционной системы без повреждений исходных образов.

Оцените материал
Добавить комментарий

Капча загружается...