Как создать .img для .iso с поддержкой UEFI на основе моих initrd, bzImage и .sfs файлов? rEFInd или что-то другое?

В идеале конечно мне нужно самому "пощупать" этот образ. Чтоб на кофейной гуще не гадать.
Lupus pilum mutat, non mentem.
innoochka
Если положить Ефи загрузчик в каталог efi, то надо и bzImage и rootfs.cpio.gz тоже доставать из того образа. А то иначе что загрузчик будет грузить???
Для grub не принципиально где лежат ядро и инит. Главное в конфиге правильно прописать.
Lupus pilum mutat, non mentem.
Суть в том, чтобы в "${tmp}"/efi положить efi-загрузчик. где будут необходимые ему модули и конфиг. Зависит от настроек efi-загрузчика.
Тут, для меня, проще самому собрать и дать готовый скрипт, чем все это в подробностях объяснять.
Если нет возможности показать образ, то подробно расписывайте все выполняемые вами команды и их результат. Будем думать.
Lupus pilum mutat, non mentem.
И да. Вся магия в последней команде.
Создается образ в fat, в который копируется каталог с ефи загрузчиком. Он прописыйвается в таблицу разделов как ефи раздел. Это для случая записи на флешку.
При этом этот же каталог дублируется в файловой системе самого iso. Для загрузки из CD/DVD.
Lupus pilum mutat, non mentem.
jim945
Как создаете iso?

Ну, я вроде как в посте написала, что делается img и его пихают в iso как загрузочную часть (программа WinISO).

Сам Img формируется из syslinux и моих initrd, bzImage.

выжимки из скриптов бывшего коллеги:

# Создание пустого неразмеченного образа
if ! (dd if=/dev/zero of=./${BI_NAME} bs=${BI_BLOCK_SIZE} \
count=${BI_BLOCK_COUNT} &>/dev/null); then
fi

# Поиск доступного блочного устройства loop
LOOP_DEV=`losetup --find 2>/dev/null`

LOOP_DEV_PART="/dev/mapper/`basename ${LOOP_DEV}`p1"

# Создание таблицы разделов загрузочного образа parted-oм

# Форматирование первого раздела образа
mkfs.vfat ${LOOP_DEV_PART}
mount ${LOOP_DEV_PART} /boot

mkdir /boot/syslinux

# Создание файла настроек загрузчика syslinux.cfg
#(писала о нем ранее)
createLoaderCfg

#Установка загрузчика в образ с точкой монтирования /boot
syslinux-install_update -i

# Установка MBR на блочное устройство, ассоциированное с файлом образа
if ! (dd if= /boot/syslinux/mbr.bin of=${LOOP_DEV} bs=512 \
count=1 &>/dev/null); then

terminate
return $ERR_MBR_INSTALL
fi

+копирование собранных моих initrd, bzImage в корень /boot
jim945
И да. Вся магия в последней команде.
Создается образ в fat, в который копируется каталог с ефи загрузчиком. Он прописыйвается в таблицу разделов как ефи раздел. Это для случая записи на флешку.
При этом этот же каталог дублируется в файловой системе самого iso. Для загрузки из CD/DVD.

у нас тоже vfat образ. Загрузчик пробовала от rEFInd. Но его схему использования уже описывала в посте и дублировать не хочу.
Таким образом выясняется что создаётся не iso образ, а обычный образ жёсткого диска или флешки.

Имейте ввиду, что он не будет работать при записи на cd/dvd болванки. Хотя, возможно, где-нибудь и запустится. Но это скорее случайность. :)

Если вам нужна загрузка только с флешек/жёстких, то рекомендую эксперименты проводить на реальной флешке. Потом снять с нее образ.

1. Создать GPT таблицу разделов. Не MBR!!!
2. Создать разделы для данных, Ефи и биос.
3. Скопировать данные и Ефи загрузчик.
4. Установить syslinux для bios.

В нашей вики все описано. Это стандартные вещи.

innoochka
программа WinISO
Вы работаете в Windows?
Тогда здесь вы ничего не поймёте :)
Lupus pilum mutat, non mentem.
jim945
Привожу выжимки из своих скриптов для создания гибридных образов. На основе GRUB.

cat /usr/lib/grub/i386-pc/cdboot.img "${workdir}"/core.img > "${workdir}"/eltorito.img
truncate -s 5M "${tmp}"/iso/efi.img
mkfs.vfat "${tmp}"/iso/efi.img
mount "${tmp}"/iso/efi.img "${tmp}"/efi
cp -r "${workdir}"/efi "${tmp}"/efi
umount "${tmp}"/efi
xorriso -as mkisofs -graft-points -b  "${workdir}"/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info --grub2-mbr /usr/lib/grub/i386-pc/boot_hybrid.img --efi-boot efi.img -efi-boot-part --efi-boot-image --protective-msdos-label --boot-catalog-hide -o "${workdir}"/done/gp.iso -r "${tmp}"/iso --sort-weight 0 /
конечно, круто, но вот мне такое не внедрить в IMG(
jim945
Таким образом выясняется что создаётся не iso образ, а обычный образ жёсткого диска или флешки.

Имейте ввиду, что он не будет работать при записи на cd/dvd болванки. Хотя, возможно, где-нибудь и запустится. Но это скорее случайность. :)

Если вам нужна загрузка только с флешек/жёстких, то рекомендую эксперименты проводить на реальной флешке. Потом снять с нее образ.

1. Создать GPT таблицу разделов. Не MBR!!!
2. Создать разделы для данных, Ефи и биос.
3. Скопировать данные и Ефи загрузчик.
4. Установить syslinux для bios.

В нашей вики все описано. Это стандартные вещи.

innoochka
программа WinISO
Вы работаете в Windows?
Тогда здесь вы ничего не поймёте :)

Эм, вы вообще меня не6 понимаете) я же писала, что дальше iso формируется из img + ещё множества других файлов и формируется это всё уже WinISO... Делается именно для загрузки диска и ничего другого! Загрузку с флешки организовывать нет необходимости. К тому же я такое реализовывала и никакие GPT были не нужны. Берешь флешку и ставишь граб, а в конфиге уже пишешь загрузку своего ядра и инитры и всё работает. Изи.
innoochka
конечно, круто, но вот мне такое не внедрить в IMG(
О чем и разговор.
Знаний нет. Учиться нет времени.
Lupus pilum mutat, non mentem.
 
Зарегистрироваться или войдите чтобы оставить сообщение.