GNU/Linux >> Znalost Linux >  >> Ubuntu

Kernel Panics S chybou „nelze otevřít kořenové zařízení“, kam mohu připojit možnost „root=“?

kdykoli se pokusím zavést s linuxovým jádrem 3.0.0.13 (které nainstalovaly aktualizace), zobrazí se chyba Kernel Panic:

VFS:Nelze otevřít kořenové zařízení „sda1“ nebo neznámý blok (0,0)
Připojte správnou možnost spouštění „root=“;

Naštěstí, když zavedu pomocí předchozí verze, nemám žádný problém.
Jak to mohu vyřešit? Kam mám připojit správnou volbu root= option ? Pokud toto jádro nezprovozním, jak jej mohu odebrat jako výchozí a ponechat to starší?

Přijatá odpověď:

Neposkytli jste mnoho informací s protokoly a podobně, ale hádám, že tato chyba, které čelíte, je pravděpodobně způsobena tím, že jádro je zmateno jednotkou IDE/SATA. Rychlé vyhledávání Google mě přivedlo k odkazu 1, odkazu 2, odkazu 3

Následuje výňatek z odkazu, na který odkazuje jeden z výše uvedených odkazů:

S největší pravděpodobností jeden z nejčastějších problémů (ale jakmile jej vyřešíte,
s největší pravděpodobností se s ním již nikdy nesetkáte):

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

nebo

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

Číslice 0,0 nebo 8,3 se může ve vašem případě lišit – odkazuje na
zařízení, ke kterému se jádro pokouší získat přístup (a které selže).
Obecně lze říci, že pokud je první číslice 0, pak
jádro není schopno identifikovat hardware. Pokud je to jiná číslice
(např. 8), není schopna identifikovat systém souborů (ale je schopna
přistupovat k hardwaru).

Problém je v tom, že jádro, které spouštíte, nemůže
přeložit root=/dev/... parametr, který jste mu dali (v konfiguraci boot
zavaděče) do skutečného, ​​přístupného souborového systému. K takovému selhání může vést několik
důvodů:

  • v konfiguraci jádra chybí ovladače pro váš řadič HDD (případy 1, 4, 5)
  • v konfiguraci jádra chybí ovladače pro sběrnici používanou vaším řadičem HDD
  • v konfiguraci jádra chybí ovladače pro souborový systém, který používáte
  • zařízení je nesprávně identifikováno ve vašem parametru root=(případy 2, 3)

Řešení problému je snadné, pokud víte, jaký je důvod. Vy s největší pravděpodobností
ne, takže zde je rychlá kontrola.

Otevřete průvodce konfigurací jádra (make menuconfig část), takže
můžete odpovídajícím způsobem aktualizovat konfiguraci jádra.

  • Zkontrolujte, zda máte vestavěnou podporu (a ne jako modul) pro sběrnici / protokol, který používá váš řadič pevného disku.
  • S největší pravděpodobností se jedná o podporu PCI, SATA (která je pod podporou zařízení SCSI), …
  • Zkontrolujte, zda máte vestavěnou podporu (a ne jako modul) pro řadič HDD, který používáte.
    Jeden z nejčastějších případů:vybrali jste podporu pro protokol řadiče pevného disku (IDE, SATA, SCSI, …), ale zapomněli jste
    vybrat samotný ovladač řadiče HDD (jako Intel PIIX). Zkuste
    spustit následující příkaz lscpi a vložte jeho výstup na
    http://kmuto.jp/debian/hcl/. Stránka vám ukáže, které ovladače jádra
    musíte vybrat pro váš systém. V konfiguračním menu
    můžete zadat „/“ pro otevření funkce vyhledávání a zadat název ovladače
    , abyste zjistili, kde se nachází. # lspci -n
  • Zkontrolujte, zda máte vestavěnou podporu (nikoli jako modul) pro systémy souborů, které používáte.
  • Řekněme, že váš kořenový souborový systém používá btrfs (což rozhodně nedoporučuji), ale nevybrali jste jej nebo jste jej vybrali jako modul
    , pak se zobrazí chyba, kterou uvidíte . Ujistěte se, že podpora souborového systému
    je zabudována v jádře.
  • Zkontrolujte, zda parametr jádra pro root= option ukazuje na správný oddíl.

    Není to tak hloupé, jak to zní. Když zavedete jedno
    jádro, může to uvést vaše disky jako /dev/sda, zatímco vaše
    (nakonfigurované) jádro očekává, že to bude /dev/hda. Není to
    proto, že by jádra byla vzájemně nekonzistentní, ale kvůli
    použitým ovladačům:starší ovladače používají syntaxi hda, novější sda.

    Zkuste přepnout hda za sda (a hdb za sdb a …).

    Nedávná jádra také poskytují přehled oddílů, které nalezly
    na uvedeném zařízení. Pokud ano, může vám pomoci identifikovat, zda jste
    špatně vybrali oddíl (v příkladu uvedeném na začátku této
    části byly nalezeny pouze dva oddíly, zatímco jádro dostalo
    pokyn ke spuštění třetí). Pokud ne, je to s největší pravděpodobností
    protože jádro nezná zařízení, se kterým začíná (takže se nemůže
    pokusit zobrazit oddíly).

  • Zkontrolujte, zda jádro spouštěné zavaděčem je správné jádro.
    Viděl jsem lidi, kteří po sestavení prvního jádra (které se nespustí) zapomněli, že musí připojit /boot než
    přepíše jádro novým. Výsledkem je, že zkopírují jádro
    do kořenového systému souborů (/ ), zatímco zavaděč stále
    očekává, že obraz jádra bude na /boot oddíl.


Ubuntu
  1. Nepodařilo se podepsat Csr pomocí kořenového klíče Ca?

  2. Jak automaticky zůstat aktualizován s nejnovějším jádrem hlavní řady?

  3. „gzip:Stdout:Na zařízení nezbývá místo“ při upgradu jádra?

  1. Jungledisk selže s chybou Libnotify?

  2. Jak se vypořádat s malwarem na notebooku?

  3. Jak otevřít soubor .8 pomocí aplikace Man?

  1. Analyzujte linuxové jádro pomocí ftrace

  2. Spusťte PHP-FPM s možností root automaticky

  3. Jak jádro připojí kořenový oddíl?