(pule para o cabeçalho = problem se você for especialista em LiveUSBs, ISOs, GRUB2, etc)
Estou configurando um Linux LiveUSB multiboot / multiISO como detalhado aqui , que eu pretende usar em múltiplos hosts (ou seja, qualquer PC arbitrário eu decido que eu preciso inicializar). O processo parece direto:
/boot/grub/grub.cfg :
menuentry s), esp root
menuentry s para cada ISO. O principal problema é, para cada ISO, criar um ou mais menuentry s que o inicializem apropriadamente. Isso parece simples:
grub.cfg , initrd* , vmlinuz (ou qualquer que seja a configuração do GRUB, a imagem inicial do RAMdisk e a imagem do kernel) grub.cfg do ISO para seu menuentry (s) menuentry
loopback usando o ISO grub.cfg da ISO, por exemplo,
initrd /casper/initrd.lz - > %código%
initrd (loop)/casper/initrd.lz - > %código%
linux /live/vmlinuz para saúde mental: -) linux (loop)/live/vmlinuz do seu host de desenvolvimento Muitos ISOs têm grub-script-check s que querem configurar o vídeo antes de fazer a inicialização "real". Todos eles fazem isso de forma ligeiramente diferente, então eu coloco o código de vídeo de cada ISO dentro de seu umount (s). No entanto, o ISO grub.cfg s com o qual trabalhei até agora parece ser mais ou menos assim:
if loadfont /path/to/font/file ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
# usually followed by more menu and background tweaking
A boa notícia é que eu posso determinar o caminho de boothime para o arquivo de fontes - ou seja, posso fazer menuentry happy. A má notícia é que, uma vez dentro do bloco grub.cfg ,
Como faço para o GRUB encontrar all os módulos?
Observe que o in-ISO loadfont do Clonezilla só encaminha para seu if :
# This file is for compatibility to Ubuntu Linux's uEFI secure boot.
# The real config file for grub is /EFI/boot/grub.cfg.
configfile /EFI/boot/grub.cfg
O /boot/grub/grub.cfg do meu LiveUSB (fora de todos os ISOs) contém código como
# isofile_abspath==path to the ISO from the root of my LiveUSB.
set isofile_abspath='/ISOs/clonezilla-live-2.4.2-10-amd64.iso'
set root=(hd0,1)
loopback loop ($root)$isofile_abspath
...
set clonezilla_prefix='(loop)/EFI/boot'
...
set loadfont_fp="$clonezilla_prefix/unicode.pf2"
echo -e "About to 'loadfont $loadfont_fp' ..."
if loadfont "$loadfont_fp" ; then
set gfxmode=auto
echo -e 'about to 'insmod efi_gop' ...'
insmod efi_gop
echo -e 'about to 'insmod efi_uga' ...'
insmod efi_uga
echo -e 'about to 'insmod gfxterm' ...'
insmod gfxterm
echo -e 'about to 'terminal_output gfxterm' ...'
terminal_output gfxterm
fi
echo -e 'Done loadfont.'
Resultados no boottime:
About to 'loadfont (loop)/EFI/boot/unicode.pf2' ...
about to 'insmod efi_gop' ...
error: file not found.
about to 'insmod efi_uga' ...
error: file not found.
about to 'insmod gfxterm' ...
about to 'terminal_output gfxterm' ...
error: no suitable mode found
Done loadfont.