File:  [NetBSD Developer Wiki] / wikisrc / ports / evbarm / qemu_arm.mdwn
Revision 1.8: download - view: text, annotated - select for diffs
Tue Dec 3 12:52:20 2019 UTC (2 months, 3 weeks ago) by wiki
Branches: MAIN
CVS tags: HEAD
web commit by jmcneill: qemu-image -> qemu-img

    1: [[!meta title="NetBSD/evbarm under QEMU"]]
    2: 
    3: This page attempts to document running NetBSD/evbarm under the
    4: [QEMU](http://www.qemu.org/) open source processor emulator.
    5: This can be extremely useful for development and testing.
    6: 
    7: # Requirements
    8: * qemu 4.1.0 or higher
    9: * disk image
   10:   * [NetBSD 9.x armv7](http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/latest/evbarm-earmv7hf/binary/gzimg/armv7.img.gz)
   11:   * [NetBSD 9.x arm64](http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-9/latest/evbarm-aarch64/binary/gzimg/arm64.img.gz)
   12: * Tianocore EDK2 firmware
   13:   * [QEMU_EFI.fd for armv7](http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-ARM/RELEASE_GCC5/QEMU_EFI.fd)
   14:   * [QEMU_EFI.fd for arm64](http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-AARCH64/RELEASE_GCC5/QEMU_EFI.fd)
   15: 
   16: # Installing QEMU on NetBSD
   17: You can install latest qemu with the following commands.
   18: It is assumed that your pkgsrc tree is in /usr/pkgsrc directory.
   19: 
   20:     # cd /usr/pkgsrc/emulators/qemu
   21:     # make install
   22: 
   23: # Preparing the disk image
   24: 
   25: The disk image (armv7.img.gz or arm64.img.gz) must first be uncompressed. The *qemu-img* tool can then resize the image to the desired size. On first boot, NetBSD will grow the root file-system to match the size of the disk.
   26: 
   27:     $ gunzip arm64.img.gz
   28:     $ qemu-img resize arm64.img 20g
   29: 
   30: # Booting the system (arm64)
   31: 
   32:     $ qemu-system-aarch64 -M virt -cpu cortex-a53 -smp 4 -m 4g \
   33:           -drive if=none,file=arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 \
   34:           -netdev type=user,id=net0 -device virtio-net-device,netdev=net0,mac=00:11:22:33:44:55 \
   35:           -bios QEMU_EFI.fd -nographic
   36: 
   37: # Booting the system (armv7)
   38: 
   39:     $ qemu-system-arm -M virt -cpu cortex-a15 -smp 4 -m 2g \
   40:           -drive if=none,file=armv7.img,id=hd0 -device virtio-blk-device,drive=hd0 \
   41:           -netdev type=user,id=net0 -device virtio-net-device,netdev=net0,mac=00:11:22:33:44:55 \
   42:           -bios QEMU_EFI.fd -nographic
   43: 
   44: # Bridged networking
   45: 
   46: To bridge a QEMU guest to your network, you need to create a tap(4) interface for your VM, then connect it to a physical interface with a bridge(4) interface.
   47: 
   48: The following example assumes NetBSD as a host OS, and a physical interface named *bge0*.
   49: 
   50: [[!template  id=filecontent name="/etc/ifconfig.bridge0" text="""
   51: descr "LAN VM bridge" up
   52: !brconfig bridge0 add bge0
   53: """]]
   54: 
   55: [[!template  id=filecontent name="/etc/ifconfig.tap0" text="""
   56: link f2:0b:a4:d1:f2:69 descr "NetBSD Arm64 VM" up
   57: !brconfig bridge0 add tap0
   58: """]]
   59: 
   60: Then replace the *-netdev* part of the qemu command with:
   61: 
   62:     -net nic -net tap,ifname=tap0,script=no

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb