在 Gentoo Linux 上,根文件系统在启动时以只读方式挂载

在 Gentoo Linux 上,根文件系统在启动时以只读方式挂载

我正在使用 Gentoo Linux,一段时间以来,根文件系统在启动时以只读方式挂载。出于显而易见的原因,这非常烦人,因为大多数服务无法正确启动(我没有为 /var 使用单独的文件系统)。系统启动后,我必须登录,重新以读写方式挂载根文件系统,修复 /etc/mtab,从 /etc/fstab 挂载所有其他文件系统,然后启动所有丢失的守护进程。我知道有办法让系统使用只读文件系统正常运行,但我宁愿恢复可写根文件系统的旧行为。

奇怪的是,运行后mount / -o remount,rw,文件系统以可写模式挂载,没有任何错误。我怀疑 fsck 出了问题,但现在我已禁用分区上的自动文件系统检查(tune2fs -c0 -i0)。

当我运行 dmesg 时,只有这些行提到了分区,尽管我不确定是否因为 /var/log 不可写而丢失了某些内容:

EXT3-fs (sda5): mounted filesystem with writeback data mode</code>  
EXT3-fs (sda5): using internal journal

/etc/fstab 中的行如下所示:

/dev/sda5 / ext3 noatime 0 1

我使用的是内核 2.6.34-gentoo-r6(以前的 2.6.31 内核也存在同样的问题)。我使用 genkernel 3.4.10.906 创建了它。我的 grub 配置如下所示:

title=Gentoo Linux (2.6.34-gentoo-r6)
root (hd0,0)
kernel /kernel-genkernel-x86_64-2.6.34-gentoo-r6 root=/dev/ram0 real_root=/dev/sda5 vga=792 CONSOLE=/dev/tty1 resume=/dev/sda6
initrd /initramfs-genkernel-x86_64-2.6.34-gentoo-r6

除此之外,如果这很重要的话,我会运行 baselayout 2.0.0 和 openrc 0.6.3。sysvinit 2.87-r3 也已安装,但我不知道它是否实际使用。

以下是 dumpe2fs 的输出:

Filesystem volume name:   hd-root
Last mounted on:          <not available>
Filesystem UUID:          387432ca-2464-4c61-ba15-11c4af1c0418
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1528912
Block count:              6104692
Reserved block count:     0
Free blocks:              413799
Free inodes:              674036
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1022
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8176
Inode blocks per group:   511
Filesystem created:       Tue Dec  9 14:48:56 2008
Last mount time:          Mon Sep 27 00:00:15 2010
Last write time:          Sun Sep 26 23:55:12 2010
Mount count:              39
Maximum mount count:      -1
Last checked:             Sun Sep 26 23:51:51 2010
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Journal inode:            8
First orphan inode:       698281
Default directory hash:   tea
Directory Hash Seed:      4229715b-4ad1-4285-940b-9960db1cb4e1
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x003d9991
Journal start:            1

我不知道是什么原因导致了这个问题。我找不到任何错误消息,在互联网上搜索,我只找到如何故意挂载根文件系统的手册-

答案1

问题的解决方案比想象的要简单。显然在 baselayout 2 中,有一个名为的服务,root它只是以读写方式重新挂载根文件系统。

我的启动运行级别中没有这项服务的原因可能是我较早更新到了 baselayout 2,而这项服务(以及其他几项服务)可能是后来才引入的。以下服务现在位于我的启动运行级别中,一切正常:

bootmisc
consolefont
device-mapper
dmcrypt
fsck
hostname
hwclock
keymaps
localmount
modules
net.lo
netmount
network
procfs
root
svscan
swap
sysctl
sysfs
termencoding
urandom

答案2

您的 baselayout 版本是什么?

emerge -pv baselayout udev

ext3 支持位于哪里?在内核中,还是通过 initrd 模块?

相关内容