Multiboot auf USB mit Syslinux

9

Ich versuche einen Multiboot-USB mit Ubuntu, Backtrack und Mantra-OS zu erstellen (alles Ubuntu, wie Sie sehen können). Das sind die Schritte, die ich getan habe:

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

Danach habe ich Dateien in den jeweiligen ISOs gemountet und in Ordner kopiert, die ich erstellt habe:

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/

Danach habe ich auf der Konfigurationsdatei gefüllt syslinux.cfgin /media/diqus/syslinuxmit diesem:

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 8-Bit-PNG in / media / disqus / syslinux /)

Jetzt läuft alles in Ordnung und ich kann booten, ich habe das Syslinux-Menü und lade sogar vmlinuz und initrd! Das Betriebssystem wird tatsächlich geladen (ich habe den Begrüßungsbildschirm), aber dann habe ich den Fehler (etwas über Busybox):

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

Ich bin mir nicht ganz sicher, was das Problem ist, aber ich denke, es geht um relative Pfade und das CD-ROM "Ding". Ich habe viele davon getestet (sogar relativ und absolut), aber nichts funktioniert.

Die Antwort darf nicht über MultiBootUSB, MultiSystem, Yummi oder ein anderes Tool sein. Es darf sich nicht auch um grub oder grub2 oder einen anderen Bootloader handeln. Ich möchte, dass mein Ansatz funktioniert.

pr.nizar
quelle
Warum nicht Grub2? Das wäre einfacher, da Sie die ISOs nicht extrahieren müssen.
Zoredache
@Zoredache Ich habe bereits mit grub2 gemacht, aber ich möchte es mit syslinux und ohne die memdisk.
Pr.nizar
1
PenDriveLinux Multiboot erledigt alles, was Sie tun müssen. Deshalb habe ich gesagt, dass dies ein Betrug ist.
James Mertz

Antworten:

1

Ich habe das tatsächlich gelöst und es funktioniert! Ich habe einen Cheat-Code namens: live-media-path = path / to / casper / folder zusammen mit ignore_uuid gefunden. Also der modifizierte Arbeitscode:

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

Danke vielmals!

PS: Für andere Distributionen suchen Sie möglicherweise nach Syslinux-Konfigurationsdateien in Yumis Repository unter GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/

pr.nizar
quelle
Gut gemacht. pr.nizar. Nur für die Aufzeichnung ignore_uuidkann das weggelassen werden; Wenn Sie die Mindestanzahl von Dateien von der CD kopieren möchten, lesen Sie auch sfxpt.wordpress.com/2014/02/18/… . Dh rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310.
xpt
0

Ok, da Sie nicht an alternativen Lösungen interessiert sind, müssen Sie sich mehr Zeit nehmen, um zu verstehen, wie der Buchprozess funktioniert.

Der Bootloader lädt den Kernel und initrd in den Speicher und übergibt die Ausführung an den Kernel. Nach diesem Zeitpunkt wird die gesamte Ausführung an den init / upstart-Prozess in der initrd und an alle Skripte übergeben, die der erste Prozess aufruft. Die Skripte in der initrd wissen nichts über das Dateisystem oder das relative Pathos, von wo es geladen wurde. Sie können nicht einfach auf ein großes caspar-Dateisystem in diesem Verzeichnis verweisen.

Die Initrd von Live-CDs enthalten Skripte, mit denen sie das Dateisystem lokalisieren können. Für Ubuntu-Systeme sucht es nach einer bestimmten Datei in einem bestimmten Ordner im Stammverzeichnis jedes bekannten Dateisystems auf jedem Laufwerk, das es sehen kann. Wenn es nichts findet, erhalten Sie den von Ihnen erwähnten Fehler.

Sie können die ISO-SCANOption als Teil Ihrer Anhängezeile an übergeben. Dieses Argument teilt dem Skript mit, dass anstelle des Scannens von Dateisystemen ein ISO-Loopback bereitgestellt und die Dateien darin gelesen werden.

Das Löschen von Dateien in einem von Ihnen definierten zufälligen Verzeichnis wird wahrscheinlich nicht unterstützt. Ich habe mir die livecd initrd-Skripte in letzter Zeit nicht angesehen, aber mir sind keine Optionen bekannt, mit denen Sie ein beliebiges Verzeichnis für die extrahierten Dateien angeben können.

Wenn Sie ein Verhalten wünschen, das noch nicht von den Entwicklern entwickelt wurde, müssen Sie Ihre initrds mit Ihren eigenen Skripten und Tools neu erstellen, um das Root-Dateisystem zu laden. Wenn Sie die ISO im Dateisystem belassen und dann die iso-scan/filename=$isofileOption verwenden, können Sie diese Methode verwenden, ohne Ihre initrd neu erstellen zu müssen.

Zoredache
quelle
Das Problem ist, dass BT5R3 den Parameter iso-scan / filename immer noch nicht unterstützt ... Ich muss die Datei casper / initrd.gz patchen. this.is.thoughtcrime.org.nz/multi-boot-bt5-from-usb-with-grub2 Gibt es andere Lösungen für mein Problem?
Pr.nizar
Wenn Sie dieses Detail zu Ihrer ursprünglichen Frage hinzugefügt hätten, hätten Sie viel weniger Probleme damit, dass Ihre Frage ein Duplikat ist. Es gibt mit ziemlicher Sicherheit eine Lösung, aber ich weiß es im Moment nicht.
Zoredache
Ich kann die gleichen Dinge machen, die Unetbootin macht, aber das Problem ist, dass es nicht die gleiche Verzeichnisstruktur sein wird, die ich gemacht habe. ( Youtube.com/watch?v=MH-khdiXqYs )
pr.nizar