Multiboot su usb con syslinux


9

Sto cercando di creare un usb multiboot con Ubuntu, Backtrack e Mantra-OS (tutto Ubuntu come puoi vedere). Questi sono i passaggi che ho fatto:

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

Successivamente ho montato e copiato i file nelle rispettive ISO in cartelle che ho creato:

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/

Dopo di che ho riempito il file di configurazione syslinux.cfgin /media/diqus/syslinuxquesto:

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 /)

Ora tutto sta andando bene e sono in grado di avviarsi, ho il menu syslinux e persino caricare vmlinuz e initrd! Il sistema operativo si sta effettivamente caricando (ho la schermata iniziale) ma poi ho l'errore (qualcosa su Busybox):

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

Non sono sicuro di quale sia il problema, ma penso che riguardi i percorsi relativi e la "cosa" del CD-ROM. Ne ho testati molti (anche relativi e assoluti) ma nulla funziona.

La risposta non deve riguardare MultiBootUSB, MultiSystem, Yummi o qualsiasi altro strumento; non deve riguardare anche grub o grub2 o qualsiasi altro bootloader. Voglio far funzionare il mio approccio.


Perché non Grub2? Sarebbe più semplice poiché non richiede di estrarre gli ISO.
Zoredache,

@Zoredache Ho già fatto con grub2 ma lo voglio con syslinux e senza il memdisk.
pr.nizar,

1
PenDriveLinux Multiboot farà tutto ciò che è necessario. Ecco perché ho detto che questo era un inganno.
James Mertz,

Risposte:


1

In realtà l'ho risolto e funziona! Ho trovato un cheat code chiamato: live-media-path = path / to / casper / folder insieme a ignore_uuid. Quindi il codice di lavoro modificato:

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

Grazie molto!

PS: per altre distro puoi cercare i file di configurazione di syslinux nel repository di Yumi su GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/


Molto bene. pr.nizar. Solo per la cronaca, si ignore_uuidpuò omettere; inoltre, per chiunque desideri copiare il set minimo di file da CD, controlla sfxpt.wordpress.com/2014/02/18/… . Vale a dire, rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310.
xpt,

0

Ok, poiché non sei interessato a soluzioni alternative, dovrai dedicare più tempo a capire come funziona il processo del libro.

Il bootloader carica il kernel e initrd in memoria , quindi passa l'esecuzione al kernel. Successivamente, tutta l'esecuzione viene passata al processo init / upstart in initrd e tutti gli script che il primo processo chiama. Gli script all'interno di initrd, in realtà non sanno nulla del filesystem o del pathos relativo di dove è stato caricato. Non possono semplicemente fare riferimento a un grosso filesystem caspar in quella directory.

L'Initrd dei livecd, contiene script che permettono loro di localizzare il filesystem. Per il sistema Ubuntu cerca un file particolare in una cartella specifica all'interno della radice di ogni file system noto su ogni unità che può vedere. Se non trova nulla ottieni l'errore che hai citato.

È possibile passare l' ISO-SCANopzione a come parte della linea di aggiunta. Questo argomento dirà allo script che invece di scansionare i filesystem, monterà un loopback su ISO e leggerà i file all'interno di quello.

Il semplice rilascio di file in una directory casuale definita non è probabilmente supportato. Ultimamente non ho esaminato gli script di initrd livecd, ma non sono a conoscenza di alcuna opzione che consenta di specificare una directory arbitraria per i file estratti.

Se vuoi un comportamento che non è già stato progettato dagli sviluppatori, dovrai ricostruire i tuoi initrd con i tuoi script e strumenti per caricare il filesystem di root. Lasciare l'ISO sul filesystem e quindi usare l' iso-scan/filename=$isofileopzione è il metodo che puoi usare senza dover ricostruire il tuo initrd.


Il problema è che BT5R3 ancora non supporta l'iso-scan / filename parametro ... devo cerotto Casper file / initrd.gz. this.is.thoughtcrime.org.nz/multi-boot-bt5-from-usb-with-grub2 Esistono altre soluzioni al mio problema?
pr.nizar,

Se avessi aggiunto quel dettaglio alla tua domanda originale, avresti ottenuto molto meno difetti sulla tua domanda di essere un duplicato. C'è quasi sicuramente una soluzione, ma al momento non la conosco.
Zoredache,

Posso fare le stesse cose che fa unetbootin ma il problema è che non sarà la stessa struttura di directory che ho creato .. ( youtube.com/watch?v=MH-khdiXqYs )
pr.nizar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.