Difference between revisions of "User:DenisB"
m (DVDs are not CDs + typos) |
m (→Misc 1 : Qemu launching: script works undder FC17 and armadeus5.0, too) |
||
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | ==Misc 1 : Qemu launching == | ||
+ | |||
'''1) A script to make qemu launching automatic''' | '''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 | + | Sometimes, the list of commands one has to type as host can be very long and tedious; and forgetting to type one of them might lead 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 and typos.. | ||
− | + | <source lang="bash"> | |
− | |||
− | |||
echo " image pour qemu : ${NOM_IMAGE:=armadeus-qemu.img} | echo " image pour qemu : ${NOM_IMAGE:=armadeus-qemu.img} | ||
montee dans ${NOM_DIR_MNT:=qemu-mnt} " | montee dans ${NOM_DIR_MNT:=qemu-mnt} " | ||
Line 85: | Line 87: | ||
set -vx | set -vx | ||
[ -d ${NOM_DIR_MNT}/usr/local/bin ] || $SUDO mkdir -p ${NOM_DIR_MNT}/usr/local/bin | [ -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/. | + | $SUDO cp -rpuv ${TFTBOOT}"/"* ${NOM_DIR_MNT}/usr/local/bin/. |
# | # | ||
# one **must** unmount the qemu image before qemu can use it | # one **must** unmount the qemu image before qemu can use it | ||
Line 93: | Line 95: | ||
</source> | </source> | ||
− | 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 : this script has been tested and run with some satisfaction for more than one month on Scientific Linux - 5.7 (a Red Hat clone, able to mount NTFS partitions and having a live DVD),Fedora 16 and a Mageia-1: emulated cards were apf9328 and apf27. |
+ | (it is also used with Armadeus-5.0, under Fedora 17) | ||
+ | The only flaw I could notice with SL-5.x was the absence of qemu on their live DVD (it is difficult to have a package manager add stuff on a RO media...) , which could be recompiled from source in a RW part of a disk with little trouble. | ||
− | 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 | + | 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 DVD.... 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.... | Nota : copies which are made on an emulated image wo not appear on real hardware.... | ||
+ | |||
+ | ==Misc 2 == | ||
+ | Adding a text editor: | ||
+ | |||
+ | Natively, armadeus is shipped with nano, a very simple version of vi (not like vim) and uemacs. If one needs some features like syntax highlighting (for shell/lua scripting) , noone of them is satisfying (and a full version of vim can be installed, but is space-consuming). | ||
+ | A light solution can be found with joe [http://joe-editor.sourceforge.net/], which offers in-line help and syntax-highlighting (I noticed that 10% of my errors could be avoided with such a feature). | ||
+ | The easiest solution is to compile it from source for one's PC, test it and train oneself with it, and to modify the make invocation to use Armadeus's cross compiler instead of gcc, which leads to the following script one should execute on one's PC: | ||
+ | |||
+ | <source lang="bash"> | ||
+ | JOEROOT=/usr/local/ # in both the PC and the (emulated) Armadeus card tomake things simple.... | ||
+ | |||
+ | cd /usr/local/armadeus-4.0/# these 3 lines depend on your installation and should obviously be adapted | ||
+ | cd ~/armadeus-4.0/ | ||
+ | cd joe-3.7/ # joe's source tree is located here | ||
+ | |||
+ | ici=`pwd` | ||
+ | make clean # first, removes everything (might be arm's binaries) | ||
+ | ./configure --disable-termcap --prefix=${JOEROOT} | ||
+ | make && sudo make install | ||
+ | cd .. | ||
+ | # now, to arms | ||
+ | |||
+ | make shell_env && source armadeus_env.sh | ||
+ | export PATH=${ARMADEUS_TOOLCHAIN_PATH}/../bin/:${PATH} | ||
+ | cd ${ici} | ||
+ | # one removes x86 binaries, then one builds for arm | ||
+ | make clean && make CC=arm-linux-gcc | ||
+ | # some tests (mainly of strip) | ||
+ | |||
+ | echo "unstripped joe " > joestrip.txt | ||
+ | cp joe ../tftboot/unstrippedjoe | ||
+ | ls -l joe >> joestrip.txt | ||
+ | echo "stripped joe " >> joestrip.txt | ||
+ | arm-linux-strip joe | ||
+ | ls -l joe >> joestrip.txt | ||
+ | # puts joe into armadeus files and prepares installation | ||
+ | # | ||
+ | cp joe ../tftboot/. # it is ready to be shipped to an emulated card.. | ||
+ | mkdir .././tftboot/usrlocalshare | ||
+ | cp -rpvf ${JOERROT}/share/joe .././tftboot/usrlocalshare/. | ||
+ | mkdir .././tftboot/usrlocaletc | ||
+ | cp -rpvf ${JOERROT}/etc/joe .././tftboot/usrlocaletc/. | ||
+ | # history >joestory | ||
+ | </source> | ||
+ | |||
+ | In this configuration, joe can be activated from an emulated card, its help appears but there is no syntax highligting (it was meant for!) . The ressource files/folders necessary to syntax highlight , however, have been shipped (they are ASCII files, valid on a x86 and an arm) but need to be on the right place. This can be achieved by executing, under an emulated board, a script like that: | ||
+ | |||
+ | <source lang=bash> | ||
+ | [ -d /usr/local/share ] || mkdir /usr/local/share | ||
+ | [ -d /usr/local/etc ] || mkdir /usr/local/etc | ||
+ | \mv /usr/local/bin/usrlocalshare/joe /usr/local/share/. | ||
+ | \mv /usr/local/bin/usrlocaletc/joe /usr/local/etc/. | ||
+ | </source> | ||
+ | |||
+ | After this installation (there are better ones, based on tar files, say: - a simple tar exists with Busy Box or a full version can be installed- but this way can give opportunities of easily removing some syntax files, if they are felt unuseful), syntax highlight works... | ||
+ | |||
+ | One can seen a screenshot here (joe is launched from a qemu-lated armadeus, the host system being a Fedora Core 16, with KDE as desktop manager): | ||
+ | [[image:snapshot_qemu_joe1.png|center|frame|thumb|'''figure 1''' - ''a session with Joe's editor'']] |
Latest revision as of 15:19, 2 September 2012
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 might lead 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 and typos..
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 more than one month on Scientific Linux - 5.7 (a Red Hat clone, able to mount NTFS partitions and having a live DVD),Fedora 16 and a Mageia-1: emulated cards were apf9328 and apf27. (it is also used with Armadeus-5.0, under Fedora 17) The only flaw I could notice with SL-5.x was the absence of qemu on their live DVD (it is difficult to have a package manager add stuff on a RO media...) , which could be recompiled from source in a RW part of a disk with little trouble.
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 DVD.... 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....
Misc 2
Adding a text editor:
Natively, armadeus is shipped with nano, a very simple version of vi (not like vim) and uemacs. If one needs some features like syntax highlighting (for shell/lua scripting) , noone of them is satisfying (and a full version of vim can be installed, but is space-consuming). A light solution can be found with joe [1], which offers in-line help and syntax-highlighting (I noticed that 10% of my errors could be avoided with such a feature). The easiest solution is to compile it from source for one's PC, test it and train oneself with it, and to modify the make invocation to use Armadeus's cross compiler instead of gcc, which leads to the following script one should execute on one's PC:
JOEROOT=/usr/local/ # in both the PC and the (emulated) Armadeus card tomake things simple....
cd /usr/local/armadeus-4.0/# these 3 lines depend on your installation and should obviously be adapted
cd ~/armadeus-4.0/
cd joe-3.7/ # joe's source tree is located here
ici=`pwd`
make clean # first, removes everything (might be arm's binaries)
./configure --disable-termcap --prefix=${JOEROOT}
make && sudo make install
cd ..
# now, to arms
make shell_env && source armadeus_env.sh
export PATH=${ARMADEUS_TOOLCHAIN_PATH}/../bin/:${PATH}
cd ${ici}
# one removes x86 binaries, then one builds for arm
make clean && make CC=arm-linux-gcc
# some tests (mainly of strip)
echo "unstripped joe " > joestrip.txt
cp joe ../tftboot/unstrippedjoe
ls -l joe >> joestrip.txt
echo "stripped joe " >> joestrip.txt
arm-linux-strip joe
ls -l joe >> joestrip.txt
# puts joe into armadeus files and prepares installation
#
cp joe ../tftboot/. # it is ready to be shipped to an emulated card..
mkdir .././tftboot/usrlocalshare
cp -rpvf ${JOERROT}/share/joe .././tftboot/usrlocalshare/.
mkdir .././tftboot/usrlocaletc
cp -rpvf ${JOERROT}/etc/joe .././tftboot/usrlocaletc/.
# history >joestory
In this configuration, joe can be activated from an emulated card, its help appears but there is no syntax highligting (it was meant for!) . The ressource files/folders necessary to syntax highlight , however, have been shipped (they are ASCII files, valid on a x86 and an arm) but need to be on the right place. This can be achieved by executing, under an emulated board, a script like that:
[ -d /usr/local/share ] || mkdir /usr/local/share
[ -d /usr/local/etc ] || mkdir /usr/local/etc
\mv /usr/local/bin/usrlocalshare/joe /usr/local/share/.
\mv /usr/local/bin/usrlocaletc/joe /usr/local/etc/.
After this installation (there are better ones, based on tar files, say: - a simple tar exists with Busy Box or a full version can be installed- but this way can give opportunities of easily removing some syntax files, if they are felt unuseful), syntax highlight works...
One can seen a screenshot here (joe is launched from a qemu-lated armadeus, the host system being a Fedora Core 16, with KDE as desktop manager):