OpenSUSE 10.0 の引越し

ためしにVMWare上で使い始めたOpenSUSE 10.0がなかなかいいので気に入ってます。ただ、最初にけちって4GBの仮想ディスクしか割り当てなかったので、ちょっと将来が心もとない状態です。そこで、ディスクの引越しをしました。こういったことが気安く行えるのがVMWareのいいところです。

SystemRescueCDの用意

http://www.sysresccd.org/ よりisoイメージをダウンロードします。このCDは名前のとおりシステムをいじりたいときに役立つツールがたくさん詰まっています。

grub FDの用意

移行前のSUSEを立ち上げ、コマンドラインから作業します。立ち上げ中にVMWareのメニューからVM→Removable Device→Floppy→Edit..を実行し、空のディスク・イメージを作ってFDDに接続します。

$ cd /boot/grub
$ sudo dd if=stage1 /dev/fd0
$ sudo dd if=stage1 /dev/fd0 seek=1

これでFDはできました。いったんVMから切断します。
次に/boot/grub/menu.lstの内容を調べてHDDからブートする場合の設定をメモしておきます。私のシステムは次のようになっていました。

root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 vga=0x332 selinux=0 resume=/dev/sd sh=silent showopts
initrd /boot/initrd

メモしたらシステムをシャット・ダウンします。

SystemRescueCDから起動

シャット・ダウン状態でVMに新しい仮想ディスクを接続します。私は8GBのディスクを作りました。私の場合の接続とlinuxでの名前は以下のとおり。

ディスク VM上の接続 Linuxから見たデバイス
旧仮想ディスク SCSI0:0 /dev/sda
新仮想ディスク SCSI0:1 /dev/sdb

設定が出来たらSystemRescueCDで起動します。

新しいパーティションを作る

まず、fdiskなりpartedなりを使って新しいディスクにパーティションをきります。私の場合は

/dev/sdb1
500MB,swap(82)
/dev/sdb2
7.5GB,linux(83),active

としました。スワップ・ディスクを作ったので

$ mkswap /dev/sdb1

を実行してスワップファイルシステムを作ります。

データのコピー

次に、古いディスクからデータをコピーします。OpenSUSEの場合、手放しでパーティションをきるとすべてのプログラムとデータが第二パーティションに収められています。

$ dd if=/dev/sda2 of=/dev/sdb2

ファイル・システムのリサイズ

ddはファイルシステムをごっそりコピーしますが、このファイル・システムは古いディスクのパーティションにあわせてあります。そのため、新しい大きなHDDのパーティションにはあっていません。そこで、新しいパーティションにあわせてファイル・システムを仕立て直します。
SUSEはreiserfsを使っているので、以下のコマンドであわせます。

$ resize_reiserfs

これでコピー作業は終わりです。なお、複数パーティションを使うディスク構成の場合は、パーティション分、以上の作業を繰り返します。ファイルシステムが異なる場合は"Linuxファイルシステムのサイズ変更とデフラグ"
SystemRescueCDをシャットダウンしてVMから切断します。

新しい仮想ディスクに切り替え

古い仮想ディスクをVMから切断し、これまでの作業でデータを移した新しい仮想ディスクをSCSI0:0に設定しなおします。

grub FDからブート

この新しい仮想ディスクにはローダーがありませんのでブートできません。そこで、先ほど作ったgrubのFDイメージを接続します。
FDでブートするとgrubのプロンプトが出ますので先ほどメモした内容をタイプしてブートします。

(grub) root (hd0,1)
(grub) kernel /boot/vmlinuz root=/dev/sda2 vga=0x332 selinux=0 resume=/dev/sd sh=silent showopts
(grub) initrd /boot/initrd
(grub) boot

最後のbootコマンドでシステムのブートが始まります。

grubをインストール

OpenSUSEにログインできたら、自力ブートを行うためにgrubをインストールします。

$ cd /boot/grub
$ sudo /usr/sbin/grub-install /dev/sda

これでおしまいです。なお他のディストリビューションでは/と/bootが別ディスクになっていることがあり、その場合は上のコマンドを実行するとブートできなくなります。そこであらかじめ"grub-installを実行したらGRUBメニューが表示されなくなった"を読んで作業してください。