Sistem saya melakukan booting OK dengan ini di konfigurasi GRUB 2 saya:
linux /bzImage root=/dev/sda2 init=/usr/lib/systemd/systemd ro
Tetapi jika saya ganti /dev/sda2
dengan UUID yang sesuai:
linux /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e init=/usr/lib/systemd/systemd ro
maka gagal saat boot:
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
UUID tampaknya benar:
# blkid
/dev/sda1: UUID="97ac3744-39de-4d6d-9a81-e3a3ea08a8bb" TYPE="ext2"
/dev/sda2: UUID="666c2eee-193d-42db-a490-4c444342bd4e" TYPE="ext4"
Mengapa itu tidak berhasil? Apakah karena saya tidak menggunakan initramfs?
Ini adalah x86_64 Gentoo Linux dengan kernel 3.10.7. Saya menggunakan tabel partisi MBR sda
dan tabel partisi GUID sdb
.
unknown-block(0,0)
Sepertinya perangkat GRUB bagi saya. Dugaan saya adalah bahwa GRUB tidak dapat menggunakan UUID itu untuk beberapa alasan.sda1
. Saya tidak menunjukkan bagian dari konfigurasi.)init
.Jawaban:
Hanya untuk mengklarifikasi
UUID
s adalah satu-satunya cara yang dapat diandalkan untuk mengidentifikasi hard drive. Ada dua jenis: UUID, yang disimpan dalam sistem file dan tidak tersedia untuk kernel saat boot, dan PARTUUID, yang disimpan dalam tabel partisi dan IS tersedia pada saat boot. Jadi kamu harus menggunakanseperti
/dev/sd??
dapat berubah dengan perangkat yang terpasang / tidak terhubung.Jangan lupa untuk memanfaatkan angka heksadesimal yang
SSSSSSSS-PP
Anda dapatkanblkid
!Semakin mudah digunakan
hanya bekerja dengan
initramfs
yang mengambil pengidentifikasi ini.Jadi, jika Anda menggunakan non-kosong
initramfs
, Anda dapat memiliki ketiganya! Dengan kosonginitramfs
, Anda hanya punyaPARTUUID
.sumber
cpio
arsip yang dibongkar kernel/
saat boot. initramfs adalah filesystem - selalu merupakan yang pertama di-/
mount dan sejak saat itu kernel memanggilinit
. Anda dapat mengkompilasi konten ke dalam kernel atau membukanya saat boot - itu adalah dua opsi.Parameter yang Anda harus lewati untuk mem-boot dari UUID adalah
PARTUUID
. Seharusnya begituroot=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
.Dokumentasi menjelaskan mengapa ia kembali dengan
unknown-block(0,0)
:kernel-parameter.txt :
init / do_mounts.c :
Bit terakhir di akhir mengatakan bahwa jika tidak dapat memahami nilainya, ia kembali
(0,0)
, maka kesalahan Anda.sumber
PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
tidak berfungsi. Namun, saya bisa menggunakanPARTUUID=SSSSSSSS-02
(di mana SSSSSSSSS adalah tanda tangan disk NT yang ditampilkan tepat sebelum pesan kesalahan).root=UUID
, hanya sajaroot=PARTUUID
. Jika Anda ingin menggunakan sistem file UUID, saya kira Anda memerlukan initramfs yang dapat menangani pemasangan filesystem oleh UUID.grub
sepatu bot saya cukup senangroot=UUID
.Ini adalah utas berusia 5 tahun. Tapi tetap saja itu tidak sepenuhnya dijawab. Ada sedikit contoh yang hilang. Ini dia:
Dalam contoh ini:
... menggunakan partisi GPT. Dengan MBR (partisi dos) PARTUUID lebih pendek tetapi prosedurnya sama ...
dapatkan PARTUUID dengan blkid:
/boot/grub/grub.cfg:
/ etc / fstab /:
Ini diketahui BEKERJA dengan lfs8.1 (kernel 4.12.7) Tapi saya pikir ini juga bisa digunakan pada kebanyakan kernel lain (lama dan baru ...)
sumber