エントリー

2012年12月の記事は以下のとおりです。

EPIAのmicroSDカードでdebianがようやく正常起動

  • 2012/12/10 21:10
  • カテゴリー:EPIAPC

問題になりそうな更新ファイルは無かったのでgrepを実行してみたらgrepのファイルが壊れているらしく動かない

先にHDDでdebianカーネルの再構築をやっていたらファイルシステムの異常があり修正
もしかするとmicroSDカードのファイルシステムが壊れている?

さっそくメンテナンスモードにして強制fsck(メンテナンス起動でも良かったのかな)

# shutdown -F now

Give root password for maintenance
(or type Control-D to continue)
# umount /
# fsck -c /dev/hda2(チェック込みで修復、強制チェックならだけなら -f)

やはり壊れていた、何時壊れたか?
/bin/grepが消えてしまったので旧データからgrepをコピーして再起動

これで正常に起動するようになった、数回起動しても異常にはならない

ようやく起動したので記念にビデオに撮った
grubの途中でメッセージが出ているのでその確認と起動時間の記録を兼ねている(撮影はiPodでx264,aacのmpeg4に変換)
(左)microSDでのboot[4分2秒](右)HDDでのboot[40秒]

vs001vs002

ファイルシステムの異常についてはmicroSDへコピーした元が怪しいことになる
複数のコピー先で同じ現象だったのでHDDからコピーしたときに壊れたか(可能性は低い)HDDが異常だったか(可能性が高い)
正常になったファイルシステムをマスターにすれば良いので深く調査はしない

次はカーネルをスリム化して少しでも起動を短縮しよう

EPIAのmicroSD起動で判明していること

BIOSの起動デバイスの選択でUSB-HDの他、USB-FD、USB-ZIPがあるがどれも同じで、USB-CDだけ特別にCDを認識している

IDE HDDは起動で指定しなくても他のbootが不可の場合選択される(外しておかないと起動されるので面倒)

microSDカードで起動すると「DISK BOOT FAILURE, INSERT SYSTEM DISK AND PRESS ENTER」のメッセージで停止する場合がある(USBのHDD、USBメモリでは問題ない)
確実な回避手段はなく以下の方法等で起動するしかない
・ソフトウェアリセットやENTERの繰り返し
・BIOS画面後の起動
・カードの抜き差し後のソフトウェアリセット
・電源OFF/ON
尚、ハードウェアリセットは確認していない

BIOSのINT13ではUSBデバイスに対していわゆるHDDの壁とは別にアクセス可能な範囲がある

BIOSからはUSB1.1接続で読み込みしているようだ

EPIAの専用debianカーネル構築メモ

  • 2012/12/09 21:43
  • カテゴリー:EPIAPC

1度しか正常起動しない問題がまだ残っているがコンパクト化のため専用カーネルも構築したいので先に一度作成してみる

必要なパッケージ
# aptitude install kernel-package
# aptitude install make gcc
# aptitude install fakeroot
# aptitude install libncurses-dev
# aptitude install zlib1g-dev

# aptitude search linux-source
linux-patch-debian-2.6.32 - Debian patches to version 2.6.32 of the Linux kernel
linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Debian patches
linux-source-2.6 - Linux kernel source for Linux 2.6 (meta-package)
# cd /usr/src
# aptitude install linux-source-2.6.32
# tar xjf linux-source-2.6.32.tar.bz2
コンパイル
# cd linux-source-2.6.32
# make-kpkg clean
# cp /boot/config-2.6.32-5-486 .config
# make menuconfig

(試しに変えてみた)
x x    --- MMC/SD/SDIO card support                                     x x
  x x    [ ]   MMC debugging                                              x x
  x x    [ ]   Assume MMC/SD cards are non-removable (DANGEROUS)          x x


x x    --- MMC/SD/SDIO card support                                     x x
  x x    [ ]   MMC debugging                                              x x
  x x    [*]   Assume MMC/SD cards are non-removable (DANGEROUS)          x x

# fakeroot make-kpkg --initrd --revision=epia.1.0 kernel_image
#

