ここには非常によく似た質問があります。 " grub configプロンプトなしでapt-get -y dist-upgradeを実行するにはどうすればよいですか " apt-getを使用してプロンプトなしでgrubを更新することについてです。
ただし、まったく新しいイメージにapt-getを使用してgrub2をインストールする方法を知りたいのですが。私は、debootstrapで始まり、そこから行く仮想マシンディスクイメージを準備しています。
イメージにgrub2ソフトウェアをインストールしたいのですが、構成したり、ブートセクターにインストールしたりしません;後のスクリプトが適切な構成とインストールを行います。
これどうやってするの?
私自身の質問に答える-私はこのようにできることがわかりました:
echo "grub-pc grub-pc/install_devices_empty boolean true" | debconf-set-selections
DEBIAN_FRONTEND=text apt-get -y install grub2
あなたの質問はほぼ2年前のものかもしれませんが、私が共有すべきもっと良い答えがあると思います。
grub2
またはgrub-pc
をインストールしないでください。 grub-pc-bin
およびgrub2-common
をインストールします。
grub-install
とupdate-grub
はgrub2-common
によって提供されますが、debconf
とucf
はすべてgrub-pc
によって提供されます。
ただし、grub-pc
はほとんどの(すべての)カーネルイメージパッケージに推奨されるパッケージであるため、--no-install-recommends
オプションを使用してカーネルイメージとカーネルイメージのアップグレードをインストールする必要があります。
--assume-yes
オプションの使用にも注意してください。これにより、apt-get
を非対話的に実行できます。
インストール:
Sudo apt-get update
Sudo apt-get install --assume-yes --no-install-recommends linux-image-virtual grub-pc-bin grub2-common
Sudo grub-install /dev/sdX
Sudo update-grub
アップグレード:
Sudo apt-get update
Sudo apt-get dist-upgrade --assume-yes --no-install-recommends
お役に立てれば!!
私の場合は少し異なるかもしれませんが、新しく作成したVMをアップグレードするときにインストーラーからインタラクティブな質問がありました。これは自動化を台無しにし、それを取り除く方法を見つけるのは非常に困難でした。
sed -i "s/#\ conf_force_conffold=YES/conf_force_conffold=YES/g" /etc/ucf.conf
apt-get -y upgrade
sed -i "s/conf_force_conffold=YES/#conf_force_conffold=YES/g" /etc/ucf.conf
それは私のアップグレードの時だけ対話性を削除します。その場合、それはcfではなくdebconfによって生成されます。
ちなみに、必要に応じてファイルを手動で編集することもできますが、私はすべてをコピー/貼り付け可能に変換する傾向があります。
私はUbuntu 16.04を使用しています