プレインストールさ れたノートPCに別のパーティションを作成する方法

問題は何か?

プレインストールされたノートPCは多くの場合、一つのパーティションに Windowsなどが導入されています。このような場合に、FreeBSDなどを導入しようとすると、通常ではハードディスク全体のバックアップを取って から、FDDなどで立ち上げてパーティションを分割し、先に取ったバックアップをレストアしなければなりません(まあ、安全のためにバックアップは取った 方が良いのですが)。更に、この場合には、当然元のパーティションを分割しているのですから、レストア先のパーティションは元のパーティションに比べて小 さくなっています。このような場合に対しても、バックアップツールが対応していないといけません。そうは言っても、レストアするのは結構面倒ですので、 Windows を生かしたまま、パーティションサイズを縮小することが出来れば非常に楽です。

バックアップツールのお勧め

筆者のお勧めバックアップツールは Acronis True Image です。製品ですが、ベクターからダウンロードバージョンで購入すると5460円です。このツールの良いところは、レストア の際に、DOSではなく、Linuxを使ってブートする点にあります。そのために、Linuxで認識できるデバイスなら何でもレストアのメディアに使うこ とが出来、バックアップも差分バックアップがWindows上から取れるので非常に快適に操作できます。

NTFSをリサイズするツールは ntfsresize と言い、多くの Linux に含まれています。また、NetBSDなどにも移植されているようです。ここでは、FreeBSDをインストールすることを考えますが、すると FreeBSD をインストールするために Linux をインストールしなければならないかのように思われるかも知れません。しかし、Linux をインストールしなくとも ntfsresize を利用することは可能です。それは、例えば Linux のインストールCDを立ち上げれば、そこに ntfsresize あるいは、そのフロントエンドが用意されているからです。しかし、更にここには落とし穴があります。それは、ノートPCがCD-ROMを内蔵している場合に は、Linux CD-ROMを立ち上げれば良いのですが、ノートPCにCD- ROMがなく、しかも純正CD-ROMのようなATAPI CD-ROMに見えるCD-ROM装置も持っておらず、USB接続のCD-ROMのみがある場合です。このような場合、不幸なことに多 くのLinuxのインストールCDではUSBをうまく使えないか、あるいは面倒なことになるかのどちらかなようです(しかも、ntfsresizeが装備 されているインストーラという制限があるのですから)。という訳で、こ こではFDを用いて、パーティションを切ることを考えます。幸いFDならば、USB FDでも最近のBIOSは通常のFDとしてシュミレート出来るので、必ず使える手段と思われます。

Windows を生かしたまま、パーティションサイズを縮小する方法

準備


 バックアップを取ったら、Windows 上でデフラグを実行します。パーティションサイズを縮小するツールはNTFSのテーブルを操作するだけで、実際のファイルがNTFSの後ろの方に存在する と困ってしまいます。

 次にツールを手に入れます。フロッピーディスクを2枚用意してください。また、以下ではUSBフロッピーを利用すると仮定します(内臓の場合は、以下の 記述の /dev/sda を /dev/fd0 に読み替えてください)。

また、ノートPCには 40G のディスクが入っていて、全てWindows に割り当てられているとします。ここでは、40G のディスクには空きがたくさんあるのですが、とりあえず5G をFreeBSDに割り当てることを考えます。つまり、Winには40G あるのを 35Gに縮小する訳です。

PartBoot をダウンロード       (解説はこっ ち)

上記のツールはフロッピーディスクから小さなLinuxシステムを立ち上げるものです。従って、ダウンロードしたイメージをフロッピーに焼かないといけま せんが、単なるコピーでは作成できない点に注意してください。(バイナリーイメージをそのままファイルにしています。つまり、CD-ROMのISOイメー ジのFDD版だと思えば良いでしょう。)これをFDDに焼くには、rawrite または fdimage を利用します。どちらもDOSのツールですので、commandツールから起動してください。

ここでは、fdimage が c:\bin にあり、イメージファイルがカレントディレクトリにあるとして、

> copy partboot-1.6.21-usb.img partboot.img         ( 長い名前が通らないため )
> c:\bin\fdimage   partboot.img   a:

として、FDに書き込みます。(但し、オリジナルのファイル名 partboot-1.6.21-usb.img を partboot.img に変更しないと、fdimage.exe は読み込めないので注意してください)

次に、同様にして、2枚目のFDに、

> c:\bin\fdimage  supp.img   a:

として書き込みます。

%-------------- PartBoot 1.6.21 などでは補助ディスクに既にありますので、この作業は不必要です-----------------
最後に、NTFSパーティションをリ サイズするツール ntfsresize をダウンロードし、解凍したファイルをフォーマットした3枚目のFDにコピーしておきます。
%----------------------------------------------------------------------------------------------------------


これで準備は終わりで、いよいよパーティションの縮小作業をしましょう。

パーティションの縮小

先程作ったFDの1枚目からブートさせます。

ブートしたら、FDを2枚目のものに入れ替えてから、以下のようにコマンドに打ち込みます。

# mount /dev/sda /mnt/floppy

これで、2枚目のFDが Linux (ブートしたOS)から見えるようになるので、以下のようにインストーラを実行します。

# /mnt/floppy/install

この作業は、2枚目のディスクの中身をメモリ上に展開・コピーして、利用可能にします。
これで、2 枚目のディスクは不要ですので、以下のコマンドを実行します。

# umount /dev/sda

FD を抜きます。

%-------------- PartBoot 1.6.21 などでは補助ディスクに既にありますので、この作業は不必要です-----------------
# mount -t vfat /dev/sda /mnt/floppy

ntfsresize は静的にリンクされた実行ファイルですので、単独で実行できますが、いちいちフロッピーにアクセスすると面倒なので、コピーをしておきましょう。

# cp /mnt/floppy/ntfsresize /bin

これで、3枚目のFDも不要ですので、以下のコマンドを実行して、FDを抜きます。

# umount  /dev/sda

%--------------- 1.6.21 で不要な作業はここまで ----------------------

さて、いよいよ ntfsresize を動かしますが、いきなりNTFSをいじるのは危険ですので、まず、現在のHDDのディスク情報を表示し、どれだけリサイズできるかを調査します (ntfsresize は /usr/local/sbin に導入されています)。

# ntfsresize -i /dev/hda1

 これを実行すると、色々と表示されますが、(freeing xxxxMB) という表示が最後に表示され、これが現在のパーティションを縮小して、どれだけ削ることが出来るかを表しています。

次に、本当にリサイズが実行できるかどうかを、以下のようにしてテストします。ここではディスクが40Gあって、一つのパーティションに取られているとし て、5Gをそこから減らして、40G を 35G に削減することが可能か否かをテストしてみます。

# ntfsresize -n -s 35000M /dev/hda1

うまく減らせるようだと、run ended successfully. と最後に表示されます。 もし、デフラグを忘れていたら、デフラグをしろと言われます。

いよいよ実際に NTFS を削減してみましょう。

# ntfsresize -s 35000M /dev/hda1

うまく実行出来たら、fdisk を使えと言われ、その際の注意点が英語で表示されます。

ここで理解しておくべきことは、ntfsresize はあくまでもNTFSに関するリ サイズ問題のみを解消するツールであって、パーティションテーブルなどは操作してくれない点です。つまり、パーティションテーブルは上記のNTFSリサ イズの結果と矛盾がないように、自分で操作しなければならないので す。そのために、fdisk を用いて hda1 に相当する最初のパーティションを一旦削除し、リサイズしたサイズに一致するサイズのパーティションとして、再度割り当て直すという中々の力技を行う必要 があるのです。もし、これに失敗したら、素直にディスクをパーティションに切ってから、Windowsをレストアし、FreeBSDをインストールすると いう基本的手法に戻るしかありません。

では、実際の作業を行いましょう。これらの作業は全て先程ブートしたLinuxから行うことが出来ます。

# fdisk /dev/hda
...
Command (m for help):p

上記のように、fdisk を動かして、: の後ろにコマンド p を入力します。このコマンドは現在のパーティションテーブルを表示します(パーティションテーブルですから、まだパーティションは一つで、大きさは40G のままです!)。

Command (m for help):d

パーティションを削除します(まだ実際には削除されないので大丈夫です)。

Partition number (1): 1

ここでは、パーティションは一つしかないものとします

Command (m for help): n

次に、パーティションを作り直します(コマンド n )。

Command action
l logical (5 or over)
p primary partition (1-4)
p

プライマリパーティション(コマンド p)を作成します。

Partition number (1): 1

パーティション1を作成します。

First cylinder (1...):

パーティションは一つもないのでスタートシリンダは1です。何も入力せずに、リターンキーを叩いて構いません。

Last cylinder p or +size or +sizeM +sizeK ([882]-1023): +35000M

ここが重要で、先にリサイズしたサイズと合っていないといけません。 ここでは35000M にリサイズしたので、+35000M を入力しています。

Command (m for help): t   

次に、作成したパーティションのタイプを設定します(コマンド t )。

Partition number (1): 1

パーティションの1に対して、

hex code(type L): 7

パーティションタイプをNTFS の7番に設定します。

最後に、パーティション1からブート可能になるように active に設定します。

Command (m for help): a
partition number(1-4): 1

これで、設定は終わりですが、設定が正しいかどうかを見るために、現在編集中のパーティションテーブル情報を見てみます。

Command (m for help): p

これまでの設定が正しいかじっくりと確認してください。問題がなければ、ここで初めてディスクに書き込みます。

Command (m for help): w

これで、作業は終わりですが、一旦リブートして、Windows からブートするかどうか確かめてください。リブートすると、chkdsk がかかり、正常に
chkdsk が通ればOKです。但し、起動後Windowsがデバイス状態の変化を検知して再度のリブートを要求することがあります(私の場合はそうでした)。

さて、これでノートにインストールされているWindowsのパーティションを縮小して、FreeBSDをいれるための余地が出来たので、実際に FreeBSDのインストールに移ります。(2つめのパーティションはFreeBSDのインストーラから設定すれば良いでしょう。)

参考
    http://sky-mue.jp/linux/plamo/4.x/4.0_diff.html#ntfsresize
    http://www003.upp.so-net.ne.jp/tshiono/partboot-usb/index-jp.html