C3はこちらのとおりi686では作れない(i586の切り分けがないのでi486で作成)

12/8 16:00頃開始して2:00でも終わらず、本日再開して4時間位で終了する
EPIAで実行すると大雑把だが12時間程かかる(別のPCで作成したほうが良さそうだ)

(追加)12/11 Athlon64 2.4GHzでやってみると約1時間で終わった

セットアップ
# cd ..
# dpkg -i linux-image-2.6.32_epia.1.0_i386.deb
未選択パッケージ linux-image-2.6.32 を選択しています。
(データベースを読み込んでいます ... 現在 33569 個のファイルとディレクトリがイン ストールされています。)
(linux-image-2.6.32_epia.1.0_i386.deb から) linux-image-2.6.32 を展開しています...
Done.
linux-image-2.6.32 (epia.1.0) を設定しています ...
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32 /boot/vmlinuz-2.6.32
update-initramfs: Generating /boot/initrd.img-2.6.32
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32 /boot/vmlinuz-2.6.32
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-486
Found initrd image: /boot/initrd.img-2.6.32-5-486
Found linux image: /boot/vmlinuz-2.6.32
Found initrd image: /boot/initrd.img-2.6.32
done
#

CPU 温度の確認(sensorの導入)

# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

firewire-sbp2
loop
#

# aptitude install libsensors3 lm-sensors

# sensors-detect
(全部YES)
# cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

firewire-sbp2
loop

# Generated by sensors-detect on Sun Dec  9 17:59:25 2012
# Chip drivers
vt1211
#

(再起動)

$ sensors
vt1211-isa-6000
Adapter: ISA adapter
in0:         +1.96 V  (min =  +0.00 V, max =  +2.63 V)
in1:         +2.02 V  (min =  +0.00 V, max =  +2.63 V)
in2:         +1.18 V  (min =  +0.00 V, max =  +2.63 V)
in3:         +1.95 V  (min =  +0.00 V, max =  +2.63 V)
in4:         +2.17 V  (min =  +0.00 V, max =  +2.63 V)
+3.3V:       +3.28 V  (min =  +0.00 V, max =  +4.18 V)
fan1:          0 RPM  (min =    0 RPM, div = 2)
fan2:       4818 RPM  (min =    0 RPM, div = 2)
temp1:      +102.0°C  (high = +255.0°C, hyst =  +0.0°C)
SIO Temp:    +43.0°C  (high = +204.0°C, hyst =  +0.0°C)
cpu0_vid:   +1.250 V

EPIAのmicroSDで原因不明のエラー

  • 2012/12/08 21:35
  • カテゴリー:EPIAPC

何故一度起動すると次はエラーになるのか?

microSDカードがおかしくなったのかと思い、ようやく空けることが出来た2GのUSBメモリを使って同じことをやってみた
(実はmicroSDを諦めてUSBメモリでやってみるかと新しいUSBメモリを購入して使用中だったUSBメモリと交換した)

 D001W001

BUFFALO RUF2-E 2GM(アクセスランプが付いているので助かる)
FAT32で「CrystalDiskMark 3.0.1」にて計測

結果はmicroSDカードと同じように初回の起動は問題なしで次に起動するとエラーが出る
syslogを取り出し見てみると起動時に二箇所でエラーが発生している

初回

(略)
Dec  8 11:17:57 epia-m kernel: [   14.713169] EXT3-fs: mounted filesystem with ordered data mode.
Dec  8 11:17:57 epia-m kernel: [   15.720902] eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
Dec  8 11:17:58 epia-m acpid: starting up with netlink and the input layer
(略)

二回目

