Package: qemubuilder Version: 0.73 Severity: wishlist Tags: patch
Dear Maintainer, while setting up a building environment I was astonished that qemubuilder lacks support for armhf. Please add armhf support to qemubuilder. Regards Benedikt Spranger -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) Versions of packages qemubuilder depends on: ii debootstrap 1.0.67 ii libc6 2.19-15 ii pbuilder 0.215+nmu3 ii qemu-kvm [kvm] 1:2.1+dfsg-11 ii qemu-system 1:2.1+dfsg-11 qemubuilder recommends no packages. qemubuilder suggests no packages. -- no debconf information
>From 7f7c51c84c6ccca066a66357f9af0d17728693d5 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger <b.spran...@linutronix.de> Date: Thu, 12 Mar 2015 00:27:57 +0100 Subject: [PATCH] Add armhf support While setting up a building environment I was astonished that qemubuilder lacks support for armhf. Adding armhf support using existing armhf infrastucture i.e. Debian Kernel and Initrd. qemubuilder was tested with Kernel and Initrd from a fresh jessie install and the following configuration: KERNEL_IMAGE=vmlinuz-3.16.0-4-armmp INITRD=initrd.img-3.16.0-4-armmp MIRRORSITE=http://debian.tu-bs.de/debian ARCH=armhf BASEPATH=/var/cache/pbuilder/base-armhf.qemu MEMORY_MEGS=1024 DISTRIBUTION=jessie It works fine. Signed-off-by: Benedikt Spranger <b.spran...@linutronix.de> --- qemuarch.c | 11 ++++++++--- qemubuilder.c | 25 ++++++++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/qemuarch.c b/qemuarch.c index fe2c4d3..3fe7f11 100644 --- a/qemuarch.c +++ b/qemuarch.c @@ -57,7 +57,8 @@ const char* qemu_arch_diskdevice(const struct pbuilderconfig* pc) dev_t consoledev; if (!strcmp(arch, "arm") || - !strcmp(arch, "armel")) + !strcmp(arch, "armel") || + !strcmp(arch, "armhf")) { consoledev = makedev(204, 64); } @@ -113,7 +114,8 @@ char* get_host_dpkg_arch() const char* qemu_arch_qemu(const char* arch) { if (!strcmp(arch, "arm") || - !strcmp(arch, "armel")) + !strcmp(arch, "armel") || + !strcmp(arch, "armhf")) { return "qemu-system-arm"; } @@ -163,6 +165,8 @@ const char* qemu_arch_qemumachine(const char* arch) if (!strcmp(arch, "arm") || !strcmp(arch, "armel")) return "versatilepb"; + else if (!strcmp(arch, "armhf")) + return "virt"; else if (!strcmp(arch, "i386") || !strcmp(arch, "hurd-i386") || !strcmp(arch, "amd64")) @@ -184,7 +188,8 @@ const char* qemu_arch_tty(const char* arch) { if (!strcmp(arch, "arm")|| - !strcmp(arch, "armel")) + !strcmp(arch, "armel") || + !strcmp(arch, "armhf")) { return "ttyAMA0,115200n8"; } diff --git a/qemubuilder.c b/qemubuilder.c index 4e43ef7..957202e 100755 --- a/qemubuilder.c +++ b/qemubuilder.c @@ -275,7 +275,7 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf const char* initrd = pc->initrd; char* mem; int argc = 0; - const int MAX_ARGS = 30; + const int MAX_ARGS = 40; char *argv[MAX_ARGS]; int i; @@ -286,10 +286,12 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf asprintf(&mem, "%i", pc->memory_megs); - asprintf(&hda_command, "file=%s,index=0,media=disk,cache=writeback", + asprintf(&hda_command, + "file=%s,index=0,media=disk,cache=writeback,id=hd0", strdupa(hda)); - asprintf(&hdb_command, "file=%s,index=1,media=disk,cache=writeback", + asprintf(&hdb_command, + "file=%s,index=1,media=disk,cache=writeback,id=hd1", strdupa(hdb)); asprintf(&append_command, @@ -329,8 +331,21 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf argv[argc++]="stdio"; argv[argc++]="-net"; argv[argc++]="user"; - argv[argc++]="-net"; - argv[argc++]="nic"; + if (!strcmp(machine, "virt")) { + argv[argc++]="-device"; + argv[argc++]="virtio-scsi-device,id=scsi"; + argv[argc++]="-device"; + argv[argc++]="virtio-net-device,netdev=net0"; + argv[argc++]="-device"; + argv[argc++]="scsi-hd,drive=hd0"; + argv[argc++]="-device"; + argv[argc++]="scsi-hd,drive=hd1"; + argv[argc++]="-netdev"; + argv[argc++]="user,id=net0"; + } else { + argv[argc++]="-net"; + argv[argc++]="nic"; + } argv[argc]=NULL; assert(argc < MAX_ARGS); -- 2.1.4