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 или любом другом загрузчике. Я хочу, чтобы мой подход работал.

2 ответа2

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/

0

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .