2013年7月28日日曜日

unknown disk partitionの調査

先日、Touro 4TBを、partprobeでパーティションを認識させて、マウントするようにしたが、そもそも、unknown disk partitionとなる原因を調査。

推定1
HDDではないが、USBメモリで、unknown disk partitionの対策をしたページを見つけた。
http://blog.kmckk.com/archives/2846188.html
セクタ0をHDDからDMAで読み込み、キャッシュをinvalidateするが、キャッシュのラインサイズのアライメントが合っていないため、CPUがライト・バックして、DMA転送いたデータ(マジックナンバー)を上書き、このデータを参照したmsdos_partionが、マジックナンバー不正と判定し、check_partionに1を返し、unknown disk partitionとなっている様。

良くわからなかったので、[1]を読んでみた。

kernel sourceを読んでみようと調べた。
このとき、クロスコンパイルを簡潔にまとめたページがあったので貼っておく。[2]
ソースコードを読むのに、バージョン間比較、識別子へのハイパーリンクが貼られていて、便利なページがあった。[3] LXRというソフトを使っている様。

参考

[1]キャシュは諸刃の剣、DMA対応と言われたら、
http://www.uquest.co.jp/embedded/learning/lecture.html

[2]
http://senta.s112.xrea.com/senta/Tips/000/8a/index.html

[3]
http://lxr.free-electrons.com/source/

0 件のコメント: