エントリー

EPIAのmicroSDにdebianをインストールするが失敗

  • 2012/11/25 23:16
  • カテゴリー:EPIAPC

EPIA-ME6000Gに使用していない新品のmicroSDカード(KINGMAX microSD 4GB Class4)を付けてdebianをインストールしてみる

先に結果となるが残念ながらEPIAではmicroSDカードをUSBで読む際に問題があるようでdebianを起動することができなかった
つまり以下は失敗の記録となる

インストール

まずは通常のHDDと同じ手順でインストール

microSDカードとDVDドライブをUSB接続し、作成したDVDからインストールしていたら途中でDVDの読み込みエラーが発生、ディスクを精査すると問題ありと出たので媒体をCDで作りやり直し(幸先が悪い、出鼻を挫かれた)

これが非常に時間が掛かり4時間で終わらなかったのでそのままにして寝る
翌日起きたらgrubの確認で停止していた
grubを設定して早速再起動すると「out of disk」で起動せず

GRUB loading.
Welcome to GRUB!

error: out of disk.
Entering resuce mode...
grub rescue>

CDからレスキュを起動して、/ を mount するとファイルシステムは正常にみえる
grubの設定ミスなのか再度grubを登録したが結果は同様
エラーの意味がまったく判らないのでググる
同様の例がなく収集できたのはパーティションテーブルの異常

再度CDからのレスキュでfdisk

# fdisk -l /dev/sda
Disk /dev/sda: 3930 MB, 3930062848 bytes
121 heads, 62 sectors/track, 1023 cylinders
Units = cylinders of 7502 * 512 = 3841024 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004a79a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1             890        1023      498688   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(827, 119, 56) logical=(889, 116, 11)
Partition 1 has different physical/logical endings:
     phys=(951, 79, 15) logical=(1022, 109, 54)
Partition 1 does not end on cylinder boundary.
/dev/sda2   *           1         890     3337216   83  Linux
Partition 2 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 33, 3)
Partition 2 has different physical/logical endings:
     phys=(827, 119, 55) logical=(889, 116, 10)
Partition 2 does not end on cylinder boundary.

Partition table entries are not in disk order

別PCのubuntuで見たfdisk

$ sudo fdisk -l /dev/sdd

ディスク /dev/sdd: 3930 MB, 3930062848 バイト
ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x0004a79a

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1         6676480     7673855      498688   82  Linux スワップ / Solaris
/dev/sdd2   *        2048     6676479     3337216   83  Linux

パーティションテーブル項目がディスクの順序と一致しません

インストール時に最初にスワップの指定を行い位置を後ろにするとこの様にになる
パーティションテーブルがディスク位置順になっていないから「out of disk」になるのかなと思い修正

$ sudo fdisk /dev/sdd
x ← エキスパートモード
f ← 最適化
p ← 確認(やらなくても良いが書き込む前に確認すべき)
w ← 書き込み&終了する

$ sudo fdisk -l /dev/sdd

ディスク /dev/sdd: 3930 MB, 3930062848 バイト
ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x0004a79a

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1   *        2048     6676479     3337216   83  Linux
/dev/sdd2         6676480     7673855      498688   82  Linux スワップ / Solaris

始点が2048になっているのはSDカードにext3でフォーマットしたためと思われる(debianで見ると1なのはドライバーが異なる?)

結果は変わらず「out of disk」となる(がっかり)

再インストール

インストール中のどこかでエラーがあったのかも知れないと思い再度インストールを行うが散々な目にあう

2回目:途中でSDカードのエラーとなり中止
3回目:grubの登録ができず中止
CDレスキュでgrubの登録しようとしたが書き込み不可
/ のマウントもできない
4回目:懲りずに・・・今度はCDが読めなくなって中止
DVDドライブが妙な動きしているようだったので壊れたと思ったが別PCでは問題なかった
CDレスキュでSDカードをmountしようとするとエラー発生
syslogを見るとsuper blockが読めないらしい
SDカードが壊れてしまったのか?EPIAが問題なのか?

試しに20GBの2.5インチHDDを接続してインストールすると30分もかからず終了し正常に起動する
SDカードだと4時間はかかるので「嘘だろ!」って思った

ubuntuでSDカードをddで全体をreadしてみたがエラーは発生せず
fdiskでパーティションをクリアしてWindowsXPでSDフォーマッタを使い上書きによる初期化をしてみたが正常に終了した

再々インストール

microSDカードにHDDと同じ手段でインストールすると時間がかかるので20GB HDDにインストールしたdebianからシステムをコピーすることにした

HDDからシステムをコピー

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1   *        2048     6836223     3417088   83  Linux
/dev/sdd2         6838270    39069695    16115713    5  拡張領域
/dev/sdd5         6838272     7835647      498688   82  Linux スワップ / Solaris
/dev/sdd6         7837696    39069695    15616000   83  Linux

$ sudo dd if=/dev/sdd1 of=sdd1.dat
6834176+0 レコード入力
6834176+0 レコード出力
3499098112 バイト (3.5 GB) コピーされました、 129.613 秒、 27.0 MB/秒

SDカードに同じようにパーティションを作りHDDからコピーしたシステムを書き込む

$ sudo fdisk -l /dev/sdd

ディスク /dev/sdd: 3930 MB, 3930062848 バイト
ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0xdda47987

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1            2048     6836223     3417088   83  Linux
/dev/sdd2         6836224     7675903      419840    5  拡張領域
/dev/sdd5         6838272     7675903      418816   82  Linux スワップ / Solaris

