Como usar o Syslinux para encadear a instalação do Ubuntu?

4

Eu tento o meu melhor para detalhar minha pergunta. Se ficar sem paciência, vá para o último parágrafo.

Eu baixei o Ubuntu 13.04 de seu site oficial e extraí os arquivos para uma pasta ubuntu\ no pendrive (Z: por exemplo). Então, os arquivos estão agora em Z:\ubuntu\

Antes disso, Eu baixei o Syslinux 5.10 (6.00 tem erros) e usei-o para instalar o código de boot no pendrive com este comando:

syslinux.exe --mbr --active --directory /boot/syslinux/ --install Z:

Em seguida, copiei chain.c32 e solicitei libs para Z:\boot\syslinux e adicionei a syslinux.cfg (a parte sem importância é ignorada):

COM32 chain.c32

APPEND isolinux=/ubuntu/isolinux/isolinux.cfg

O Syslinux inicializou com sucesso, mas não conseguiu inicializar o Ubuntu, dizendo:

Err: option 'maps' requires a sector'', but I didn't know what it meant.

Então eu tentei carregar o isolinux configure do Ubuntu usando:

config /ubuntu/isolinux/isolinux.cfg /ubuntu

Mas só recebi a mensagem dizendo:

Loading gfxboot... Failed: No such file or directory

Eu tentei novamente com:

config /ubuntu/isolinux/isolinux.cfg /ubuntu/isolinux/

E ele disse:

Failed to load COM32 file gfxboot.c32

Mas pude ver os LABELs com a chave [TAB] :

boot:

live live-install check memtest hd mainmenu help

Então eu tentei inicializar o Ubuntu via linha de comando:

boot: live

E isso mostrou que:

Loading /casper/vmlinuz failed: No such file or directory

Acho que o Syslinux reconhece Z:\ como diretório raiz / , não Z:\ubuntu\ , por isso não foi possível carregar o vmlinz. Então mudei os arquivos para Z:\ e reiniciei. Embora syslinux ainda não conseguiu carregar o gfxboot, mas eu iniciei no Ubuntu com sucesso com

config /isolinux/isolinux.cfg /isolinux/

boot: live

Eu não entendo porque não foi possível carregar o gfxboot.c32 quando ele leu o isolinux corretamente. Talvez syslinux eu uso e isolinux usa Ubuntu não são os mesmos, e o bootcode e gfxboot não são compatível.

O Syslinux Wiki menciona que o CONFIG pode reiniciar o carregador de boot usando um arquivo de configuração diferente e definir o novo diretório inicial usando:

CONFIG /path/to/cfg/file/configfile.cfg /path/to/new/base/dir

Eu segui o guia, mas arquivei para deixar o Syslinux definir Z:\ubuntu\ como diretório raiz. Talvez eu tenha entendido mal este guia.

Então minha pergunta é, como colocar o Ubuntu ou outro Sistema Operacional em uma pasta independente e configurar o syslinux corretamente para definir direcotry onde o Ubuntu ou outro sistema operacional é como diretório raiz para que eu possa inicializar o SO com sucesso?

    
por Noverull 04.07.2013 / 09:53

2 respostas

1

Eu não sei mais se isso é relevante, mas estou tendo os mesmos problemas e ainda estou brincando com ele. Eu tive algum sucesso, que desejo compartilhar.

Primeiro de tudo, desde que eu estou tentando alcançar a mesma coisa eu soube imediatamente o que ele está tentando alcançar. Ele está tentando fazer um pendrive multi-boot para instalar várias distribuições Linux.

Para integrar cada sistema operacional e facilitar as atualizações, faz sentido tentar carregar o gerenciador de inicialização de cada distribuição, como se estivesse sozinho no sistema de arquivos. Assim, ele tentou encadear sua configuração isolinux (que vem com o .iso). Eu também tentei isso, mas ainda não tive sorte.

A única solução que encontrei (testada apenas com o netboot iso) é usar o método de apenas carregar a nova configuração (neste caso /path/to/distro/isolinux.cfg), usando a instrução CONFIG. Só que, neste caso, que tenho alguns erros, então eu tentei sua configuração filho "menu.cfg". Isso ignorou o menu de inicialização do Ubuntu, mas carregou o instalador do Ubuntu com sucesso.

Lembre-se de que você também precisa especificar a nova casa na linha CONFIG ou usando APPEND abaixo.

Por fim, alguns comentários sobre a questão. Quando se trata de PATH (Z :) é irrelevante aqui, desde quando você está realmente executando a partir do pendrive USB você não está usando as regras do Windows e UNIX se aplica. Portanto, insira apenas o caminho da maneira UNIX / xxx / zzz. Por exemplo, "Acho que o Syslinux reconhece Z: \ como diretório raiz /" não faz sentido, porque / = root, no Windows (letra da unidade +) \ (\ = root).

Como você tem exatamente o mesmo objetivo e problemas que eu, compartilharei qualquer progresso que tenha no futuro.

EDITAR: Aqui está a resposta que provavelmente resolverá tudo.

O simples fato que você deve lembrar é que os arquivos COM32 são incompatíveis entre diferentes versões do SYSLINUX / ISOLINUX. SYSLINUX & ISOLINUX são compatíveis entre si.

No Ubuntu Netboot.iso, apenas um arquivo COM32 é usado, vesamenu.c32. Eu simplesmente substitui isso com o da minha instalação principal do syslinux no usb (/boot/syslinux/vesamenu.c32).

Em seguida, simplesmente aponte seu menu de inicialização para o arquivo que, de outra forma, iniciaria a instalação do SO (/boot/ubuntu/isolinux.cfg). Use CONFIG para este & isso apenas funcionará magicamente. Não mais "Não foi possível carregar o vesamenu.c32".

    
por 10.07.2014 / 14:07
-1

Ok, depois de reunir fatos e re-reler a pergunta e nossa discussão: Você não pode instalar o sistema operacional em "pasta" (ou seja, você não pode instalar o Linux na pasta como /ubuntu/, you need to install it to / folder). Linuxes want a full featured partition: they need to put / usr , / var ', na raiz do que eles vêem como sistema de arquivos. (chrooting aside)

Além disso, o Linux não pode ser instalado no FAT-32. Este sistema de arquivos não possui links simbólicos e algumas outras facilidades que são a base da operação do Linux.

Você precisa do ext3 / 4, xfs ou outro sistema de arquivos real suportado. No entanto, você pode simplesmente instalar o Ubuntu no usb como em qualquer HDD normal - apenas setup: fat32 ou ext2 para boot {manager, loader} e imagem do kernel, e ext4 para o sistema operacional. Você poderá usar apt-get programas, salvar documentos e outros enfeites.

    
por 04.07.2013 / 12:51