Описанное мной ениже крайне просто и очевидно, но, я надеюсь, это хоть кому-то поможет сэкономить пару часов времени.
На просторах интернета можно найти много статей по созданию мультизагрузочных флешек. Все они сводятся, в основном, к использованию grub4dos и syslinux. Что может быть проще: скачать, например, grub4dos, распаковать, запустить и нажать пару кнопок? Это работает, только работает под Windows.
А что если у меня linux? Здесь возникает ситуация, когда вопросов на форумах о том, как из linux установить загрузчик в MBR чуть больше, чем ответов. Я, признаюсь, и сам мучился до сегодняшней ночи.
Всё оказалось просто
Нужно всего-то лишь:
- Скачать и распаковать архив grub4dos;
- На флешке создать первичный раздел и пометить его, как «загрузочный»;
- «Залить» загрузчик при помощи утилиты dd в загрузочную запись;
- Скопировать файл grldr из архива на раздел флешки.
Теория
В двух словах про главную загрузочную запись (MBR). Согласно Википедии, труктура у неё следующая:
- Код загрузчика — 446 байт;
- Таблица разделов;
- Сигнатура
Наша задача: скопировать первые 446 байт из файла grldr.mbr в начало флешки.
Практика
Но не всё так просто. Именно в этом была вся проблема. Недостаточно просто скопировать 446 байт. После этого мы просто видим ошибку:
Missing MBR-helper
В чём же дело?
На ответ натолкнуло то, что файл grldr.mbr имеет размер 9 килобайт. Всё решилось копированием его остальной части туда же — в начало диска (флешки). Только таблицу разделов и сигнатуру нужно оставить; просто пропускаем 512 байт:
dd if=grldr.mbr of=/dev/sdb bs=446 count=1
dd if=grldr.mbr of=/dev/sdb seek=512 skip=512 bs=1
Вот и всё. Теперь копируем на флешку нужные файлы, ISO-образы, правим menu.lst. Благо, по этой части в интернете есть громаднейшее количество информации.
Заключение
Эту статью меня побудило написать то, что на каком-то сайте я видел способ с использованием dd, но он не работал по причине совершенно непонятного использования параметров этой утилиты.
Надеюсь, кому-то будет полезно.
Автор: tetramin