Multiboot flash средствами grub и loop устройствами iso образов

ArteS

New member
Сообщения
5
#1
Добрый день!

Есть задача сделать мультизагрузачную флешку без специализированных программ, а силами grub и loop устройствами iso образов.

Суть метода:
1) Выделяю некую необходимого размера область на флэшке и форматирую её в ext2
Bash:
$ sudo mkfs.ext2 -L BOOT /dev/sdc1
2) Устанавливаю grub на флэш
Bash:
$ sudo mount /dev/sdc1 /mnt
$ sudo grub-install --target=i386-pc --recheck --removable --boot-directory=/mnt/ /dev/sdc
3) Копирую образы iso в выделенную облать которую создал на первом шаге
Bash:
$ sudo mkdir -p /mnt/iso
$ sudo cp ~/multiboot/*.iso /mnt/iso
4) Создаю grub.cfg. Часть grub.cfg взял из образа диска Astra Linux, немного подкорректировав их. Добавил пункты iso-scan и live-media.
Код:
. . .
menuentry "Common Edition 2.12.22" --class astra {
    set isofile='/iso/orel-2.12.22-04.12.2019_09.06.iso'
    loopback loop $isofile
    linux  (loop)/install.amd/gtk/vmlinuz iso-scan/filename=${isofile} live-media=${isofile} quiet noeject modprobe.blacklist=evbug debian-installer/locale=ru debian-installer language=ru keyboard-configuration/xkb-keymap=ru console-keymaps-at/keymap=ru
    initrd (loop)/install.amd/gtk/initrd.gz
}
. . .
После данных манипуляций у меня "завелись" все образы которые хотел: ArchLinux, Debian, Mint, SystemRescueCD. Кроме Astra Linux.
При этом сказать что Astra не работает будет не совсем правда. Она запускается и начинает процесс предварительной настройки перед установкой. Но на этапе поиска и монтирования образа диска с установочными программами она не может найти CD диск. Оно и понятно так как я загрузился напрямую с iso образа через loop устройство. Попытка вручную примонтировать iso образ в папку cdrom не увенчались успехом. Как я понял инсталятор пытается перед поиском медиа устройства размонтирывает эту директорию и предыдущие действия теряют смысл.

Вопрос. Можно ли обойти данную проблему и продолжить установку? Крайне желательно через конфигурацию grub, а не переходом в коммандную строку во время утановки.
Сразу хочу ответить на вопрос зачем мне это. Интересует именно данный способ создания мультизагрузочной флэшки. Другие способы были опробованы, неудобны и были отвергнуты.
 
Последнее редактирование:

alex98

New member
Сообщения
7
#2
Добрый день!

Есть задача сделать мультизагрузачную флешку без специализированных программ, а силами grub и loop устройствами iso образов.

Суть метода:
1) Выделяю некую необходимого размера область на флэшке и форматирую её в ext2
Bash:
$ sudo mkfs.ext2 -L BOOT /dev/sdc1
2) Устанавливаю grub на флэш
Bash:
$ sudo mount /dev/sdc1 /mnt
$ sudo grub-install --target=i386-pc --recheck --removable --boot-directory=/mnt/ /dev/sdc
3) Копирую образы iso в выделенную облать которую создал на первом шаге
Bash:
$ sudo mkdir -p /mnt/iso
$ sudo cp ~/multiboot/*.iso /mnt/iso
4) Создаю grub.cfg. Часть grub.cfg взял из образа диска Astra Linux, немного подкорректировав их. Добавил пункты iso-scan и live-media.
Код:
. . .
menuentry "Common Edition 2.12.22" --class astra {
    set isofile='/iso/orel-2.12.22-04.12.2019_09.06.iso'
    loopback loop $isofile
    linux  (loop)/install.amd/gtk/vmlinuz iso-scan/filename=${isofile} live-media=${isofile} quiet noeject modprobe.blacklist=evbug debian-installer/locale=ru debian-installer language=ru keyboard-configuration/xkb-keymap=ru console-keymaps-at/keymap=ru
    initrd (loop)/install.amd/gtk/initrd.gz
}
. . .
После данных манипуляций у меня "завелись" все образы которые хотел: ArchLinux, Debian, Mint, SystemRescueCD. Кроме Astra Linux.
При этом сказать что Astra не работает будет не совсем правда. Она запускается и начинает процесс предварительной настройки перед установкой. Но на этапе поиска и монтирования образа диска с установочными программами она не может найти CD диск. Оно и понятно так как я загрузился напрямую с iso образа через loop устройство. Попытка вручную примонтировать iso образ в папку cdrom не увенчались успехом. Как я понял инсталятор пытается перед поиском медиа устройства размонтирывает эту директорию и предыдущие действия теряют смысл.

Вопрос. Можно ли обойти данную проблему и продолжить установку? Крайне желательно через конфигурацию grub, а не переходом в коммандную строку во время утановки.
Сразу хочу ответить на вопрос зачем мне это. Интересует именно данный способ создания мультизагрузочной флэшки. Другие способы были опробованы, неудобны и были отвергнуты.
Добрый день. Удалось найти решение?
 

levik

New member
Сообщения
1
#3
Нашёл ктото решение ? Может есть ктото из разработчиков, кто ответит на вопрос ?
 

_re

New member
Сообщения
3
#4
получилось загрузиться используя vmlinuz и initrd.gz из папки hd-media

Bash:
menuentry "AstraAutoInstall" {
    insmod all_video

    set isofile="/iso/astra16SE.iso"

    loopback loop (hd0,gpt2)$isofile

    linux (loop)/hd-media/vmlinuz findiso=$isofile preseed/file=/preseed_v1.cfg quiet debian-installer/locale=en_US.UTF-8 debian-installer/language=en keyboard-configuration/xkb-keymap=en console-keymaps-at/keymap=en keyboard-configuration/toggle=Alt+Shift astra-license/license=true

    initrd (loop)/hd-media/initrd.gz
}
 
Сообщения
765
#5
получилось загрузиться используя vmlinuz и initrd.gz из папки hd-media

Bash:
menuentry "AstraAutoInstall" {
    insmod all_video

    set isofile="/iso/astra16SE.iso"

    loopback loop (hd0,gpt2)$isofile

    linux (loop)/hd-media/vmlinuz findiso=$isofile preseed/file=/preseed_v1.cfg quiet debian-installer/locale=en_US.UTF-8 debian-installer/language=en keyboard-configuration/xkb-keymap=en console-keymaps-at/keymap=en keyboard-configuration/toggle=Alt+Shift astra-license/license=true

    initrd (loop)/hd-media/initrd.gz
}
Это нужно добавить в grub.cfg ?
 

_re

New member
Сообщения
3
#6
Да, по идее там можно сократить до

Код:
menuentry "AstraInstaller" {
    set isofile="/iso/astra16SE.iso"

    loopback loop (hd0,gpt2)$isofile

    linux (loop)/hd-media/vmlinuz findiso=$isofile quiet
    initrd (loop)/hd-media/initrd.gz
}
set iso заменить на свой путь, как и hd0,gpt2 - диск, разметка, раздел где лежит iso
в первом варианте такие длинные строчки так как производил автоматизацию установки AstraLinux 1.6 SE
insmod all_video - загрузка видео модуля
 
Последнее редактирование:
Сообщения
765
#7
Да, по идее там можно сократить до

Код:
menuentry "AstraInstaller" {
    set isofile="/iso/astra16SE.iso"

    loopback loop (hd0,gpt2)$isofile

    linux (loop)/hd-media/vmlinuz findiso=$isofile quiet
    initrd (loop)/hd-media/initrd.gz
}
set iso заменить на свой путь, как и hd0,gpt2 - диск, разметка, раздел где лежит iso
в первом варианте такие длинные строчки так как производил автоматизацию установки AstraLinux 1.6 SE
insmod all_video - загрузка видео модуля
Я так понимаю что вместо hd0 нужно указать sdX. Или в grub.cfg старый формат hd? А gpt2 это что? И куда добавлять (в какую строку) insmod all_video ?
 

_re

New member
Сообщения
3
#8
Я так понимаю что вместо hd0 нужно указать sdX. Или в grub.cfg старый формат hd? А gpt2 это что? И куда добавлять (в какую строку) insmod all_video ?
Что Вам мешает почитать мануал к Grub, там для основного понимания не так много информации надо осмыслить...

(hd0,gpt2) - означает что grub будет работать дальше с указанным диском и разделом, т.е. (hd0,gpt2)/iso/astra16SE.iso означает что grub возьмет iso файл по указанному пути, на указанном диске

диск с которого осуществляется загрузка Grub, на сколько помню всегда будет 1-м, т.е. - hd0, если Grub стоит на одном диске, а загружаться надо с другого, то его номер надо будет посмотреть через cmd самого grub

gpt2 - указывает схему разметки диска и номер раздела, gpt указывается если диск в GPT, msdos если MBR.

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

johnny

New member
Сообщения
1
#9
menuentry "AstraInstaller" {
set isofile="/iso/astra.iso"

loopback loop (hd0,msdos1)$isofile

linux (loop)/install.amd/gtk/vmlinuz findiso=$isofile quiet
initrd (loop)/install.amd/gtk/initrd.gz
}
Подставил все свои значения set iso=/iso/astra.iso, hd0,gpt2 на hd0,msdos1 И всё равно не находит cd-rom. "Не корректный cd-rom. Вставьте правильный установочный SD.
 
Последнее редактирование: