02 January 2007

東芝 dynabook Satellite P1W のリカバリ

格安ビジネス用ノートパソコン 東芝 P1W 160C/4W のリカバリを行った。
マニュアルによれば、「電源を入れた直後の画面で ”0” キーを押しつづけるとリカバリプログラムが起動する」そうである。
購入時に一度リカバリを行ったので、プログラムが起動するのは確認済であったが…

起動しません。大音響のビープ音を響かせただけで、何も起こりません。

考察1 : MBRになんらかのプログラムが仕組んであったのか?

LinuxとWindowsXPの両方をインストールしたため、MBRにはLinuxのGRUBブートローダが入っている。別途保存してあった当初のMBR(ブートローダ)に書き戻してみる。

結果 → ×

リカバリプログラムの読み込み画面(WindowsXPの起動時の最初に出てくる、テキストの横棒グラフ)が表示された後、グラフィックがONになりマウスポインタが表示される。その後、突然再起動される。

考察2 : 複数のパーティション or Windows以外がお気に召さない

素人はLinuxなんて入れるな、C: と D: ドライブという2ドライブ構成以外は認めんというメーカーの声が聞こえてくるような気がする。
C: ドライブを除く全てのパーティションを削除する。

結果 → ×

状況は考察1と同じ

考察3 : リカバリ用パーティションを除いて、全てのパーティションを削除

もう、やけくそである。東芝の幼稚な罠を突破しないわけにはいかない…
最終セクタ付近に存在するリカバリ用パーティション(隠しFAT32)を除く全てのパーティションを削除した。

結果 → ×

考察1、2よりは進展し、「Windowsのメッセージボックス」が表示されて「C:\BIN\ERRORDIALOG.EXE が存在しません」、「C:\BIN\BOOTPRIORITY.EXE が存在しません」 というメッセージが出る。その後強制再起動。

どうもWindowsでリカバリプログラムが組まれているようだ。
Knoppixでリカバリ用パーティションをFAT32ドライブとしてマウントして中を覗くと、Windows PE らしき構成のフォルダ構造をしている。
また、base.iso (120MBytes)や recovery.iso (467MBytes)というCD-Rに収まるサイズのWindows PE 起動ディスクイメージと、preinst.taf (345MBytes), preinst001.taf (645MBytes), preinst002.taf (645MBytes), preinst003.taf (302MBytes) というインストール用データらしきファイルが存在する。
本来ならこれらのファイルがCD-ROMで提供されているはずだが、昨今のコスト削減でHDDに格納されてしまったのだろう。

でも、必要なときにリカバリーできないようなリカバリーシステムは糞である

で、リカバリ用パーティションがWindowsXPをベースとした Windows PEであることがわかった。無意味に丁寧なリカバリ用CDイメージまで格納しておきながら、そのCDの焼く手法すら提供していないのは、さすが日本製である。

考察4 : C:ドライブが隠し属性であることが問題の根源

考察3で表示されたダイアログで見付からないとなっていたファイルは、リカバリ用パーティション内のBINフォルダに格納されているファイル。
起動時に隠し属性の付いたパーティションは「ドライブ文字が振られない」ので、「当然アクセス不能」。

リカバリ用パーティションのパーティション種別を 「Hidden FAT32 (0x1c)」 から 「FAT32 (0x0c)」に変更して、再起動する。
(Knoppix で fdisk コマンドを用いて、0x1c -> 0x0c とする。ついでに、Active属性も付けておく)

ビープ音がうるさいので、MBMのフロッピーをUSBで接続し再起動。MBMが読み込まれた段階でUSBケーブルを抜き、リカバリ用パーティションを指定して起動する。

結果 → ○

リカバリプログラムが起動して、最初のダイアログボックスが表示された段階で、リカバリ用パーティションには再び隠し属性が設定されている。なんという念の入れ様だろうか…

最終結論

  • 東芝 dynabook Satellite P1W のリカバリプログラムはリカバリ用パーティションに入っているWindows PE で行われている。
  • リカバリ用パーティションは「可視FAT32」でブートされなければならない。
  • リカバリ用パーティションより前に、Windowsで読めるパーティションが存在してはならない(NTFSは除く)。
  • リカバリ用パーティションのブートは、MBMやGRUBなどでそのパーティションのPBRに制御を移してやるだけで良い。

ちなみに、リカバリの実験後にイメージバックアップを取ってあったものを書き戻した。この構成では、当然リカバリ不可…

[root@localhost ~]# parted /dev/sda GNU Parted 1.8.1 /dev/sda を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) unit CHS (parted) p モデル: ATA HTS541040G9SA00 (scsi) ディスク /dev/sda: 4863,254,62 セクタサイズ (論理/物理): 512B/512B BIOS シリンダ、ヘッド、セクタ geometry: 4864,255,63. 1シリンダは 8225kB。 パーティションテーブル: msdos 番号 開始 終了 タイプ ファイルシステム フラグ 1 0,1,0 1827,254,62 プライマリ ntfs 2 1828,0,0 4494,254,62 拡張 lba 5 1828,1,0 3102,254,62 論理 fat32 6 3103,1,0 4249,254,62 論理 ext3 7 4250,1,0 4376,254,62 論理 linux-swap 3 4495,0,0 4862,254,62 プライマリ fat32 boot, hidden, lba