web-dev-qa-db-ja.com

UUIDを使用してディスクドライブにgrubをインストールします

/ dev/sdXを使用する代わりに、UUIDによってデバイスMBRにインストールするようにgrubに指示する方法はありますか? NixOSで外付けeSATAハードディスクを設定していますが、明らかに、ハードディスクは常に同じ/ dev/sdXデバイスであるとは限りませんか?

Boot.loader.grub.device = "/ dev/sdX"で構成できることがわかりますが、 "/ dev/disk/by-uuid/...."のように設定できますか??

2
Zardoz89

grub-install/dev/by-uuid/XXXは、ハードディスク全体がUUIDを取得しないため(少なくとも私のマシンでは)機能しません。代わりに、ハードディスクのシリアル番号を使用して生成された/ dev/by-id/XXXを使用できます。

NixOSの構成ファイルは次のようになります。

boot.loader.grub.device = "/dev/by-id/XXXX"
1
Zardoz89

grub-installを試してください "UUID = 700C663F-4183-4A8D-BAC2-EE34E5518B9C"/dev/sda0UUIDは "/"パーティションsda0は "/"デバイスソースはgrub2手動/ dev/disk/by-uuid /が機能しないためこのディレクトリは起動するまで存在しません。これは再フォーマットによって変更されないため、partuuidを使用することをお勧めします。フォーマットによるuuidの変更

0
Murdock-Slacker

いいえ、あなたがすることはできません grub-install /dev/disk/by-uuid/foo。これは、それが不可能であると言っているのではなく、1つの可能性があるメソッドを作成します。しかし、それは少なくとも実用的ではありません。

UUID(普遍的に一意の識別子)は、実質的にパーティションの一意の識別子であり、デバイス自体ではありません。つまり、パーティションにはUUIDがありますが、MBRの場所はgrub-installアドレスにはUUIDがありません。

デバイスのUUIDを生成する場合(例:uuidgen /dev/sdb)次に、GRUB内でdevice.mapの問題が発生します。 grub-mkdevicemap問題を自動的に修正できません。

もし、あんたが grub-install /dev/disk/by-uuid/de305d54-75b4-431b-adb2-eb6b9e546013たとえば、次のようなエラーが発生します

grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning:  Embedding is not possible.   GRUB can only be installed in this setup  by using blocklists. <blah, blah, blah>

...そしてそれは行きます。

詳細については、こちらをご覧ください https://unix.stackexchange.com/questions/174206/warning-file-system-ext2-doesnt-support-embedding-but-my-system-isnt-emb

これは楽しい実験でした。ありがとう。

0
Nodak

はい、/boot/grub/menu.cfgを変更します

root =/dev/disk/by-uuid/whatever-blkid-outputs-placed-here

...やってみて。

例えば

set root=/dev/disk/by-uuid/'3a2adf19-8685-483c-9889-1b4d56788486'

0
Nodak