cda*_*uth 5 linux boot mount gentoo filesystems
我正在使用 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
Run Code Online (Sandbox Code Playgroud)
/etc/fstab 中的行如下所示:
/dev/sda5 / ext3 noatime 0 1
Run Code Online (Sandbox Code Playgroud)
我正在使用内核 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
Run Code Online (Sandbox Code Playgroud)
除此之外,我使用 openrc 0.6.3 运行 baselayout 2.0.0,如果这很重要的话。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
Run Code Online (Sandbox Code Playgroud)
我不知道是什么导致了这个问题。我找不到任何错误信息,并在互联网上搜索,我只找到了如何故意挂载根文件系统的手册阅读-
问题的解决比想象的要容易。显然,在基本布局 2 中,有一个名为的服务root,它只是重新挂载根文件系统进行读写。
我的引导运行级别中\xe2\x80\x99t 没有此服务的原因可能是我很早就更新到了baselayout 2,并且可能此服务(以及其他几个服务)是后来引入的。以下服务现在位于我的启动运行级别中,并且一切正常:
\n\nbootmisc\nconsolefont\ndevice-mapper\ndmcrypt\nfsck\nhostname\nhwclock\nkeymaps\nlocalmount\nmodules\nnet.lo\nnetmount\nnetwork\nprocfs\nroot\nsvscan\nswap\nsysctl\nsysfs\ntermencoding\nurandom\nRun Code Online (Sandbox Code Playgroud)\n