GRUB_DISABLE_LINUX_UUID=true が必要なのはなぜですか?

GRUB_DISABLE_LINUX_UUID=true が必要なのはなぜですか?

私はliloからgrub2に切り替えましたが、最初の試みは失敗しましたkernel panic - not syncing vfs unable to mount root fs on unknown block(0 0)。問題は、ルートパーティションがデバイス名ではなくUUIDに基づいて指定されることです。解決策はGRUB_DISABLE_LINUX_UUID=trueコメントを削除することです/etc/default/grub

元の自動生成には、/boot/grub/grub.conf一部のUUID項目と一部の/ dev項目が含まれています。

  • update-grub UUIDと/dev rootfsの中から選択する方法、つまりUUIDの場合もあればそうでない場合もあるのはなぜですか?
  • UUIDが機能しないのはなぜですか?誤って設定されている可能性があるカーネルパラメータが見つかりませんでした(カーネル3.8.2)。
  • grubがUUIDを使用する場合、fstabにUUIDが必要ですか?

答え1

値はディレクトリのスクリプトで使用されますGRUB_DISABLE_LINUX_UUID。それでもUUIDが表示されている場合は、スクリプトの1つがその設定を確認していないようです。update-grub/etc/grub.d/grub.confGRUB_DISABLE_LINUX_UUID

最善の方法は、ファイルシステムの種類が何であるかを調べ、スクリプト名を調べてパターンが/etc/grub.dあるかどうかを確認することです。

UUIDが機能しない理由には明確な答えはありません。ファイルシステムの種類によって異なりますが、これはおおよその推測です。

grubがUUIDを使用してもfstabではUUIDは必要ありませんが、最初から正しいUUIDを使用しているかどうかを確認する方法はわかります(しかし私はそれを/dev/disk/by-uuid見たい)。

答え2

誰かがこの投稿を偶然見つけて(私のように)Centos 7 / GRUB2を使用している場合は、変数名がGRUB_DISABLE_UUID(GRUB_DISABLE**_LINUX**_UUIDの代わりに)に変更されたようです。

/usr/share/grub/grub-mkconfig_libで確認できます。鉱山にはこれがあります:

if [ "x$GRUB_DISABLE_UUID" != "xtrue" ]

grub2-mkconfig以降、UUIDは/ dev / sda1などに置き換えられます(これらのシステムを複製するため必要です)。

2023年3月に更新 @MelroyvandenBergの後続のコメントに従って、私は2016年の答えがまだ関連性があるかどうかをすばやく調べました。

2019年にCentosを放棄しましたが(他のCentos Streamディスカッションを参照)、まだCentOS Linuxバージョン7.2.1511を実行している古いシステムを起動しました。上記の結果を再確認しました。

$ grep GRUB_DISABLE /usr/share/grub/grub-mkconfig_lib
  if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
  if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device ${device} --target=fs_uuid 2> /dev/null`" ; then

もう少し詳しく見てみると(まだCentos 7システムで)、/usr/share/doc/grub2-tools-2.02/grub.html以下が含まれます(違いを示すために強調表示されています)

GRUB_DISABLE_オペレーティングシステム_UUID

通常、grub2-mkconfigはUUID(Universally Unique Identifier)を使用して識別されるメニュー項目を生成します。以下を使用して、Linuxカーネルにファイルシステムを追加します。'root=UUID=...' カーネルパラメータ。これは通常より安定していますが、状況によっては適切ではない可能性があります。 UUIDの使用を無効にするには、このオプションを「true」に設定します。

GRUB_DISABLE_UUID

通常、grub2-mkconfigはUUID(Universally Unique Identifier)を使用して識別されるメニュー項目を生成します。様々な種類ファイルを検索するファイルシステムです。これは通常より安定していますが、状況によっては適切ではない可能性があります。 UUIDの使用を無効にするには、このオプションを「true」に設定します。

それで、GRUB_DISABLE_LINUX_UUID間には特別な違いがあるようです。GRUB_DISABLE_UUID

7年前にUbuntu 22.04.1 LTS(Debianベースですが最新バージョン)を見てください。/usr/sbin/grub-mkconfig

if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then
  if [ -z "${GRUB_DISABLE_LINUX_UUID}" ]; then
    GRUB_DISABLE_LINUX_UUID="true"
  fi
  if [ -z "${GRUB_DISABLE_LINUX_PARTUUID}" ]; then
    GRUB_DISABLE_LINUX_PARTUUID="true"
  fi
fi

trueの場合(unset)はGRUB_DISABLE_LINUX_UUIDtrueに設定されますGRUB_DISABLE_UUID。私はただ推測する過去7年間、ある時点でこれら2つの変数間の区別を明確にするか削除する努力がありました。

元の2016年のレビューではなく、特定のディストリビューションのコードとドキュメントを確認することをお勧めします。

関連情報