LINUX.ORG.RU

Помогите пофиксить booty

 , , ,


0

1

Оказалось что моё booty жуткое кривое и не хочет загружаться с флешек на серверах HP ProLiant Gen8/Gen9, на Gen10 внезапно, загрузка работает. Ну оно и понятно, когда я её писал, из железок у меня под рукой были лишь всякие стационарные компьютеры, да и только.

https://github.com/spfng/booty/blob/master/booty.in#L949-L953

Суть в том, что в качестве загрузчика я использую grub2 и только его, а я посмотрел как в других дистрибутивах создаются ISO образы, там ещё isolinux.bin зачем-то суют в загрузчик, а затем через isohybrid пропускают.

В конечном счёте, когда записали готовый ISO на флешку, там нету /dev/sda1,2,3,4 разделов как это есть у других ISO других дистрибутивов. Я на это не обращал вообще никакого внимания, покуда загрузка что BIOS, что UEFI просто работала.

Но как оказалось что-то я делаю не правильно, что именно на HP ProLiant Gen8/Gen9 загрузка с флешек таким образом не работает вовсе.

Мне конечно не жалко ради всего этого приколхозить syslinux, только не знаю зачем... Вообще не могу понять, что я такого важного упускаю, что не создаю дополнительные разделы /dev/sda1,2 на образе. И зачем мне нужен этот isolinux.bin, если я могу просто использовать grub2.

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

★★★★★

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

Конечно, всё это можно сделать вручную. Fdisk’ом или чем-нибудь ещё создать MBR из одного раздела, указывающего на начало флешки. Записать в первые 446 байт код stage1 (или как называется эта часть GRUB2), который подгрузит остаток GRUB2 из другого места флешки. («Гибридные» флешки работают именно так, являясь одновременно ISO-образом (первые 32768 байт которого игнорируются) и образом жёсткого диска с MBR на один раздел типа ISO 9660.)

GRUB2 жирный, для успешной загрузки ему нужно свободное место между MBR и первым разделом, содержащее статически прилинкованные модули и начальный скрипт, при помощи которого он доберётся до настоящего /boot. По идее, 32 кБайта в начале образа как раз для этого подойдут, но убедить grub-install записать MBR и stage1.5 (core.img на языке GRUB2) в область, которая формально перекрывается с файловой системой, может быть сложно. Точнее, grub-install здесь неприменим (файловая система только для чтения), поэтому всё это придётся генерировать вручную при помощи grub-mkimage. Но если Вы сможете записать в первые 446 байт MBR от GRUB2, которая будет знать, что после первых 512 байт записан core.img, а потом после первых 512 байт записать core.img, содержащий нужные модули (part_msdos, iso9660, может быть, что-то ещё) и скрипт, который найдёт /boot, установит $prefix и подгрузит основной grub.cfg, дело в шляпе.

Ну, почти. Портянка выше - это для BIOS. Для EFI достаточно создать в неиспользуемой части образа (ха-ха, где?) FAT32-раздел (потому что BIOS’ы могут не понимать другие ФС) и сложить туда /EFI/BOOT/BOOTX64.EFI, собранный эквивалентно core.img выше.

Всё это может не уместиться в 32 килобайта, а после образа загрузочный раздел лучше не размещать, потому что некоторые биосы глючат при попытке отойти слишком далеко от LBA 0. Возможно, можно сделать трюк с FAT32-разделом, который указывает внутрь лежащего в ISO-образе в виде файла FAT-образа для EFI-загрузки с компакт-диска. Это выиграет достаточно места, но FAT-образ будет сложнее генерировать.

anonymous
()

зачем мне нужен этот isolinux.bin

Тебе не нужен, а железки хотят.

если я могу просто использовать grub2

Не можешь, раз не работает.

Помогите пофиксить

Неа. =P

mord0d ★★★★★
()

Оказалось что моё booty жуткое кривое

Ты не представляешь, как долго я этого ждал. :)

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

Вот тут я даже не знаю. Ты с флэшки пытался или через сеть? Может, как раз через сеть и не работает, потому такой "корчен-тулинг" с isolinux.bin.

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

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

«Охладитель траханья версия 1.1»

Шутка.

Korchevatel ★★★★★
()

что-то я делаю не правильно, что именно на HP ProLiant Gen8/Gen9

…запускаешь васяноподелки

anonymous
()

Установи на флешку ventoy и грузи iso через него.

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

то что надо, спасибо, попробую этот вариант сейчас, оказывается не у меня одного такой вопрос возникает, что собственно за Х, почему так, зачем два загрузчика ... ._.

Spoofing ★★★★★
() автор топика

с xorriso не разобрался, слишком сложна. сложна!

ощщем, решил схитрить, продолжаю использовать cdrkit и ладно так уж и быть пусть будет syslinux вторым (первым?) загрузчиком.

но почему бы не chainload'ить grub2 из syslinux?

попытался, но ничего не вышло.

создаю образ через grub-mkimage

        grub-mkimage                                        \
                                                            \
                --config="$INSTALL_PATH/boot/grub/grub.cfg" \
                --output="$INSTALL_PATH/boot/grub/core.img" \
                --format="i386-pc"                          \
                --prefix="/boot/grub"                       \
                                                            \
                "biosdisk" "iso9660" "normal" "search"      \
                "search_fs_file" "part_msdos" "part_gpt"    \
                "fat"

хочу его загрузить из syslinux, но не загружается.

SERIAL 0 38400
DEFAULT GRUB2

LABEL GRUB2
        COM32 chain
        APPEND file=/boot/grub/core.img

короче ладно пофигу

пока не разберусь окончательно, придётся использовать syslinux вторым загрузчиком, со всеми вытекающими: дублировать конфигурацию загрузчика и т.д.

неудобно, а что поделать.

Spoofing ★★★★★
() автор топика

Посмотри другие Live USB, там почти везде SysLinux или Extlinux. GRUB не так универсален и подходит для стационарного использования. Сам использую EXTLINUX всегда. Для меня GRUB стоит в одном ряду с UEFI, SYSTEMD и прочими многоэтажными надстройками на ОС.

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

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

хотя для моих девопсовских задач рассматриваю вообще вариант загрузки vmlinuz/initrd, а оттуда уже kexec во что-то другое более полноценное, зачем так сказать ограничиваться этими огрызками-загрузчиками, когда можно kexec'аться из линукса в линукс.

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

Spoofing ★★★★★
() автор топика
Последнее исправление: Spoofing (всего исправлений: 1)
Ответ на: комментарий от Spoofing

зачем так сказать ограничиваться этими огрызками-загрузчиками, когда можно kexec’аться из линукса в линукс

чтобы не огрести багов. фирмварь оставляет железо в другом состоянии, чем ядро

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

Эта там то сложно? Да твои примеры реально сложнее чем там расписано! Xorriso всего-то выдает образ готовый, если уж есть сложности то с подготовкой там img и прочего.

irton ★★★★★
()

Всем спасибо загрузка починилась, оставлю пока так.

https://www.voglea.com/20211205_130216.jpg

https://www.voglea.com/20211205_130528.jpg

Теперь буду плевать в потолок, а серваки пусть сами себя конфигурят по PXE и с флешек ^-^

Кому интересено ссылка на проект https://github.com/spfng/hpeconf

Spoofing ★★★★★
() автор топика
Последнее исправление: Spoofing (всего исправлений: 2)
Ответ на: комментарий от hobbit

Было: шутка про тракториста. Стало: забавная игра слов, позволительная для СПО.

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

предварительная конфигурация серверов перед отправкой клиенту

для моих девопсовских задач

однако

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