In diesem kurzen Artikel beschreibe ich die Konfiguration der Qemu Installation. Als Basis dienen die Artikel im Gnublin-Wiki (http://wiki.gnublin.org/index.php/Qemu_nutzen) und das Howto von Stuart Winter (ftp://ftp.arm.slackware.com/slackwarearm/slackwarearm-14.0/INSTALL_QEMU.TXT).
Basis/Image erstellen
Als Host kommt natürlich Slackware zum Einsatz 😉 . In der Installations-Anleitung von Stuart Winter befinden sich die Links zu seinem Qemu-Slackbuild.
Download:
rsync -Pavv ftp.arm.slackware.com::slackwarearm/slackwarearm-devtools/qemu .
Aktuell ist die Version 1.3.0 die Basis für den Build, aber auf der Qemu-Seite gibt es bereits die Version 1.3.1. Ein kurzes Anpassen des Slackbuild-Scripts updated das Ganze 🙂
Nach dem Build und der Installation ist jetzt die Vorbereitung des Images der nächste Schritt:
dd if=/dev/zero of=rootfs.img bs=1M count=2000
mkfs.ext3 -F rootfs.img
Damit ist das Image erstellt und mit ext3 formatiert. Das mounten des Image ist ebenfalls ziemlich simple. Hier der Eintrag für die /etc/fstab
# images
/home/tjohann/Gnublin/rootfs.img /home/tjohann/Gnublin/image ext3 loop,noauto,user 0 0
Damit lässt sich das Image schnell mounten und notwendige Änderungen machen. Aber Achtung, ist die virtuelle Maschine aktiv, dann sind die Änderungen nicht sichtbar; auch ein sync
schaffte keine reproduzierbare Verbesserung.
Jetzt fehlt noch das Image, welches man von
wget http://gnublin.org/downloads/rootfs.tar.gz
downloaden kann und dann mittels
sudo tar xzvf rootfs.tar.gz -C image/
ins Image „kopiert“ 🙂 Noch schnell die Zeile
T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt102
auskommentieren und
1:2345:respawn:/sbin/getty 38400 tty1
einfügen … That’s all 🙂
Image starten
Das Image lässt sich recht einfach über mein adaptiertes „disk_launch“ Script starten:
##################################################################
# Script: disk_launch
# Purpose: Launch an installed Slackware ARM host via QEMU
# Author: Stuart Winter <mozes@slackware.com>
# Date: 24-Apr-2009
# Version: 1.01
##################################################################
#
# Adapted for the gnublin board
#
# Author: Thorsten Johannvorderbrueggen <thorsten.johannvorderbrueggen@t-online.de> # Date: 17-Feb-2013
# Version: 1.00
#
KEYBOARD="de"
ROOTFSTYPE=ext3
ROOTFSDEV=/dev/sda
MACADDR=",macaddr=52:54:00:12:34:60"
NETTYPE="-net nic${MACADDR} -net tap,ifname=tap0,script=qemu-network-tun.sh"
#
qemu-system-arm $NETTYPE \
-M versatilepb \
-cpu arm926 \
-m 256 \
-kernel zImage \
-hda rootfs.img \
-localtime \
-no-reboot \
-k $KEYBOARD \
-append "root=$ROOTFSDEV rootfs=$ROOTFSTYPE mem=256M devtmpfs.mount=0 rw"
Ergänzend wird noch das script qemu-network-tun.sh benötigt
#!/bin/sh
#
# This is the IP of 'tap0' on the Slackware/x86 host:
BRIDGEIP=192.168.0.5
#
modprobe tun
/sbin/ifconfig $1 $BRIDGEIP netmask 255.255.255.0
/sbin/brctl addif br0 $1
Im nächsten Teil beschreibe ich die Konfiguration des Hosts als Bridge und anschließend die notwendigen Target Änderungen.
Cheers
Thorsten