GNU parted で Windows98SE の引越し

2008年 2月 3日 掲載


はじめに

自作 5号機のプライマリマスタのハードディスクを, 120GB から 160GB のものに換装した (HGST HDS722512VLAT80 → HGST HDS721616PLAT80).

この作業で以下の変更を行なった.

Windows98SE をふくむディスクの中身の引越しには GNU parted を使った. 以下のサイトを参考にした.


実作業

セカンダリスレーブに引越し先の 160GB のディスクをつなぎ, Knoppix 3.6日本語版(日経WinPC 2005年 1月号付録)を CD から起動する. 起動したら,コンソールを開いて su する.

まずは,もとのディスク /dev/hda の内容を確認.

# parted
(parted) select /dev/hda
(parted) print
Minor    Start       End     Type      Filesystem  Flags
1          0.031   1435.495  primary   fat32       boot, lba
2       1435.496 117796.926  extended              lba
5       1435.496  20520.527  logical   fat32       lba
6      20520.558 117796.926  logical   fat32       lba

次に /dev/hdd に /dev/hda1 と同じサイズのパーティションを切り, cp コマンドで内容をコピーする.

(parted) select /dev/hdd
(parted) mklabel msdos
(parted) mkpart primay fat32 0.031 1435.495
(parted) cp /dev/hda 1 1

コピーは 1分少々で終わった. /dev/hdd1 のサイズを 1.5GB から 3GB に resize し, Flags も /dev/hda1 と同じになるように set しておく.

(parted) resize 1 0 3000
(parted) set 1 boot
(parted) set 1 lba
(parted) print
Minor    Start       End     Type      Filesystem  Flags
1          0.031   2996.499  primary   fat32       boot, lba

一度,parted を終了し,/dev/hdd1 を mount して, 内容がコピーされているかを確認した.

つづけて,拡張領域,論理領域 /dev/hda[256] もコピーする.

まずは,拡張領域 /dev/hdd2 を作成する.

(parted) mkpart extended 3000 130000
(parted) print
Minor    Start       End     Type      Filesystem  Flags
1          0.031   2996.499  primary   fat32       boot, lba
2       2996.499 130002.561  extended              lba

範囲は 130000MB までとした. Windows98SE で使えるハードディスクの容量の壁 137,438,953,472B は 1MB=1000*1000B で計算すると 137438MB だが, 1MB=1024*1024B で計算すると 131072MB になる. 今回は安全のためと,切りのいい数字ということで 130000MB までにした.

次に,論理領域 /dev/hdd[56] を作り,/dev/hda[56] の内容をコピーする.

(parted) mkpart logical fat32 3000 22086
(parted) cp /dev/hda 5 5
(parted) print
Minor    Start       End     Type      Filesystem  Flags
1          0.031   2996.499  primary   fat32       boot, lba
2       2996.499 130002.561  extended              lba
5       2996.530  22089.375  logical   fat32       lba
(parted) mkpart logical fat32 22089 130000
(parted) cp /dev/hda 6 6
(parted) print
Minor    Start       End     Type      Filesystem  Flags
1          0.031   2996.499  primary   fat32       boot, lba
2       2996.499 130002.561  extended              lba
5       2996.530  22089.375  logical   fat32       lba
6      22089.406 130002.561  logical   fat32       lba
(parted) quit

今度は 100GB近くあるので時間がかかる.70分近くかかったか.

/dev/hdd[56] は /dev/hda[56] よりサイズが大きい. フォーマットとかしてないけど大丈夫なのだろうか. fsck でチェックしてみた.

# fsck.msdos /dev/hdd5
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/dev/hdd5: 19 files, 180979/1221343 clusters
# fsck.msdos /dev/hdd6
dosfsck 2.10, 22 Sep 2003, FAT32, LFN
/dev/hdd6: 6664 files, 2439468/3452376 clusters

問題ないかな. パーティションをコピーする際, コピー元とコピー先のサイズが完全に一致することはあまりないだろうから, その辺の配慮はされているのだろう,たぶん.

コピー先のディスクをプライマリマスタにつなぎ換えて起動. Windows98SE が立ち上がることを確認した.

そのあと,空き領域に FreeBSD 6.2 をインストールして終了.


[ KDOホームにもどる ]


(C) 2008 KDO