Eu já estou inicializando com sucesso a iso de instalação do arco montado em loop (e outras isos) usando o grub no flashdrive. Eu tenho arquivos grub em / boot / grub no flash, arquivos iso em / boot / iso (veja link ) . A parte relevante do grub.cfg é
imgdevpath="/dev/disk/by-uuid/CF3D-EC7C"
menuentry '[loopback]archlinux-2015.07.01-dual.iso i686' {
set isofile='/boot/iso/archlinux-2015.07.01-dual.iso'
loopback loop $isofile
linux (loop)/arch/boot/i686/vmlinuz archisolabel=ARCH_201507 img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/i686/archiso.img
}
Isso funciona bem - quando o UUID no imgdevpath está correto. Então, é preciso atualizar manualmente a linha de antemão. Só então funciona.
Eu gostaria de ler o UUID da partição raiz do GRUB (que também é a partição onde eu armazeno os arquivos iso), de dentro do grub, em uma variável, no momento da inicialização . Isso pode ser feito?
Isso simplificaria a inicialização do arquivo iso (montado em loop). "ls ($ root)" já mostra o UUID (entre outras coisas), mas não pode ser colocado em uma variável (ou pelo menos eu não sei como). Idealmente, eu gostaria de fazer algo como
foobar_readuuid ($root) --set=rootuuid
imgdevpath="/dev/disk/by-uuid/$rootuuid"
...
Eu não estou procurando por um comando "search"; Tanto quanto eu posso dizer, sua saída é sempre o "dispositivo, partição", ou seja, algo como hdX, msdosY. E eu já sei disso, é em $ root. Só quero ler o uuid, então eu poderia alimentá-lo com o $ imgdevpath