Configurando GRUB_DISABLE_LINUX_UUID = true em / etc / default / grub não funcionando como esperado

4

Estou usando o Debian stretch (9.0), o atual estável. Meu arco é o AMD64. As minhas partições root e boot são grupos de volume LVM no topo de um dispositivo MD RAID 1.

De acordo com o meu entendimento da documentação, descomentando

GRUB_DISABLE_LINUX_UUID=true

em /etc/default/grub deve impedir que o GRUB2 use UUIDs em /boot/grub/grub.cfg . No entanto, ele continua a usar UUIDs mesmo depois de eu ter feito essa alteração.

Não tenho certeza se isso é um erro de usuário da minha parte, mas as instruções parecem bastante simples.

Alguns comentários adicionais.

  1. Há também um arquivo /usr/share/grub/default/grub , que tem conteúdo idêntico (mesmo md5sum) para /etc/default/grub . Eu não sou Certifique-se de qual é o ponto desse arquivo.
  2. Espero que /usr/sbin/grub-mkconfig inclua um cheque para GRUB_DISABLE_LINUX_UUID , mas não vejo um, apesar desse script inclui GRUB_DISABLE_LINUX_UUID . Alguém pode me explicar onde esse script está verificando GRUB_DISABLE_LINUX_UUID ?

Eu posso postar mais detalhes se puder ajudar, é claro.

Antecedentes: Eu estava motivado a mudar isso porque o UUID do meu VG raiz mudou e minha máquina se recusou a inicializar, dizendo que o UUID não existia. Qual estava correto? Não mais. Consulte Não é possível determinar o erro de status de sincronização ao tentar dividir o espelho LVM2 RAID 1 para saber como isso aconteceu.

Relatório de erros da Debian: grub-common: A configuração de GRUB_DISABLE_LINUX_UUID = true em / etc / default / grub não funciona como esperado .

    
por Faheem Mitha 04.07.2017 / 11:16

1 resposta

2

(Esta resposta tenta explicar o que está acontecendo e oferece um patch (possível).)

Parece que o código incorreto está em grub-mkconfig_lib lines 169-182 no Debian atual 9.

O ponto do bug é que a instalação e a inicialização insistem em configurar e usar o UUID para uma parte do processo de inicialização, apesar de não serem informadas pelo sysadmin / configuration.

Possivelmente não conseguir carregar o grub.cfg em conseqüência. por exemplo. está sempre fazendo grub-probe --target=fs_uuid / em grub-mkconfig_lib ; no nosso caso deve ser grub-probe --target=device / ou ser específico do código, ele deve usar $fs_hint e não refazer novamente grub_probe com fs_uuid

Eu fiz um patch para desabilitar a geração de UUID quando GRUB_DISABLE_LINUX_UUID está configurado como verdadeiro para o Debian 9. Ele funciona aqui. Por favor, teste-o.

Confirmo novamente que o arquivo incorreto é: /usr/share/grub/grub-mkconfig_lib

Eu escrevi um patch que se GRUB_DISABLE_LINUX_UUID estiver definido como true , ele não incluirá a diretiva search tentando selecionar uma raiz baseada em UUID. O administrador do sistema deve entender as conseqüências de selecionar essa opção ao inserir novos discos.

O patch para /usr/share/grub/grub-mkconfig_lib foi feito com:

diff -u grub-mkconfig_lib.old grub-mkconfig_lib > grub-mkconfig_lib.patch 

e está aqui: link

ou você pode obtê-lo aqui:

link

e para aplicá-lo:

cd /usr/share/grub
patch -p0 < grub-mkconfig_lib.patch

Basicamente, começando na linha 169, eu adicionei o novo if, e o recuo adequado, para desabilitar a pesquisa da partição raiz para o UUID que substitui a escolha pelo dispositivo se uma partição com um UUID válido for encontrada :

  if [ "x${GRUB_DISABLE_LINUX_UUID}" != "xtrue" ] ; then   
   if fs_uuid="'"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null'" ; then
      hints="'"${grub_probe}" --device $@ --target=hints_string 2> /dev/null'" || hints=
      echo "if [ x\$feature_platform_search_hint = xy ]; then"
      echo "  search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
      echo "else"
      echo "  search --no-floppy --fs-uuid --set=root ${fs_uuid}"
      echo "fi"
    fi
  fi

Eu testei, regenerando a configuração do grub, alterando o UUID e inicializando sem problemas, ao contrário da situação anterior, em que seríamos colocados no grub.

PS: Isso parece não estar restrito ao Debian. Depois de apontar para grub-mkconfig_lib , encontrei um tópico relacionado sobre fedora

    
por 05.07.2017 / 17:34

Tags