★

ThinkPad X40 ハードディスク換装

 このページを参考にしてPCに手を加えて「動かなくなった!」と言われてもワタシゃなんの責任も負いませんので念のため。改造は自己責任で。あと、DOSが分からない人も手を出さないように。Cygwinも使っているのでUnixの知識も必要です。基本的な質問に対しては「Yahoo!に聞いてください」としか答えませんので悪しからず。

概要↑

 初代ThinkPad X40は内蔵のHDDが20GBです。IBMは昔から「ハードディスクの交換はユーザーの手で簡単にできる」ように作っており、X40もネジを1本はずすだけでHDD自体は本体から外れます(液晶を開けた状態じゃないと液晶のベゼルに引っかかって取れないので注意)。

 しかし、最近のPCは工場出荷状態への復元をハードディスクから行う(Disk to Diskリカバリー、D2Dと書かれることが多い)傾向が強くなり、リカバリ用のメディアが付いてこなくなりました。これはつまり、ハードディスクを入れ換える時は、元々ハードディスクに入っていたリカバリ用の領域をあらかじめコピーしておかないといけないことを意味します。さらに、小型ノートPCの場合、外部記憶装置も限られているため、作業は困難を極めます。

 ここでは、DVDメディアを利用したHDD換装の方法を説明します。フロッピーディスクは一切使いません。ここがミソ。
