title: NetBSD sur une carte Olimex LIME 2
date: 2016-06-03
tags: geekeries, NetBSD, Olimex, LIME2, Asrall
url: netbsd-lime2
slug: netbsd-lime2


![Photo d'une carte Olimex LIME 2](/images/netBSD/DSC00956.JPG)

Un petit article tout simple, qui explique comment installer rapidement NetBSD
sur une carte Olimex LIME 2.

Ça ne servira pas forcément à grand-chose. C'est plus pour le
sport/fun/amusement/parce que c'est possible (rayer les mentions inutiles).

Pour commencer, il faut :

 * Une carte Olimex LIME 1 ou LIME 2. Perso, j'ai utilisé ma Brique Internet que j'utilise pour faire les tests.
 * Une carte au format microSD (que j'appellerai SD dans l'article par commodité) et un adaptateur microSD -> SD. Le minimum serait 2 Go, j'ai utilisé une microSD de 16 Go en classe 10.
 * Un câble série à brancher sur le connecteur UART de la carte, et un logiciel (genre [microcom](http://git.pengutronix.de/?p=tools/microcom.git)) pour pouvoir l'utiliser.
 * Un ordinateur sous GNU/Linux (de préférence) ou *BSD. Les MACs, ça a beau [être basé sur FreeBSD](https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/BSD/BSD.html) (+ micronoyau MACH), ça ne compte pas. Windows, on oublie. Je n'ai pas testé sur [Haiku](https://www.haiku-os.org/) ni sur [MonaOS](http://monaos.org/).
 * De la place sur le disque dur.
 * Une connexion internet qui fonctionne.
 * Avoir de quoi compiler fex2bin serait un plus.



Pour être franc, je n'ai rien inventé. Je me suis basé sur la [page
d'installation de NetBSD pour
ARM/Allwinner](https://wiki.netbsd.org/ports/evbarm/allwinner/). J'ai utilisé
le noyau de la carte BananaPi, carte qui est "relativement" proche de la
LIME2. J'avais la flemme de compiler le noyau BSD exprès pour la carte.



Donc, commençons par récupérer l'image système de NetBSD, en version ARM, se
trouvant là :
<http://ftp.netbsd.org/pub/NetBSD/NetBSD-7.0.1/evbarm-earmv7hf/binary/gzimg/>

Récupérons le bootloader (u-boot) pour la carte, en l'occurence, la LIME 2,
ici :
<http://dl.linux-sunxi.org/nightly/u-boot-sunxi/u-boot-sunxi-mainline/u-boot-
sunxi-mainline-latest/>



Décompressons l'image de NetBSD.



   gunzip armv7.img.gz

Décompressons l'archive u-boot



   tar xf u-boot-sunxi-mainline-a20-olinuxino-lime2.tar.xz

Déplaçons les fichiers décompressés dans le répertoire courant



   mv u-boot-sunxi-mainline-a20-olinuxino-lime2-20160428T000127-e25b369/* ./

Copions le bootloader sur l'image de NetBSD, au bon endroit



   dd if=u-boot-sunxi-with-spl.bin of=armv7.img bs=1k seek=8 conv=notrunc

Flashons la carte SD (ici, /dev/sdb, ne vous trompez surtout pas de
périphérique ou alors prévoyez un bon backup de votre machine) avec l'image
modifiée de NetBSD.



   sudo dd if=armv7.img of=/dev/sdb bs=1M

Éjecter et réinsérer la carte SD



À ce stade, on a une carte SD bootable avec u-boot, et contenant un système
NetBSD. Cependant, le système n'est pas utilisable.



Monter la carte SD (sdb1 dans mon cas), et se déplacer dessus.



   pmount /dev/sdb1 /media/sdb1
   cd /media/sdb1

Comme il n'y a pas de noyau NetBSD prévu pour la LIME 2, on va utiliser celui
du Banana Pi.

Copions alors le noyau, comme suit :



   cp netbsd-BPI.ub netbsd.ub

Préparons le fichier de configuration pour u-boot.



   vim boot.cmd

Ajoutons dans ce fichier :



   setenv kernel_addr      82000000
   setenv kernel           netbsd.ub
   setenv bootargs         "root=ld0a"

   fatload mmc 0:1 ${kernel_addr} ${kernel}
   bootm ${kernel_addr}


Compilons ce fichier cmd à l'aide de mkimage (paquet u-boot-tools sous
debian).



   mkimage -C none -A arm -T script -d boot.cmd boot.scr



Il faut maintenant la configuration de la carte. Pour cela, télécharger le
fichier a20-olinuxino_lime2.fex depuis <https://github.com/linux-sunxi/sunxi-boards/tree/master/sys_config/a20>.

Récupérer au passage (si ce n'est pas déjà fait) <https://github.com/linux-sunxi/sunxi-tools>, et compiler au moins fex2bin (pas sur la carte SD, bien
entendu)

Convertir le fichier fex en fichier bin. Ne pas oublier de copier le fichier
bin sur la carte SD.



   fex2bin a20-olinuxino_lime2.fex > lime2.bin



Créer (ou modifier) le fichier uEnv.txt



   vim uEnv.txt

contenu du fichier uEnv.txt



   bootargs=root=ld0a sysconfig=0x43000000
   uenvcmd=mmc dev 0; mmc rescan; fatload mmc 0:1 43000000 lime2.bin;
   fatload mmc 0:1 82000000 netbsd.ub; bootm 82000000



Si tout va bien, vous devriez avoir ces fichiers sur la carte SD (j'aurais pu
effacer les kernels des autres cartes, mais bon, flemme) :



   LICENCE.broadcom
   a20-olinuxino_lime2.fex
   boot.cmd
   boot.ini
   boot.scr
   bootcode.bin
   cmdline.txt
   fixup.dat
   fixup_cd.dat
   kernel7.img
   lime2.bin
   netbsd-BEAGLEBOARD.ub
   netbsd-BEAGLEBONE.ub
   netbsd-BPI.ub
   netbsd-CUBIEBOARD.ub
   netbsd-CUBIETRUCK.ub
   netbsd-HUMMINGBIRD_A31.ub
   netbsd-ODROID-C1.ub
   netbsd.ub
   start.elf
   start_cd.elf
   uEnv.txt




Démonter proprement la carte avant de l'éjecter



   cd
   pumount /dev/sdb1

Insérer la carte SD dans le lecteur de la carte Olimex, brancher le câble
série sur le connecteur UART (Bleu -> GND, Rouge -> RX, Vert -> TX), lancer
microcom, et alimenter la LIME 2 pour la démarrer.



   microcom -p /dev/ttyUSB0 -s 115200

Si tout va bien, u-boot devrait apparaître à l'écran



   U-Boot SPL 2016.05-rc3-ge25b369 (Apr 28 2016 - 00:13:29)
   DRAM: 1024 MiB
   CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
   Trying to boot from MMC1


   U-Boot 2016.05-rc3-ge25b369 (Apr 28 2016 - 00:13:29 +0200) Allwinner Technology

   CPU:   Allwinner A20 (SUN7I)
   Model: Olimex A20-OLinuXino-LIME2
   I2C:   ready
   DRAM:  1 GiB
   MMC:   SUNXI SD/MMC: 0
   *** Warning - bad CRC, using default environment


Après les tests initiaux, NetBSD devrait démarrer. Quelques instants plus
tard, un message indiquant que le système redimensionne la partition devrait
apparaître. Cette étape est nécessaire pour que toute la carte SD soit
utilisable.



   Growing ld0 disklabel (1111MB -> 15343MB)
   Resizing /

Dès que cette opération est terminée, le système redémarre automatiquement.

Si tout va bien, le message suivant devrait apparaître



   NetBSD/evbarm (armv7) (console)

   login:

Se connecter via le login root. Il n'y a pas de mot de passe.



Et voilà, NetBSD est désormais utilisable (quoique, encore au stade
expérimental). Je ne connais pas l'impact de l'utilisation du noyau du Banana
Pi sur cette carte, je n'ai pas assez de recul. Je ne serai en aucun cas
responsable en cas [d'explosion du
CPU](http://www.megatokyo.it/planche/fr0015/ca-fait-boum).

J'espère n'avoir rien oublié lors de la rédaction de cet article.



Juste à titre indicatif, voici le [log complet du démarrage de la LIME
2](/images/netBSD/boot.txt).