O instalador ubiquity falha ao instalar o grub no caminho correto

O instalador ubiquity falha ao instalar o grub no caminho correto

estou faltando alguma coisa ou por que o grub nem sempre pode ser instalado onde é direcionado com particionamento manual + pré-configuração?

Eu uso um arquivo de pré-configuração para o desktop xubuntu 20.04.2 que é desprovido de diretivas de particionamento. quando a "ubiquidade automática" é inicializada, após o particionamento manual do sda, a seleção de /dev/sda1 é ignorada e o grub é instalado em /dev/sda.

adicionado d-i grub-installer/only_debian boolean falsee/ou d-i grub-installer/with_other_os boolean falsepré-configurado. após particionar manualmente o sda, a seleção de /dev/sda1 é ignorada e o grub é instalado em /dev/sda.

Eu hackeei uma maneira de configurar dinamicamente, d-i grub-installer/bootdev string defaultmas isso requer inicializar no ambiente ativo, particionar o disco e configurar a partição ativa primeiro e, em seguida, iniciar "ubiquity --automatic" ou reinicializar com "automatic-ubiquity".

d-i grub-installer/only_debian boolean false
d-i grub-installer/with_other_os boolean false
d-i grub-installer/bootdev string default
d-i partman/early_command string                                               \
 BOOTFLAG=$(lsblk -rpo PARTFLAGS,PKNAME,PATH | grep "0x80" | cut -f 3 -d ' '); \
 if [ $BOOTFLAG ]; then debconf-set grub-installer/bootdev $BOOTFLAG; fi;

testar isso funciona com uma VM com um único disco, mas pode não funcionar como desejado em hardware com vários discos ou instalação a partir de USB.

d-i grub-installer/skip boolean trueparece ignorado sempre. novamente eu criei uma maneira de fazer isso funcionar, deixei d-i grub-installer/bootdev string-o vazio. instalar manualmente o grub em ubiquity/success_command não funciona. inspecionando os primeiros setores de /dev/sda1, todos são 00. o outro comando é concluído com sucesso.

d-i grub-installer/only_debian boolean false
d-i grub-installer/with_other_os boolean false
d-i grub-installer/bootdev string 
ubiquity ubiquity/success_command string                                       \
 in-target grub-install -‑force /dev/sda1;                                     \
 echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> /target/etc/fstab;

Responder1

eventualmente abandonei o partman/early_commandmétodo. atualmente eu configurei grub-installer/bootdevcomo vazio e uso ubiquity/success_commandpara forçar a instalação do grub na /targetpartição e marcá-la como ativa.

meio feio, mas funciona. testado apenas para tabela de partição sata/nvme/mbr e partições de inicialização/home/root separadas com ext2/3/4.

d-i grub-installer/only_debian boolean false
d-i grub-installer/with_other_os boolean false
d-i grub-installer/bootdev string 
ubiquity ubiquity/success_command string                                   \
 echo 'tmpfs /tmp tmpfs nosuid,nodev 0 0' >> /target/etc/fstab            ;\
 worker() { grub-install --force --root-directory=/target $2             &&\
 parted -s $3 -- set ${4##*-} boot on; }                                  ;\
 worker $(lsblk -lpo MOUNTPOINT,KNAME,PKNAME,PARTUUID | grep '/target ');

em última análise, acho que a onipresença precisa ser atualizada para refletir as seleções na interface do usuário.

informação relacionada