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.