Multiboot no usb com syslinux

9

Estou tentando fazer um usb de inicialização múltipla com Ubuntu, Backtrack e Mantra-OS nele (todo o Ubuntu como você pode ver). Esses são os passos que fiz:

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

Depois disso, montei e copiei arquivos nos respectivos ISOs para as pastas que fiz:

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/

Depois disso, preenchai o arquivo de configuração syslinux.cfg in /media/diqus/syslinux com isso:

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 png de 8 bits em / media / disqus / syslinux /)

Agora tudo está indo bem e eu sou capaz de arrancar, eu tenho o menu syslinux e até mesmo carregar vmlinuz e initrd! O os está realmente carregando (eu tenho a tela inicial), mas então eu tenho o erro (algo sobre Busybox):

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

Não tenho certeza qual é o problema, mas acho que é sobre caminhos relativos e a "coisa" do CDROM. Eu testei muitos deles (mesmo relativos e absolutos), mas nada funciona.

A resposta não deve ser sobre MultiBootUSB, MultiSystem, Yummi ou qualquer outra ferramenta; não deve ser também sobre grub ou grub2 ou qualquer outro bootloader. Eu quero fazer minha abordagem funcionar.

    
por pr.nizar 18.04.2013 / 20:13

2 respostas

1

Na verdade, resolvi isso e funciona! Eu encontrei um código de fraude chamado: live-media-path = caminho / para / casper / pasta junto com ignore_uuid. Então, o código de trabalho modificado:

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

Muito obrigado!

PS: Para outras distros, você pode procurar por arquivos de configuração do syslinux no repositório do Yumi no GitHub: link

    
por 19.04.2013 / 23:52
0

Ok, como você não está interessado em soluções alternativas, precisará levar mais tempo para entender como o processo de livros funciona.

O carregador de inicialização carrega o kernel e initrd na memória e, em seguida, passa a execução para o kernel. Depois desse ponto, toda a execução é passada para o processo init / upstart no initrd e para quaisquer scripts que primeiro processem chamadas. Os scripts dentro do initrd, realmente não sabem nada sobre o sistema de arquivos, ou patos relativos de onde ele foi carregado. Eles não podem simplesmente referenciar um grande sistema de arquivos caspar nesse diretório.

O Initrd of livecds contém scripts que permitem localizar o sistema de arquivos. Para o sistema Ubuntu, ele procura por um arquivo específico em uma pasta específica dentro da raiz de todos os sistemas de arquivos conhecidos em cada unidade que ele pode ver. Se não conseguir encontrar nada, receberá o erro que você mencionou.

Você pode passar a opção ISO-SCAN para como parte de sua linha de acréscimo. Esse argumento dirá ao script que, em vez de varrer os sistemas de arquivos, ele irá montar um ISO e ler os arquivos de dentro dele.

Apenas descartar arquivos em algum diretório aleatório que você definir provavelmente não é suportado. Eu não olhei para os scripts initend do livecd ultimamente, mas não tenho conhecimento de nenhuma opção que permita especificar algum diretório arbitrário para os arquivos extraídos.

Se você quer um comportamento que ainda não foi projetado pelos desenvolvedores, você terá que recompilar seus initrds com seus próprios scripts e ferramentas para carregar o sistema de arquivos raiz. Deixar o ISO no sistema de arquivos e, em seguida, usar a opção iso-scan/filename=$isofile é o método que você pode usar sem precisar reconstruir seu initrd.

    
por 18.04.2013 / 21:20