文件系统是只读的..可能已损坏?

文件系统是只读的..可能已损坏?

我正在尝试安装 Ubuntu 基础(从头开始的 Ubuntu),但我遇到了问题...安装后我得到一个带有只读文件系统的系统,而且 /boot 不会自动安装。

这是我的 /etc/fstab:

/dev/sda1   /boot vfat defaults,noatime 0 2
/dev/sda2   /     ext4 defaults,noatime 0 1

以下是我如何 chroot 进入基本系统进行安装:

mount /dev/sda2 /mnt
cp /etc/resolv.conf /mnt/etc/resolv.conf
mount --types proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm
chroot /mnt /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
<installation steps>
exit
cd
umount -l /mnt/dev{/shm,/pts,}
umount -R /mnt
reboot

当我运行以下命令时,系统变为可写:

mount -o remount,rw /

我做错了什么 ?

答案1

简答

在安装步骤中,您需要安装该systemd-sysv软件包。

长答案

您似乎正在安装 Ubuntu Focal。 Focal 的 Ubuntu 基础映像不包含/sbin/init.假设您使用的是默认的 systemd,则该二进制文件由软件包提供systemd-sysv。请注意,某些早期版本的 Ubuntu 的 Ubuntu Base 映像include /sbin/init,因此较旧的说明可能不会提及这一点。 (为什么图像不再有/sbin/init?可能是因为容器中通常不需要它,而容器是此类图像的越来越大的用例。)

那么,如何在没有 init 的情况下出现 shell 提示符呢?init中的脚本负责initrd执行exec“真正的”init,有一个后备。如果/sbin/init未找到,它会尝试一系列备用可执行文件,其中之一是/bin/sh.您可能还会收到类似Target filesystem doesn't have requested /sbin/init打印到控制台的消息。

那么为什么你的根文件系统被挂载为只读呢?因为这就是您的 GRUB 配置告诉它要做的事情。运行cat /proc/cmdline,您应该看到ro包含该选项,该选项指示最初以只读方式initrd挂载。/这允许 init 在必要时运行fsck以修复根文件系统上的错误。然后 Init 将重新挂载/读写。

相关内容