解決策 1:
利用可能で、これにも非常にうまく機能する可能性のある別のコマンドは、「blkid」です。これは e2fsprogs パッケージの一部です。使用例:
/dev/sda1 でデータを検索:
[email protected]:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
すべてのパーティションの UUID データを表示:
[email protected]:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"
すべてのパーティションの UUID データを読みやすい形式で表示します:(注:新しいリリースでは、blkid -L
は意味が異なり、blkid -o list
代わりに使用する必要があります)
[email protected]:~$ sudo blkid -L
device fs_type label mount point UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3 / 727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc ext3 /home 467c4aa9-963d-4467-8cd0-d58caaacaff4
/dev/sda1 の UUID のみを表示する:
[email protected]:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda
解決策 2:
GPT パーティション ディスクのみ
GPT フォーマットのディスクでは、各パーティションに UUID の形式である GUID が割り当てられますが、元の投稿者が言及していたものではない可能性があります。したがって、この回答はおそらく元の質問者にとってあまり役に立ちません。それでも、注意すべき重要な違いがあると思います。
GPT フォーマットのディスク /dev/sda のパーティション 1 の GUID とそのパーティション ラベルなどを取得するには:
sudo sgdisk -i 1 /dev/sda
またはすべて:
ls -l /dev/disk/by-partuuid
ファイル システムのルートが特定のパーティションにある状態で起動するには、Linux カーネル パラメータの構文を次のように使用します。
root=PARTUUID=87654321-4321-4321-abcd-123456789012
この場合、UUID の先頭だけを指定できます。これは、一意になるように十分です。このパラメーターはより原始的であり、ブート プロセスの早い段階でカーネルが理解できます。
これらの間にはセマンティクスに違いがあります:
ディスクはパーティションを保持し、パーティションはファイル システムを保持し、ファイル システムはディレクトリとファイルを保持します。一部のセットアップとオペレーティング システムでは、さらに多くのレイヤーがあります。
GUID UUID と関連するラベルはパーティションを参照しますが、パーティションの内容は参照しません。同じディスク上の新しいパーティション、または新しいディスク上のパーティションには、新しい GUID UUID があります。同じパーティションで、ある日は 1 つのファイル システムを保持し、別の日に別のファイル システムを保持することができます。これは、GPT でフォーマットされたディスクにのみ存在し、レガシー パーティション ディスクには存在しません。通常、ここで root=/dev/sda1
を指定する以上のユーティリティはありません または root=8:1
.
他の現在の回答は、ファイル システムの UUID を参照しています。 一部の包含パーティションで。ファイル システム全体を別のパーティションまたはハード ディスクにコピーしても、その値は変わりません。この UUID は、移動されたファイル システムを見つけるのに役立ちます。したがって、これはおそらくほとんどの人にとってより適切です。 Linux カーネル パラメータ root=UUID=87654321-4321-4321-a567-123456789012
これを指します。
root=LABEL=
だと思います および root=UUID=
は初期のユーザー空間によって実装されていますが、先日私のシステムで見た init コードは、これらのパラメーターを /dev/disk/by-uuid および /dev/disk/by-label に変換しました (リンクは、私のユーザー空間の udev によって作成されたと思います)。システム)
[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
解決策 3:
どのタイプのファイルシステムでも機能する、これを行うためのスクリプトクリーンな方法は次のとおりです:
lsblk -no UUID <device-containing-FS>
または、マウントポイント (またはその中の任意のファイル):
lsblk -no UUID $(df -P <file> | awk 'END{print $1}')
出力は UUID、UUID 全体であり、UUID のみです。
解決策 4:
ext2/ext3/ext4 でこれを行う最も簡単な方法は次のとおりです:
/sbin/tune2fs -l /dev/sda1
解決策 5:
これを行うための推奨される方法は、
sudo vol_id -u /dev/sda2
UUID の使用の詳細については、この記事を参照してください (ubuntu のヘルプからですが、UUID を使用するすべての Linux ディストリビューションで機能するはずです)。
この質問へのコメントに記載されているように、vol_id がパスに含まれていない可能性があります。 ubuntu では /sbin にあるため、上記は機能します。 fedora の場合、
が必要なようですsudo /lib/udev/vol_id -u /dev/sda2
他のディストリビューションの他の場所に vol_id がある場合は、コメントを投稿してください。この回答に追加します。