Мультизагрузка на USB с syslinux

9

Я пытаюсь создать мультизагрузочный USB с Ubuntu, Backtrack и Mantra-OS (все Ubuntu, как вы можете видеть). Вот шаги, которые я сделал:

sudo su
unmount /dev/sdb1                          # unmount the drive
mkfs.vfat -F 32 -n disqus /dev/sdb1        # Format the disk with vfat
syslinux -maf /dev/sdb1                    # Install syslinux and the mbr
mkdir /media/disqus                        # Mount for the disk
mount /dev/sdb1 /media/disqus
mkdir /media/disqus/syslinux               # Syslinux configuration folder
cp /usr/lib/syslinux/{vesamenu.c32,reboot.c32,poweroff.com} /media/disqus/syslinux          # Files needed for syslinux
mkdir /media/disqus/syslinux/iso           # A folder that will contain extracted isos
mkdir /media/disqus/syslinux/iso/ubuntu
mkdir /media/disqus/syslinux/iso/backtrack
mkdir /media/disqus/syslinux/iso/mantra-os

После этого я смонтировал и скопировал файлы из соответствующих ISO-файлов в папки, которые я сделал:

mkdir /media/iso
mount -t iso9660 -o loop,ro /home/nizar/Destkop/ubuntu.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/ubuntu
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/backtrack.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/backtrack
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/mantra-os.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/mantra-os
umount /media/iso/
rmdir /media/iso/

После этого я заполнил на файл конфигурации syslinux.cfgв /media/diqus/syslinuxс этим:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32

MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.png

MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std

MENU WIDTH 80
MENU MARGIN 10
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
    MENU LABEL Backtrack
    kernel iso/backtrack/casper/vmlinuz
    append initrd=iso/backtrack/casper/initrdf.gz file=/cdrom/preseed/custom.seed boot=casper quiet splash --

LABEL Ubuntu
    MENU LABEL Ubuntu
    kernel iso/ubuntu/casper/vmlinuz
    append initrd=iso/ubuntu/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --

LABEL Mantra-OS
    MENU LABEL Mantra-OS
    kernel /mantra-os/casper/vmlinuz
    append initrd=/mantra-os/casper/initrd.lz file=/cdrom/preseed/xubuntu.seed boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

(anon1.png: 640 x 480, 8-битный png в / media / disqus / syslinux /)

Теперь все идет хорошо, и я могу загрузиться, у меня есть меню syslinux и даже загрузить vmlinuz и initrd! ОС на самом деле загружается (у меня есть заставка), но затем у меня появляется ошибка (что-то о Busybox):

 (initramfs) unable to find a medium containing a live file system

Я не совсем уверен, в чем проблема, но я думаю, что это относительно относительных путей и "вещи" CDROM. Я протестировал многие из них (даже относительные и абсолютные), но ничего не работает.

Ответ не должен быть о MultiBootUSB, MultiSystem, Yummi или любом другом инструменте; это не должно быть также о grub или grub2 или любом другом загрузчике. Я хочу, чтобы мой подход работал.

pr.nizar
источник
Почему не Grub2? Это было бы проще, так как не требуется извлекать ISO.
Zoredache
@Zoredache Я уже сделал с grub2, но я хочу это с syslinux и без memdisk.
пр.низар
1
PenDriveLinux Multiboot сделает все, что вам нужно. Вот почему я сказал, что это был обман.
Джеймс Мерц

Ответы:

1

Я действительно решил это, и это работает! Я нашел чит-код с именем: live-media-path = path / to / casper / folder вместе с ignore_uuid. Итак, модифицированный рабочий код:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32
MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.png
MENU COLOR border 30;44 #40ffffff #a0000000 std
MENU COLOR title 1;36;44 #9033ccff #a0000000 std
MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel 37;44 #50ffffff #a0000000 std
MENU COLOR help 37;40 #c0ffffff #a0000000 std
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
MENU WIDTH 80
MENU MARGIN 10
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
MENU LABEL Backtrack
kernel /syslinux/iso/backtrack/casper/vmlinuz
append initrd=/syslinux/iso/backtrack/casper/initrdf.gz live-media-path=/syslinux/iso/backtrack/casper ignore_uuid boot=casper quiet splash --

LABEL Ubuntu
MENU LABEL Ubuntu
kernel /syslinux/iso/ubuntu/casper/vmlinuz
append initrd=/syslinux/iso/ubuntu/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu/casper ignore_uuid boot=casper quiet splash --

LABEL Mantra-OS
MENU LABEL Mantra-OS
kernel /syslinux/iso/mantra-os/casper/vmlinuz
append initrd=/syslinux/iso/mantra-os/casper/initrd.lz live-media-path=/syslinux/iso/mantra-os/casper ignore_uuid boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

Большое спасибо!

PS: для других дистрибутивов вы можете искать конфигурационные файлы syslinux в репозитории Yumi на GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/

pr.nizar
источник
Отлично сработано. pr.nizar. Просто для записи, ignore_uuidможно опустить; Кроме того, если вы хотите скопировать минимальный набор файлов с компакт-диска, ознакомьтесь с разделом sfxpt.wordpress.com/2014/02/18/… . Т.е., rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310.
xpt
0

Хорошо, поскольку вас не интересуют альтернативные решения, вам нужно больше времени, чтобы понять, как работает процесс книги.

Загрузчик загружает ядро ​​и initrd в память , а затем передает выполнение ядру. После этого все выполнение передается процессу init / upstart в initrd и всем сценариям, которые вызывает первый процесс. Скрипты в initrd, на самом деле ничего не знают о файловой системе или относительном пафосе того, откуда она была загружена. Они не могут просто ссылаться на какую-то большую файловую систему Каспара в этом каталоге.

Initrd livecds, содержит сценарии, которые позволяют им найти файловую систему. Для системы Ubuntu это ищет определенный файл в определенной папке в корне каждой известной файловой системы на каждом диске, который это может видеть. Если он ничего не может найти, вы получаете ошибку, которую вы упомянули.

Вы можете передать эту ISO-SCANопцию как часть вашей строки добавления. Этот аргумент сообщит сценарию, что вместо сканирования файловых систем он будет монтировать ISO-образы и будет читать файлы изнутри.

Простое удаление файлов в произвольный каталог, который вы определяете, вероятно, не поддерживается. В последнее время я не смотрел сценарии livecd initrd, но мне неизвестны какие-либо параметры, позволяющие вам указать произвольный каталог для извлеченных файлов.

Если вам нужно поведение, которое еще не было разработано разработчиками, вам придется пересобрать ваши initrds с помощью ваших собственных скриптов и инструментов для загрузки корневой файловой системы. Оставить ISO в файловой системе, а затем использовать iso-scan/filename=$isofileопцию - это метод, который вы можете использовать, не перестраивая ваш initrd.

Zoredache
источник
Проблема в том, что BT5R3 все еще не поддерживает параметр iso-scan / filename ... Я должен исправить файл casper / initrd.gz. this.is.thoughtcrime.org.nz/multi-boot-bt5-from-usb-with-grub2 Есть ли другие способы решения моей проблемы?
пр.низар
Если бы вы добавили эту деталь в свой первоначальный вопрос, вы бы получили гораздо меньше шуток, если бы ваш вопрос был дубликатом. Почти наверняка есть решение, но я его пока не знаю.
Зоредаче
Я могу сделать то же самое, что и unetbootin, но проблема в том, что он не будет такой же структуры каталогов, как я. ( Youtube.com/watch?v=MH-khdiXqYs )
pr.nizar