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à :
Récupérons le bootloader (u-boot) pour la carte, en l'occurence, la LIME 2,
ici :
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 .
Récupérer au passage (si ce n'est pas déjà fait) , 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).
.