D2Dリカバリ領域↑

 初期型X40の場合、ブート時にAccess IBMボタンを押してAccess IBM Predesktopメニューに入り、「Recover to factory contents」を選ぶと勝手に「IBM Product Recovery プログラム」が立ち上がります。メニューにはないのですが、ここで[F3]を押すとDOSに落ちます。面倒くさいのでこの作業を以後「リカバリDOSへ行く・落ちる」などと表現することにします。

 このとき、A:\RECOVERY ディレクトリに FWなんちゃら.EXE という名前でD2D領域操作用のプログラム群が存在しています。試しに fwdir と打ってみると、それらしき領域の一覧が出るでしょう。このときの表示から、BIOSメーカーPhoenixのFirstWareという製品を使用していることが分かります。

 このFWなんちゃらのうち、fwbackupとfwrestorだけを使います。あ、fwrestorはまだ実行しないように! うっかり使うとD2D領域を飛ばしちゃいますので(飛ばした人 σ(^-^;)。飛ばしてしまうとAccess IBMボタンを押しても何も出てこなくなります(BIOS Setupにも入れない)。非常にアセりましたが、メニューには出てこないものの、[F1]を押すとBIOS Setupに入れるようになっています。ちなみに[F12]でブートデバイスセレクタになります。忘れてしまった場合は電源を入れてすぐに適当なキーを押しつづければ、BIOSがキースタックエラーを報告してSetupに入るように促してくれますので、指示に従えばOKです。それでもD2D領域は戻ってこないわけですが。

 D2D領域の移植は基本的に次のようになります。まず古いハードディスク上で

fwbackup file=x40rec size=620

などとしてD2D領域のバックアップを作り、出来上がったファイルとfwrestor.exeを新しいハードディスクに移し、新しいハードディスク上で

fwrestor file=x40rec

とすればAccess IBMが使えるようになります。

 あとはProduct Recoveryを実行すればOKなのですが、どうやってこの巨大なファイルを新しいHDDへ移すか? ということと、システムファイルのない新しいハードディスクでどうやってブートするか? という問題が残るのです。そして、こちらの方がずっと面倒な問題だったりします。
D2D領域をバックアップする ↑

 fwbackupを使うのですが、fwbackupが動いている環境が実はWindows ME(verと打ってみると分かります)だったりするので、NTFSにデータを書き出せません。したがって、あらかじめFAT32の領域を作っておく必要があります。普通にリカバリーするとFAT32で全領域を確保・リカバリーした後、NTFSにコンバートしてくれるため、全領域NTFSになっているはずです。

 私は3領域に分けて使うクセがあって、最初に領域を切り直したついでにE:をFAT32にしてD2Dイメージを吸い上げ、Sambaで他のマシンにとっておいたのでした。あとから必要になったファイルは、D:がスワップ+テンポラリなので、ここをFAT32にフォーマットしなおしてデータをやりとりしました。でも、普通の人はパーティションを切りなおさないとダメなはずです。まずはこれが面倒(笑)。この時点で普通はシステム全体のバックアップを作ることになりますが、いろいろとクセがあるので、パーティションを切り直す必要がない人もここでシステム全体をバックアップしておくことをお勧めします。私はDVD-RAM 2枚にバックアップしました。これで2時間くらい。

 システム全体をバックアップしたら、パーティションを切りなおします。XPでは動いているPCのシステムパーティションは削除できない仕様になっているので、さっきの要領でリカバリDOSへ行き、FDISKでちまちま切って下さい。拡張パーティションまで全部切って下さい。さもないとリカバリがHDD全体を確保しなおしてやりなおし、になります。拡張パーティションに作るFAT32領域の容量は4GBあれば足りるはずです。

 できたら一旦リカバリしてください(さあ3時間がんばって)。XPが立ち上がったら、基本パーティションは既にNTFSになっているはずですので、拡張パーティション側をFAT32でフォーマットします。なお、リカバリDOSでもフォーマットはできますが、ドライブレターをぐちゃぐちゃ入れ替えている関係で、既にNTFSパーティションがある場合、NTFSパーティションの方をフォーマットしてくれたりしますので、リカバリDOSではフォーマットしない方が無難です。私は実際にこれでシステムを飛ばしました。先にバックアップとっておいたので最悪の事態は避けられましたが。

 無事に4GBのFAT32領域ができたら、リカバリDOSへ行って、カレントドライブをFAT32領域のソレにして(多分C:のはずです)、

fwbackup file=x40rec size=620

です。fileはファイル名、sizeは1ファイルあたりのサイズでMB単位です。データがここで指定したサイズに収まらない場合、ファイル名に001・002と拡張子を付けて分割されます。最終的にはDVDに焼きたいのでもっと大きなサイズでよいのですが、640MBまでしか指定できません。私はこの時点でCD-RもDVD-Rも持っていなかったので、とりあえず余裕を見て620MBにしています。容量が容量なのでかなり時間がかかります。ちなみに手元のシステムでは3.34GBのデータができあがりました。ついでに後で必要になるfwrestor.exeもコピーしておいてください。
ブートイメージを用意する ↑

 次にフロッピーでもCD-Rでもなんでもいいので、fwbackupを実行したのと同じような環境がブートできるメディアを作る必要があります。いちばん簡単なのはそこら辺に転がっているWindowsマシンでブートディスクを作る方法ですが、X40はデフォルトでFDDもCDも付いてないので、このあたりをどうにかする必要があります。

 実はX40の内蔵LANカードはPXEでネットワークブートできるので、PXEでブートしてしまう方法もあります。LinuxやFreeBSDはFAT32の読み書きができますので、これらのOSをブートして新しいHDDへ書き込むという方法もあります(今回はやりませんでしたが)。ただし、この後にfwrestorを実行しなければなりませんから、一回だけDOSを立ち上げる必要があります。DOSのブートイメージがあればPXEを使ってbpbatchでブートできますが、やはりブートイメージの問題が出てきます。DOSのブートイメージさえどうにかすれば(後で分かりますが、実はどうにかなります)この方法が一番スマートかもしれません。

 お金の問題を別にすれば、いちばん簡単なのはウルトラベースをつないで、FDDと2nd HDDを準備して、2nd HDDにリカバリイメージを置き、Windows MEかなんかでブートFDを作ってそこにfwrestorを入れ、内蔵HDDを入れ換えてFDからブートしてfwrestorする方法でしょう。ウルトラベースは多分セカンダリIDEに見えると思うので、特別なデバイスドライバは要らないはずです。

 ウルトラベースにCD-ROMドライブを入れている人は、IDE CD-ROMドライバを持ってきてMSCDEXを実行すれば見えるようになります。これが次に簡単な方法だと思います。

 私はそのどちらも持ってないので、手持ちの松下のUSBポータブルDVDドライブ「LF-P767C」を使うことにします。いろいろ試してみるとX40のBIOSはUSBのDVDドライブからでもブートできる(!!)ことが分かりましたので、ブートメディアとしてはDVD-Rを使います(をゐ)。もちろん、これだけではもったいないので、リカバリデータもDVD-Rに載せることにします(1枚に収まります)。この場合の問題は2点。ブートイメージをどうするか、という点と、ブート後にどうやってUSB DVDドライブをアクセスするか、という点です。

 とりあえずブートに関してですが、DVD-RからのブートはCD-Rからのブートと同じです。つまり、El ToritoのFDエミュレーションかHDDエミュレーションでブートします。このディスクを作るのにブートディスクイメージが必要になります。つまり、結局ブートディスクもしくは相当品が必要になります。

 これを探すのに結構時間がかかりました。DrDOSやFreeDOSも視野に入れて検討したのですが、答えは意外に近くにありました(青い鳥状態)。リカバリDOSへ落ちるとD:ドライブあたりにC:を工場出荷状態に戻すためのイメージがあるのですが、その中に「BOOTIMG.BIN」というファイルがさりげなく転がっています。サイズは1440KB。どう見ても2HDのブートディスクイメージにしか見えません。試しにFAT32領域を通してお持ち帰りして、FreeBSDでvnconfigしてmount -t msdos してみると、案の定ブートディスクのようです。とりあえずこいつでブートしてみることにします。
ブートディスクを作る ↑

 ブートディスクを作るためには、とりあえずEl Toritoブート用のISOイメージファイルを作らなければなりません。これはmkisofsを使うのが多分簡単です。mkisofsはcdrtoolsに含まれており、Cygwinでも使えます。とりあえずCygwin(とgccとmake)を入れ、ftp://ftp.berlios.de/pub/cdrecord/ からソースを持ってきて(現時点では cdrtools-2.01.tar.gz が最新の安定版)、ソースツリーを展開したらそのトップディレクトリでmakeとやってビルドしてください。

 ビルドの後は make install なわけですが、変なところに変なユーザー名でインストールしようとするので、ソースツリー中にあるDEFAULTS/Defaults.cygwin32_ntの INS_BASE・DEFINSUSR・DEFINSGRPをちょこっと編集してから make install した方がよいでしょう。

 インストールできたらブートディスクのディレクトリ構造を作ります。これは普通にエクスプローラーで作ればOKです。今回はさっき持ってきたBOOTIMG.BINだけを置きます。できたら、bashを立ち上げてブートディスクのルートに相当するところにcdして、

$ mkisofs -b BOOTIMG.BIN -c BOOT.CAT -o ../x40boot.iso .

とかするとISOイメージができあがります。-bはブートディスクのイメージファイルを指定します。これは実在していなければなりません。-cはブートカタログと言われるファイルで、 mkisofsのマニュアル曰く「必須だが重要ではないファイル」だそうです。これはmkisofsがISOイメージ中に勝手に作ってくれます。焼き上がりのディスクを見ればできていることが分かるでしょう。逆にいうと、元になるディレクトリツリー中に同じファイルが存在していると、ISOイメージ上では上書きされてしまいますので注意してください。-o はISOイメージファイル名で、最後の . はカレントディレクトリをISOイメージのルートにする、という意味ですね。

 もし、LinuxやFreeBSDがあるならば、このファイルを仮想ファイルシステムにし、ISO9660ファイルシステムとしてマウントすれば内容を確認することができます。

 ISOイメージができ上がったら、それをDVD-Rに焼きます。LF-P767CにはB's Recorder GOLD Basicが付いてくるので、これで焼きます。B's Recorderにはブートディスクなんちゃらという設定がありますがこれは使いませんISOイメージファイルを(ファイルリストではなく)直接トラックリストに突っ込んで、あとは普通に焼けばブータブルDVDができ上がります。イメージが小さいとセッション終了時に大量にダミーデータを書くため、焼き上がりまでヤケに時間がかかりますが、じっと待ちましょう。

 ブートDVDができたら早速ブートしてみます。これはもちろん正常にブートして、リカバリプロセスを一生懸命走らせようとしますが、リカバリプログラムもデータもディスク上に存在しないので、失敗してコマンドプロンプトに落ちます。ちなみにこのDOSはWin98SEでした(笑)。実際にやってみた人は起動時にメニューで選択可能なので気づいたと思いますが、USB-CDドライブ用のドライバも入っています。つまり、dirコマンドでCD-Rの中身を見ることができます。LF-P767CではDVD-Rの中身も見ることができました。多分他のDVDドライブでも同様じゃないかと思います。これで問題点の2点目も解決してしまいました。
リカバリディスクを作る ↑

 ということで、先ほどのD2Dイメージデータとこのブートイメージを使って、リカバリディスクを作ることにします。ここまでくればもう簡単です(時間はかかりますが)。まず、リカバリディスクのディレクトリツリーを作るわけですが、これはもういいでしょう。bootimg.bin・fwrestor.exeとさっき作ったx40rec.00?を置けばおしまいです。もし、3.5GBの空きを持ったディスクがあれば、そこへISOイメージを吐き出すことにすれば、FAT32領域にこれらのファイルが全部転がっているはず(ここを通さないと外へ持ち出せないから)なので、これを使ってmkisofsすればOKです。

 私の場合はD:は容量が足りなかった(E:は潰したくなかった)ので、とりあえずDVD-RAMにリカバリディスクのディレクトリツリーを作り(これで1時間くらいかかった)、システムを飛ばしてリカバリしたために空き領域がいっぱいできた(涙)C:ドライブにmkisofsでISOイメージを作りました(これまた1時間くらい)。DVD-RAM大活躍。

 これをDVD-Rに焼きます。DVD-RWでもよいのですが、RWは認識に失敗することが多い(10回やって1回くらいしか読めないというのはどういうことだ?)ので、-RWはテスト用にして、-Rの方がいいでしょう。で焼くのにまた時間がかかるのですが、もう放置で寝ました。できあがったら一度ブートしてみて、ちゃんとDVD-Rから起動し、DVD-Rが読めることを確認しておいてください。

 ちなみに私は起動時にずらずらとエラーが出るのがイヤだったので、FreeBSDでvnconfig・mount -t msdosして、CONFIG.SYSとAUTOEXEC.BATを適当に編集してから焼きました。ついでにいらなそうなファイルを消して(容量が足りなかった)FWRESTOR.EXEもブートイメージ中に入れたのですが、よく考えてみるとFWRESTOR.EXEはブートイメージ中にある必要はない(普通にファイルとして置いておけばよい)ので、これは余計な作業でした。
HDD入れ換え ↑

 これで古いHDDは不要になるので、HDDを入れ換えます。HDDはネジを一本外し、液晶のフタを開けると簡単に本体から外れます。プラスチックのフタはそのままでも外れますが、HDDを保持している金具のネジを外すとさらに簡単に外れます。HDDを保持している金具は4本のネジだけではなく、両面テープで接着されていますので、木ベラか何かを使って丁寧にはがして下さい(金具の向きを覚えて置くように)。余談ですが、IBM純正オプションは金具付らしいです(つまり、ネジ一本で交換できる)。

 あとは新しいHDDを逆の手順で取り付けて、入れ換えは完了です。HDDはHGSTのHTC424040F9AT00をT-ZONEで買いました。\15Kくらい。HDD自体の使用感ですが、以前の20GBのHDDに比べ"超小人のテニス"がちょっとうるさい感じかな。
リカバリ

 あとはDVD-Rからブートして、

fwrestor file=x40rec

とすれば(1時間くらいかかったかなー)、D2D領域が復活し、リブートすればAccess IBMボタンが使えるようになっています。あとは普通にProduct Recoveryを実行(これが3時間くらいかかる)すればWinXPが使えるようになります。

 結局、メディアはDVD-RAMがバックアップ用に2枚とリカバリディスクのマスタ作成用に1枚、テスト用にDVD-RWが1枚、本番のリカバリディスクにDVD-Rを1枚使いました。私はシステム部分をバックアップしてませんから、HDD全体をバックアップしたい人はさらにDVD-RAMが1〜2枚必要になるでしょう。LF-P767C大活躍。かかった時間は週末丸々2日。容量が容量だけにとにかく時間がかかります。ヒマな時にのんびりやった方がミスも少なくてよいでしょう。ミスによっては致命的な結末が待っていますので。

Copyright (C) 2005 You SUZUKI

$Id: hdd.htm,v 1.8 2007/04/03 01:52:04 you Exp $