■新しいハードディスクにシステムを移行する方法■ ※ここで示す方法は一例に過ぎない。LILOを使う例はウェブ検索で 多数見つかるし、GRUBを使う場合は非常に簡単なのでこの文章を読 むまでもないかも知れない。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●ext3とReiserfsが使えるカーネルと、GRUBブートローダ、 及びGRUBのフロッピーがあることを前提とする。 (GRUBのウェブサイト http://www.gnu.org/software/grub/) 多くのディストリビューションがGRUBを採用するようになったが、 もしGRUBがインストールされていない場合、上記サイトから入手し てインストールする。 # tar xvfz grub-0.92.tar.gz # cd grub-0.92 # ./configure # make # make check # make install # mkdir /boot/grub # cp /usr/local/share/grub/i386-pc/* /boot/grub/ 最後の2行は、いずれ新しいハードディスクにコピーする目的で /boot/grub/以下にイメージをコピーしている。 実際に/dev/hdaのMBRに書き込むには、 # grub-install /dev/hda とするが、古いハードディスクのブートローダを変える必要もない ので、GRUBの起動フロッピーを作るだけでよい。 GRUBがすでにインストールされている場合、 # cd /usr/local/share/grub/i386-pc (あるいは cd /usr/share/grub/i386-xxx ) # dd if=stage1 of=/dev/fd0 bs=512 count=1 # dd if=stage2 of=/dev/fd0 bs=512 seek=1 でGRUBのフロッピーを作ることができる。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●電源を切り、新しいハードディスクを空いているIDEポートに繋ぐ。 SCSIの場合は適宜読み替えられたし。 ここで、現在使用しているハードディスクがマスター(/dev/hda)で、 移行先の新しいハードディスクがスレーブ(/dev/hdb)であるとする。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●起動後、シングルユーザモードにして作業を進める。 # init 1 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●まず、fdiskで/dev/hdbに適当なパーティションを区切る。 そしてmkreiserfsやmke2fsでファイルシステムを作る。 大きなパーティションはReiserfsにする人が多い。 スワップパーティションにはmkswapする。 何れのコマンドも詳しくはmanページを参照されたし。 ところで、mke2fsで作ったext2ファイルシステムをext3に変更するには、 # tune2fs -j /dev/hdb1 のように打てば良い。この詳細については、英語のmanページ # LANG=C man tune2fs で見てみると良い。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●次に以下のように、コピー先ディスクの各パーティションを 疑似ルートディレクトリ/mnt/__suranew以下に忠実にマウント すれば、ルートディレクトリの内容を疑似ルートディレクトリに コピーすることでデータを完全に移動できる。具体的には、 # mkdir /mnt/__suranew # mount -t reiserfs /dev/hdb5 /mnt/__suranew # cd /mnt/__suranew # mkdir boot # mount -t reiserfs /dev/hdb1 /mnt/__suranew/boot # mkdir home # mount -t reiserfs /dev/hdb6 /mnt/__suranew/home # mkdir root # mount -t reiserfs /dev/hdb7 /mnt/__suranew/root # mkdir tmp # mount -t reiserfs /dev/hdb8 /mnt/__suranew/tmp # mkdir var # mount -t reiserfs /dev/hdb9 /mnt/__suranew/var というように、新しいハードディスクで/にしたい パーティションを/mnt/__suranewにマウントし、その下に パーティションを分けたいディレクトリを作って新しい ハードディスクの他のパーティションをマウントしていく。 ◇マウント後の様子の一例 [root@localhost mnt]# mount /dev/hda13 on / type ext3 (rw,noatime) none on /proc type proc (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) /dev/hda1 on /boot type ext3 (rw) /dev/hda5 on /home type reiserfs (rw,noatime) /dev/hda11 on /root type reiserfs (rw,noatime) /dev/hda10 on /tmp type reiserfs (rw,noatime) /dev/hda6 on /usr type reiserfs (rw,noatime) /dev/hda7 on /usr/share type reiserfs (rw,noatime) /dev/hda8 on /var type reiserfs (rw,noatime) /dev/hda9 on /work type reiserfs (rw,noatime) none on /dev/shm type tmpfs (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hdb5 on /mnt/__suranew type reiserfs (rw) /dev/hdb1 on /mnt/__suranew/boot type ext3 (rw) /dev/hdb6 on /mnt/__suranew/home type reiserfs (rw) /dev/hdb7 on /mnt/__suranew/root type reiserfs (rw) /dev/hdb8 on /mnt/__suranew/tmp type reiserfs (rw) /dev/hdb9 on /mnt/__suranew/var type reiserfs (rw) /dev/hdb10 on /mnt/__suranew/work type reiserfs (rw) ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●/mnt/__suranewを除いた/以下全てを/mnt/__suranew以下に コピーする。コピー元ディレクトリの後にピリオドを付けるこ とに注意。 # cd /mnt/__suranew # cp -a /bin/. ./bin # cp -a /boot/. ./boot # cp -a /etc/. ./etc 中略 # cp -a /lib/. ./lib # mkdir mnt # cp -a /mnt/*o* ./mnt/ # cp -a /var/. ./var 後略 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●/mnt/__suranew/etc/fstabの内容を、予め事後の構成に 合わせて書く。 ◇/mnt/__suranew/etc/fstabの一例 [root@localhost root]# cat /mnt/__suranew/etc/fstab /dev/hda5 / reiserfs noatime 1 1 /dev/hda1 /boot ext3 defaults 1 2 /dev/hda6 /home reiserfs noatime 1 2 /dev/hda7 /root reiserfs noatime 1 2 /dev/hda8 /tmp reiserfs noatime 1 2 /dev/hda9 /var reiserfs noatime 1 2 /dev/hda10 /work reiserfs noatime 1 2 /dev/hda11 swap swap defaults 0 0 /dev/fd0 /mnt/floppy ext2 user,noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 user,noauto,unhide,ro 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●このディレクトリ構成の為のプレロードモジュールの イニシャルラムデスクをmkinitrdによって新しいディスクの 疑似bootディレクトリに書き込む。 # mkinitrd --fstab=/mnt/__suranew/etc/fstab /mnt/__suranew/boot/initrd-x.x.x-x.img x.x.x-x (x.x.x-xはカーネルのバージョン) ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●ここで先にGRUBの設定も書いてしまう。ここでは、 /bootはHDDを繋ぎ直した後には、/dev/hda1つまり(hd0,0) にあると仮定している。 詳細は、GRUBのInfoドキュメントのConfigurationの項目を参照。 ◇GRUBの設定の一例 (ルートディレクトリのパーティションが/dev/hda5の場合。 カーネルに渡すパラメータやバージョンは適宜読み替えられたし。) [root@localhost root]# cat /mnt/__suranew/boot/grub/grub.conf default 0 timeout 10 title HOGEHOGE Linux (2.4.9-13) root (hd0,0) kernel /bzImage mem=384M video=matrox:vesa:0x11A ro root=/dev/hda5 initrd /initrd-2.4.9-13.img ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●一度シャットダウンして電源を切り、 新しいハードディスクをスレーブ(/dev/hdb)からマスター(/dev/hda) に繋ぎ直し、GRUBのフロッピーから起動する。 GRUBのコマンドラインから上の設定と同じようにコマンドを root (hd0,0) kernel /bzImage mem=384M video=matrox:vesa:0x11A ro root=/dev/hda5 initrd /initrd-2.4.9-13.img boot などと打ち込めばブートする。 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ ●問題なく立ち上がったら、 # grub-install /dev/hda でGRUBをMBRに書き込む。 終わり ところで、これはテキストファイルなので、ブラウザの 戻るボタンを使われよ。