パスワードを忘れた? アカウント作成
6560087 journal
ストレージ

Yoh2の日記: [調査中] Linux起動時にSSDを認識できない事象が頻発 3

日記 by Yoh2

しばらく前にデスクトップPCにSSDを突っ込み、今までHDDにインストールしていたGentoo Linux (のルートファイルシステム) をSSDに引っ越した。
ところが、かなり頻繁に起動に失敗する。SSDをうまく認識できないため、ルートファイルシステムをマウントできずにカーネルパニックを起こしているようだ。

失敗した時のログを調べると、正常起動時には表示されない以下のログが出力されていることに気付いた。

[    3.931717] ata3.00: model number mismatch 'CFD_CSSD-S6TM128NMPQ' != 'D_CSSD-S6TM128NMPQ                    �'
[    3.958591] ata3.00: revalidation failed (errno=-19)
[    3.963551] ata3: limiting SATA link speed to 1.5 Gbps
[    3.968672] ata3.00: limiting speed to UDMA/133:PIO3

何やらモデル名をうまく取れていないっぽい。このエラーメッセージで検索すると、以下のページを見付けた。
Samsung 830 SSD on Debian Squeeze (hardware detection issue)
この現象と私が遭遇した現象では、

  • 化け方が同じ (最初の2文字が消えて、代わりに末尾に余計な文字が付いている)。
  • HDDでこのような問題が起こったことはない。
  • 使っているSSDは、リカバリーCDなどで起動した場合には問題なく動作している。

という点で共通なので参考になるのではないかと思ったが、残念ながら解決に至っていない模様。

ここでカーネルのソースを眺めてみると、上記のエラーの原因となった比較の際の生データのダンプをログに出力する仕掛けがあるらしいことが分かった。以下のカーネルパラメータを付加するとダンプ出力が行われる。

libata.force=dump_id loglevel=8

また、起動ログをシリアルポート経由で取得するためと、出力が速すぎて抜けが発生するのを避けるために、

console=ttyS0,115200n8 boot_delay=10

も追加。
# boot_delayを追加しないと、肝心のダンプが出てこない時があった。

この方法で、正常に起動できる時と起動に失敗する時のダンプを取得できた。

正常に起動できた時:

[    5.712710] ata3.00: dumping IDENTIFY data, class=1 may_fallback=1 tried_spinup=0
[    5.720195] 00000000: 0040 3fff c837 0010 0000 0000 003f 0000  @..?7.......?...
[    6.018325] 00000010: 0000 0000 3030 3231 3531 3130 3134 3238  ....001215014182
[    6.025641] 00000020: 2020 2020 2020 2020 0000 0000 0000 564d          ......MV
[    6.032948] 00000030: 3231 2020 2020 4346 445f 4353 5344 2d53  12    FC_DSCDSS-
[    6.040261] 00000040: 3654 4d31 3238 4e4d 5051 2020 2020 2020  T61M82MNQP
[    6.047563] 00000050: 2020 2020 2020 2020 2020 2020 2020 8010                ..
[    6.054871] 00000060: 4000 2f00 4000 0000 0000 0007 3fff 0010  .@./.@.......?..
[    6.062182] 00000070: 003f fc10 00fb 0110 c2b0 0ee7 0000 0007  ?...............
[    6.069493] 00000080: 0003 0078 0078 0078 0078 0000 0000 0000  ..x.x.x.x.......
[    6.076805] 00000090: 0000 0000 0000 001f 070e 0000 004c 0040  ............L.@.
[    6.084113] 000000a0: 01fe 0021 746b 7f01 4123 7469 b401 4123  ..!.kt..#Ait..#A
[    6.091420] 000000b0: 407f 0003 0003 0000 0000 0000 fe00 0000  .@..............
[    6.098731] 000000c0: 0000 0000 0000 0000 c2b0 0ee7 0000 0000  ................
[    6.106038] 000000d0: 0000 0008 4000 0000 5000 0000 0000 0000  .....@...P......
[    6.113345] 000000e0: 0000 0000 0000 0000 0000 0000 0000 4010  ...............@
[    6.120649] 000000f0: 4010 0000 0000 0000 0000 0000 0000 0000  .@..............
[    6.127952] 00000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.135255] 00000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.142557] 00000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.149864] 00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.157167] 00000140: 0000 0000 0000 0000 0000 0001 0000 0000  ................
[    6.164475] 00000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.171782] 00000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.179084] 00000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.186390] 00000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.193691] 00000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.200994] 000001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.208301] 000001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.215603] 000001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.222931] 000001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.230232] 000001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    6.237534] 000001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

正常に起動できなかった時:

[    5.680686] ata3.00: dumping IDENTIFY data, class=1 may_fallback=1 tried_spinup=0
[    5.680693] 00000000: 3fff c837 0010 0000 0000 003f 0000 0000  .?7.......?.....
[    5.680698] 00000010: 0000 3030 3231 3531 3130 3134 3238 2020  ..001215014182
[    5.680703] 00000020: 2020 2020 2020 0000 0000 0000 564d 3231        ......MV12
[    5.680708] 00000030: 2020 2020 4346 445f 4353 5344 2d53 3654      FC_DSCDSS-T6
[    5.680711] 00000040: 4d31 3238 4e4d 5051 2020 2020 2020 2020  1M82MNQP
[    5.680715] 00000050: 2020 2020 2020 2020 2020 2020 8010 4000              ...@
[    5.680720] 00000060: 2f00 4000 0000 0000 0007 3fff 0010 003f  ./.@.......?..?.
[    5.680724] 00000070: fc10 00fb 0110 c2b0 0ee7 0000 0007 0003  ................
[    5.680729] 00000080: 0078 0078 0078 0078 0000 0000 0000 0000  x.x.x.x.........
[    5.680734] 00000090: 0000 0000 001f 070e 0000 004c 0040 01fe  ..........L.@...
[    5.680738] 000000a0: 0021 746b 7f01 4123 7469 b401 4123 407f  !.kt..#Ait..#A.@
[    5.680742] 000000b0: 0003 0003 0000 0000 0000 fe00 0000 0000  ................
[    5.680746] 000000c0: 0000 0000 0000 c2b0 0ee7 0000 0000 0000  ................
[    5.680750] 000000d0: 0008 4000 0000 5000 0000 0000 0000 0000  ...@...P........
[    5.680754] 000000e0: 0000 0000 0000 0000 0000 0000 4010 4010  .............@.@
[    5.680758] 000000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680762] 00000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680766] 00000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680770] 00000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680774] 00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680778] 00000140: 0000 0000 0000 0000 0001 0000 0000 0000  ................
[    5.680782] 00000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680786] 00000160: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680790] 00000170: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680794] 00000180: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680798] 00000190: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680802] 000001a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680806] 000001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680810] 000001c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680814] 000001d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680819] 000001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[    5.680823] 000001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

比較してみると、正常に起動できない時は頭の2バイトが抜けているようだ。
正常に起動できないケースを10回程試したが、すべてこのパターンだった。
# 他、起動する度に後半部分がちょろちょろと異なっているが、その辺りが何を表しているかは調べててない。

では何故に頭が抜けるんだ?という原因については未調査。もう眠い。
当てずっぽうに考えると、タイミング関連の問題かなぁ。ソースを読むと、このデータの転送は2バイト単位だから、最初の1回を取りこぼしているんじゃないかな、と。
レスキューCDなどではこの現象が起こっていないから、何かのパラメータ設定かカーネルのビルドオプションできちんと調停できるとか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

身近な人の偉大さは半減する -- あるアレゲ人

読み込み中...