Saya menjalankan Ubuntu, dan ingin mencari tahu UUID
tentang sistem file tertentu (bukan partisi). Saya tahu saya dapat menggunakan e2label /dev/sda1
untuk mencari tahu label sistem file, tetapi sepertinya tidak ada cara yang mirip untuk menemukan UUID
.
linux
command-line-interface
partition
Brad Gilbert
sumber
sumber
Jawaban:
Perintah lain yang mungkin tersedia dan juga berfungsi dengan baik untuk ini adalah 'blkid'. Itu bagian dari paket e2fsprogs. Contoh penggunaannya:
Cari data di / dev / sda1:
Tampilkan data UUID untuk semua partisi:
Tampilkan data UUID untuk semua partisi dalam format yang lebih mudah dibaca: (Catatan: dalam rilis yang lebih baru,
blkid -L
memiliki arti yang berbeda, danblkid -o list
harus digunakan sebagai gantinya)Tampilkan hanya UUID untuk / dev / sda1 dan tidak ada yang lain:
sumber
blkid
, mendapatkan apa yang saya inginkan, tetapi tidak cukup dengan apa yang saya minta. (Saya tetap menerimanya, karena saya yakin saya akan sering menggunakannya)blkid -L
sekarang adalahblkid -o list
; yang-L
pilihan telah diubah untuk-L label
untuk mencari perangkat yang menggunakan label tertentu.blkid
. Terima kasih telah menyebutkannya.blkid
; Saya selalu baru saja selesails -l /dev/disk/by-uuid
. Di Gentoo,blkid
ada disys-apps/util-linux
Hanya Untuk GPT Partitioned Disk
Pada disk yang diformat GPT setiap partisi diberi GUID, yang merupakan bentuk UUID, meskipun mungkin bukan apa yang dimaksud oleh poster asli. Karena itu jawaban ini mungkin kurang membantu bagi penanya yang asli. Meskipun demikian saya percaya ada perbedaan penting yang harus diperhatikan.
Untuk mendapatkan GUID partisi 1 pada disk / dev / sda yang diformat GPT, serta label partisi dan sebagainya:
atau semua dengan:
Untuk mem-boot dengan root dari sistem file yang berada di partisi tertentu Anda akan menggunakan sintaks parameter kernel linux dari:
Dalam hal ini Anda dapat menentukan hanya awal UUID - cukup unik. Parameter ini lebih primitif dan dapat dipahami oleh kernel sebelumnya dalam proses bootnya.
Ada perbedaan dalam semantik antara ini:
Disk memegang partisi, partisi memegang sistem file, sistem file menyimpan direktori dan file. Untuk beberapa pengaturan dan sistem operasi ada lebih banyak lapisan.
GUID UUID dan label terkait merujuk ke partisi, tetapi bukan konten partisi. Partisi baru pada disk yang sama, atau partisi pada disk baru akan memiliki GUID UUID baru. Partisi yang sama dapat menampung satu sistem file satu hari dan yang lain pada hari yang berbeda. Ini hanya ada untuk disk yang diformat GPT, tetapi tidak untuk disk yang dipartisi sebelumnya. Biasanya tidak ada utilitas di sini selain dari menentukan
root=/dev/sda1
atauroot=8:1
.Jawaban lain saat ini merujuk pada UUID sistem file di beberapa partisi yang berisi. Jika sistem file disalin, secara keseluruhan, ke partisi atau hard disk lain, nilainya tetap sama. UUID ini bermanfaat untuk menemukan sistem file yang dipindahkan. Karena itu, ini mungkin lebih relevan bagi kebanyakan orang. Parameter kernel Linux
root=UUID=87654321-4321-4321-a567-123456789012
mengacu pada ini.Saya percaya
root=LABEL=
danroot=UUID=
diterapkan oleh userspace awal, kode init yang saya lihat kemarin di sistem saya menerjemahkan parameter-parameter ini ke / dev / disk / by-uuid dan / dev / disk / oleh-label (tautan yang saya percaya dibuat oleh udev di userspace di sistem saya).[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183
sumber
-i1
atau-i 1
, sebagai lawan dari-i:1
, dengan sgdisk 1.0.1.Cara bersih-skrip untuk melakukan ini yang bekerja pada semua jenis filesystem adalah:
Atau, mengingat titik mount (atau file apa pun di dalamnya):
Outputnya adalah UUID, seluruh UUID, dan tidak lain adalah UUID.
sumber
blkid
dalam jawaban dari @ christopher-cashell, karena Anda tidak perlu menjadi root. Untuk mount point atau file berbuat lebih baik:lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
.findmnt -n -o SOURCE --target ~
memberikan:/dev/mapper/vg_svelte-home[/@home]
lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)
harus menyingkirkan subvolume saat ada.Cara termudah untuk melakukan ini untuk ext2 / ext3 / ext4 adalah:
sumber
Couldn't find valid filesystem superblock.
Cara yang disarankan untuk melakukan ini adalah melakukan
Untuk lebih lanjut tentang penggunaan UUID, lihat artikel ini (dari bantuan ubuntu, tetapi harus berfungsi untuk distro linux apa pun yang menggunakan UUID).
Seperti tercantum dalam komentar untuk pertanyaan ini, vol_id mungkin tidak ada di jalur Anda. Di ubuntu ia berada di / sbin sehingga hal di atas akan berfungsi. Untuk fedora tampaknya perlu
Jika distribusi lain memiliki vol_id di tempat lain maka poskan komentar dan saya akan menambahkannya ke jawaban ini.
sumber
/sbin/vol_id
ke/lib/udev/vol_id
Ini sepertinya bekerja untuk saya:
sumber
Dengan asumsi Anda menginginkan UUID untuk sda1, Anda dapat mencoba sesuatu seperti ini:
Sesuaikan sda1 sesuai. Untuk mendapatkan UUID untuk semua partisi, jatuhkan greps dan cut, a la:
Contoh output untuk sda1 di desktop saya:
Sunting: Harap dicatat bahwa solusi ini, walaupun lebih dibikin daripada udev-> vol_id, tidak memerlukan hak akses root, akan bekerja pada kernel pasca-2005 atau lebih, dan bergantung pada alat yang ada dalam distribusi Linux yang secara default di jalur untuk setiap pengguna.
sumber
Anda juga dapat menggunakan ini untuk mencetak semua UUID:
atau perintah yang bisa dibilang lebih sederhana ini, ganti
sda1
dengan perangkat yang ingin Anda cari:adaptasi dari metode kedua untuk mencetak semua UUID:
sumber
Di atas tampaknya berfungsi pada sebagian besar (semua yang saya temukan) sistem Linux selama bertahun-tahun. Mungkin ada kekurangan, saya tidak tahu. Saya lebih suka mendapatkan nomor seri tetapi ... ini adalah UUID dari sistem berkas root.
Jika ada yang punya cara untuk mendapatkan nomor seri tanpa perlu menjadi root (seperti milik saya) dan tidak menginstal paket "tidak biasa" yang berbeda dalam versi Unix yang berbeda, saya akan sangat menghargainya - selalu dapat belajar sesuatu. Dan saya sadar saya mencampur hal-hal - itu adalah sistem file root UUID, bukan disk.
Tujuannya, BTW, adalah untuk menghasilkan nomor unik per mesin yang tidak dapat dimodifikasi (seperti nomor seri disk dan seperti alamat MAC dulu dahulu).
Ini digunakan untuk pengkodean perangkat lunak ke satu mesin. Alamat MAC baik-baik saja sampai mereka mengizinkannya menjadi virtual ... beberapa pelanggan busuk hanya mengatur alamat MAC mereka menjadi konstan (pada jaringan yang berbeda tentu saja) dan menghindari membayar saya.
Di AIX ada satu panggilan untuk mendapatkan satu nomor yang mengidentifikasi mesin. Tidak masalah jika perubahan perangkat keras atau pembaruan perangkat lunak terjadi sehingga saya tidak tahu bagaimana mereka melakukannya ... Jika motherboard berubah, maka angkanya berubah, jadi saya pikir mereka menyembunyikannya di sana. Dan itu sangat jarang.
sumber
Anda dapat menggunakan yang berikut ini untuk mendapatkan UUID untuk drive tertentu,
atau Anda dapat menggunakan ini untuk mendaftar semua UUID untuk media yang dilampirkan,
sumber