web-dev-qa-db-ja.com

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

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

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

Initramfs/initrdを使用せずにUUIDを介してルートパーティションを特定するにはどうすればよいですか?

/dev/sda1のようなデバイス名も使用できません。これは、パーティションがUSBスティック上にあり、別のマシンで動作する必要があるためです。

9
daejk

別のスレッド に埋められた答えを見つけました:

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

6
daejk

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 d634adc8-69de-edd8-d491-a79e69aeff78 に対応 /dev/sda3およびパーティションUUID 0008500a-01

あなたのセットアップに応じて、次に行うことができます

root=/dev/sda1

または

root=PARTUUID=0008600a-01

(私の場合、rootはLVMの一部なので、この方法でマウントすることはできませんが、概念は当てはまります)

3
Stephen Harris