Archlinux 启动失败:无法访问 tty:作业控制已关闭

Archlinux 启动失败:无法访问 tty:作业控制已关闭

我在通过 升级系统后遇到了这个问题pacman -Syu

在升级过程中,我遇到了 python 包冲突,导致升级事务中止。所以我解决了冲突:通过删除python包pip uninstall pkg_name,然后重试pacman -Syu。这次没有再出现错误。

然后我重新启动系统,问题出现了:

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

顺便说一句:正如警告所示,我正在将内核 4.18 升级到 4.19

答案1

如果更新被中止并且内核正在更新过程中,则您可能仍然拥有旧内核的 initramfs,同时/boot安装了新内核,这可能会阻止启动。如果您忘记正确安装分区,在新安装的系统上也可能会发生这种情况/boot

解决此问题的最简单方法是使用 archlinux 安装介质启动,执行 achroot并使用以下命令重新安装内核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

应该修改的文件是/boot/initramfs-linux.img/boot/initramfs-linux-fallback.img所以你可能不需要挂载EFI分区

如果由于某种原因无法使用pacman,也可以mkinitcpio手动启动重新生成initramfs以使用新内核

答案2

该文本can't access tty: job control turned off只是 shell 发出的通知,表明作业控制不起作用,这意味着您无法使用Ctrl+C或 停止程序Ctrl+Z

问题在上面几行中可见,也许在上面几行中:

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

似乎没有找到内核模块,因此没有 module ext4,因此没有安装ext4根文件系统。

大多数发行版不会删除旧内核,以防新内核出现问题,因此请尝试启动以前的内核。

如果这不起作用,请启动实时系统,然后安装带有匹配模块的先前内核,或者安装新内核,或者安装任何可以运行的内核。

也有可能是 initrd 文件系统的创建出现问题,ext4由于某些原因未包含在内。在这种情况下,您可以启动实时系统,重新创建 initrd 并ext4重新启动。

答案3

下面的命令释放我,

mdev -s

我的 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

然后我添加mdev -s到我的/init文件中。

我希望它有帮助。

相关内容