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
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.
pacman -Q linux && uname -r
.Warning
postato sopra. Tuttavia ricordo che prima dellultimo riavvio ho eseguitouname -r
e la versione del kernel di output era ancora 4.18.xxx/
e/boot
vengono montati e quindi reinstallare Linux.