Archlinux non è riuscito ad avviarsi: può ' t accedere a tty: controllo del lavoro disattivato

Mi sono imbattuto nel problema dopo aggiornando il mio sistema tramite pacman -Syu.

Durante laggiornamento, ho riscontrato un conflitto di pacchetti Python che ha causato linterruzione della transazione di aggiornamento. Quindi ho risolto il conflitto: rimuovendo il pacchetto python con pip uninstall pkg_name, quindi ho riprovato pacman -Syu. Questa volta niente più errori.

Poi ho riavviato il mio sistema e il problema si è verificato:

Warning: /lib/modules/4.19.1-arch1-1-ARCH/modules.devname not found - ignoring starting version 239 /dev/nvme0n1p2: clean, 968023/31227904 files, 27066236/124895569 blocks mount: /new_root: unknown filesystem type "ext4" You are now being dropped into an emergency shell, sh: can"t access tty: job control turned off [rootfs] # 

BTW: come indica lavviso, io stava aggiornando il kernel dalla 4.18 alla 4.19

Commenti

  • Modifica la tua domanda con loutput di pacman -Q linux && uname -r.
  • @jasonwryan Scusa se ' non ce la faccio. Dallultimo riavvio, non riesco più ad accedere al mio sistema, bloccato dal Warning postato sopra. Tuttavia ricordo che prima dellultimo riavvio ho eseguito uname -r e la versione del kernel di output era ancora 4.18.xxx
  • Devi eseguire il chroot, assicurati che / e /boot vengono montati e quindi reinstallare Linux.

Risposta

Se laggiornamento è stato interrotto e il kernel era in fase di aggiornamento, probabilmente hai ancora gli initramfs del vecchio kernel nel tuo /boot mentre è installato il nuovo kernel che può impedire lavvio. Questo può accadere anche su un sistema appena installato se ti sei dimenticato di montare correttamente la partizione /boot.

Il modo più semplice per risolvere questo problema sarebbe avviare con un archlinux supporto di installazione, eseguire un chroot e reinstallare il kernel utilizzando pacman

# mount /dev/yourrootdisk /mnt # mount /dev/yourbootdisk /mnt/boot # if needed # mount /dev/yourefipartition /mnt/boot/EFI # if you use EFI (optionnal) # arch-chroot /mnt # pacman -S linux 

I file da modificare sono /boot/initramfs-linux.img e /boot/initramfs-linux-fallback.img quindi probabilmente non è necessario montare la partizione EFI

Se per qualche motivo non puoi “usare pacman, puoi anche avviare mkinitcpio a mano per rigenerare linitramfs da usare il nuovo kernel

Commenti

  • La tua risposta è corretta, ma per favore non consiglia alle persone di -Sy $package, è un consiglio pessimo e porta alla rottura .
  • davvero un buon punto, modificato
  • @Fredszaq Molte grazie per la tua risposta, mi ha salvato da s guai seri. Tuttavia, non ' capisco bene cosa sia andato storto nel mio caso, poiché il comando pacman -Syu veniva eseguito senza conflitti prima che non potessi avviare . Forse cè qualcosa che non va nella mia configurazione. Se puoi, potresti controllare il mio pacman.log e dirmi se ' mi manca qualcosa? link al file nel caso in cui tu possa: ix.io/2s1w

Rispondi

Il testo can"t access tty: job control turned off è solo una notifica da parte della shell che il controllo del lavoro non “funziona, ciò significa che non puoi” fermare un programma con Ctrl + C o Ctrl + Z .

Il problema è visibile nelle righe sopra, e forse ciò che è sopra quelle righe:

Warning: /lib/modules/4.19.1-arch1-1-ARCH/modules.devname not found - ignoring mount: /new_root: unknown filesystem type "ext4" 

It sembra che i moduli del kernel non siano stati trovati, e quindi nessun modulo ext4, e quindi nessun montaggio del ext4 root file system.

La maggior parte delle distribuzioni non elimina il vecchio kernel nel caso in cui ci sia qualcosa di sbagliato nel nuovo, quindi prova ad avviare il kernel precedente.

Se non funziona, avvia un sistema live e installare il kernel precedente con i moduli corrispondenti, o quello nuovo, o qualsiasi kernel che funzioni.

È anche possibile che ci fosse qualcosa di sbagliato nella creazione del file system initrd, che non è stato incluso per alcuni motivi. In questo caso, puoi avviare un sistema live, ricreare initrd con ext4 e riavviare.

Commenti

  • Arch rimuove il vecchio kernel. Il problema di OP ' è che / boot non è stato ' montato durante laggiornamento, quindi i moduli installati non corrispondono al kernel.
  • @jasonwryan Se / boot non è stato montato, il kernel corrispondente e initrd dovrebbero trovarsi nel file system root, quindi dovrebbe essere possibile caricarli da lì.
  • Non necessariamente; effettivo / boot potrebbe essere montato sopra o linitrd potrebbe essere danneggiato. Lunico approccio sicuro è chroot e risolverlo.

Rispondi

comando di seguito liberami,

mdev -s 

il mio comando qemu è

qemu-system-x86_64 \ -s \ -kernel bzImage \ -initrd initrd.img.gz \ -smp 4 \ -m 1024 \ -append "console=ttyS0 root=/dev/ram " \ -monitor vc -serial stdio \ -nographic 

e aggiungo mdev -s nel mio file /init.

Spero che sia daiuto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *