web-dev-qa-db-ja.com

デュアルブートマシンでgrubを更新する方法は?

あるパーティションにubuntu 16.04をインストールし、別のパーティションにubuntu 16.10をインストールしたマシンがあります。/boot/efiをマウントする200mのパーティションがあります。

基本的に、16.04を使用し、16.04までにインストールしたgrubを使用します。

時々16.10になってカーネルを更新します。ただし、16.04のgrubを入力せずに更新することはできません。そのため、新しいカーネルを起動するには、16.10でgrub-installを実行する必要があります。その後、16.04に戻ると、update-grubとgrub-installを実行しますが、これはばかげていると思います。

16.04のGRUBを入力せずに更新するにはどうすればよいですか?

Grub構成ファイルを更新したり、/ bootとして別のパーティションを使用したりすることはできますか?この種の操作は危険ですか?

1
dspjm

特定のカーネルではなく、パーティションを直接起動できます。 Debianベース(他のディストリビューションについてはわかりません)は、最新のカーネルと2番目に新しいリンクに/にリンクを追加します。そのため、最新のカーネルへのリンクを起動します。 os-proberをオフにし、ドライブとパーティションのブートスタンザを40_customにコピーします。

現在のgrub.cfgをバックアップしてから、40_customを編集します

Sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup
Sudo nano /etc/grub.d/40_custom

このようなエントリを40_customに追加し、(hd1,1)&sdb1の代わりにドライブとパーティションを使用します:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

Grubを編集してos-proberをオフにします。

Sudo nano /etc/default/grub

この行をgrubに追加して、エントリを追加してgrubを更新しないようにします。

GRUB_DISABLE_OS_PROBER=true

そして、すべての変更でgrubを更新します。

Sudo update-grub

古い同様のエントリには、UUIDバージョンもあります。

SBドライブにインストールされたUbuntuをブートするためのGRUB2メニューエントリを追加する方法?

詳細:方法:メンテナンスフリーのカスタマイズされたGRUB2画面を作成する-Cavsfan

https://help.ubuntu.com/community/MaintenanceFreeCustomGrub2Screen

https://help.ubuntu.com/community/Grub2/CustomMenus

3
oldfred

GRUBの基本的な制限について説明しました。Ubuntu(またはGRUBをサポートする他のOS)内でのみ生成可能な構成ファイルに依存しています。通常、GRUBを制御するOS /ディストリビューション内でSudo update-grubを実行することで問題を解決できます。場合によっては(おそらくあなたのものではない)、これが失敗する可能性のある問題が存在する可能性があり、その場合はさらに厄介なフープジャンピングが必要になります。

いくつかの代替アプローチがあります。

  • 私自身の rEFIndブートマネージャー は、事前に構成されたカーネルのリストに依存しません。代わりに、ブート時にブートローダーとLinuxカーネルをスキャンし、新しいブートリストを動的に作成します。 (ファイルシステムドライバー、設定オプション、カーネル名に関連するいくつかの注意事項がありますが、これは典型的なUbuntuインストールでうまく機能します。)このアプローチは、複数のLinuxディストリビューションを持つコンピューターのrEFIndの処理をGRUBよりもはるかに簡単にします、どのディストリビューションをrEFIndのインストールに使用し、どのディストリビューションに新しいカーネルがあるかに関係なく、rEFIndはリブートするたびに新しいカーネルを取得するためです。
  • GRUB LegacyまたはELILOなどのブートローダーを使用する場合、 EFI System Partition(ESP) 、手動でメンテナンスできます。これにより、カーネルのアップグレードに手間がかかりますが、複数のディストリビューションがある場合は、ディストリビューションAのカーネルを更新するときにディストリビューションBで再起動することをお勧めします。 Linux用の代替EFIブートローダーについては、 mine のこのページを参照してください。
  • Boot Loader Specification は、ブートローダーの構成に標準化を加える方法の提案です。採用された場合、Distribution Aのカーネル構成をDistribution Bのブートローダーがすぐに認識して尊重する方法で更新できるようになります。個人的には、この提案には重大な欠陥があると思いますが、重要な問題にも対処しています。大手企業(Canonical、Red Hat、Novellなど)のいずれかがその背後にいるという証拠はほとんど見ていません。 。私はそれを言及すると思ったので、Ubuntuをそれと互換性のあるツールを自分で書くことを検討したり、Canonicalにロビーしてこのアプローチを採用したりすることができます。

もちろん私は偏見がありますが、今のところ、私が経験している問題を回避する最善の方法はrEFIndです。 OTOH、rEFIndはまだ公式のUbuntuパッケージではありません(将来的にはそうなるはずですが、現在はDebianのテスト中ですので、最終的にはUbuntuに入れるべきです)。セキュアブートを使用する場合は、追加のフープジャンピングも必要です。

2
Rod Smith

さて... GRUBは、Sudo update-grubコマンドを実行しないと、新しいカーネルがインストールされたことを知ることができますか?したがって、これは避けられませんが、GRUBの再インストールは明示的に行う必要はありません-GRUBメニューの高度なブートオプションから新しいカーネルをブートすることを選択できます。ただし、使用しているメインオペレーティングシステムにGRUBを再インストールすると、ブートメニューの最初のレベルから他のシステムを直接起動できるため、より便利になります。残念ながら、このデュアルブートセットアップを処理する他のオプションはありません...

1
cl-netbox