(略)
Dec  8 11:23:53 epia-m kernel: [   12.538736] EXT3-fs: mounted filesystem with ordered data mode.
Dec  8 11:23:53 epia-m kernel: [   12.738553] grep[485]: segfault at 0 ip 0804c8d0 sp bfb6815c error 6 in grep[8048000+19000]
Dec  8 11:23:53 epia-m kernel: [   13.399775] grep[574]: segfault at 0 ip 0804c8d0 sp bfe7c80c error 6 in grep[8048000+19000]
Dec  8 11:23:53 epia-m kernel: [   13.457722] grep[581]: segfault at 0 ip 0804c8d0 sp bfa79a1c error 6 in grep[8048000+19000]
Dec  8 11:23:53 epia-m kernel: [   13.664769] grep[607]: segfault at 0 ip 0804c8d0 sp bfa4e9cc error 6 in grep[8048000+19000]
Dec  8 11:23:53 epia-m acpid: cannot open input layer
Dec  8 11:19:47 epia-m shutdown[1261]: shutting down for system reboot
(略)

LANの初期化の部分である
grepがsegmentation faultを起こしている

初回

(略)
Dec  8 11:17:58 epia-m /usr/sbin/cron[925]: (CRON) INFO (Running @reboot jobs)
Dec  8 11:17:59 epia-m dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
Dec  8 11:17:59 epia-m dhclient: DHCPOFFER from 192.168.24.1
Dec  8 11:17:59 epia-m dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Dec  8 11:17:59 epia-m dhclient: DHCPACK from 192.168.24.1
Dec  8 11:18:01 epia-m dhclient: bound to 192.168.24.54 -- renewal in 1532 seconds.
Dec  8 11:19:47 epia-m shutdown[1261]: shutting down for system reboot
(略)

二回目

(略)
Dec  8 11:23:54 epia-m /usr/sbin/cron[737]: (CRON) INFO (Running @reboot jobs)
Dec  8 11:23:54 epia-m kernel: [   15.100264] grep[757]: segfault at 0 ip 0804c8d0 sp bf96de7c error 6 in grep[8048000+19000]
Dec  8 11:23:54 epia-m kernel: [   15.127965] grep[769]: segfault at 0 ip 0804c8d0 sp bfafd96c error 6 in grep[8048000+19000]
Dec  8 11:23:54 epia-m kernel: [   15.322719] grep[788]: segfault at 0 ip 0804c8d0 sp bfba31bc error 6 in grep[8048000+19000]
Dec  8 11:23:54 epia-m kernel: [   15.331010] grep[790]: segfault at 0 ip 0804c8d0 sp bff4fa4c error 6 in grep[8048000+19000]
Dec  8 11:23:54 epia-m kernel: [   15.339241] grep[792]: segfault at 0 ip 0804c8d0 sp bfea7dac error 6 in grep[8048000+19000]
Dec  8 11:25:35 epia-m shutdown[1023]: shutting down for system halt
(略)

DHCPの初期化の部分である
LANが初期化されていないのでDHCPも駄目だろうが、こちらもgrepがsegmentation faultを起こしている

二箇所ともLANに係わる部分である
なんらかのファイルが更新されて異常が起こっているのかと思い更新されたファイルを確認した

とりあえず/etcあたりが怪しい

$ sudo mount /dev/sdd2 /mnt
$ cd /mnt/etc
$ ls -ltr
(略)
drwxr-xr-x 2 root root    4096 12月  4 22:08 default
-rw-r--r-- 1 root root      24 12月  8 11:17 resolv.conf
-rw-r--r-- 1 root root     546 12月  8 11:25 mtab
-rw-r--r-- 1 root root      45 12月  8 11:25 adjtime

resolv.confの中身は問題なし
mtabってunixでいう昔のmnttabですな(問題なし)
adjtimeも問題なし

更新したファイル全部調べてみることにする

