/ 起動時に読み取り専用になりますが、理由がわかりません。調査して修正するにはどうすればよいですか?

/ 起動時に読み取り専用になりますが、理由がわかりません。調査して修正するにはどうすればよいですか?

ルート ファイルシステムは、squeeze 下でも、wheezy にアップグレードした後でも問題なくマウントされました。しばらく使用していたので、正確にはわかりませんが、wheezy で dist-upgrade を実行した後に始まったと思いますが、偶然かもしれません。マシンは Lenovo T400 です (参考までに)。

起動画面の写真1読み取り専用ファイルシステムに関する最初の警告が表示されます。明らかに何も記録されません。

fsck で問題は見つかりません2

mount -o remount,rw /

上記は問題なく動作します

(ただし、使用可能なシステムを取得するには、ネットワーク マネージャーと 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

何かアドバイスがあれば、とてもありがたいです。明らかに間違っていて修正可能なことをしていればよいのですが、そうでない場合はデバッグ方法について何かヒントはありますか?

...

tune2fs -l /dev/sda1

出力

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

...

/etc/init.d/checkroot.sh は起動時に実行されていないようですが、これは最終的に root を rw として再マウントするスクリプトです (起動後に実行すると、まさにそのように実行されます)。私は Debian testing/wheezy を使用しています。/etc/init.d ファイルには依存関係の注釈がありますが、それ以外に init システムについてさらに詳しく伝える方法がわかりません。

...

修正されましたが、なぜそうなったのか、また修正がシステムにとって正しい方法であるかどうかはわかりません。/etc/rcS.d に checkfs と mtab があることに気づきましたが、checkroot がなかったので、以下を追加しました:

cd /etc/rcS.d
ln -s ../init.d/checkroot.sh S06checkroot.sh

2 回再起動した後 (1 回目は私の混乱によるものかもしれませんが、その間に checkroot.sh にさらに計測を追加しました)、起動時に rw が復旧しました (また、localhost からのリッスン/要求に関する問題も解消されたので、関連があったと思われます)。

(私がアクセスできる squeeze システムでは、S07checkroot.sh にあることがわかりました。おそらく近かったのでしょう。)

答え1

/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).

最終的には、/root ファイルシステムの何が問題なのかを突き止める必要があります。レスキュー ディスクから簡単に起動し、/root で fsck を実行できます。潜在的なエラーを無視する場合は、fstab の行を に変更するだけですerrors=continue

答え2

私もこの問題に遭遇しましたが、これは /etc/fstab に設定されているルート FS の UUID が間違っていたために発生しました。何らかのアップグレードで自動的に検出され、間違った設定になったものと思われます。

/ パーティションを rw で再マウントし、blkid正しい UUID を取得して /etc/fstab で置き換えると、問題は解決しました。

答え3

ルート ファイルシステムは、読み取り/書き込みの指示がないため、読み取り/書き込みでマウントされません。

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

マウント オプションは のみでerrors=remount-ro、読み取り/書き込みに関する内容はありません。標準的な方法は、defaultsマウント オプションに を含めることです。 には、defaults他にもいくつかのマウント オプションが用意されており、そのうちの 1 つが であるrwため、読み取り/書き込みが可能です。

したがって、 fstab のオプション フィールドに またはdefaultsのいずれかを追加する必要があります。rw

編集:
もう少し考えてみると (そして以下のコメントでの議論から)、defaultsおよびrwオプションでは問題は解決しないかもしれません。その理由は、再マウントの動作がディストリビューションの init スクリプトに完全に依存しているからです。ディストリビューションが起動時に fstab からマウント設定を取得するのを見たことがありますが、init スクリプトがルートを再マウントするときに fstab オプションを完全に無視している可能性もあります (そしてスクリプトでハードコードされた設定をいくつか使用します)。

関連情報