他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」の起動メニューを構築する時に自動的に行われています。
セキュリティーに対する懸念
他OSを検出する際、各ファイルシステムを「root」でマウントし中身をチェックします。そのため他OSを検出する過程でその処理に不具合等問題が存在した場合、脆弱性へと発展しかねません。
このセキュリティーの懸念に対応するためアップストリームは、「grub 2.06」から従来行っていた他OSの検出を無効化しました。
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」が採用されます。そのためOSをマルチブートしているユーザーは本件に影響を受けます。
Ubuntuどうしよう?
というわけで以下で本件の対応方針が話し合われています。UEFIでOSをマルチブートしている場合
「UEFI」でOSをマルチブートしている場合、そもそも「UEFI」で起動するOSのブートローダーを指定できるようになっています。例えば1つのストレージ内に「Ubuntu」と「Windows」がインストールされている場合、「UEFI」のブートマネージャーで起動するOSのブートローダーを切り替えれば、それぞれのOSを起動することができます。
ただし1つのストレージ内に複数の「Ubuntu」がインストールされている場合、ブートローダーの取り合いになります。
BIOSでOSをマルチブートしている場合
こちらのほうが大きな問題になります。「BIOS」でOSをマルチブートしている場合、ストレージが別れていれば「BIOS」から起動ディスクを選択できますが、そうではない場合他OSを起動することができません。
これはブートローダーの取り合いになるためです。