質問: Windows Embbeded Standard 8のイメージファイルを作成して、製品に組み込みを行なっていますが、出荷後、ブードシステムが破損することがままあります。どういうわけか全てのコピーしたものが、時間が経つと破損するようにです。 復旧可能かどうかを調査すると、どうやっても破損が治りません。原因と対策を教えてください。 詳細な話としては、イメージはAcronis True Image(2014または2016)で作成しています。これをSSDディスクにコピーしています。ボードはBIOSモード(WIndows Boot Manager)でしか起動しませんが、メーカーに診てもらった結果、EFIモードでブートしていると指摘を受けました。しかし、破損しなければ正常にどうしているので、この説明に疑問があり、OSのコマンドでは確かにEFIモードでブートしていましたが、BCDEDITの内容を見ると、直接WindowsのOSが入っているCパーティーションから起動するようになっていたので、この指摘は正しくないと結論しました。 しかし、調査翌日に調査用に利用していたディスクではブートしないなっており、やはりブートシステムが壊れていました。 壊れているのを復旧しようと、USBから起動したWindows PE上からBCDBOOTコマンドを利用してもエラーが発生するばかり、全く治りません。 復旧するにはどうしたら良いのでしょうか?また、どうしてブートシステムが壊れるのでしょうか? 以上、よろしくお願いします。
回答: 遅レスですが、似た、というかほぼ同じ現象を知ってます。 結果はSSDの消耗だと思います。SSDのS.M.A.R.T情報を見てみてください。Media Wearout Indicator(消耗指数)やEndurance Indicatorが増えてると思います。 ほとんど使っていないSSDがなぜ消耗しきってしまうのかというと、Acronis製品でイメージファイルを書き込む形でインストールしたからです。SSDはファイルシステム・デバイスドライバから使っていない領域を通知(TRIMコマンド)してもらうことで使用中と未使用中を識別してうまく管理し、メモリセルの消耗を平準化することで長い寿命を実現しています(Wear leveling)。 Acronis True Imageのディスクバックアップは、オリジナルを取り込んだ時に未使用領域の情報を保存しません。Linuxでいえばddコマンド+圧縮に近いです。この方法でSSDにリカバリするとSSDはほぼ全ての領域を使用中と勘違いし、予備領域も使い始めます。セルの平準化が全体に対してできないので数週間~数ヶ月で消耗しきってしまいます。同じことはLinuxでSSDに向かってddで全体に書き込む(リカバリする)ことでも再現できます。 しかしこの場合でもMedia Wearout Indicatorはなかなか進行しない場合もあるようです(消耗指数は全体の平均から計算されてると思われる)。そしてある日急にお亡くなりになります。 どうすればいいのかというと、リカバリしたあとにファイルシステムの未使用領域すべてが未使用である迄を、つまりTRIMコマンドを発行させればいいのです。アナログな方法では巨大なゴミファイルを作って領域を99%使い尽くし、そしてそれを削除すればOKです。もっとカッコイイ方法やツールもあると思いますので調べてみてください。ちなみにLinuxの場合はfstrim一発です。 なお、一度消耗が一定以上進んだSSDは基本的には復旧はできないと考えてください。 > > > > > > EFIモードでブートしていると指摘を受けました > > > > > > > > > それではなぜ「時間が経つと」破損するのか説明できません。 とにかくSSDのS.M.A.R.T情報を確認しましょう。もしS.M.A.R.Tについて知らないのなら、今すぐ調べましょう。TRIMについても調べてみてください。もし企業で契約しているのなら、Acronis社に問い合わせて確認するのも手です。 最後に、Windows Embbededの対象の機種にて、ちゃんとTRIMが有効になっているかも確認してください。昨今のPCはAHCIなので問題ありませんが、組み込み向けボードでは何をホストのチップにつかっているやら、分かりませんので。