Chainload syslinux do GRUB2 - mostrar menu syslinux.cfg


9

Estou usando um disco USB ao vivo do Clonezilla para recriar sistemas. De acordo com o explicado em http://clonezilla.org/fine-print-live-doc.php?path=clonezilla-live/doc/99_Misc/00_live-boot-parameters.doc, meus discos solicitam o menu contido no syslinux.cfgpara todos os sistemas, exceto os mais recentes os que são máquinas UEFI (e ter o BIOS configurado para arrancar a partir de dispositivos UEFI primeiros), onde sou solicitado com o grub.cfgmenu.

Como eu customizei muito meu syslinux.cfgmenu, gostaria de modificar o grub.cfgarquivo para carregar automaticamente em cadeia automaticamente no syslinux, para mostrar o syslinux.cfgmenu em todos os casos.

Isso é possível em tudo? Quão?

No disco existe o GRUB2 e meu entendimento (de olhar na Internet) é que isso será possível, mas eu ainda não entendi como. Qualquer ajuda é apreciada.

Edit:
Gostaria de esclarecer que o sistema inicializa usando o grub sem problemas ao selecionar qualquer uma das opções que estão no grub.cfgmenu por padrão, conforme fornecido pelo download do Conezilla, mas o que eu gostaria de fazer é mostrar o menu do syslinux (in syslinux.cfg) em vez do menu padrão na grub.cfg

Segunda edição, como eu fiz:
No final, as soluções propostas não funcionaram para mim, então simplesmente tornei a pasta 'EFI \ boot' "indisponível" (renomeou); dessa forma, a inicialização do UEFI falha e o sistema inicializa do syslinux como no sistema antigo: nenhuma modificação no BIOS, nenhum novo menu, nenhuma carga em cadeia ...


Eu acho que você pode usar o configfileparâmetro dentro do grub.conf para carregar o syslinux.cfg em
cadeia

Respostas:


1

Isso sugere que houve alguns bugs relacionados a isso e alguns patches, por isso é difícil saber com certeza: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/469568

Primeiro, se o seu sistema operacional atualizar o grub, ele irá regenerar o grub.cfg e acabar com sua configuração; portanto, não modifique o /boot/grub.cfg manualmente, em vez disso, modifique os arquivos no /etc/grub.d (arquivo com o nome 40_custom ou algo parecido) e ligar grub-mkconfig -o /boot/grub/grub.cfg.

Você pode tentar algo simples como este:

menuentry "Unidade raiz do Syslinux" {

definir raiz = (hd1,3)

carregador de corrente +1

}

(hd1,3) é uma partição de disco sdb3, o grub suporta a identificação por uuid, para que seja possível criar uma configuração na qual sua partição seja detectada por todos os PCs. No entanto, na minha experiência, às vezes isso não é suficiente.

Você também pode tentar algo como chainloader (hd1,3)/path/to/syslinux/isofile.bin

Se tudo falhar, é possível inicializar a partir do iso com o syslinux, mas parece que no seu caso isso não é uma opção.


Tentei isso pela primeira vez na linha de comando grub (pressione c uma vez no grub), identifiquei minha partição syslinux.cfg e tentei 'chainloader (hd0, msdos2) +1' diretamente, mas recebo o erro 'caminho de arquivo EFI inválido'. Observe que o conteúdo da partição acima não contém nenhum arquivo .bin. (I também editado a questão de clareza adicional)
rodedo

Provavelmente não, seu nome e extensão de formato binário (.bin) dependem da distribuição (os CDs ao vivo geralmente têm bin para inicializar com o syslinux e o isolinux, mas no seu caso é provavelmente o arquivo .bs, observe aqui os comandos syslinux.org/wiki/index.php/SYSLINUX#LABEL_command ). No entanto, agora estou pesquisando uma coisa: não inicializar o kernel diretamente com o módulo casper (também conhecido como modo live cd / live usb) não executa o menu do gerenciador de inicialização. Depois de alguns minutos, escreverei resultados.
IBr

OK, vejo que os candidatos são os arquivos .c32 que tenho nessa pasta. Mais precisamente, este é o conteúdo da pasta: 'chain.c32', 'menu.c32', 'reboot.c32', 'vesamenu.c32', 'memdisk', 'syslinux.cfg' <br> excluindo o arquivo cfg , devo tentar o outro por um? Olhando em volta, entendi que a cadeia32 deveria ser usada para chailoiding na outra direção (então não é o que eu preciso), estou errado?
Rodedo19

Chamar bem o casper não invoca o menu do gerenciador de inicialização. Não tenho ideia de como arquivar isso. Se isso ajudasse, tenho o meu próprio exemplo de carregamento de cadeia do grub para o grub, mas duvido que ele tenha algum uso com o syslinux:menuentry 'Archlinux The Latest' { insmod ext2 set root=(hd0,6) multiboot /boot/grub/i386-pc/core.img }
IBr

0

Após 4 anos ... :)

Tente o seguinte:

menuentry 'menuentry' {
    set root=(hd0,1)
    syslinux_source /path/isolinux/isolinux.bin
    syslinux_configfile /path/isolinux/isolinux.cfg
}

1
Elabore um pouco e explique por que isso resolve o problema.
Countermode #

-1

você precisa instalar o diretório em vez de instalar o setor de inicialização. se você instalar um setor de inicialização, copie os primeiros 512 bytes da partição em um arquivo e carregue em cadeia para esse arquivo. trabalhou para mim.


Isso pode estar correto, mas poderia se beneficiar de algumas explicações sobre como executar as etapas descritas (e da capitalização adequada).
Caleb
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.