Nie udało się uruchomić Archlinux: czy ' t dostęp tty: kontrola zadań wyłączona

Problem napotkałem później uaktualnianie systemu przez pacman -Syu.

Podczas aktualizacji napotkałem konflikt pakietu Pythona, który spowodował przerwanie transakcji aktualizacji. Rozwiązałem więc konflikt: usunąłem pakiet Pythona przez pip uninstall pkg_name, a następnie ponowiłem próbę pacman -Syu. Tym razem żadnych więcej błędów.

Następnie ponownie uruchomiłem system i wystąpił problem:

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] # 

Przy okazji: zgodnie z ostrzeżeniem aktualizował jądro 4.18 do 4.19

Komentarze

  • Edytuj swoje pytanie, używając wyniku pacman -Q linux && uname -r.
  • @jasonwryan Przepraszam, ' nie mogę. Od ostatniego restartu nie mogę już zalogować się do swojego systemu, co jest zablokowane przez Warning zamieszczony powyżej. Pamiętam jednak, że przed ostatnim restartem wykonałem uname -r, a wersja jądra wyjściowego była nadal 4.18.xxx
  • Musisz się zalogować, upewnij się, że / i /boot są montowane, a następnie ponownie instalowane Linux.

Odpowiedź

Jeśli aktualizacja została przerwana, a jądro było w trakcie aktualizacji, prawdopodobnie nadal masz initramfs starego jądra w swoim /boot z zainstalowanym nowym jądrem, co może uniemożliwić uruchomienie. Może się to również zdarzyć w świeżo zainstalowanym systemie, jeśli zapomniałeś poprawnie zamontować partycję /boot.

Najłatwiejszym sposobem naprawienia tego byłoby uruchomienie z archlinux nośnik instalacyjny, wykonaj chroot i ponownie zainstaluj jądro, używając 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 

Pliki, które powinny zostać zmodyfikowane, to /boot/initramfs-linux.img i /boot/initramfs-linux-fallback.img, więc prawdopodobnie nie musisz montować partycji EFI

Jeśli z jakiegoś powodu nie możesz użyć pacman, możesz również uruchomić mkinitcpio ręcznie, aby ponownie wygenerować initramfs do użycia nowe jądro

Komentarze

  • Twoja odpowiedź jest poprawna, ale proszę nie radzić ludziom -Sy $package, to okropna rada, która prowadzi do zerwania .
  • rzeczywiście dobra uwaga, zredagowana
  • @Fredszaq Wielkie dzięki za odpowiedź, uratowała mnie przed s wielkie kłopoty. Mimo to nie ' nie rozumiem, co poszło nie tak w moim przypadku, ponieważ polecenie pacman -Syu działało bez konfliktów, zanim nie mogłem uruchomić . Może coś jest nie tak z moją konfiguracją. Jeśli możesz, czy możesz sprawdzić mój pacman.log i powiedzieć, czy ' coś mi brakuje? link do pliku na wypadek, gdybyś mógł: ix.io/2s1w

Odpowiedź

Tekst to po prostu powiadomienie powłoki, że kontrola zadań nie działa, co oznacza, że nie można zatrzymać programu za pomocą Ctrl + C lub Ctrl + Z .

Problem jest widoczny w wierszach powyżej i być może w tym, co jest powyżej:

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

To wygląda na to, że moduły jądra nie zostały znalezione, a zatem nie ma modułu ext4, a tym samym nie ma montowania głównego systemu plików ext4.

Większość dystrybucji nie usuwa starego jądra na wypadek, gdyby coś było nie tak z nowym, więc spróbuj uruchomić poprzednie jądro.

Jeśli to nie zadziała, uruchom system na żywo i albo zainstaluj poprzednie jądro z pasującymi modułami, albo nowe, lub jakiekolwiek działające jądro.

Jest również możliwe, że coś było nie tak z tworzeniem systemu plików initrd, że nie zostało uwzględnione z pewnych powodów. W takim przypadku możesz uruchomić system live, odtworzyć initrd za pomocą ext4 i zrestartować.

Komentarze

  • Arch usuwa stare jądro. Problem OP ' polega na tym, że / boot nie był ' nie zamontowany podczas tej aktualizacji, więc zainstalowane moduły nie pasują do jądra.
  • @jasonwryan Jeśli / boot nie został zamontowany, to zgodne jądro i initrd powinny znajdować się w głównym systemie plików, więc powinno być możliwe ich załadowanie stamtąd.
  • Niekoniecznie; rzeczywisty / boot może zostać zamontowany na górze lub initrd może być uszkodzony. Jedynym bezpiecznym podejściem jest chroot i naprawienie go.

Odpowiedz

poniżej polecenie uwolnij mnie,

mdev -s 

moje polecenie qemu to

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 

i dodaję mdev -s w moim /init pliku.

Mam nadzieję, że to pomoże.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *