インストール済みUbuntuのクローンを新しいハードディスクに作成する
システムのハードディスクを新しいものに交換し、それを新たに起動ディスクとしたい場合があるだろう。Ubuntuのクローンを別のハードディスクに作成するのは容易だ。Ubuntuでは、ハードディスク全体のクローンを作成するツールが提供されている。Windowsパーティションがある場合は、それも含めてクローンを作成する。実はこのような基本作業は、Linuxの得意とする分野なのである。
本記事は、最近出版された書籍『Ubuntu Kung Fu』から引用されたものであり、出版社Pragmatic Programmers, LLC了承の下、掲載している。
なすべきことは3つである。まず、Ubuntuによるハードディスクの参照名を調べなければならない。2つめは、ddrescueをインストールし、これによってディスクをクローンすることである。ddrescueによるクローン作成を終えたら、最後にGPartedユーティリティを用いてディスクパーティションを拡張する(新しいディスクが古いものよりも大きいと想定している。ほとんどの場合、そもそもそれがディスクを交換する理由だからだ)。
使用中のハードディスクをクローンしてはならない(走行中の自動車を修理するのが好ましくないのと同じである)。したがってUbuntuのインストールCDのライブディストリビューションモードを使用する必要がある。以下の作業を行うには、UbuntuのインストールCDから起動し、起動メニューで「Try Ubuntu」を選択する。
以下のすべてのステップが、UbuntuのインストールCDのライブディストリビューションモードで実施されることに注意してほしい。最後にクローンディスクをテストするときまで、作業の途中で標準インストールのUbuntuから起動することはない。
クローン作成のための準備
クローン作成を始める前に、その準備として次の3つの作業をしておくことをお勧めする。まず、大切なすべての個人ファイルをCD/DVD-R/RWディスク、USBメモリ、または外付けのハードディスクにバックアップする。以下の作業では、基本的なディスク管理状態が抜本的に変更されるため、データが失われる可能性がある。
2つめに、元のハードディスクのファイルシステムにエラーがないかチェックし、もしあれば修復しておくとよいだろう。Windowsファイルシステムの方もエラーがないかチェックしておくことが望ましい。
3つめに、USBメモリ、カードリーダー、MP3プレーヤーや携帯電話などの着脱式ストレージをすべて取り外す。これらが接続されていると、パーティション作成時に紛らわしいからだ。
上記の準備作業を終えたら、ターミナルウィンドウを開き、「sudo fdisk -l
」と入力する。これは、すべてのハードディスクをスキャンし、そのパーティションを列挙するコマンドである。今回のテストシステムにおけるこのコマンドの実行結果を以下に示す。
Disk /dev/sda: 81.9 GB, 81964302336 bytes 255 heads, 63 sectors/track, 9964 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x1c381c37 Device Boot Start End Blocks Id System /dev/sda1 * 1 4742 38090083+ 7 HPFS/NTFS /dev/sda2 4743 9964 41945715 5 Extended /dev/sda5 4743 9744 40178533+ 83 Linux /dev/sda6 9745 9964 1767118+ 82 Linux swap/Solaris Disk /dev/sdb: 120.0 GB, 120034123776 bytes 255 heads, 63 sectors/track, 14593 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xb94838a4 Disk /dev/sdb doesn't contain a valid partition table
上記の実行結果には、2つのハードディスクに関する情報が表示されている。それぞれ「Disk /dev/sda
」と「Disk /dev/sdb
」で始まり、その下にディスクに関する技術的情報が続き、その下にそのディスクのパーティションが列挙されている。
今回のテストコンピュータでは、/dev/sdbが新しいハードディスクであることがすぐにわかるだろう。パーティションがないからだ(「doesn’t contain a valid partition table(有効なパーティションテーブルがありません)」と表示されている)。/dev/sdaの方は、Ubuntuシステムの標準的なパーティションに分割されている。読者のパーティションも、これとまったく同じではないとしても似たようなものであるはずだ。
新しいハードディスクの参照名を探し、メモしておく。上記の場合は/dev/sdbである。次に「sudo cfdisk -z /dev/sdb
」と入力して、パーティション分割プログラムcfdiskを起動する。これにより初期パーティションテーブルがディスクに書き込まれる。先ほど調べた新しいハードディスクの参照名が/dev/sdbではない場合は、/dev/sdbの代わりにその参照名を使用する。cfdiskを起動したら、W
(Shift
+w
、つまり大文字であることに注意)と入力し、空のパーティションテーブルを作成するかというプロンプトに対しyes
と入力する。最後にq
を入力してcfdiskを終了する。細かいエラーがいくつか表示されるが無視してよい。
ディスクのクローン作成
新しいディスクの参照名がわかったところで、ddrescueをインストールし、ディスクのクローンを作成する。ddrescueはデフォルトのシステムツールではないため、インストールしなければならない。コンピュータはUbuntuインストールCDのライブディストリビューションモードで稼働中だが、その状態でも、オンラインリポジトリから新たにソフトウェアをインストールすることは可能である。ただしその前に、「Universe」ソフトウェアリポジトリを有効にしておく必要がある(もちろんNetworkManagerによってオンライン接続しておくことも必要である)。[システム] → [システム管理] → [ソフトウェアソース]を選択し、[コミュニティによるメンテナンスされるオープンソースソフトウェア(universe)]の横のチェックボックスにチェックを入れる。次に[閉じる]ボタンをクリックし、ソフトウェア一覧を更新するかというプロンプトが表示されたらyes
と入力する。
その後、「sudo apt-get install gddrescue
」と入力し、ddrescueをインストールする。
ddrescueに対しては、まず古いハードディスクを指定し、次に新しいハードディスクを指定する。-v
オプションを指定すると、コマンドの進行状況に従ってステータスが表示される。
$ sudo ddrescue -v /dev/sda /dev/sdb
古いディスクと新しいディスクの指定順序を間違えないことが非常に重要である。逆に指定すると古いディスクのデータが上書きされる恐れがある。
クローン作成の完了までには、元のハードディスクのサイズにもよるが、おそらく1時間かそれ以上かかるだろう。クローンを作成したらコンピュータをシャットダウンし、古いディスクを取り外し(次の作業へと進む前に必ず古いディスクを取り外すこと!)、クローンしたコピーから起動して、動作をテストする。Windows XP/Vistaを使用している場合は、Windows Genuine Advantageシステムが新しいハードディスクを認証せず、オンラインでの再検証が必要となるかもしれない。もちろんUbuntuではそのような問題は生じない。
すべてが正常に動作することを確認したら、次のステップに進むことができる。つまり、大きくなったハードディスク容量に合わせて、パーティションを拡張する。
パーティションの拡張
パーティションを拡張する前に、Ubuntuパーティションのファイルシステムが正常であることを確認しておくとよいだろう。これを行うにはまず、先ほどと同様にUbuntuインストールCDのライブディストリビューションモードで起動する。ターミナルウィンドウを開き、「sudo fsck.ext3 -f /dev/sda5
」とコマンドを入力して、ディスクチェックを行う(Ubuntuが、Windowsとともにハードディスクに標準構成でインストールされていることを想定している)。
ディスクチェックが終了したらターミナルウィンドウを閉じ、[システム] → [システム管理] → [パーティションエディタ]を選択する。その後の操作は何をしたいかによって異なるが、Ubuntuパーティションを拡張したいだけならば、以下の手順に従うとよい。
- [パーティション]リストで、[linux-swap]エントリを右クリックし、[Swap off]を選択する。これによりUbuntuのライブディストリビューションモードは、swapパーティションへのアクセスを停止するため、swapパーティションをハードディスク上で移動させることができる。
- 何よりも先にまず、Ubuntuを含む、拡張(extended)パーティションのサイズを変更しなければならない。リストの[extended]エントリを右クリックし、[リサイズ/移動]を選択する。表示されたダイアログボックスで、[後ろの空きスペース(MiB)]ボックスの値を
0
に変更して、タブを押す。これによりパーティションのサイズは、最大容量まで拡大される。その後、[リサイズ/移動]ボタンをクリックする。[適用]ボタンをクリックするまでは実際の変更は行われない。ディスクのパーティションに対するすべての変更を設定し終えたら、最後に[適用]ボタンをクリックする。 - 再び[linux-swap]パーティションを右クリックし、[リサイズ/移動]を選択する。表示されたダイアログボックスで、パーティションのグラフ表示をクリックし、空きスペースの端にドラッグする(つまり、グラフ表示の右側へとクリック&ドラッグする)。この操作の後、[後ろの空きスペース(MiB)]ボックスの値は
0
になっているはずである。[リサイズ/移動]をクリックする。 - GPartedプログラムのメインウィンドウに戻り、リストの[ext3]エントリを右クリックし、[リサイズ/移動]を選択する。グラフ表示の中でパーティションの最右端をクリック&ドラッグし、空きスペースが埋まるようにそのサイズを「拡大」する。サイズの拡大に伴って[後ろの空きスペース(MiB)]ボックスの値は小さくなり、最後には
0
になる。0
になったら[リサイズ/移動]ボタンをクリックする。 - 最後に、メインの[Gparted]ツールバーの[適用]ボタンをクリックする。その後、表示されたダイアログボックスの[適用]をクリックし、パーティションが移動されリサイズされる間、しばし待つ。実行状況を知りたい場合は、[保留中の操作を適用しています]ダイアログボックスの[詳細]の横の小さな矢印をクリックするとよい。
- 処理が完了したらGPartedプログラムを終了し、ターミナルウィンドウを開く。「
sudo fsck.ext3 -f /dev/sda5
」と入力して、Ubuntuパーティションにエラーがないか、もう一度確認する(ここでもUbuntuが、Windowsとともにハードディスクに標準構成でインストールされていることを想定している)。エラーがあれば修復を促すプロンプトが表示される。通常はyes
と入力して修復すればよい。
ファイルシステムのチェックが済んだら、コンピュータを新しいハードディスクから再起動する。Ubuntuパーティションが大きくなっていることに気がつくだろう。
Windowsパーティションも、上述のステップでリサイズすることができる。ただしNTFSパーティションをリサイズする前には、swapパーティションとext3パーティション、およびそれらを含む拡張パーティションを移動させる必要がある。
古いハードディスクを破棄したり、誰かに譲ったりしたい場合には、必ず内容を確実に消去すること。ただし、新しくクローン作成したコピーが正常に動作していることが100%確認できてからである。私はたいてい、コピーが正常に動作していると判断するまでに、1~2週間は様子を見る。その間は古いディスクをそのままとっておくことにしている。