Version 7 (modified by kenta, 12 years ago) (diff) |
---|
紹介するのは
ぐぐったら、同じことやっている人がいた。 http://d.hatena.ne.jp/adsaria/20080724
# dd if=/dev/hdX of=/opt/Vine42.dd.img
とやって、ディスクをファイルにダンプ。
でも、このまま
# mkdir /opt/Vine42 # mount -o loop /opt/Vine42.dd.img /opt/Vine42 mount: ファイルシステムタイプを指定する必要がありますとやってもマウントはできません。 まず、パーティションの情報を確認。
# fdisk -lu /opt/Vine42.dd.img 設定する必要があります シリンダ数. あなたは特別機能メニューからこれを行なうことができます Disk /opt/Vine42.dd.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = セクタ数 of 1 * 512 = 512 bytes Disk identifier: 0x000a0970 デバイス Boot Start End Blocks Id System /opt/Vine42.dd.img1 * 63 208844 104391 83 Linux /opt/Vine42.dd.img2 208845 15727634 7759395 83 Linux /opt/Vine42.dd.img3 15727635 16771859 522112+ 82 Linux swap / Solaris 領域 3 は異なった物理/論理終点になっています: 物理=(1023, 254, 63) 論理=(1043, 254, 63)Startセクタ * 512バイト目がパーティションの始まりになるので、offset を指定してマウントする。
# mount -o loop,offset=`expr 63 \* 512` /opt/Vine42.dd.img /opt/Vine42 # ls /opt/Vine42/ System.map@ initrd-2.6.16-0vl76.27.img vmlinuz@ System.map-2.6.16-0vl76.27 initrd.img@ vmlinuz-2.6.16-0vl76.27 System.map.old@ initrd.old.img@ vmlinuz.old@ config-2.6.16-0vl76.27 kernel.h grub/ lost+found/こっちは /boot パーティションですね。 一旦アンマウントして、/ に対応する 2番目のセクタをマウント。 /boot もついでにマウントする。必要は無いけど。
# umount /opt/Vine42 # umount /opt/Vine42 # mount -o loop,offset=`expr 208845 \* 512` /opt/Vine42.dd.img /opt/Vine42 # mount -o loop,offset=`expr 63 \* 512` /opt/Vine42.dd.img /opt/Vine42/boot # df ファイルシステム 1K-ブロック 使用 空き 使用% マウント位置 /dev/sda3 38456340 26437676 10065160 73% / none 2021060 0 2021060 0% /dev/shm /dev/loop0 7637400 1928112 5321320 27% /opt/Vine42 /dev/loop1 101086 8908 86959 10% /opt/Vine42/bootこれで Vine Linux 4.2 のディスクを Vine Linux 5.2 からアクセスできるようになりました。 ちなみに、dd せずにそのまま mount しても可。 この場合は、e2label であらかじめ "/" や "/boot" を消しておきましょう。
# e2label /dev/hda1 "" # e2label /dev/hda2 ""みたいな。 そうしないと、古いVine Linux 4.2のディスクを繋いだときに、そっちが / としてマウントされてしまうことがあります。
マウントはできましたが、このままではライブラリの依存関係を満たせないので Vine Linux 4.2 のバイナリはほとんどの場合で実行できません。
$ /opt/Vine42/usr/bin/gnome-calculator /opt/Vine42/usr/bin/gnome-calculator: error while loading shared libraries: libgnomeui-2.so.0: cannot open shared object file: No such file or directory $ ldd /opt/Vine42/usr/bin/gnome-calculator linux-gate.so.1 => (0xffffe000) libgnomeui-2.so.0 => not found libbonoboui-2.so.0 => not found <snip.>そこで、chroot
# chroot /opt/Vine42これで、/opt/Vine42 が / としてアクセスできるようになる。 ためしに、ldd してみるとライブラリの依存関係が満たされていることが確認できる
# ldd /usr/bin/gnome-calculator linux-gate.so.1 => (0xffffe000) libgnomeui-2.so.0 => /usr/lib/libgnomeui-2.so.0 (0xf7660000) libbonoboui-2.so.0 => /usr/lib/libbonoboui-2.so.0 (0xf7600000) <snip.>
あとは、なんちゃってVMとして sshログインして使えるような設定をいくつか。
古い mtab が残っているとややこしいので、一旦空っぽにしておく。
# echo > /etc/mtab
デバイスファイルがほとんど無いので、必要そうなものをいくつか作る
# ls /dev/ console null # MAKEDEV /dev/null /dev/random /dev/urandom /dev/ptmx # mkdir /dev/pts # mount /dev/pts # mount -n -t proc /proc /proc # mount -n -t sysfs /sys /sys # mkdir /dev/shm # mount /dev/shm
あとはsshdを動かせば、ログインできるようになる。 ただ、22番ポートはホストの Vine Linux 5.2 環境で使われているハズなので、ポート番号を適当に変えた上で sshd を起動。
# vim /etc/ssh/sshd_config # diff /etc/ssh/sshd_config.orig /etc/ssh/sshd_config 13c13 < #Port 22 --- > Port 20022 # /etc/init.d/sshd start | nkf -uw sshdを起動中: [ OK ]ちなみに、Vine Linux 4.2 は ja_JP.eucJP を使っているので文字化けすると思います。 まぁその辺は適当に対応してください。
あと、dbus も動いていないと何かと不便が多いので、
# /etc/init.d/messagebus startしとくと、幸せになれるかもれません。
chroot したターミナルはもう閉じ (CTRL+d) ていいです。
$ ssh -p 20022 vine@localhost vine@localhost's password: Last login: Sun Dec 12 00:21:43 2010 from localhost.localdomain $ gnome-calculator &今度は、ちゃんと電卓が起動できたと思います。 きっと他の商用アプリケーションも動かせるでしょう。
$ wget http://armadillo.atmark-techno.com/files/downloads/atde/atde3-20100309.zip $ sudo unzip atde3-20100309.zip -d /opt/ Archive: atde3-20100309.zip creating: /opt/atde3-20100309/ inflating: /opt/atde3-20100309/atde3-s005.vmdk inflating: /opt/atde3-20100309/atde3-s007.vmdk inflating: /opt/atde3-20100309/atde3.vmx inflating: /opt/atde3-20100309/atde3-s009.vmdk inflating: /opt/atde3-20100309/atde3.vmxf inflating: /opt/atde3-20100309/atde3.nvram extracting: /opt/atde3-20100309/atde3.vmsd inflating: /opt/atde3-20100309/atde3-s002.vmdk inflating: /opt/atde3-20100309/atde3.vmdk inflating: /opt/atde3-20100309/atde3-s001.vmdk inflating: /opt/atde3-20100309/atde3-s003.vmdk inflating: /opt/atde3-20100309/atde3-s004.vmdk inflating: /opt/atde3-20100309/atde3-s006.vmdk inflating: /opt/atde3-20100309/atde3-s008.vmdk
vmdk をループバックマウントできるようにできるように、ディスクのファイル形式をqemu-imgで変換します。
$ sudo apt-get install qemu $ cd /opt/atde3-20100309 # $ sudo qemu-img convert atde3-s00[1-9].vmdk -O bin atde3-20100309.img $ qemu-img convert atde3-s00[1-9].vmdk -O raw /tmp/atde3-20100309.img (VMDK) image open: flags=0x2 filename=atde3-s001.vmdk (VMDK) image open: flags=0x2 filename=atde3-s002.vmdk (VMDK) image open: flags=0x2 filename=atde3-s003.vmdk (VMDK) image open: flags=0x2 filename=atde3-s004.vmdk (VMDK) image open: flags=0x2 filename=atde3-s005.vmdk (VMDK) image open: flags=0x2 filename=atde3-s006.vmdk (VMDK) image open: flags=0x2 filename=atde3-s007.vmdk (VMDK) image open: flags=0x2 filename=atde3-s008.vmdk (VMDK) image open: flags=0x2 filename=atde3-s009.vmdk $ fdisk -lu /tmp/atde3-20100309.img 設定する必要があります シリンダ数. あなたは特別機能メニューからこれを行なうことができます Disk /tmp/atde3-20100309.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = セクタ数 of 1 * 512 = 512 bytes Disk identifier: 0x0008bb4c デバイス Boot Start End Blocks Id System /tmp/atde3-20100309.img1 * 63 498014 248976 83 Linux /tmp/atde3-20100309.img2 498015 33543719 16522852+ 8e Linux LVM 領域 2 は異なった物理/論理終点になっています: 物理=(1023, 254, 63) 論理=(2087, 254, 63)
ディスクは参照できる形になりました。 でも面倒なことにLVMが使われているので、mount offset オプションではマウントできません。(たぶん) そこで、kpartx、LVM のマウント
$ sudo /sbin/kpartx -av /opt/atde3-20100309.img add map loop2p1 : 0 497952 linear /dev/loop2 63 add map loop2p2 : 0 33045705 linear /dev/loop2 498015 $ ls /dev/mapper/ control loop2p1 loop2p2 $ sudo /sbin/pvscan PV /dev/dm-1 VG atde3 lvm2 [15.75 GB / 0 free] Total: 1 [15.75 GB] / in use: 1 [15.75 GB] / in no VG: 0 [0 ] $ sudo /sbin/lvscan inactive '/dev/atde3/root' [14.70 GB] inherit inactive '/dev/atde3/swap_1' [1.06 GB] inherit $ sudo /sbin/vgchange -ay 2 logical volume(s) in volume group "atde3" now active $ sudo /sbin/lvscan ACTIVE '/dev/atde3/root' [14.70 GB] inherit ACTIVE '/dev/atde3/swap_1' [1.06 GB] inherit $ sudo mount -o loop /dev/atde3/root /opt/atde3-20100309 $ sudo mount -o loop /dev/mapper/loop2p1 /opt/atde3-20100309/boot後の手順は事例1 と同じ。
$ sudo chroot /opt/atde3-20100309のはずだけど、まだやっていないのでぼちぼち追記します。
まだ。。。