initramfs / initrdなしでUUIDでルートパーティションを識別する方法

initramfs / initrdなしでUUIDでルートパーティションを識別する方法

initramfs/initrd サポートがないと、次のカーネルコマンドラインは機能しません。

linux   /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e ro

initramfs / initrdなしでルートパーティションをUUIDとして識別するにはどうすればよいですか?

/dev/sda1パーティションがUSBスティックにあり、別のコンピュータで動作する必要があるため、同様のデバイス名を使用できません。

答え1

埋もれている答えを見つけました。他のスレッド:

UUIDはファイルシステムを識別し、PARTUUIDはパーティションを識別します(つまり、再フォーマット後も変更されていません)。initramfs/initrd がない場合、カーネルは PARTUUID のみをサポートします。

コンピュータ上のブロックデバイスのPARTUUIDを見つけるには、次を使用します。

sudo blkid

たとえば、次のように印刷されます。

/dev/sda1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext2" PARTUUID="f3f4g3f4-02"

これで、次のようにLinuxコマンドラインを変更できます。

linux   /bzImage root=PARTUUID=f3f4g3f4-02 ro

この場合、PARTUUID f3f4g3f4-02があるパーティションから起動します/dev/sda1

答え2

lsblk使用しているディスク/パーティション/uuidを表示するためのさまざまなオプションがあります。

例えば

% sudo lsblk -o UUID,PARTUUID,NAME,MOUNTPOINT 
UUID                                   PARTUUID           NAME                MOUNTPOINT
                                                          sda                 
d634adc8-69de-edd8-d491-a79e69aeff78   0008500a-01        |-sda1
195237da-8825-45fb-abf7-a62895bd0967                      | `-md0             /boot
d2cf1bcc-d51d-bf37-9723-3b505172fe5f   0008500a-02        `-sda2              
24bvXN-PVU1-kubI-Zgj5-W82i-3Z07-v80lME                      `-md1             
67fe5039-de46-4629-bd03-ee65a5dd0132                          |-godzilla-root /
ba70f1d1-89f0-4dd9-83a4-8bc9a74a6548                          `-godzilla-swap [SWAP]

これにより、UUIDがパーティションUUIDd634adc8-69de-edd8-d491-a79e69aeff78に対応することがわかります。/dev/sda30008500a-01

設定に応じて、次のことができます。

root=/dev/sda1

または

root=PARTUUID=0008600a-01

(私の場合はrootLVMの一部なので、この方法ではインストールできませんが、概念は適用されます)

答え3

UUID=それは無効です。そのまま受け入れてくださいLABEL=。両方とも、ファイルシステムがあるパーティションではなくファイルシステムを識別します。

源泉:カーネルname_to_dev_t()do_mount.c

UUIDの唯一の有効なカーネルコマンドラインエントリはですPARTUUID=。このUUIDは、パーティションに含まれるファイルシステムではなく、パーティション自体に適用されます。 (blkid出力参照)

GPTパーティションを使用している場合は、PARTLABEL=よりユーザーフレンドリーなバージョンをお試しください:)

関連情報