/etc/default/grub の GRUB_DISABLE_LINUX_UUID=true 設定が期待どおりに機能しません。

/etc/default/grub の GRUB_DISABLE_LINUX_UUID=true 設定が期待どおりに機能しません。

私は現在安定したDebian Stretch(9.0)を使用しています。私のアーキテクチャはAMD64です。私のルートパーティションとブートパーティションは、MD RAID 1デバイスのLVMボリュームグループです。

ドキュメントの私の理解に基づいてコメントを解除します。

GRUB_DISABLE_LINUX_UUID=true

inは/etc/default/grubGRUB2がで実行されるのを防ぐ必要があります/boot/grub/grub.cfg。ただし、変更後も引き続きUUIDを使用していました。

これが私の部分のユーザーエラーであるかどうかはわかりませんが、指示は十分簡単です。

いくつかの追加コメントです。

  1. /usr/share/grub/default/grub同じ内容(同じmd5sum)を持つファイルもあります/etc/default/grub。このファイルのポイントが何であるかよくわかりません。
  2. /usr/sbin/grub-mkconfigこれに関するチェックが含まれると予想しましたが、スクリプトにはGRUB_DISABLE_LINUX_UUID含まれていますが表示されませんGRUB_DISABLE_LINUX_UUID。誰かがこのスクリプトがチェックする場所を説明できますかGRUB_DISABLE_LINUX_UUID

もちろん、役に立つ場合は、詳細を投稿できます。

背景:これを変更したいのは、ルートVGのUUIDが変更され、コンピュータがUUIDが存在しないと言って起動を拒否したためです。いいですね。何も残っていませんでした。バラよりLVM2 RAID 1 ミラーを分割しようとすると同期状態エラーを確認できませんどうやってこのようなことが起こりましたか。

Debian バグレポート:grub-common: /etc/default/grub の GRUB_DISABLE_LINUX_UUID=true 設定が期待どおりに機能しません。

答え1

(この答えは何が起こっているのかを説明し、(可能な)パッチを提供しようとします。)

grub-mkconfig_lib問題のあるコードは、現在Debian 9バージョンの169-182行にあるようです。

エラーの要点は、sysadmin / configurationがそれを指示していないにもかかわらず、インストールおよび起動時に起動プロセスの一部としてUUIDを設定して使用する必要があることです。

その結果、grub.cfgをロードできません。たとえば、常にgrub-probe --target=fs_uuid /実行されますgrub-mkconfig_lib。私たちの場合は、再実行するのではなくgrub-probe --target=device /特定のコードを使用する必要があります。$fs_hintgrub_probefs_uuid

GRUB_DISABLE_LINUX_UUIDDebian 9でtrueに設定されている場合、UUIDの作成を無効にするパッチを作成しました。ここで動作します。テストしてみてください。

問題のファイルが次のように再確認されました。/usr/share/grub/grub-mkconfig_lib

GRUB_DISABLE_LINUX_UUIDに設定されている場合は、UUIDベースのルートを選択するように指示されていtrueないパッチを作成しました。searchその後、システム管理者は新しいディスクを挿入するときにこのオプションを選択した結果を理解する必要があります。

パッチは /usr/share/grub/grub-mkconfig_lib次のように行われます。

diff -u grub-mkconfig_lib.old grub-mkconfig_lib > grub-mkconfig_lib.patch 

ここにあります: https://jpst.it/10_iY

またはここから得ることができます:

https://github.com/ruyrybeyro/grub-mkconfig_lib.patch

それを適用します:

cd /usr/share/grub
patch -p0 < grub-mkconfig_lib.patch

デフォルトでは、行169から始めて、選択したデバイスUUIDの代わりにルートパーティション検索を無効にするために、適切なインデントを持つ新しいifを追加しました。有効なUUIDを持つパーティションが見つかった場合:

  if [ "x${GRUB_DISABLE_LINUX_UUID}" != "xtrue" ] ; then   
   if fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
      hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints=
      echo "if [ x\$feature_platform_search_hint = xy ]; then"
      echo "  search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
      echo "else"
      echo "  search --no-floppy --fs-uuid --set=root ${fs_uuid}"
      echo "fi"
    fi
  fi

私はそれをテストし、grub構成を再生成し、UUIDを変更し、grubに入る前の状況とは異なり、障害なしで起動しました。

PS:これはDebianに限定されないようです。grub-mkconfig_lib関連スレッドを指摘して発見しました。Fedoraの帽子

関連情報