User:DenisB
Misc 1 : Qemu launching
1) A script to make qemu launching automatic
Sometimes, the list of commands one has to type as host can be very long and tedious; and forgetting to type one of them leads to unpleasant results (ex : a mounted image should be unmounted before being used by qemu)
a bash script like this one, once adapted, might give ideas to avoid errors..
echo " image pour qemu : ${NOM_IMAGE:=armadeus-qemu.img}
montee dans ${NOM_DIR_MNT:=qemu-mnt} "
echo -e " repertoire de transit : ${TFTBOOT:=tftboot}
rafraichissement ${rafraichir:=no}
options -rw ou ro- : ${OPTION:=rw}
RAM :${RAMSIZE:=96M} DISQUE: ${DISKSIZE:=160}
image de boot :${VMBOOT:=./vmlinuz-2.6.29.6-versatile-armadeus}
"
# sets sudo options (if one is not sudoer, one might launch this script as root)
#
SUDO=
udo=`sudo echo alut`
[ s${udo} == "salut" ] && SUDO=sudo
#
[ -f ${NOM_IMAGE} ] || rafraichir=oui_evidemment
[ -d $TFTBOOT ] || mkdir $TFTBOOT
[ -d ${NOM_DIR_MNT} ] || mkdir ${NOM_DIR_MNT}
make shell_env && source armadeus_env.sh
export PATH=${ARMADEUS_TOOLCHAIN_PATH}/../bin/:${PATH}
# fixes armadeus-4.0 $ARMADEUS_ROOTFS_TAR gets the right name
tempo=
ls $ARMADEUS_ROOTFS_DIR
[ -f $ARMADEUS_ROOTFS_TAR ] || tempo=`echo $ARMADEUS_ROOTFS_TAR | sed -e "s/\.arm\././"`
[ z$tempo != "z" ] && ARMADEUS_ROOTFS_TAR=$tempo
# ls -al $ARMADEUS_ROOTFS_TAR
if [ $rafraichir = no ]
then
echo pas de rafraichissement
else
# destroys and creates an new image
\rm $NOM_IMAGE
dd if=/dev/zero of=${NOM_IMAGE} bs=1MB count=${DISKSIZE}
$SUDO /sbin/mke2fs -F -m 0 -b 1024 ${NOM_IMAGE}
fi
# for old versions of life CDs, where, sometimes, there are not enough mount points
# mknod /dev/loop/333 b 7 333
# losetup /dev/loop/333 ${NOM_IMAGE}
# mount /dev/loop/333 ${NOM_DIR_MNT}
$SUDO mount -t ext2 -o loop $NOM_IMAGE ${NOM_DIR_MNT}
$SUDO tar xf $ARMADEUS_ROOTFS_TAR -C ${NOM_DIR_MNT}/
[ -f ${NOM_DIR_MNT}/usr/local/bin ] && $SUDO \rm ${NOM_DIR_MNT}/usr/local/bin
# comments lines with tty (else, initialisation endlessly loops under qemu)
# sudo vi ${NOM_DIR_MNT}/etc/inittab
# editing can be tedious if one does it every time: has been automated wwith sed
$SUDO sed --in-place -e "s/^ttySMX/#ttySMX/" ${NOM_DIR_MNT}/etc/inittab
# creates a french (and german) keyboard layout launcher and puts it in a temporary dir
$SUDO echo "loadkmap</etc/i18n/fr.kmap" > ${TFTBOOT}/kfr
$SUDO echo "loadkmap</etc/i18n/de.kmap" > ${TFTBOOT}/kde
$SUDO chmod +x ${TFTBOOT}/k*
# prepares other softs
for monmac in qemu/Makefile makefilua # myoscillo/Makefile
do
[ -f $monmac ] && make -f $monmac && make -f $monmac install
done
TSTDIR=/usr/local/armadeus-4.0/myoscillo # places where one has some code to test
opwd=`pwd`
[ -d ${TSTDIR} ] && cd ${TSTDIR} && make && make install
[ -d ${opwd}/fontes ] && cd ${opwd}/fontes && make && make install
cd $opwd
# sleep 8 # you have some time to admire make at work
#
# puts everything one wants to download (from the temporary folder) in to
# what will become, in the emulated board, /usr/local/bin (is in the PATH) ....
set -vx
[ -d ${NOM_DIR_MNT}/usr/local/bin ] || $SUDO mkdir -p ${NOM_DIR_MNT}/usr/local/bin
$SUDO cp -rpuv ${TFTBOOT}/* ${NOM_DIR_MNT}/usr/local/bin/.
#
# one **must** unmount the qemu image before qemu can use it
$SUDO umount ${NOM_DIR_MNT}
#
qemu-system-arm -M versatilepb -kernel ${VMBOOT} -hda ${NOM_IMAGE} -append "root=/dev/sda mem=${RAMSIZE} ${OPTION}"
Nota : this script has been tested and run with some satisfaction for one month on Scientific Linux - 5.7 (a Red Hat clone, able to mount NTFS partitions and having a live DVD) and a Mageia-1: emulated cards were apf9328 and apf27.
Nota : Some things are very unstandard : using /usr/local as a working directory on ones host is a consequence of lazy mounts on a Scientific Linux live DVDD.... The size of the disks and the RAM do not need to be realistic, as it is meant for some tests (and lacking 500 K of disk , without tools to test it, might be frustrating)
Nota : copies which are made on an emulated image wo not appear on real hardware....