GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Panico del kernel con l'errore "impossibile aprire il dispositivo root", dove aggiungo l'opzione "root ="?

ogni volta che provo ad avviare con il kernel linux 3.0.0.13 (quello installato dagli aggiornamenti) ottengo un errore di panico del kernel:

VFS:impossibile aprire il dispositivo root "sda1" o il blocco sconosciuto (0,0)
Aggiungi un'opzione di avvio "root=" corretta;

Per fortuna se eseguo l'avvio utilizzando la versione precedente non ho alcun problema.
Come posso risolverlo? Dove dovrei aggiungere l'opzione root= option corretta ? Se non riesco a far funzionare questo kernel, come posso rimuoverlo come predefinito e attenermi a quello precedente?

Risposta accettata:

Non hai fornito molte informazioni con i registri e simili per procedere, ma suppongo che molto probabilmente questo errore che stai riscontrando sia dovuto al fatto che il kernel è confuso da un'unità IDE/SATA. Fare una rapida ricerca su Google mi ha portato al link 1, link 2, link 3

Di seguito è riportato l'estratto di un collegamento a cui fa riferimento uno dei collegamenti precedenti:

Molto probabilmente uno dei problemi più frequenti (ma una volta risolto,
molto probabilmente non lo vedrai mai più):

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

o

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

Le cifre 0,0 o 8,3 può essere diverso nel tuo caso:si riferisce al
dispositivo a cui il kernel tenta di accedere (e che fallisce).
In generale si può dire che, se la prima cifra è 0, allora il
il kernel non è in grado di identificare l'hardware. Se è un'altra cifra
(come 8), non è in grado di identificare il file system (ma è in grado di
accedere all'hardware).

Il problema qui è che il kernel che stai avviando non può
tradurre il root=/dev/... parametro che hai assegnato (all'interno della configurazione del caricatore di boot
) in un file system reale e accessibile. Diversi
motivi possono causare un tale errore:

  • nella configurazione del kernel mancano i driver per il controller HDD (casi 1, 4, 5)
  • nella configurazione del kernel mancano i driver per il bus utilizzato dal controller HDD
  • nella configurazione del kernel mancano i driver per il file system che stai usando
  • il dispositivo è stato identificato erroneamente nel parametro root=(casi 2, 3)

Risolvere il problema è facile se sai qual è il motivo. Molto
probabilmente no, quindi ecco un rapido controllo.

Apri la procedura guidata di configurazione del kernel (il make menuconfig part) in modo
per poter aggiornare la configurazione del kernel di conseguenza.

  • Verifica se hai il supporto integrato (e non come modulo) per il bus/protocollo utilizzato dal controller del tuo disco rigido.
  • Molto probabilmente si tratta di supporto PCI, supporto SATA (che è al di sotto del supporto per dispositivi SCSI), …
  • Verifica se hai il supporto integrato (e non come modulo) per il controller HDD che utilizzi.
    Uno dei casi più frequenti:hai selezionato il supporto per il protocollo del controller del tuo disco rigido (IDE, SATA, SCSI, …) ma ho dimenticato di
    selezionare il driver del controller HDD stesso (come Intel PIIX). Prova
    a eseguire il seguente comando lscpi e incolla il suo output su
    http://kmuto.jp/debian/hcl/. Il sito ti mostrerà quale kernel
    driver devi selezionare per il tuo sistema. All'interno del menuconfig,
    puoi digitare "/" per aprire la funzione di ricerca e digitare il nome del driver
    per scoprire dove risiede. # lspci -n
  • Verifica se hai il supporto integrato (e non come modulo) per i file system che utilizzi.
  • Supponiamo che il tuo file system di root utilizzi btrfs (cosa che non consiglio assolutamente) ma non l'hai selezionato o selezionato per essere compilato come modulo
    , quindi riceverai l'errore che vedi . Assicurati che il supporto per il file system
    sia integrato nel kernel.
  • Controlla se il parametro del kernel per root= option punta alla partizione corretta.

    Non è così stupido come sembra. Quando si esegue l'avvio con un kernel
    , potrebbe elencare i dischi come /dev/sda mentre il kernel
    (configurato) si aspetta che sia /dev/hda. Questo non è
    perché i kernel sono incoerenti tra loro, ma a causa dei
    driver utilizzati:i driver meno recenti usano la sintassi hda, quelli più recenti sda.

    Prova a cambiare hda con sda (e hdb con sdb e ...).

    Inoltre, i kernel recenti offrono una panoramica delle partizioni che hanno trovato
    sul dispositivo indicato. In tal caso, potrebbe aiutarti a identificare se
    hai selezionato erroneamente una partizione (nell'esempio fornito all'inizio di questa sezione
    , vengono trovate solo due partizioni mentre al kernel è stato
    indicato di avviarsi il terzo). In caso contrario, è molto probabile
    perché il kernel non conosce il dispositivo con cui iniziare (quindi non può
    tentare di visualizzare le partizioni).

  • Controlla se il kernel che viene avviato dal boot loader è il kernel corretto.
    Ho visto persone che, dopo aver creato un primo kernel (che non si avvia), dimenticano di dover montare /boot prima di
    sovrascrivere il kernel con uno nuovo. Di conseguenza, copiano il kernel
    nel file system radice (/ ) mentre il caricatore di avvio ancora
    si aspetta che l'immagine del kernel sia su /boot partizione.


Ubuntu
  1. Disabilita l'accesso con l'account root

  2. Impossibile firmare CSR con la chiave Ca Root?

  3. Come sincronizzare il root Gedit con le preferenze dell'utente Gedit?

  4. Come rimanere aggiornati automaticamente con l'ultimo kernel principale?

  5. "gzip:Stdout:nessuno spazio rimasto sul dispositivo" durante l'aggiornamento del kernel?

Analizza il kernel Linux con ftrace

Come risolvere l'errore "impossibile connettersi al demone Docker".

Come aggiungere un'applicazione nell'elenco delle applicazioni aperte in Ubuntu

Come aggiungere un'applicazione all'elenco delle applicazioni aperte?

Come risolvere "L'hard disk sembra troppo piccolo" con l'opzione di ricerca più approfondita di Testdisk?

Come fa un kernel a montare la partizione di root?