昨晩作ったソレを動かしてみる
以下に控えを。とりあえず initramfs を作成。
$ cat >main.c #include <stdio.h> int main(void) { printf("hello world\n"); while(1); } $ cat main.c #include <stdio.h> int main(void) { printf("hello world\n"); while(1); } $ arm-linux-gnueabihf-gcc -static main.c -o init $ ls init main.c $ file init init: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.31, BuildID[sha1]=0xe7c91f4ad51c28706a316dab59990e558b96ab71, not stripped $
で、以下。
$ echo init|cpio -o --format=newc > initramfs 884 blocks $
これで起動してみるか。
$ qemu-system-arm -M vexpress-a9 -kernel linux-3.2/arch/arm/boot/zImage -initrd initramfs -append "console=tty1"
とりあえず動いた模様。次は gdb だな。
qcow2 なナニを mount
とりあえず nbd というモジュールを云々らしい。
$ lsmod|grep nbd $ sudo modprobe nbd $ lsmod|grep nbd nbd 17592 0 $
で、こうか。
$ sudo qemu-nbd --connect=/dev/nbd0 hoge.img.qcow2
最初、デバイスファイルが無くってアレでした。つうか上ではエラー。
qemu-nbd: Failed to bdrv_open 'hoge.img.qcow2'
何事かと思ったら相対パスでは NG とのことらしい。ググッたら自分エントリに hit してびっくりしました。
で、mount するんですが区画というかデバイスファイルが
$ ls /dev/nbd0* /dev/nbd0 /dev/nbd0p1 /dev/nbd0p2 /dev/nbd0p5
となってます。p1 は boot partition で p2 が logical、p5 が / らしい。で、mount してみたんですが、p1 しか mount できんじゃないか。
cfdksi じゃなくて fdisk で確認。以下。
$ sudo fdisk -l /dev/nbd0 Device Boot Start End Blocks Id System /dev/nbd0p1 * 2048 499711 248832 83 Linux /dev/nbd0p2 501758 10483711 4990977 5 Extended /dev/nbd0p5 501760 10483711 4990976 8e Linux LVM $
出力一部略してます。ええと手順てきに以下らしいんですが
- kpartx で /dev/mapper に区画毎のブロックデバイスを云々
- kpartx -v -a /dev/nbd0
- vgcnange で Volume Group 活性化
- 区画を mount
でもコマンドが使えない状態。lvm2 を導入してみました。vgchange なるソレがどのパケジに入ってるのかが分からないんですが当りだった模様。
$ sudo vgchange -ay [sudo] password for rms: 2 logical volume(s) in volume group "i-10-158-VM" now active $
む、/dev 配下に i-10-158-VM というディレクトリがあるな。
$ ls /dev/i-10-158-VM root swap_1 $
この、root を mount すれば良いらしい。
$ sudo mount /dev/i-10-158-VM/root /mnt $ ls /mnt bin boot dev etc home initrd.img lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuz $
OK、てか優先度高い割り込み発生にてこれは一旦ストップ。
後始末は逆順らしい
$ sudo umount /mnt $ sudo vgchange -an 0 logical volume(s) in volume group "i-10-158-VM" now active $ sudo kpartx -v -d /dev/nbd0 $ sudo qemu-nbd -d /dev/nbd0 /dev/nbd0 disconnected $