From 5d2b73fe623926ba11a85bf191edabfcc0eb3274 Mon Sep 17 00:00:00 2001 From: parazyd Date: Wed, 15 Jun 2016 17:57:48 +0200 Subject: [PATCH] install qemu-userstatic on bootstrap if applicable --- zlibs/bootstrap | 2 +- zlibs/helpers | 10 ---------- zlibs/qemu | 21 ++++++++++++++++++++- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/zlibs/bootstrap b/zlibs/bootstrap index 3f15a00..1f6f733 100755 --- a/zlibs/bootstrap +++ b/zlibs/bootstrap @@ -44,7 +44,7 @@ bootstrap() { # Debootstrap stage 1 sudo debootstrap --foreign --arch ${arch} ${release} ${strapdir} ${mirror} - install-qemu + qemu_install_user # Debootstrap stage 2 sudo chroot ${strapdir} /debootstrap/debootstrap --second-stage diff --git a/zlibs/helpers b/zlibs/helpers index 684a5f8..5e6ef9b 100755 --- a/zlibs/helpers +++ b/zlibs/helpers @@ -37,16 +37,6 @@ escalate() { fi } -install-qemu() { - fn install-qemu - - [[ -n $enable_qemu ]] && { - sudo cp $qemu_bin $strapdir/usr/bin/ - act "installed qemu-user-static" - } - return 0 -} - findloopmapp() { fn findloopmapp req=(imgpath imgname workdir) diff --git a/zlibs/qemu b/zlibs/qemu index 3580976..2df44a8 100755 --- a/zlibs/qemu +++ b/zlibs/qemu @@ -21,8 +21,27 @@ # You should have received a copy of the GNU General Public License # along with this source code. If not, see . +qemu_install_user() { + fn qemu_install_user + local cputype="$1" -qemu_make_img(){ + [[ -n $enable_qemu ]] && { + act "installing qemu-arm-static" + sudo cp -vf /usr/bin/qemu-arm-static $strapdir/usr/bin/ + } + + [[ -n $cputype ]] && { + act "compiling qemu wrapper" + cp $R/src/qemu-wrapper.c /tmp/qemu-wrapper.c + sed -i -e 's/cortex-a8/'$cputype'/' /tmp/qemu-wrapper.c + gcc -static /tmp/qemu-wrapper.c -O3 -s /tmp/qemu-wrapper + sudo mv -vf /tmp/qemu-wrapper $strapdir/usr/bin/ + + print ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/qemu-wrapper:' | sudo tee /proc/sys/fs/binfmt_misc/register + } +} + +qemu_make_img() { fn qemu_make_img $@ local imgfile=${1:-"$H/builds/${name_default}_${arch}.img"}