GNU/Linux >> Belajar Linux >  >> Ubuntu

Kernel Panics Dengan Kesalahan "tidak dapat Membuka Perangkat Root", Di Mana Saya Menambahkan Opsi "root ="?

setiap kali saya mencoba boot dengan kernel linux 3.0.0.13 (yang diinstal oleh pemutakhiran) saya mendapatkan kesalahan Kernel Panic:

VFS:Tidak dapat membuka perangkat root “sda1” atau blok tidak dikenal (0,0)
Harap tambahkan opsi boot “root=" yang benar;

Cukup beruntung jika saya boot menggunakan versi sebelumnya saya tidak memiliki masalah apapun.
Bagaimana saya bisa mengatasi ini? Di mana saya harus menambahkan root= option yang benar? ? Jika saya tidak membuat Kernel ini berfungsi, bagaimana cara menghapusnya sebagai default dan tetap menggunakan yang lama?

Jawaban yang Diterima:

Anda belum memberikan banyak informasi dengan log dan semacamnya untuk melanjutkan, tetapi saya menduga kemungkinan besar kesalahan yang Anda hadapi ini adalah karena kernel bingung dengan drive IDE/SATA. Melakukan pencarian Google dengan cepat mengarahkan saya ke link 1, link 2, link 3

Berikut adalah kutipan dari tautan yang dirujuk oleh salah satu tautan di atas:

Kemungkinan besar salah satu masalah yang paling sering terjadi (tetapi setelah Anda menyelesaikannya,
kemungkinan besar Anda tidak akan pernah melihatnya lagi):

Unable to mount root fs on unknown-block(0,0)

atau

VFS: Cannot open root device "sda3" or unknown-block(8,3)
Please append a correct "root=" boot option; here are the available partitions:
  sda driver: sd
    sda1 sda2

Digit 0,0 atau 8,3 dapat berbeda dalam kasus Anda – ini merujuk pada
perangkat yang coba diakses oleh kernel (dan yang gagal).
Secara umum dapat dikatakan bahwa, jika digit pertama adalah 0, maka
kernel tidak dapat mengidentifikasi perangkat keras. Jika ini adalah digit lain
(seperti 8), ia tidak dapat mengidentifikasi sistem file (tetapi dapat
mengakses perangkat keras).

Masalahnya di sini adalah kernel yang Anda boot tidak dapat
menerjemahkan root=/dev/... parameter yang Anda berikan (di dalam konfigurasi pemuat
boot) menjadi sistem file yang nyata dan dapat diakses. Beberapa
alasan dapat menyebabkan kegagalan seperti itu:

  • konfigurasi kernel tidak memiliki driver untuk pengontrol HDD Anda (kasus 1, 4, 5)
  • konfigurasi kernel tidak memiliki driver untuk bus yang digunakan oleh pengontrol HDD Anda
  • konfigurasi kernel tidak memiliki driver untuk sistem file yang Anda gunakan
  • perangkat salah diidentifikasi dalam parameter root=Anda (kasus 2, 3)

Menyelesaikan masalah itu mudah jika Anda tahu apa alasannya. Kemungkinan besar Anda
tidak, jadi inilah pemeriksaan cepatnya.

Buka wizard konfigurasi kernel (make menuconfig part) sehingga
Anda dapat memperbarui konfigurasi kernel yang sesuai.

  • Periksa apakah Anda memiliki dukungan bawaan (dan bukan sebagai modul) untuk bus / protokol yang digunakan pengontrol harddisk Anda.
  • Kemungkinan besar ini adalah dukungan PCI, dukungan SATA (yang berada di bawah dukungan perangkat SCSI), …
  • Periksa apakah Anda memiliki dukungan bawaan (dan bukan sebagai modul) untuk pengontrol HDD yang Anda gunakan.
    Salah satu kasus yang paling sering terjadi:Anda memilih dukungan untuk protokol pengontrol harddisk Anda (IDE, SATA, SCSI, …) tetapi lupa untuk
    memilih driver pengontrol HDD itu sendiri (seperti Intel PIIX). Coba
    jalankan perintah lscpi berikut, dan rekatkan outputnya di
    http://kmuto.jp/debian/hcl/. Situs ini akan menunjukkan kepada Anda driver kernel
    mana yang perlu Anda pilih untuk sistem Anda. Di dalam menuconfig,
    Anda dapat mengetik “/” untuk membuka fungsi pencarian, dan mengetikkan nama
    driver untuk mengetahui di mana ia berada. # lspci -n
  • Periksa apakah Anda memiliki dukungan bawaan (dan bukan sebagai modul) untuk sistem file yang Anda gunakan.
  • Katakanlah sistem file root Anda menggunakan btrfs (yang pasti tidak saya rekomendasikan) tetapi Anda tidak memilihnya, atau memilihnya untuk dibangun sebagai modul
    , maka Anda akan mendapatkan kesalahan yang Anda lihat . Pastikan dukungan sistem file
    dibangun di dalam kernel.
  • Periksa apakah parameter kernel untuk root= menunjuk ke partisi yang benar.

    Ini tidak sebodoh kedengarannya. Ketika Anda di-boot dengan satu
    kernel, disk Anda mungkin terdaftar sebagai /dev/sda sedangkan kernel
    Anda (dikonfigurasi) mengharapkannya menjadi /dev/hda. Ini bukan
    karena kernel tidak konsisten satu sama lain, tetapi karena
    driver yang digunakan:driver yang lebih lama menggunakan sintaks hda, sda yang lebih baru.

    Coba ganti hda dengan sda (dan hdb dengan sdb, dan ...).

    Juga, kernel terbaru memberikan gambaran umum tentang partisi yang mereka temukan
    pada perangkat yang diceritakan. Jika ya, mungkin membantu Anda mengidentifikasi jika Anda
    salah memilih partisi (dalam contoh yang diberikan di awal bagian
    ini, hanya dua partisi yang ditemukan sedangkan kernel
    diinstruksikan untuk boot ketiga). Jika tidak, kemungkinan besar
    karena kernel tidak mengetahui perangkatnya sejak awal (sehingga tidak dapat
    mencoba menampilkan partisi).

  • Periksa apakah kernel yang sedang di-boot oleh boot loader adalah kernel yang benar.
    Saya telah melihat orang-orang yang, setelah membuat kernel pertama (yang tidak bisa boot), lupa bahwa mereka harus me-mount /boot sebelum
    menimpa kernel dengan yang baru. Akibatnya, mereka menyalin
    kernel ke sistem file root (/ ) sedangkan boot loader masih
    mengharapkan gambar kernel berada di /boot partisi.


Ubuntu
  1. Di mana File Inittab berada?

  2. Bagaimana Mengatasi Malware Pada Laptop?

  3. Kesalahan Untuk Memuat Modul Btusb Dengan Kernel 4.10.0-20-generik?

  1. Di mana saya menemukan versi pohon sumber kernel Linux?

  2. Mulai PHP-FPM dengan opsi root secara otomatis

  3. Bagaimana kernel me-mount partisi root?

  1. Analisis kernel Linux dengan ftrace

  2. Nonaktifkan masuk dengan akun root

  3. Kemana perginya sisa memori vm.overcommit_ratio?