debian 化(4)fsck で止まらないようにする

LS-HGL

LS-HGL debian 化の課題、
1) Linux Box として正常に動作させる
を当面の目標とする。
その一つ目、
・起動時、fsck で止まらないようにする

fsck の手動実行

一回手動で fsck を実行すれば boot 時には fsck しなくなるかも。

アンマウント

起動時、sda1 はマウントされているので、アンマウントする。
まず、df でマウントの様子を見る。
hackkit:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              2037008    205424   1831584  11% /
tmpfs                    63160         0     63160   0% /lib/init/rw
tmpfs                    63160         0     63160   0% /dev/shm
/dev/root.old            15351     14650       701  96% /initrd
/dev/sda1               189819     11641    168377   7% /boot
/dev/sda4              3793448       144   3793304   1% /mnt
hackkit:~#
/boot にマウントされている。
アンマウントする。
hackkit:~# umount /boot
hackkit:~#

fsck 実行

起動時の通りに fsck してみる。
それぞれのオプションの意味は、
-a は自動的にリペアする。-C0 はプログレスバーとか、、、要らない
hackkit:~# fsck -y /dev/sda1
fsck 1.40-WIP (14-Nov-2006)
e2fsck 1.40-WIP (14-Nov-2006)
Backing up journal inode block information.

/dev/sda1 has gone 49480 days without being checked, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 13/49152 files (7.7% non-contiguous), 17846/196024 blocks
hackkit:~#
すぐに終わった。

これで再起動時に止まらなくなるかな?

リブート

hackkit:~# shutdown -r now
	:
	:
Setting the system clock..
System Clock set. Local time: Sun Mar 16 10:10:51 JST 2008.
Cleaning up ifupdown....
Loading device-mapper support.
Will now check all file systems.
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a -C0 /dev/sda1
やっぱりここで止まってしまう。
CTRL-C で先に進む。

手動実行(2)

/etc/init.d/checkfs.sh やら /var/log/fsck/checkfs やら見てみるが、 何で止まるのか良くわからない。

再度、今度は起動時と同じオプションで手動実行

hackkit:/var/log/fsck# fsck -C -V -R -A -a
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a -C0 /dev/sda1
/dev/sda1 is mounted.  e2fsck: Cannot continue, aborting.


[/sbin/fsck.xfs (1) -- /mnt] fsck.xfs -a /dev/sda4
/sbin/fsck.xfs: XFS file system.
hackkit:/var/log/fsck# 
マウントされているとおこられたので、アンマウントして再々実行
hackkit:/var/log/fsck# umount /boot
hackkit:/var/log/fsck# fsck -C -V -R -A -a
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a -C0 /dev/sda1
やっぱりここで止まる。
怪しいのは -C0
hackkit:/var/log/fsck# fsck -V -R -A -a
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a /dev/sda1
/dev/sda1: clean, 13/49152 files, 17846/196024 blocks
[/sbin/fsck.xfs (1) -- /mnt] fsck.xfs -a /dev/sda4
/sbin/fsck.xfs: XFS file system.
hackkit:/var/log/fsck#
と、-C をつけずに起動すれば、正常に終わる。
-C0 と指定されているファイルディスクリプタの 0 って、 標準入力では?

checkfs.sh の修正

-C オプションをつけないよう、/etc/init.d/checkfs.sh を修正する。
hackkit:/etc/init.d# diff -c checkfs.sh.orig checkfs.sh
*** checkfs.sh.orig     Wed Jan 31 07:53:46 2007
--- checkfs.sh  Sun Mar 16 10:45:19 2008
***************
*** 57,62 ****
--- 57,63 ----
                        ;;
                esac
                [ "$(uname -m)" = s390 ] && spinner=""  # This should go away
+               [ "$(uname -m)" = armv5tejl ] && spinner=""  # This should go away
                FSCKTYPES_OPT=""
                [ "$FSCKTYPES" ] && FSCKTYPES_OPT="-t $FSCKTYPES"
                handle_failed_fsck() {
hackkit:/etc/init.d#
こんなところに手を入れたら、 オリジナルがアップデートする度に手を入れないといけないのだが、、、
他に解決方法が見つからなかったので仕方なくこうした。

再起動

hackkit:/etc/init.d# shutdown -r now
	:
これでうまく行くと信じ込んでいたのに、、、、
Will now check all file systems.
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a /dev/sda1
またここで止まった(泣)。
-C0 はついていないのに。

CTRL-C で先に進める。

再度手動で実行

今度は、起動時に実行されているように checkfs.sh を実行してみる。
hackkit:~# umount /boot
hackkit:~# /etc/init.d/checkfs.sh start
Will now check all file systems.
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a /dev/sda1
/dev/sda1: clean, 13/49152 files, 17846/196024 blocks
[/sbin/fsck.xfs (1) -- /mnt] fsck.xfs -a /dev/sda4
/sbin/fsck.xfs: XFS file system.
Done checking file systems.
A log is being saved in /var/log/fsck/checkfs if that location is writable.
hackkit:~#
動くやん、、、

起動時の fsck を止める

どんどん対応内容がひどくなる。

fstab を修正して起動時に fsck を実行しなくする。

hackkit:~# diff -c /etc/fstab.orig /etc/fstab
*** /etc/fstab.orig     Sat May 26 11:57:55 2007
--- /etc/fstab  Sun Mar 16 11:04:02 2008
***************
*** 4,8 ****
  /dev/sda2     /               xfs     defaults,noatime                0 0
  proc          /proc           proc    defaults                        0 0
  /dev/sda3     swap            swap    defaults                        0 0
! /dev/sda1     /boot           ext3    defaults,noatime                0 1
! /dev/sda4     /mnt            xfs     defaults,noatime                0 2
--- 4,8 ----
  /dev/sda2     /               xfs     defaults,noatime                0 0
  proc          /proc           proc    defaults                        0 0
  /dev/sda3     swap            swap    defaults                        0 0
! /dev/sda1     /boot           ext3    defaults,noatime                0 0
! /dev/sda4     /mnt            xfs     defaults,noatime                0 0
hackkit:~#

再起動

	:
	:
Will now check all file systems.
fsck 1.40-WIP (14-Nov-2006)
Checking all file systems.
Done checking file systems.
	:
	:

Debian GNU/Linux 4.0 hackkit ttyS0

hackkit login:
とりあえず fsck で止まることなく起動した。とりあえず。とりあえず、、、
暫定対応が恒久対策になってしまうのはよくある話。

新たな課題発生

ハックキットのインストーラで、 miconapl 系の処理を全部止めてあるので、 Poewr LED が点滅したまま。
これも止めてやらないといけない。

ゃ~、楽し。


課題一覧

1) Linux Box として正常に動作させる
済:起動時、fsck で止まらないようにする
未:電源 SW を ON → OFF にしたらシャットダウンされるようにする
新:起動時、Power LED の点滅を止める

2) LS-HGL の機能を引き出す
未:プリンタサーバ機能の組込み
(DLNA や iTunes は後回し)

3) ハックキット化
未:スクリプト、アーカイブの作成
 新:/etc/fstab の修正
未:できれば、他のハックキットと共通化
未:手順書



LS-H250GL
楽天市場
livedoor デパート
Sofmap
TSUKUMO ネットショップ
TWO TOP
Yahoo!ショッピング
パソQ
ムラウチドットコム
ヤマダ電機WEB
アット・ニフティストア icon
Joshin インターネットショッピング icon


debian 化(3)課題の整理
ハックの記録
LinkStation/玄箱 をハックしよう

debian 化(5)電源 SW でシャットダウンされるようにする

Copyright (C) 2003-2008 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市