Назад | Перейти на главную страницу

Как связать загрузку с grub с syslinux?

Я расширяю свой спасательный USB-флеш-диск. Раздел USB является загрузочным, и я установил GRUB в MBR переходного диска. Работает неплохо - могу загрузиться Фридос и запускаю некоторые утилиты, и я могу загрузиться ПИНГ.

Я хотел бы добавить Ubuntu 9.10 LiveCD на этот спасательный USB-накопитель. У меня есть рабочий джампдрайв, поэтому я могу довольно легко копировать файлы. Я мог выследить необходимое menu.lst записи, необходимые для GRUB, но Ubuntu LiveUSB использует довольно сложную конфигурацию syslinux. Кроме того, я хотел бы сохранить как можно больше текущего внешнего вида LiveCD / LiveUSB без переноса конфигурации syslinux на GRUB.

По предложению шарлатана я попробовал menu.lst запись:

 title Ubuntu 9.10 LiveCD
 root=(hd0,0)
 kernel /ubuntu-9.10/syslinux/isolinux.bin

но GRUB ответил Error 13: Invalid or unsupported executable format. Затем в командной строке GRUB я попробовал:

 grub> root=(hd0,0)
 grub> kernel /syslinux/isolinux.bin

потому что у меня есть второй isolinux.bin файл в этом месте, но GRUB ответил с той же ошибкой. Я также пробовал:

 grub> chainloader /syslinux/isolinux.bin

и снова получил ошибку 13. Наконец, я попробовал в командной строке GRUB:

 grub> root=(hd0,0)
 grub> kernel /ubuntu-9.10/install/mt86plus
 grub> boot

и это сработало

Мне бы очень хотелось, чтобы GRUB вызывал загрузчик syslinux / isolinux. Тогда syslinux сможет загружать собственное меню и все такое.

Кто-нибудь знает, как это сделать?

Обновить: На основании вашей записи я нашла статью "Grub загружает syslinux и обратно", который в основном говорит "patch grub":

  • Цепная загрузка syslinux из GRUB кажется невозможной без патча. Насчет GRUB2 не знаю. Это может быть полезно для разделов с несколькими загрузками (на основе syslinux).

  • Возможна последовательная загрузка syslinux из GRUB4dos (на разные разделы). Мне удалось это через сопоставление, объяснил (снова) Вот. Это решает некоторые проблемы с мультизагрузкой USB-устройств.

На странице патча упоминается, что похожий патч был размещен на grub-devel для Grub v2; эта почта может быть тот патч. Или это сообщение, что указывает на этот отчет об ошибке (датировано ноябрем 2009 г., так что это совсем недавно) для Патч grub v2.

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


Оригинальный ответ:

Я бы сначала попробовал протестировать простую запись Grub. Это стандартная запись Grub для утилиты Memtest86 + в системе Debian:

title           Debian, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin

Просто попробуйте настроить их со своими значениями (при необходимости измените корневой раздел или путь к ядру):

title           Ubuntu LiveUSB SysLinux boot
root            (hd0,0)
kernel          /syslinux/isolinux.bin

Я не думаю, что тебе понадобится chainloader+ команда для этой задачи.

title UBUNTU 9.1 ISO Boot

найти --set-root /ubuntu9.1.iso

карта /ubuntu9.1.iso (hd32)

карта - крючок

корень (hd32)

цепной погрузчик (hd32)

добавьте его в ur menu.lst и скопируйте ubuntu9.1.iso на диск, на котором существует menu.lst.

Вы определенно можете легко загрузить syslinux по цепочке из grub2. Самый простой и общий способ:

Нажмите «c» в меню личинки, чтобы открыть командную строку.

set root='hd1,msdos1'
chainloader +1
boot

где 'hd1, msdos1' - достаточно распространенное значение при загрузке с USB, но вы можете искать в большинстве файловых систем с помощью ls, например, ls (hd1,msdos1) расскажу о части, тогда ls (hd1,msdos1)/ покажет вам файлы. Если это файловая система, то grub normal не распознает, тогда вам, возможно, придется установить модуль fs с insmod. Вы можете использовать grub search команда найти его. search --no-floppy --set=root

Однако вам, вероятно, не нужно загружать syslinux (или что-то еще) по цепочке. grub гибкий. Например, на моем USB-накопителе alpine я часто просто делаю это:

set root='hd2,msdos1'
configfile /boot/grub/grub.cfg

Что идет прямо в меню. Конечно, это с grub cfg. Вы также можете вручную настроить загрузку из grub без syslinux или grub на диске.

set root='hd2,msdos1' # or search...
linux /boot/vmlinuz
initrd /boot/initramfs

Что касается меня, я могу сделать что-то подобное на USB-накопителе Xen'd Up Alpine.

multiboot2 /boot/xen.gz
module2 /boot/vmlinuz-vanilla modules=loop,squashfs,sd-mod,usb-storage
module2 /boot/initramfs-vanilla

Но это в основном то, что в /boot/grub.cfg это, кажется, теперь идет с Alpine. Дело в том, что он может указывать на разные и разные ОС, initramfs и ядра. Я думаю, вы также можете напрямую загрузить двоичный файл syslinux с помощью chainloader $path_to_bin и у моей личинки действительно есть syslinux_configfile и syslinux_source команды, так что, похоже, это тоже работает:

syslinux_source /boot/syslinux.bin
syslinux_configfile /boot/syslinux/syslinux.cfg

Надеюсь, что один из них сработает для вас. Изучение своего образа жизни в жратве столько раз спасало жизнь. Я сохранил установку linux с поврежденной конфигурацией или перемещенным / измененным жестким диском на удаленном компьютере в Амстердаме из США, нажав grub-rescue> по последовательному порту и загрузив модули с существующего жесткого диска и загрузившись в старый раздел / ОС по порядку исправить / перенастроить его.

Использование YUMI в системе Windows кажется самым простым способом сделать это.

http://www.pendrivelinux.com/yumi-multiboot-usb-creator