$ sudo dd if=sdd1.dat of=/dev/sdd1
6834176+0 レコード入力
6834176+0 レコード出力
3499098112 バイト (3.5 GB) コピーされました、 1493.04 秒、 2.3 MB/秒

$ sudo mount /dev/sdd1 /mnt

これで後はgrubをインストールするだけ

$ sudo mount /dev/sdd1 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt

# grub-install /dev/sdd
Installation finished. No error reported.
# update-grub
Found linux image: /boot/vmlinuz-2.6.32-5-486
Found initrd image: /boot/initrd.img-2.6.32-5-486
done
# vi /etc/fstab
(修正)
$ sudo umount /mnt/dev
$ sudo umount /mnt

結果は「out of disk」で起動せず(もう見たくないエラー)

GRUB loading.
Welcome to GRUB!

error: out of disk.
Entering resuce mode...
grub rescue>

ここで(いまさらながら)落ち着いて考える
どこで止まっているのか?grubのstage1かstage2(もしくはstage1.5)で対応を変えないといけない

GRUB - Wikipedia によると、やはりstage1で/boot/grub/がbiosで参照できていないと推測

grub rescue モードで確認

grub rescue> ls
(hd0) (hd0,msdos1) (fd0)
grub rescue> ls (hd0,1)/
./ ../ lost+found/ var/ opt/ etc/ media/ initrd.img sbin/ usr/ lib/ selinux/ bin/ home/ dev/
proc/ boot/ mnt/ root/ tmp/ sys/ srv/ vmlinuz
grub rescue> ls (hd0,1)/boot/

error: out of disk.
grub rescue>

(尚、初期にmkfsで生成されるlost+foundは見えた)

そうか!LBAの問題か、最初に気付いていればよかった
512bytesのプログラムで適切なメッセージを出せるとは思ってなくて「out of disk」というメッセージに惑わされてしまった

再々々インストール

先頭192MBをbootパーティションにしてgrubとカーネルを置く

$ sudo fdisk /dev/sdd

ディスク /dev/sdd: 3930 MB, 3930062848 バイト
ヘッド 121, セクタ 62, シリンダ 1023, 合計 7675904 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0xdda47987

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdd1   *        2048      395263      196608   83  Linux
/dev/sdd2          395264     7675903     3640320    5  拡張領域
/dev/sdd5          397312     7231488     3417088+  83  Linux
/dev/sdd6         7233537     7675903      221183+  82  Linux スワップ / Solaris

コマンド (m でヘルプ): v
パーティション 1: 前のセクタ 395263 は合計 391760 と一致しません
パーティション 5: 前のセクタ 7231488 は合計 7231315 と一致しません
パーティション 6: シリンダ 1024 は最大値 1023 よりも大きいです
パーティション 6: 前のセクタ 7675903 は合計 7681222 と一致しません
6141 未確保 512 バイトセクタが残っています

$ sudo dd if=sys3.5G.dat of=/dev/sdd5 bs=1M ← sys3.5G.datはsdd1.datをmvしたもの
3337+0 レコード入力
3337+0 レコード出力
3499098112 バイト (3.5 GB) コピーされました、 830.274 秒、 4.2 MB/秒
(バッファ指定で少しは早く書き込めた)

$ sudo mkfs -t ext3 /dev/sdd1
$ sudo e2label /dev/sdd1 boot

$ sudo mount /dev/sdd5 /mnt
$ sudo mv /mnt/boot /mnt/boot.bak
$ sudo mkdir /mnt/boot
$ sudo mount /dev/sdd1 /mnt/boot
$ (cd /mnt/boot.bak; sudo tar cf - . | (cd /mnt/boot; sudo tar xf -))
$ sudo rm -rf /mnt/boot.bak

$ sudo mkswap /dev/sdd6
スワップ空間バージョン1を設定します、サイズ = 221176 KiB
ラベルはありません, UUID=dd0784d0-d4fc-4661-8fbc-fab24adce7a9

$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt
# grub-install --root-directory=/ /dev/sdd
Installation finished. No error reported.
# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-486
Found initrd image: /boot/initrd.img-2.6.32-5-486
done
# vi /etc/fstab
(編集)

$ sudo blkid
/dev/sdd1: LABEL="boot" UUID="1575e3a5-ac09-4815-92f6-1a4584dbd7d7" TYPE="ext3"
/dev/sdd5: UUID="99ae2575-7585-45e0-8dfd-732fabdd794e" TYPE="ext3"
/dev/sdd6: UUID="dd0784d0-d4fc-4661-8fbc-fab24adce7a9" TYPE="swap"

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

結果

GRUB loading.
Welcome to GRUB!

error: no such device: 99ae2575-7585-45e0-8dfd-732fabdd794e.
error: no such disk.
error: no suitable mode found.
error: no such device: 1575e3a5-ac09-4815-92f6-1a4584dbd7d7.

ここまで表示されるのに20分・・・
約30分待ったが変化がないのでリセット(あまりにも遅い)

「out of disk」は回避したが、次は / がないとは・・・
コマンドモードにもならないループ状態なので手が出せない

USBアダプタを換えてみたりEPIA-ME6000GをEPIA-CL10000にしてみたが同様の結果であった
試しにubuntuを使っているPCで同じmicroSDカードとアダプタを付けてみると正常起動した
この古いEPIAではUSB経由のSDカードの読み込みはハード的に問題があるのではないかと思われる

しかしUSB経由でのHDDを含め他の機器は正常動作しているのでSDカードだけ駄目というのは納得できない

他PCで起動した時の画面

001002

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

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

過去ログ

Feed