(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.