Howto qemu gnublin image (Teil 1)

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