virt-managerなどからdebianを停止させる。
あたらしいディスクイメージを作成する。(8GB)
$ sudo mv -i debian.img debian.img.old $ sudo dd if=/dev/zero of=debian.img bs=1024M count=8
ファイルの状態を確認する。
$ qemu-img info debian.img $ filefrag debian.img $ filefrag -v debian.img $ sudo hdparm --fibmap debian.img
手動で、新しいハードディスク、古いハードディスク、linuxのCDを指定して、CDからブートさせる。
$ sudo /usr/bin/kvm -k ja -m 1024 -smp 1 -hda debian.img -hdb debian.img.old -net nic,macaddr=52:54:00:12:34:58 -net tap,ifname=tap2,script=no,downscript=no -cdrom ../tmp/install-amd64-minimal-20110421.iso -boot d
VNCクライアントでログインしてgentooのインストールCDの設定を行う。
<< Load keymap (Enter for default):jp $ ifconfig $ ifconfig eth0 192.168.0.xxx # 設定されていない場合に手動で設定する。 $ passwd $ /etc/init.d/sshd start
sshでログインする。ディスクの中身のコピーなどを行う。
$ ssh root@192.168.0.xxx
ディレクトリ作成。
$ cd /mnt/ $ mkdir disk{1,2}
元のディスクをリードオンリーでマウントする。設定によって異なる。/etc/fstabを見て確認しておく。
$ mount -r /dev/sdb3 disk2/ $ mount -r /dev/sdb1 disk2/boot/
新しいディスクをフォーマットする。 始まりが2048になっているが大丈夫???
$ fdisk /dev/sda Device Boot Start End Blocks Id System /dev/sda1 2048 264191 131072 83 Linux /dev/sda2 264192 1312767 524288 82 Linux swap / Solaris /dev/sda3 1312768 16777215 7732224 83 Linux
確認する。
$ fdisk -l /dev/sda
新しいディスクのパーテーションを作成する。UUIDを確認する。
$ mke2fs -j /dev/sda1 $ mke2fs -j /dev/sda3 $ mkswap /dev/sda2 $ blkid | grep ^/dev/sda
元のディスクと同じ構成でマウントする。
$ mount /dev/sda3 disk1/ $ mkdir disk1/boot $ mount /dev/sda1 disk1/boot/
元のディスクを新しいディスクにコピーする。
このコマンドの場合、元のディスクのルートディレクトリに/.htaccessなどの隠しファイルがあってもコピーされない。
$ cd disk1/ $ cp -pir ../disk2/* .
chrootで新しいディスクに入る。
$ mount -t proc none proc/ $ mount -o bind /dev dev/ $ chroot . /bin/bash $ source /etc/profile $ export PS1="(chroot) $PS1"
UUIDを更新してgrubをインストールする。
$ cd /etc/ $ cp -pi fstab fstab.old $ blkid | grep ^/dev/sda $ vi fstab $ grub-install /dev/sda $ update-grub $ exit
終わり。 shutdown終了後に、手動で起動したkvmが終了しなければkvmを手動で終了させる。
$ shutdown -h now
virt-managerなどの本来の起動方法で起動する。
うまく行けば起動する。
deianのレスキューモード => bashと打つ。シェルを変更する場合。
起動しない原因はUUIDが違うため。 UUIDを使わない場合、設定に使うlinuxのバージョンなどによってデバイス名が違う。
/dev/sda /dev/hda /dev/vda など。
参考。
http://orangesooda.com/no/2011/02/kvm.html
http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=1&chap=6
https://forums.ubuntulinux.jp/viewtopic.php?pid=44967
http://www.bigegg.net/post/913233960/0x07-linux-os-vmware-server
http://sokohakato.wordpress.com/linux/centos/xenimgmount/
ホストOS上で直接コピーする。(失敗)
マウントする。
$ mkdir /tmp/disk1 $ mkdir /tmp/disk2 $ sudo fdisk debian.img $ fdisk -l debian.img|tail -n4 デバイス ブート 始点 終点 ブロック Id システム debian.img1 2048 264191 131072 83 Linux debian.img2 264192 1312767 524288 82 Linux スワップ / Solaris debian.img3 1312768 16777215 7732224 83 Linux $ sudo losetup /dev/loop0 debian.img $ sudo losetup /dev/loop1 debian.img.old $ sudo kpartx -l /dev/loop0 $ sudo kpartx -l /dev/loop1 $ sudo kpartx -a /dev/loop0 $ sudo kpartx -a /dev/loop1 $ ls -l /dev/mapper/
フォーマットする。
$ sudo mke2fs -j /dev/mapper/loop0p1 $ sudo mke2fs -j /dev/mapper/loop0p3 $ sudo mkswap /dev/mapper/loop0p2
元のディスクをマウントする。
$ sudo mount -r /dev/mapper/loop1p3 /tmp/disk2/ $ sudo mount -r /dev/mapper/loop1p1 /tmp/disk2/boot/
新しいディスクをマウントする。
$ sudo mount /dev/mapper/loop0p3 /tmp/disk1/ $ sudo mkdir /tmp/disk1/boot $ sudo mount /dev/mapper/loop0p1 /tmp/disk1/boot/ $ df -h|grep ^/dev/map $ mount|grep ^/dev/map
コピーする。
$ sudo rsync -a /tmp/disk2/ /tmp/disk1/
grubのインストールができなさそうなことと、ホストOS上で作業すると失敗しそうなのでkvm上で作業することにする。
0 件のコメント:
コメントを投稿