ubiquityインストーラーが正しいパスにgrubをインストールできない

ubiquityインストーラーが正しいパスにgrubをインストールできない

何か見落としているのでしょうか、それとも手動パーティション分割 + preseed で指示された場所に grub を常にインストールできないのはなぜでしょうか?

私は、パーティション ディレクティブのない xubuntu 20.04.2 デスクトップ用の preseed ファイルを使用しています。「automatic-ubiquity」が起動すると、手動で sda をパーティション分割した後、/dev/sda1 を選択しても無視され、grub が /dev/sda にインストールされます。

d-i grub-installer/only_debian boolean falseおよび/またはpreseed に追加されますd-i grub-installer/with_other_os boolean false。手動で sda をパーティション分割した後、/dev/sda1 を選択しても無視され、grub は /dev/sda にインストールされます。

動的に設定する方法を編み出しましたd-i grub-installer/bootdev string defaultが、そのためにはライブ環境で起動し、ディスクをパーティション分割して最初にアクティブ パーティションを設定し、次に「ubiquity --automatic」を起動するか、「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;

これをテストすると、単一のディスクを持つ VM では機能しますが、複数のディスクを持つハードウェアや USB からのインストールでは期待どおりに機能しない可能性があります。

d-i grub-installer/skip boolean true常に無視されているようです。これを機能させる方法を再度ハックし、d-i grub-installer/bootdev string空のままに設定しました。ただし、ubiquity/success_command に grub を手動でインストールしても機能しません。/dev/sda1 の最初のいくつかのセクターを検査すると、すべて 00 です。他のコマンドは正常に完了します。

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;

答え1

結局、私はこの方法をやめました。現在は空にpartman/early_command設定し、パーティションに grub を強制的にインストールしてアクティブとしてマークしています。grub-installer/bootdevubiquity/success_command/target

ちょっと見苦しいですが、動作します。sata/nvme/mbr パーティション テーブルのみ、および ext2/3/4 を使用した個別の boot/home/root パーティションでテスト済みです。

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 ');

最終的には、GUI の選択を反映するために、ユビキタスを更新する必要があると思います。

関連情報