“Tidak dapat menemukan perangkat root” di instalan ArchLinux yang baru

36

Saya telah menginstal versi terbaru ArchLinux (2014.06.01) pada MacBook Pro 8,1 (15 ", jika itu penting untuk perangkat keras) dual-boot dengan OSX mengikuti petunjuk dalam panduan instalasi resmi . Namun, ketika mencoba dan reboot ke dalam sistem yang baru diinstal, itu menjatuhkan saya ke shell pemulihan:

ERROR: device 'UUID=<snip>' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=<snip>'.
You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]# 

(Saya menghapus UUID karena saya tidak ingin mengetiknya, tetapi sama dengan yang diberikan kepada saya blkid(dari disk instalasi) untuk partisi yang diinstal dengan ArchLinux)

Lainnya secara online sumber menyarankan ini karena usang pacman, udev, filesystematau linuxpaket. Namun, mereka menggambarkan masalah ini hanya setelah pembaruan kernel dari sistem kerja, bukan instalasi baru. Saya paksa menginstal ulang paket-paket ini dari arch-chrootlingkungan saat boot ke disk instalasi, tetapi itu tidak mengubah situasi.

Sebagai gantinya, sedikit percobaan dengan grub.cfgacara saya menunjukkan bahwa apa pun yang dikeluhkan adalah rootparameter untuk linuxperintah memilih vmlinuzfile apa yang akan digunakan. Memang, mengubah root=UUID=<snip>ke root=LABEL=ArchLinuxatau root=/dev/sda8(keduanya menggambarkan di mana ArchLinux diinstal dan saya telah menggunakan versi kedua dengan sukses sebelumnya dengan distribusi lain) memberi Unable to find root device 'LABEL=ArchLinux'dan Unable to find root device '/dev/sda8'masing - masing. Lebih jauh, GRUB tampaknya dapat menemukan partisi oleh UUID, hanya kernel linux yang mengeluhkan tidak ditemukannya, karena ramdisk awal dimuat dengan benar (mis. Ini bukan kesalahan GRUB seperti yang dijelaskan sini, melainkan kesalahan linux) .

Sebagai catatan: shell pemulihan sangat terbatas, dan output standar tampaknya tidak berfungsi dengan baik. Namun,ls berfungsi, dan daftar file menunjukkan sistem file dasar (sementara), tetapi semua perangkat disk tampaknya hilang dari /dev. Namun, saya tidak tahu apakah ini bagian dari kesalahan atau tidak.

Ini mirip, tetapi tidak sama dengan Linux tidak menemukan sistem file root saat boot , karena partisi itu ext4 dari awal. Juga tidak persis sama, tetapi mungkin relevan adalah Tidak dapat mem-boot ArchLinux di Macbook Pro 7.1 - jatuh ke shell pemulihan , namun, di sana, ia jatuh ke ramfsshell, bukan rootfsshell dan pesan kesalahannya berbeda.

hlt
sumber

Jawaban:

34

Alih-alih mem-boot dengan gambar normal, saya menggunakan versi fallback dan berhasil mem-boot ke sistem. Ternyata, Linux tidak dapat mendeteksi drive apa pun karena block mkinitcpiokait (yang bertanggung jawab untuk memblokir perangkat) hilang dari gambar default. Hal ini disebabkan itu ditempatkan setelah autodetectdi /etc/mkinitcpio.conf. Untuk memperbaikinya, HOOKS=...baris dalam file itu perlu diubah sehinggablock muncul sebelumnyaautodetect

Sebelum memperbaiki:

HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

Setelah perbaikan:

HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

Berlari mkinitcpio -p linuxuntuk membuat baru initramfskemudian memperbaiki masalah secara permanen.

hlt
sumber
Itu sangat membantu :)
ajukraine
Ini sepertinya sulit untuk direproduksi, saya punya masalah yang sama dan ini memperbaikinya tetapi drive yang sama bekerja dengan baik pada pc lain. PC di mana masalah terjadi adalah PC LGA775 yang agak lama dan solusi di atas tidak diperlukan saat menggunakan tabel partisi mbr. Jadi masalahnya hanya terjadi ketika menggunakan tabel partisi gpt pada sistem lama tanpa UEFI. Saya tidak tahu apakah Mac selalu menggunakan EFI tapi saya ingin tahu tabel partisi mana yang Anda gunakan?
MADforFUN danBahagia
Sudah lama, dan MacBook tidak lebih, tapi saya cukup yakin itu menggunakan GPT.
hlt
Meskipun, saya mendapatkan masalah yang sama dengan OP dan jawaban Anda tampaknya berlaku untuk saya, itu tidak menyelesaikan masalah saya.
Nathan Goings
1

Saya mengalami masalah yang sama tetapi dengan pengaturan yang berbeda. Saya menggunakan ArchLinux di mesin virtual dan bootloader saya adalah syslinux. Saya menggunakan trik Anda untuk mengganti urutan kait kernel tetapi saya masih berakhir di shell rootfs.

Apa yang memperbaiki masalah bagi saya adalah mengubah APPENDgaris dalam syslinux.cfgdari saya

APPEND root=UUID=<snip>

untuk

APPEND root=PARTUUID=<snip>

Anda dapat dengan mudah menambahkan PARTUUIDke syslinux.cfgdengan menggunakan perintah sepertiblkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfg mengasumsikan partisi root Anda/dev/sda1

Setelah itu Anda dapat menggunakan editor teks favorit Anda untuk memindahkan baris ke ruang yang sesuai.

EDIT: Saya baru saja mengenali bahwa jumlah kolom dalam skrip awk kecil dapat bervariasi, jadi lebih baik lihat hasilnya sebelum menyalurkannya ke syslinux.cfg

Saya suka pil
sumber