Я расширяю свой спасательный 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 кажется самым простым способом сделать это.