El instalador de ubiquity no puede instalar grub en la ruta correcta

El instalador de ubiquity no puede instalar grub en la ruta correcta

¿Me estoy perdiendo algo o por qué no siempre se puede instalar grub donde se dirige con partición manual + configuración previa?

Utilizo un archivo preestablecido para el escritorio xubuntu 20.04.2 que no tiene directivas de partición. cuando se inicia "automatic-ubiquity", después de particionar manualmente sda, se ignora la selección /dev/sda1 y grub se instala en /dev/sda.

añadido d-i grub-installer/only_debian boolean falsey/o d-i grub-installer/with_other_os boolean falsepreestablecido. después de particionar manualmente sda, se ignora la selección /dev/sda1 y grub se instala en /dev/sda.

Hackeé una forma de configurar dinámicamente, d-i grub-installer/bootdev string defaultpero eso requiere iniciar en el entorno en vivo, particionar el disco y configurar la partición activa primero, luego iniciar "ubicuidad - automática" o reiniciar con "ubicuidad automática".

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;

Probar esto funciona con una máquina virtual con un solo disco, pero es posible que no funcione como se desea en hardware con varios discos o instalando desde USB.

d-i grub-installer/skip boolean trueParece ignorado siempre. Nuevamente pirateé una manera de hacer que eso funcionara, d-i grub-installer/bootdev stringlo configuré dejándolo vacío. Sin embargo, instalar grub manualmente en ubiquity/success_command no funciona. Al inspeccionar los primeros sectores de /dev/sda1, todos son 00. El otro comando se completa con éxito.

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;

Respuesta1

Finalmente abandoné el partman/early_commandmétodo. Actualmente lo configuré grub-installer/bootdeven vacío y lo uso ubiquity/success_commandpara forzar la instalación de grub en la /targetpartición y marcarla como activa.

algo feo, pero funciona. probado solo para la tabla de particiones sata/nvme/mbr y particiones de arranque/inicio/raíz separadas con 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 ');

En última instancia, creo que la ubicuidad debe actualizarse para reflejar las selecciones en la interfaz gráfica de usuario.

información relacionada