FreeBSDの仮想化(仮想イメージの作成)

FreeBSDは全然詳しくないのですが、物理サーバで稼働するFreeBSD 7系を
KVM等に仮想化したかったためいろいろ調べました。
まず、普通にインストールメディアを使って仮想サーバにFreeBSD
インストールしてから新規にディスクを追加し、追加したディスクに
ブートローダーの書き込みやファイルシステムを作成して
ファイルコピーをして仮想化を行います。

1. 新しいディスクの初期化(ブートローダーの書き込み)

# dd if=/dev/zero of=/dev/ad1 bs=1k count=1
# fdisk -BI /dev/ad1

2. ディスクにラベルを付ける

# disklabel -B -w -r ad1s1 auto

3. 作成したディスクラベルを編集し、パーティションを追加する

#disklabel -e ad1s1

# /dev/ad1s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2BSD 2048 16384 8
b: 2029200 1048576 swap
c: 33554241 0 unused 0 0 # "raw" part, don't edit
d: 3110912 3077776 4.2BSD 2048 16384 28552
e: 1048576 6188688 4.2BSD 2048 16384 8
f: 26316977 7237264 4.2BSD 2048 16384 28552

4. /etc/fstab に適切なエントリを追加する

# vi /etc/fstab

# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

5. 作成したすべてのパーティションに対してこれを繰り返す

# newfs /dev/ad1s1a
# newfs /dev/ad1s1e
# newfs /dev/ad1s1f
# newfs /dev/ad1s1d

6. パーティションをマウントする

# mkdir -p /mnt/a
# mkdir -p /mnt/e
# mkdir -p /mnt/f
# mkdir -p /mnt/d

# mount /dev/ad1s1a /mnt/a
# mount /dev/ad1s1e /mnt/e
# mount /dev/ad1s1f /mnt/f
# mount /dev/ad1s1d /mnt/d

7. swapの作成

# dd if=/dev/zero of=/dev/ad1s1b bs=1m

8. ファイルのコピー

# cp -a /.cshrc /mnt/a/
# cp -a /.profile /mnt/a/
# cp -a /COPYRIGHT /mnt/a/
# cp -a /bin /mnt/a/
# cp -a /boot /mnt/a/
# cp -a /cdrom /mnt/a/
# cp -a /compat /mnt/a/
# cp -a /dev /mnt/a/
# cp -a /dist /mnt/a/
# cp -a /entropy /mnt/a/
# cp -a /etc /mnt/a/
# cp -a /home /mnt/a/
# cp -a /lib /mnt/a/
# cp -a /libexec /mnt/a/
# cp -a /media /mnt/a/
# cp -a /proc /mnt/a/
# cp -a /root /mnt/a/
# cp -a /sbin /mnt/a/
# cp -a /sys /mnt/a/

# mkdir /mnt/a/mnt
# mkdir /mnt/a/rescue
# mkdir /mnt/a/tmp
# chmod 777 /mnt/a/tmp
# mkdir /mnt/a/usr
# mkdir /mnt/a/var

# cp -a /var/* /mnt/d/
# cp -a /usr/* /mnt/f/

9. パーティションのアンマウント

# umount /mnt/a
# umount /mnt/e
# umount /mnt/f
# umount /mnt/d