Leia o UUID de uma partição conhecida em uma variável no GRUB

2

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

    
por renergy 06.07.2015 / 13:13

1 resposta

3

Recebemos a resposta da lista de discussão help-grub :

probe -u $root --set=abc

use $ abc como variável uuid de $ root.

Então, no meu caso específico, a parte relevante do grub.cfg se tornou:

probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"

E isso funciona muito bem.

    
por 07.07.2015 / 11:29

Tags