/ readonly 在启动时,但不明白为什么。如何调查和修复?

mli*_*sva 5 boot debian

根文件系统在挤压下安装得很好,在我升级到喘息之后。我已经忍受了一段时间,所以我不太确定,但我认为它是在对 wheezy 进行 dist-upgrade 之后开始的,但这可能是巧合。机器是联想T400 FWIW。

启动屏幕照片1显示了有关只读文件系统的第一个警告;没有明显记录

fsck 没发现问题2

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

以上工作正常

(但我必须重新启动网络管理器和 gdm3 才能获得可用的系统;我不确定它是否相关,但我似乎无法连接到在本地主机上运行的服务,例如 python -m SimpleHTTPServer 8080 和另一个终端 w3m 超时向本地主机端口 8080 发送请求)

我没有注意到 fstab 有任何问题

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=2934c627-6f1a-438b-a877-1544108c7418 /               ext3 errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=39b1f59e-6193-4c46-8b4d-80b183f0b19c none            swap    sw           0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/sdb1       /media/usb0     auto    rw,user,noauto  0       0
Run Code Online (Sandbox Code Playgroud)

任何指针将不胜感激。希望我正在做一些明显错误且可以修复的事情,但如果没有关于如何调试的任何提示?

...

tune2fs -l /dev/sda1
Run Code Online (Sandbox Code Playgroud)

产出

tune2fs 1.42.2 (27-Mar-2012)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          2934c627-6f1a-438b-a877-1544108c7418
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:              14893056
Block count:              59547904
Reserved block count:     2977395
Free blocks:              50391869
Free inodes:              14576981
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1009
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Tue May  3 01:44:56 2011
Last mount time:          Wed Apr 18 13:11:25 2012
Last write time:          Tue Apr 17 23:51:46 2012
Mount count:              5
Maximum mount count:      25
Last checked:             Tue Apr 17 23:51:46 2012
Check interval:           15552000 (6 months)
Next check after:         Sun Oct 14 23:51:46 2012
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       9145036
Default directory hash:   half_md4
Directory Hash Seed:      af8ca7f0-bcad-49f3-98c0-9b19a531a885
Journal backup:           inode blocks
Run Code Online (Sandbox Code Playgroud)

...

似乎 /etc/init.d/checkroot.sh 没有在启动时运行,这就是最终将 root 重新安装为 rw 的脚本(如果我在启动后运行它,它就是这样做的)。我正在使用 Debian 测试/喘息。/etc/init.d 文件中有依赖注释,但除此之外我不知道如何更多地了解 init 系统。

...

已修复,但不知道它是如何发生的,或者修复是否正是系统应有的样子。我注意到 /etc/rcS.d 中的 checkfs 和 mtab,但没有 checkroot,所以我添加了它:

cd /etc/rcS.d
ln -s ../init.d/checkroot.sh S06checkroot.sh
Run Code Online (Sandbox Code Playgroud)

重新启动两次后(第一次可能是我的困惑,但我在它们之间添加了一些进一步的检测到 checkroot.sh),我在启动时备份了 rw(并且从 localhost 监听/请求的问题消失了,所以我猜测是相关的)。

(我在挤压系统上看到我可以在 S07checkroot.sh 上访问它;我可能已经接近了。)

Geo*_*e M 3

您的 /root 文件系统上存在错误,并且 fstab 将 /root 重新挂载为只读。

fstab 中的行

UUID=2934c627-6f1a-438b-a877-1544108c7418 / ext3 errors=remount-ro 0 1

是什么导致 /root 以只读方式挂载。

mount (8)手册页

errors={continue|remount-ro|panic}
Define the behaviour when an error is encountered.  (Either ignore errors
and just  mark  the  filesystem  erroneous and continue, or remount the
filesystem read-only, or panic and halt the system.)  The default is set in
the  filesystem superblock, and can be changed using tune2fs(8).
Run Code Online (Sandbox Code Playgroud)

您最终应该找出 /root 文件系统出了什么问题。您可以轻松地从救援磁盘启动并在 /root 上运行 fsck。如果您选择忽略潜在的错误,只需将 fstab 中的行更改为errors=continue.