Upgrade to Pro — share decks privately, control downloads, hide ads and more …

qemu-debootstrap

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for NOKUBI Takatsugu NOKUBI Takatsugu
October 08, 2016
93

 qemu-debootstrap

第12回 カーネル/VM探検隊での発表資料

Avatar for NOKUBI Takatsugu

NOKUBI Takatsugu

October 08, 2016

Transcript

  1. execve(2)実行 /sbin /bin /bin/sh /usr/bin /usr/bin/qemu-armhf-static /usr/sbin /proc /dev :

    armhf chroot環境 ./root/ # chroot ./chroot /bin/sh chroot(2)実行 /usr/bin/qemu-armhf-static 経由で/bin/sh 実行 実行バイナリハンドラー探索 search_binary_handler chroot内で、その外部のshared library → は参照できない static link
  2. 注意点 十分にこなれていない arm - そこそこ動く (たまにunsupported syscall) mips - そこそこ動くがバグも結構ある

    (libcでの名前解決ができない) powerpc - instruction error がそこそこ発生 - buildが完遂しない OS層のエミュレーションはしない qemuのシステムエミュレーションを使いましょう Hurd kFreeBSD
  3. パフォーマンス chasenのビルド時間を計測 emulator qemu-user qemu-user qemu-system arch armv7l armv7l armv7l(vexpress)

    storage chroot qcow2+chroot qcow2 real 9:45.553 9:39.006 15:30.793 user 9:32.860 9:23.464 12:27.250 sys 0:11.612 0:12.100 2:08.660
  4. *BSD support (FreeBSD) pkg install qemu-user-static get FreeBSD-10.3-RELEASE-arm-armv6-RPI-B.img.xz xz -d

    mount mdconfig -a -t vnode -f FreeBSD-10.3-RELEASE-arm-armv6-RPI-B.img -u 0 mount /dev/md0s2a /mnt execute qemu-arm-static /mnt/rescue/ls
  5. FreeBSDでchroot binmiscctl add armelf --interpreter "/usr/local/bin/qemu-arm-static" \ --magic "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00" \

    --mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff" \ --size 20 --set-enabled mkdir /mnt/usr/local/bin cp /usr/local/bin/qemu-arm-static /mnt/usr/local/bin/ chroot /mnt /bin/sh uname -a FreeBSD freebsd 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 02:10:02 UTC 2016 [email protected]:/usr/obj/usr/src/sys/GENERIC arm
  6. *BSD support (NetBSD/OpenBSD) … 対応しているはずだが動かない segfault pkgsrc (2.6) 2.7 util/log.c

    NULLに対してstrstrを行っているのが原因 アドホックな処置をしても何も表示せずに終了 OpenBSDは未確認
  7. LXCと組み合わせる LXC 1.0: Some more advanced container usage [4/10] |

    Stéphane Graber's website - https://www.stgraber.org/2013/12/23/lxc-1-0-some-m ore-advanced-container-usage/ dockerで動かしている人もいる模様
  8. 参考 Debian Chroot - Crypto++ Wiki - https://cryptopp.com/wiki/Debian_Chroot ArmHardFloatChroot -

    Debian Wiki - https://wiki.debian.org/ArmHardFloatChroot QemuUserModeHowTo - FreeBSD Wiki - https://wiki.freebsd.org/QemuUserModeHowTo かわいいフリー素材集 いらすとや - http://www.irasutoya.com/