kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 22.04 その15 - GRUB2の起動メニュー構築時、他OSの検出が無効に

他OSの検出が無効に

「GRUB2」や「Linux kernel」のインストール及びアップデート時など「GRUB2」の起動メニューを構築する際、ストレージにインストールされている他OSの自動的な検出がデフォルトで無効化されました。


GRUB2

「GRUB2」はOSの起動に使用されるブートローダーです。
高機能なブートローダーであり、「Ubuntu」ではデフォルトでブートローダーに「GRUB2」を採用しています。

「GRUB2」はPCの「BIOS」や「UEFI」経由で起動され、その後「GRUB2」はストレージにインストールされているOSを起動します。
つまりストレージにインストールされているOSは、この「GRUB2」経由で起動することになります。

様々なOSを起動できる

「GRUB2」は「Ubuntu」だけでなく「Windows」などストレージにインストールされている様々なOSを起動することができます。
もしストレージに複数のOSがインストールされている場合、ユーザーは「GRUB2」の起動メニューから起動するOSを選択することができます。
つまり「GRUB2」はデュアルブートを含むOSのマルチブートに対応しています。

他OSの自動的な検出

さて「Ubuntu」では「GRUB2」の起動メニューを構築する際、PCに接続されているストレージをマウントし、各ファイルシステム(パーティション)に現在起動している自分以外のOSがインストールされているかどうかをチェックします。


もしファイルシステム内に自分以外のOSが見つかった場合、そのOSを「GRUB2」の起動メニューに追加します。
これは「GRUB2」の起動メニューを構築する時に自動的に行われています。

  • grub-mkconfig

セキュリティーに対する懸念

他OSを検出する際、各ファイルシステムを「root」でマウントし中身をチェックします。
そのため他OSを検出する過程でその処理に不具合等問題が存在した場合、脆弱性へと発展しかねません。
このセキュリティーの懸念に対応するためアップストリームは、「grub 2.06」から従来行っていた他OSの検出を無効化しました。

  • GNU GRUB Manual 2.06

os-proberの無効化

他OSの検出は「os-prober」を利用して行われています。


「GRUB2」の起動メニューを構築する時に「os-prober」が呼び出されなくなり、ストレージに他OSがインストールされていてもそれらが検出されず、起動メニューに他OSを起動する項目が追加されなくなります。


詳細は上記マニュアルの「GRUB_DISABLE_OS_PROBER」の項目を参照してください。

os-proberはなくならない

少なくとも現状では本件はあくまで「os-prober」による他OSの検出をデフォルトで無効化するのであって、「os-prober」がなくなるわけではありませんし、ユーザーは他OSの検出を有効化することも可能です。


Ubuntu 22.04 LTSでgrub 2.06を採用

「Ubuntu 22.04 LTS」では「grub 2.06」が採用されます。

  • grub2

そのためOSをマルチブートしているユーザーは本件に影響を受けます。

Ubuntuどうしよう?

というわけで以下で本件の対応方針が話し合われています。

  • os-prober is disabled in grub 2.06 and where to go from here

UEFIでOSをマルチブートしている場合

「UEFI」でOSをマルチブートしている場合、そもそも「UEFI」で起動するOSのブートローダーを指定できるようになっています。


例えば1つのストレージ内に「Ubuntu」と「Windows」がインストールされている場合、「UEFI」のブートマネージャーで起動するOSのブートローダーを切り替えれば、それぞれのOSを起動することができます。
ただし1つのストレージ内に複数の「Ubuntu」がインストールされている場合、ブートローダーの取り合いになります。

BIOSでOSをマルチブートしている場合

こちらのほうが大きな問題になります。
「BIOS」でOSをマルチブートしている場合、ストレージが別れていれば「BIOS」から起動ディスクを選択できますが、そうではない場合他OSを起動することができません。
これはブートローダーの取り合いになるためです。

対応案

「os-prober」を再度有効化する案や、「Ubuntu」のインストール時に「os-prober」を実行して他OSの検出結果をキャッシュしておき、それを起動メニューを構築する時に利用する案など、いくつか対応案が提示されています。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 22.04 その98 - 入力ソースとキーボートレイアウトと日本語入力のカスタマイズ
    入力ソースとキーボートレイアウトと日本語入力 「Ubuntu」ではユーザーが利用しているキーボードレイアウトや日本語入力のカスタマイズが可能です。
  • Ubuntu 20.04 その74 - UbuntuとUEFIセキュアブート
    UbuntuとUEFIセキュアブート 「Ubuntu」と「UEFIセキュアブート」に関するお話です。
  • Ubuntu 22.04 その64 - Windows/Linux/macOSでUbuntu 22.04 LTSのライブUSBメモリーを作るには
    Ubuntu 22.04 LTSのライブUSBメモリーを作る方法 Windows/Linux/macOSでPC向け「Ubuntu 22.04 LTS」のライブUSBメモリーを作る方法を紹介します。
  • Ubuntu 22.04 LTSのインストール その5 - UEFI環境でパーティションの作成と構成 〜 ブートローダーのインストール先の選択
    UEFI環境でパーティションの作成と構成を行う UEFI環境でパーティションの作成と構成を行います。
  • Ubuntu 22.04 その107 - ローカルネットワーク上でフォルダーやファイルを共有するには
    ローカルネットワーク上でフォルダーやファイルを共有するには 「ファイル(Nautilus)」アプリはファイルマネージャーです。 「ファイル」はローカルネットワーク上でフォルダーやファイルを共有する仕組みを提供しており、簡単に他のPCとフォルダーやファイルをやりとりできます。
  • Linux Mint その222 - Linux Mint 21.2の新機能と変更点
    Linux Mint 21.2の新機能と変更点 リリースノートから「Linux Mint 21.2」の新機能と変更点を紹介します。
  • Ubuntu 22.04 その120 - UbuntuのブートローダーをBoot Repairで修復するには・Ubuntuが起動しないトラブルを解決
    UbuntuのブートローダーをBoot Repairで修復するには 「Boot Repair」はOSのブートローダーに起因するOSが起動しない問題を簡単に解決してくれるアプリです。
  • Ubuntuのバージョンと開発コードの対応表
    バージョンと開発コード 「Ubuntu」には各バージョンごとに開発コードが設定されます。
  • WSL その273 - WSL 2.0.0がリリースされました・WSL 2.0.0の新機能や変更点と数々の実験的な新機能の導入
    WSL 2.0.0の新機能と変更点 2023年9月18日にリリースされた「WSL 2.0.0」の新機能と変更点をピックアップします。
  • VirtualBox その125 - ゲストOSのUbuntuにLinux Guest Additionsをインストールするには
    ゲストOSのUbuntuにLinux Guest Additionsをインストールするには 仮想マシンにインストールしたゲストOSの「Ubuntu」に、「Linux Guest Additions」をインストールする方法です。
記事のピックアップ
オプション