LINUX.ORG.RU

[grub] [syslinux] мультизагрузочная флешка


0

1

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

Сделал так - есть первый раздел fat16, и второй в ext2. Первый для файлопомойки (потому и fat, чтобы совместимость), второй хранит загрузочные файлы.

Загрузчик выбирал сначала grub-0.97. Его без нареканий можно поставить на любой раздел и пометить его загрузочным, так я и сделал. Потом понадобилось грузить iso-образы (например, hiren boot cd), решил перейти на grub4dos. Его почему-то получается установить только в MBR, а не во второй раздел - не очень удобно. Ну работает. да и ладно. Проблема не в этом.

Проблема в вёрстке меню. :) Вписал туда ядра и initrd операционок - некоторые грузятся, некоторые нет. Не очень удобно и интересно брать конфиг syslinux с дистрибутива того или иного liveflash/livecd, и переделывать его под grub...

Хотелось бы сделать «вложенное меню». То есть есть несколько конфигов syslinux, grub4dos, и один главный grub. Главный грузится сам и грузит всё основное. И передаёт управление другим загрузчикам... указывая путь к конфигам. Другому grub передать управление легко, есть опция... (не помню, правда, какая, configfile, кажется). А вот как передать управление syslinux? Чтобы было вложенное меню и чтобы не надо было заморачиваться по вписыванию каждой новой операционки.

Особенно тяжело, если это не линукс, а венда какая-нить (тоже по работе нужно просто иногда), или дос (частенько нужные низкоуровневые утилиты проверки оборудования).

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

Разумеется не вопрос, а утверждение. Вопрос в том - как это сделать?

BattleCoder ★★★★★ ()

Честно, я не особо въехал в ваши хитросплетения с syslinux и прочим... Но ведь есть configfile FILE, как вы заметили. Может, стоит попробовать сделать пункт меню, в котором будет эта опция? При нажатии, подгрузится другой конфиг, с другими пунктами. В нём - пункт «уровень выше» с подгрузкой главного конфига menu.lst.

a_n ()

Да, ещё, пример для ntldr (когда-то давно у еня это работало):

[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Professional RU" /fastdetect /NoExecute=OptOut
C:\linux.dat="Slackware Linux"
linux.dat - MBR с grub. При выборе пункта, просто заново загружается GRUB и всё возвращается «в первое меню». Но, для каждого загрузчика, видимо, придётся делать своё меню, если вы используете несколько разных загрузчиков. Для чего? Может, возможно всё грузить через GRUB?

a_n ()

Плюс, есть команда chainloader, которая намекает:

grub> chainloader
Error 1: Filename must be either an absolute pathname or blocklist
Т.е., в принципе, загрузить из grub, возможно всё, что приспичит. Есть такая игрушка, например, Grub Invaders называется. ;-) Хранение конфигов загрузчиков - другая задача. Но syslinux, наверняка поддерживает ext2 (хотя, я, вообще, смутно помню что такое syslinux и пользует ли он внешний конфиг). Так в чём проблема-то? P.S.: На ачате была хорошая годная статья УК про то как сделать загрузку с флешки, с сохранением на ней граба и таблицы разделов, которая на диске затиралась. Если интересуют извращения, рекомендую найти и почитать.

a_n ()
Ответ на: комментарий от Mobyshvein

Хотя, глючит, иногда ведёт себя, с учётом погоды на Марсе, периодически в нём находят весёлые недокументированные ошибки. И судя по всему, код у них голландский. :-\

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

в этом-то и дело, что извращения не интересуют - хочется сделать проще, быстрее и оптимальнее

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

4.2 же. Пробовал. Во-первых, knoppix не получается грузить. Во-вторых, hiren boot cd у меня тоже не получилось грузить.

только бубунту, которая мне нафик не сдалась.

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

Это для примера меню. Аналогично возможно сделать для любого загрузчика, который может грузить файлы с ФС (помнится, что загрузчик в DOS этого не мог, если не считать MSDOS.SYS расположенного по фиксированному адресу в ФС, но, наверное, все современные загрузчики могут).
Если нет возможности использовать grub везде, возможно выдрать MBR с ним в файл и в качестве пункта для возврата в GRUB прописать этот файл в другом загрузчике.

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

Спасибо. Наконец-то хоть один нормальный ответ в теме.

Странно, что до меня самого как-то не допёрло. %) А вынуть такую инфу из документации, не прочитай всё, тяжело...

Спасибо за совет. Попробую сделать.

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

К сожалению... сий файл нашёл только у кноппикса и puppy, которые итак без проблем через grub грузятся. :) Впрочем, попробую с ними сие сотворить.

Ещё хотел clonezilla/drbl поставить. Но там этого файла нет. Зато есть скрипт установки syslinux в mbr, который затрёт все остальные загрузчики... и, возможно, предполагает существование только одного раздела на флешке. Не очень экономично. %) Вот если бы у меня было 4 флешки по гигу, а не одна на 4...

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

А на дисках не ldlinux.sys, а isolinux.bin, и работать с флешки он не будет.

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

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

Попробовал. На systemrescuecd так сделать.

Пишет Error 13: invalid or unsupported executable format =(

короче, главным grub, а он пытается грузить syslinux командой chainloder (hd0,2)/ldlinux.sys

Причём монопольно если на флешку поставить systemrescue - грузится нормально.

Писать вложенное меню на grub мне не хочется... я свихнусь от этого %) у каждого дистрибутива своё вложенное меню с тучей опций просто.

BattleCoder ★★★★★ ()

Кстати. Файловая система на разделе ext2. Может, syslinux умеет работать только с fat? :( если так, то скверно...

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

логично... не подумал. =) спасибо за подсказку.. до самого бы недопёрло.

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

Попробуйте создать файл, в нём файловую систему, на него поставить extlinux и снять с него первые 512 байт, а полученный файл скормить chainloader.

Возможно, имеет смысл перейти на syslinux как основной загрузчик, а iso-образы запускать при помощи memdisk или запускать grub4dos из syslinux (это возможно и точно работает).

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

Наверное, стоит попробовать.

Просто grub как-то проще в настройке, мне кажется...

А из syslinux другой syslinux без проблем ведь можно грузить?

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

> А из syslinux другой syslinux без проблем ведь можно грузить?
Конфиги - да. Сам syslinux, видимо, нет.

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