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). .