我正在使用 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 模块?