$ touch -t 201212080000 /tmp/file
$ sudo find . -newer /tmp/file -print
./tmp
./tmp/.ICE-unix
./tmp/.X11-unix
./etc
./etc/mtab
find: `./etc/host.con': そのようなファイルやディレクトリはありません
./etc/resolv.conf
./etc/adjtime
./etc/network/run
./var/lock
./var/run
./var/run/utmp
./var/run/portmap.pid
./var/run/crond.reboot
./var/run/sm-notify.pid
./var/run/rpc.statd.pid
./var/run/acpid.socket
./var/run/portmap_mapping
./var/run/exim4
./var/run/crond.pid
./var/run/motd
./var/run/portmap.state
./var/log
./var/log/fsck/checkfs
./var/log/fsck/checkroot
./var/log/messages
./var/log/user.log
./var/log/wtmp
./var/log/syslog
./var/log/debug
./var/log/exim4/mainlog
./var/log/auth.log
./var/log/kern.log
./var/log/daemon.log
./var/log/lastlog
./var/log/dmesg.0
./var/log/dmesg
./var/lib/urandom
./var/lib/urandom/random-seed
./var/lib/exim4
./var/lib/exim4/config.autogenerated
./var/lib/dhcp/dhclient.eth0.leases
./root/.bash_history
$

特に問題のありそうな更新ファイルはない

一体何が起きているのだろう?

EPIAにHDDをUSB接続してdebianを試す2

  • 2012/12/06 23:13
  • カテゴリー:EPIAPC

256MBのbootパーティションでは起動できなかった
前にmicroSDカードでは192MBで「out of disk」を回避できた
探っていけば読み込める範囲は判るかと思うが、時間の無駄なので最低必要になるサイズでどうかやってみることにする

インストールでbootパーティションに必要なサイズは17MB位なので32MBで起動するかどうか
これで起動しないなら使えないことになる(起動に必要なkernelなどを小さくすればできるけど)

Disk /dev/sdd: 20.0 GB, 20003880960 bytes
ヘッド 64, セクタ 32, シリンダ 19077, 合計 39070080 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0xcc4204ba

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1            2048       63487       30720   83  Linux
/dev/sdd2           63488     3188735     1562624   83  Linux

結果USB接続で正常に起動した
これをmicroSDにコピーして試す

ところで起動時間だがmicroSDカード程遅いということはないがHDDでも遅いことが判った
HDDのUSBアダプタにUSB1.1かUSB2.0か接続判断できるLEDが付いていたためUSB1.1での接続になっていた
この時代のマザーならしかたないところかな、BIOS経由でのアクセスの場合のみUSB1.1のはずなので起動後については後で考えることにする

HDDからパーティションを取り出し

$ sudo dd if=/dev/sdd1 of=boot32M.dat bs=1M
30+0 レコード入力
30+0 レコード出力
31457280 バイト (31 MB) コピーされました、 1.39959 秒、 22.5 MB/秒
$ sudo dd if=/dev/sdd2 of=sys1.6G.dat bs=1M
1526+0 レコード入力
1526+0 レコード出力
1600126976 バイト (1.6 GB) コピーされました、 56.6959 秒、 28.2 MB/秒
$

microSD 2GB に挿し替えてコピー

$ sudo fdisk -l /dev/sdd

(パーティションを構成)

$ sudo fdisk -l /dev/sdd

ディスク /dev/sdd: 1917 MB, 1917845504 バイト
ヘッド 2, セクタ 1, シリンダ 1872896, 合計 3745792 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x00000000

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1            2048       63487       30720   83  Linux
/dev/sdd2           63488     3188735     1562624   83  Linux
$
$ sudo dd if=boot32M.dat of=/dev/sdd1 bs=1M
30+0 レコード入力
30+0 レコード出力
31457280 バイト (31 MB) コピーされました、 0.535508 秒、 58.7 MB/秒
$ sudo dd if=sys1.6G.dat of=/dev/sdd2 bs=1M
1526+0 レコード入力
1526+0 レコード出力
1600126976 バイト (1.6 GB) コピーされました、 203.093 秒、 7.9 MB/秒

$ sudo mount /dev/sdd2 /mnt
$ sudo mount /dev/sdd1 /mnt/boot
$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt
# grub-install --root-directory=/ /dev/sdd
Installation finished. No error reported.
# exit

$ sudo umount /mnt/dev
$ sudo umount /mnt/boot
$ sudo umount /mnt

結果ようやくmicroSDで正常起動した

が、一度だけで二度目からは起動時にsegment errorが続出

どうして?

ページ移動

  • ページ
  • 1
  • 2

ユーティリティ

タグクラウド

検索

エントリー検索フォーム
キーワード

Feed