birdパソコン修理, HDD 換装手順

パソコン修理

1/12 に注文した、新しい HDD が到着しました。というわけでこのマシンの HDD 換装を行いますので、本日何度かここへアクセス出来ないことがあると思いますがあしからず。

HDD 換装手順

今日の HDD 換装手順を記録しておきます。

前提

ThinkPad X20 の内蔵 HDD (60Gbytes) がクラッシュの前兆を示したため、80Gbytes のものと入れ換えた。利用した周辺機器は外付け FDD、外付け HDD ケース (IEEE1394 接続)。

パーティション構成

旧ディスクのパーティション構成は下記の通り。

  • /dev/hda1 (512Mbytes) … MS-DOS 領域 (Hibernation、緊急用)
  • /dev/hda2 (256Mbytes) … Linux swap
  • /dev/hda3 (残り全て) … Linux root

新ディスクでも上記構成を踏襲した。MS-DOS 領域は、いわゆる suspend to disk、hibernation 用領域として利用する。また Linux kernel と loadlin.exe を置いておき、ブートローダを壊してしまった時の緊急用としても使えるようにしておく (他にも fdisk.exe と format.com、phdisk.exe (hibernation 設定用ユーティリティ) なども置いておく)。

作業手順

  1. 旧ディスク上の MS-DOS パーティションから起動し (lilo で「DOS」を選択)、そこにある kernel と loadlin.exe できちんと起動できることを確認しておく。loadlin.exe、kernel image が古ければ新しいものをコピーする。同時に、MS-DOS 起動 FD を一枚作り、fdisk.exe、format.com をコピーしておく。
  2. IEEE1394 経由外付け HDD ケースを接続してみて、きちんと認識、mount 出来ることを確認しておく。
  3. 旧ディスク取り外し/新ディスク取り付け後、1. で作った FD を用い外付け FDD から起動する。
  4. 新ディスクに対して fdisk.exe を実行し、512Mbytes の基本領域を作成、起動可能とした後、format、システムファイルの転送を行う (format c: /s)。
  5. FD を取り除き、新ディスクから MS-DOS が起動できることを確認する。
  6. 再び新ディスク取り外し/旧ディスク取り付けし、新ディスクは外付け HDD ケースにセットし接続した後、single user mode で起動する。
  7. 外付け HDD 内の新ディスクに対して cfdisk を実行し (cfdisk /dev/sda)、上で作った MS-DOS 領域はそのままにして、その後ろに Linux swap 領域、Linux root 領域を作成する。
  8. それぞれの領域を初期化する (mkswap /dev/sda2、mkfs.xfs /dev/sda3)。
  9. 旧ディスク、新ディスクの MS-DOS 領域 (/dev/hda1、/dev/sda1) をそれぞれマウントし、旧ディスク側の内容を新ディスク側へコピーした後、umount する。
  10. 新ディスク側 Linux root 領域 (/dev/sda3) を /mnt に mount する (mount -t xfs /dev/sda3 /mnt)。
  11. 新ディスク側にマウントポイント、tmp ディレクトリを作成する (/mnt/.dev、/mnt/proc、/mnt/mnt、/mnt/sys、/mnt/tmp。所有者、permission は旧ディスク側を確認して合わせておく)。
  12. 旧ディスクの内容を全て新ディスク側へコピーする ((cd / && tar cf - .qt/ bin/ boot/ cdrom/ dev/ etc/ floppy/ home/ initrd/ lib/ mnt0/ opt/ root/ sbin/ usr/ var/ vmlinuz*) | (cd /mnt && tar xvfp -))。
  13. 電源を落とし、再び旧ディスク取り外し/新ディスク取り付けを行う。
  14. 起動すると MS-DOS 領域から起動するはずなので、あらかじめコピーしておいた loadlin.exe、kernel を用いて Linux を起動する。
  15. lilo を実行して新ディスクにブートローダをインストールする。

以上です。ファイルコピーするところがやっぱり一番時間がかかります。しかも今回、ファイルコピーを途中で中止 (設定ミスに気がついて) した上で、その続きからファイルコピーを行ったためファイルの permission が正しく設定されておらず1、それをやり直したりしていたので5時間もかかってしまいました。


  1. tar に p オプションを付けて所有者、permission、更新日時を保存しようとした場合って、実はファイル内容の転送が全て完了してからそれらのメタ情報が反映されるのです。なのでファイル転送の途中で中止したりすると、転送自体は完了している部分も所有者や permission はめちゃくちゃなままとなって、大抵の場合うまく動かなくなります。 ↩︎