我在通过 升级系统后遇到了这个问题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
文件中。
我希望它有帮助。