menuentry do Grub: auto find vmlinuz e initrd.img

1

Gostaria de saber, configurei uma chave usb para carregar o Linux .

Funciona muito bem, mas preciso configurar manualmente o arquivo grub.cfg para que pareça:

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" -- amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

menuentry 'Debian 9.3.0 amd64 netinst' {
          set isofile="/linux-iso/debian-9.3.0-amd64-netinst.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
      linux (loop)/install.amd/vmlinuz boot=live config findiso=$isofile
      initrd (loop)/install.amd/initrd.gz
}

Como você pode ver, a maior parte do código é a mesma, exceto para o Linux que carrega o kernel linux e initrd : às vezes os arquivos estão em /install.amd , às vezes é initrd.gz , às vezes initrd.lz ... E eu nem menciono as diferentes opções para o kernel. Muito confuso.

A coisa é que na vida real, se eu fizer apenas um dd do iso em um usbstick, o sistema pode inicializar nele, sem nenhuma informação adicional. Então eu acho que de alguma forma, existe uma maneira de recuperar as informações sobre o kernel para carregar automaticamente ... Seria possível implementar isso no grub para que eu pudesse, no melhor mundo possível, colocar um monte de .iso na minha pasta /linux-iso , e deixar o grub encontrar o kernel para carregar e as opções?

Obrigado!

NB: Eu não quero uma resposta que me diga para usar este ou este software para construir o meu pendrive, eu quero implementá-lo sozinho.

    
por tobiasBora 11.12.2017 / 19:22

1 resposta

2

if I just do a dd of the iso on a usbstick, the system can boot on it, without any additional information.

Isso só é possível porque a imagem ISO foi preparada com isohybrid ou equivalente para incluir não apenas o carregador de inicialização estilo CD / DVD, mas também o carregador de inicialização de estilo de disco rígido (ou bootloaders: um para BIOS tradicional + MBR boot e outro para UEFI) com a finalidade de dd 'dessa imagem ISO em um stick USB. A configuração para o (s) carregador (es) de inicialização do estilo de disco rígido incluirá os caminhos específicos e as opções de inicialização usados nessa imagem ISO.

Por favor, veja: link

Você pode criar um script para localizar o arquivo de configuração comum do carregador de inicialização ISOLINUX dentro de cada imagem ISO, ler as linhas linux e initrd apropriadas e montar um arquivo de configuração do carregador de inicialização que abranja várias ISOs. Mas esse script seria muito mais fácil de implementar para ser executado em um sistema operacional com todos os recursos enquanto se prepara o dispositivo USB multi-ISO, em vez de dentro do processo de inicialização real.

    
por 11.12.2017 / 20:39

Tags