= Todo = * vlmag (due 2010/12/24) = vlmag 下書きメモ = == 最初に概要 == 紹介するのは * ディスクのイメージをループバックマウントする方法 1. dd でダンプしたイメージを kpartx 1. VMWare の VMDK ファイルを qemu-img で変換したあと kpartx * chroot でなんちゃって Virtual Machine == 参考資料 == ぐぐったら、同じことやっている人がいた。 http://d.hatena.ne.jp/adsaria/20080724 == 事例 1:古い Vine Linux 4.2 の環境を Vine Linux 5.2 にお引っ越し == === dd したディスクイメージをループバックマウント === {{{ # dd if=/dev/hdX of=/opt/Vine42.dd.img }}} とやって、ディスクをファイルにダンプ。 でも、このまま {{{ # mkdir /opt/Vine42 # mount /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 からアクセスできるようになりました。 でも、ライブラリの依存関係を満たせないので 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 }}} {{{ }}} {{{ }}} {{{ }}} {{{ }}} ちなみに、dd せずにそのまま mount しても可。 === MAKEDEVとか === === sshd を動かしてログイン === === VMWare Player と chroot 環境でベンチマーク比較 === * I/O で差がつくはずだから、ディスクに負荷がかかるベンチマークを探す == 事例 2:Debianベースの ARM 開発環境を Vine Linux 5.2 で使う == 1. [http://armadillo.atmark-techno.com/downloads ATDEのVMWare イメージ]をダウンロード 1. 分割されたvmdkファイルをディスクのイメージに変換 1. LVMの構成を確認 1. kpartx 1. 試しにAndroidをビルド