Usiłuję zrobić wielobootowy usb z Ubuntu, Backtrack i Mantra-OS na nim (wszystkie Ubuntu, jak widać). Oto kroki, które zrobiłem:
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
Następnie podłączyłem i skopiowałem pliki z odpowiednich ISO do folderów, które utworzyłem:
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/
Potem wypełnione w pliku konfiguracyjnym syslinux.cfg
w /media/diqus/syslinux
z tym:
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: 640x480 8bit png w / media / disqus / syslinux /)
Teraz wszystko idzie dobrze i jestem w stanie uruchomić, mam menu syslinux, a nawet ładuję vmlinuz i initrd! System operacyjny ładuje się (mam ekran powitalny), ale potem pojawia się błąd (coś o Busybox):
(initramfs) unable to find a medium containing a live file system
Nie jestem do końca pewien, na czym polega problem, ale myślę, że chodzi o ścieżki względne i „rzecz” CDROM-u. Przetestowałem wiele z nich (nawet względnych i absolutnych), ale nic nie działa.
Odpowiedź nie może dotyczyć MultiBootUSB, MultiSystem, Yummi ani żadnego innego narzędzia; nie może też dotyczyć grub, grub2 ani żadnego innego programu ładującego. Chcę, aby moje podejście zadziałało.
źródło
Odpowiedzi:
Naprawdę to rozwiązałem i działa! Znalazłem kod o nazwie: live-media-path = ścieżka / do / casper / folder wraz z ignore_uuid. Zmodyfikowany działający kod:
Wielkie dzięki!
PS: W przypadku innych dystrybucji możesz szukać plików konfiguracyjnych syslinux w repozytorium Yumi na GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/
źródło
ignore_uuid
można pominąć; Ponadto dla każdego, kto chce skopiować minimalny zestaw plików z dysku CD, sprawdź sfxpt.wordpress.com/2014/02/18/… . Tjrsync -vuaR .disk casper /mnt/usbpen/boot/lub1310
.Ok, ponieważ nie jesteś zainteresowany alternatywnymi rozwiązaniami, musisz poświęcić więcej czasu, aby zrozumieć, jak działa proces księgowania.
Program ładujący ładuje jądro i initrd do pamięci , a następnie przekazuje wykonanie do jądra. Po tym punkcie całe wykonanie jest przekazywane do procesu init / upstart w initrd i wszystkich skryptów, które najpierw wywołują proces. Skrypty w initrd naprawdę nie wiedzą nic o systemie plików ani względnym patosie miejsca, z którego został załadowany. Nie mogą po prostu odwoływać się do jakiegoś dużego systemu plików Caspar w tym katalogu.
Initrd of livecds zawiera skrypty, które pozwalają im zlokalizować system plików. W systemie Ubuntu szuka określonego pliku w określonym folderze w katalogu głównym każdego znanego systemu plików na każdym dysku, który może zobaczyć. Jeśli nic nie może znaleźć, pojawia się wspomniany błąd.
Możesz przekazać tę
ISO-SCAN
opcję jako część linii dołączającej. Ten argument powie skryptowi, że zamiast skanować systemy plików, zapętli zamontowanie ISO i odczyta pliki z tego.Po prostu upuszczanie plików w określonym przez ciebie losowym katalogu prawdopodobnie nie jest obsługiwane. Ostatnio nie przeglądałem skryptów initrd na żywo, ale nie znam żadnych opcji, które pozwalają określić dowolny katalog dla wyodrębnionych plików.
Jeśli chcesz zachowania, które nie zostało jeszcze zaprojektowane przez programistów, będziesz musiał ponownie zbudować initrds za pomocą własnych skryptów i narzędzi do załadowania głównego systemu plików. Pozostawienie ISO w systemie plików, a następnie użycie tej
iso-scan/filename=$isofile
opcji to metoda, której można użyć bez konieczności przebudowywania initrd.źródło