Installation d’une Armbian sur Orange Pi Zéro

Il y a déjà de la documentation bien faite et maintenue directement sur https://www.armbian.com/orange-pi-zero/ , mais voici une version ‘humainement lisible’

J’utilise GNU/Linux, en l’occurence Mint, mais la méthode que j’utilise étant basée essentiellement sur de la ligne de commande, elle devrait être compatible avec un très grand nombre de distributions.

Dans les très grande lignes pour guider ceux qui débutent vraiment, on va sur https://www.armbian.com/orange-pi-zero/ pour récupérer l’image d’Armbian sur son ordi, on décompresse l’archige qui doit contenir un fichier du type .img : c’est l’image disque qu’il nous faut.
On ‘monte’ une carte µSD sur son ordi, on repère comment la carte est détectée, en /dev/sd-quelquechose (très important) et avec la commande magique, on écrit tout simplement le contenu de l’archive sur la carte µSD de la manière la plus brutale qui soit avec dd.
Pour identifier la carte µSD, vous pouvez par exemple utiliser sudo sfdisk -l , chez moi, le ‘disque’ est détecte en tant que /dev/sdc
Ensuite, et bien c’est très basique, avec les droits root (sudo) on copie avec dd, et pour s’assurer qu’il n’y ait rien qui traine en cache, on force un sync

Note : lors de la rédaction de ce tuto, j’ai rencontré des problèmes pour activer le wifi avec Armbian_19.11.3_Orangepizero_buster_current_5.3.9.img
Je suis donc repassé en Armbian_5.91_Orangepizero_Debian_buster_next_4.19.59.img

sudo dd if=Armbian_5.91_Orangepizero_Debian_buster_next_4.19.59.img of=/dev/sdc bs=1M
sudo sync

Ensuite, démontez et retirez la carte µSD
Si vous avez besoin de faire des modifications vous pouvez éditer les fichiers de configuration pour vous adapter à votre environnement, ré-inserez la carte dans votre ordinateur/lecteur, et éditez les fichier.
Par exemple, a titre perso, j’ai l’habitude d’utiliser un adaptateur port série/USB pour avoir accès à une console ‘en dur’ sur mon OrangePi (c’est plus que très pratique quand le réseau ne fonctionne pas).
Dans le fichier /media/$votre-user/*uuid-de-la-µSD//boot/armbianEnv.txt il y a des paramètres qui sont passés au kernel lors du boot. Pour utiliser le port série de l’OrangePiZero, assurez vous d’avoir une ligne

console=serial

En théorie pour se connecter à un wifi existant, on peut éditer le fichier /boot/armbian_first_run.txt.template en indiquant le SSID et le passphrase du réseau wifi local et l’enregistrer sans le .template, mais ça ne fonctionne pas toujours, heureusement, en secours il y a une autre solution.

Une fois que la carte est prête, il suffit de la démonter proprement et de l’insérer dans l’Orange Pi Zéro puis de l’alimenter.


Note : lors du premier boot, Armbian va exécuter automatiquement un FS_Resize, c’est à dire qu’il va agrandir la dernière partition pour remplir tout l’espace disponible. Selon la qualité et la taille de la carte, ça peut prendre entre 30 secondes et plusieurs minutes !!

Avoir accès à la ligne de commande de l’Orange Pi Zéro

Personnellement, j’utilise une petit interface ‘FTDI232’ pour avoir une console en dur, c’est très pratique, surtout quand tout va mal !
Mais dans notre cas, c’est totalement optionnel car il existe une ruse grâce à Armbian.

Juste pour la culture, voici en console série en dur ce que donne le boot complet (a collapser)

U-Boot SPL 2019.04-armbian (Nov 18 2019 - 23:36:05 +0100)
DRAM: 512 MiB
Trying to boot from MMC1


U-Boot 2019.04-armbian (Nov 18 2019 - 23:36:05 +0100) Allwinner Technology

CPU:   Allwinner H3 (SUN8I 1680)
Model: Xunlong Orange Pi Zero
DRAM:  512 MiB
MMC:   mmc@1c0f000: 0, mmc@1c10000: 1
Loading Environment from EXT4... ** File not found /boot/boot.env **

** Unable to read "/boot/boot.env" from mmc0:1 **
In:    serial
Out:   serial
Err:   serial
Net:   phy interface0
eth0: ethernet@1c30000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
USB2:   USB EHCI 1.00
USB3:   USB OHCI 1.0
USB4:   USB EHCI 1.00
USB5:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
scanning bus 3 for devices... 1 USB Device(s) found
scanning bus 4 for devices... 1 USB Device(s) found
scanning bus 5 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Autoboot in 1 seconds, press <Space> to stop
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
3798 bytes read in 4 ms (926.8 KiB/s)
## Executing script at 43100000
U-boot loaded from SD
Boot script loaded from mmc
181 bytes read in 2 ms (87.9 KiB/s)
7308123 bytes read in 567 ms (12.3 MiB/s)
7644632 bytes read in 593 ms (12.3 MiB/s)
Found mainline kernel configuration
28681 bytes read in 11 ms (2.5 MiB/s)
504 bytes read in 12 ms (41 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost2.dtbo
504 bytes read in 9 ms (54.7 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost3.dtbo
4155 bytes read in 8 ms (506.8 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 44000000
## Loading init Ramdisk from Legacy Image at 43300000 ...
   Image Name:   uInitrd
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    7308059 Bytes = 7 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 43000000
   Booting using the fdt blob at 0x43000000
EHCI failed to shut down host controller.
   Loading Ramdisk to 49907000, end 49fff31b ... OK
   Loading Device Tree to 49897000, end 49906fff ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Loading, please wait...
Starting version 241
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.33.1
[/sbin/fsck.ext4 (1) -- /dev/mmcblk0p1] fsck.ext4 -a -C0 /dev/mmcblk0p1 
/dev/mmcblk0p1: clean, 37291/72000 files, 246118/287744 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... done.

Welcome to Debian GNU/Linux 10 (buster)!

[  OK  ] Listening on Journal Socket.
         Starting Create list of re…odes for the current kernel...
         Starting Restore / save the current clock...
[  OK  ] Listening on udev Kernel Socket.
[  OK  ] Created slice system-serial\x2dgetty.slice.
         Starting Set the console keyboard layout...
[  OK  ] Listening on Syslog Socket.
[  OK  ] Listening on fsck to fsckd communication Socket.
[  OK  ] Started Forward Password R…uests to Wall Directory Watch.
[  OK  ] Listening on udev Control Socket.
[  OK  ] Set up automount Arbitrary…s File System Automount Point.
[  OK  ] Created slice User and Session Slice.
         Mounting Kernel Debug File System...
[  OK  ] Reached target Slices.
[  OK  ] Listening on Journal Audit Socket.
[  OK  ] Started Dispatch Password …ts to Console Directory Watch.
[  OK  ] Reached target Local Encrypted Volumes.
[  OK  ] Reached target Swap.
         Mounting POSIX Message Queue File System...
         Starting udev Coldplug all Devices...
[  OK  ] Listening on Journal Socket (/dev/log).
         Starting Journal Service...
[  OK  ] Reached target Paths.
         Starting Nameserver information manager...
[  OK  ] Listening on initctl Compatibility Named Pipe.
[  OK  ] Reached target System Time Synchronized.
         Starting Remount Root and Kernel File Systems...
[  OK  ] Reached target Remote File Systems.
         Starting Load Kernel Modules...
[  OK  ] Started Create list of req… nodes for the current kernel.
[  OK  ] Started Restore / save the current clock.
[  OK  ] Mounted Kernel Debug File System.
[  OK  ] Mounted POSIX Message Queue File System.
[  OK  ] Started Nameserver information manager.
[  OK  ] Started Remount Root and Kernel File Systems.
[  OK  ] Started Load Kernel Modules.
         Starting Apply Kernel Variables...
         Mounting Kernel Configuration File System...
         Starting Load/Save Random Seed...
         Starting Create System Users...
[  OK  ] Mounted Kernel Configuration File System.
[  OK  ] Started Apply Kernel Variables.
[  OK  ] Started Set the console keyboard layout.
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Journal Service.
         Starting Flush Journal to Persistent Storage...
[  OK  ] Started udev Coldplug all Devices.
         Starting Helper to synchronize boot up for ifupdown...
[  OK  ] Started Create System Users.
[  OK  ] Started Helper to synchronize boot up for ifupdown.
         Starting Create Static Device Nodes in /dev...
[  OK  ] Started Flush Journal to Persistent Storage.
[  OK  ] Started Create Static Device Nodes in /dev.
[  OK  ] Reached target Local File Systems (Pre).
         Mounting /tmp...
         Starting udev Kernel Device Manager...
[  OK  ] Mounted /tmp.
[  OK  ] Reached target Local File Systems.
         Starting Create Volatile Files and Directories...
         Starting Armbian ZRAM config...
         Starting Set console font and keymap...
         Starting Raise network interfaces...
[  OK  ] Started Set console font and keymap.
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Create Volatile Files and Directories.
[  OK  ] Started Entropy daemon using the HAVEGE algorithm.
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Found device /dev/ttyGS0.
[  OK  ] Found device /dev/ttyS0.
[  OK  ] Started Raise network interfaces.
[  OK  ] Listening on Load/Save RF …itch Status /dev/rfkill Watch.
         Starting Load/Save RF Kill Switch Status...
[  OK  ] Started Load/Save RF Kill Switch Status.
[  OK  ] Started Armbian ZRAM config.
         Starting Armbian memory supported logging...
[  OK  ] Started Armbian memory supported logging.
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily rotation of log files.
         Starting Armbian hardware monitoring...
         Starting Armbian hardware optimization...
[  OK  ] Started Daily Cleanup of Temporary Directories.
         Starting Armbian filesystem resize...
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Started Daily apt download activities.
[  OK  ] Started Daily apt upgrade and clean activities.
[  OK  ] Started Daily man-db regeneration.
[  OK  ] Reached target Timers.
[  OK  ] Started Armbian hardware monitoring.
[  OK  ] Started Armbian hardware optimization.
[  OK  ] Started Armbian filesystem resize.
[  OK  ] Reached target Basic System.
         Starting LSB: Load kernel …d to enable cpufreq scaling...
         Starting rng-tools.service...
         Starting Resets System Activity Data Collector...
[  OK  ] Started Armbian first run tasks.
[  OK  ] Created slice system-getty.slice.
[  OK  ] Started Regular background program processing daemon.
         Starting Login Service...
[  OK  ] Started D-Bus System Message Bus.
         Starting WPA supplicant...
         Starting Network Manager...
         Starting Dispatcher daemon for systemd-networkd...
         Starting System Logging Service...
[  OK  ] Started rng-tools.service.
[  OK  ] Started Resets System Activity Data Collector.
[  OK  ] Started LSB: Load kernel m…ded to enable cpufreq scaling.
[  OK  ] Started System Logging Service.
[  OK  ] Started Login Service.
[  OK  ] Started WPA supplicant.
         Starting LSB: set CPUFreq kernel parameters...
[  OK  ] Started LSB: set CPUFreq kernel parameters.
         Starting LSB: Set sysfs variables from /etc/sysfs.conf...
[  OK  ] Started LSB: Set sysfs variables from /etc/sysfs.conf.
[  OK  ] Started Network Manager.
         Starting Network Manager Wait Online...
[  OK  ] Reached target Network.
         Starting OpenBSD Secure Shell server...
         Starting Permit User Sessions...
         Starting chrony, an NTP client/server...
[  OK  ] Started Unattended Upgrades Shutdown.
[  OK  ] Started Permit User Sessions.
         Starting Hostname Service...
[  OK  ] Started OpenBSD Secure Shell server.
[  OK  ] Started chrony, an NTP client/server.
[  OK  ] Started Hostname Service.
         Starting Network Manager Script Dispatcher Service...
[  OK  ] Started Network Manager Script Dispatcher Service.
[  OK  ] Started Dispatcher daemon for systemd-networkd.
         Starting Authorization Manager...
[  OK  ] Started Authorization Manager.
[  OK  ] Started Network Manager Wait Online.
[  OK  ] Reached target Network is Online.
         Starting /etc/rc.local Compatibility...
         Starting Armbian first run optional user configuration...
         Starting LSB: Advanced IEEE 802.11 management daemon...
[  OK  ] Started /etc/rc.local Compatibility.
[  OK  ] Started LSB: Advanced IEEE 802.11 management daemon.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyS0.
[  OK  ] Started Serial Getty on ttyGS0.
[  OK  ] Reached target Login Prompts.
[  OK  ] Started Armbian first run optional user configuration.
[  OK  ] Reached target Multi-User System.
[  OK  ] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Started Update UTMP about System Runlevel Changes.

Armbian 19.11.3 Buster ttyS0 

orangepizero login:

Si vous avez réussi à connecter votre Orange Pi Zéro sur votre wifi en éditant le fichier /boot/armbian_first_run.txt , vous pouvez tout simplement vous connecter en ssh.
Sous GNU/Linux, pour retrouver l’IP d’une machine, vous pouvez utiliser la commande nmap

$ nmap -sP 192.168.1.0/24 |grep report
Nmap scan report for UX450FD (192.168.1.32)
Nmap scan report for octorangepi (192.168.1.36)
Nmap scan report for nox (192.168.1.50)

Si le réseau wifi ou Ethernet n’est pas opérationnel et que l’on ne dispose pas d’un adaptateur Série/USB, ça fait beaucoup d’obstacles, mais ce n’est pas grave car nous allons utiliser une fonction très pratique et qui n’existe pas sur les Raspberry que j’ai : le port série émulé sur le connecteur micro-USB !

Et oui, si vous utiliser un câble USB/micro-USB pas trop pourri pour alimenter votre OrangePi Zéro, à la fin du boot d’Armbian, vous verrez apparaître un port série.
Chez moi il se nomme /dev/ttyACM0 et il suffit d’utiliser un logiciel tel que GTK-Term pour pouvoir se connecter dessus.
La vitesse du port par défaut doit être réglé à 115200 bauds, 8 bits de données, parité sur ‘non’ et un bit de stop (115200-N-1 en abrégé)

Par contre, à moins de vous connecter ‘pile au bon moment’, Armbian aura fini de booté quand vous aurez la main, donc rien n’apparaîtra dans la fenêtre. Mais il suffit de savoir que la fin du boot s’achève sur :
orangepizero login:
Vous pourrez alors vous connecter avec le compte root avec le mot de passe qui est 1234 par défaut.
Armbian vous demandera de changer le mot de passe root, et une fois que c’est fait, vous proposera de créer un premier utilisateur ; en pratique, ça ressemble à ça

Armbian 19.11.3 Buster ttyGS0 

orangepizero login: root
Password: 1234
You are required to change your password immediately (administrator enforced)
Changing password for root.
Current password: 1234
New password: le-nouveau-password-root
Retype new password: le-nouveau-password-root
  ___  ____  _   _____              
 / _ \|  _ \(_) |__  /___ _ __ ___  
| | | | |_) | |   / // _ \ '__/ _ \ 
| |_| |  __/| |  / /|  __/ | | (_) |
 \___/|_|   |_| /____\___|_|  \___/ 
                                    
Welcome to Armbian Buster with Linux 5.3.9-sunxi

System load:   1.13 0.39 0.14  	Up time:       1 min		
Memory usage:  15 % of 491MB  	IP:            
CPU temp:      37°C           	
Usage of /:    7% of 15G    	

[ General system configuration (beta): armbian-config ]

New to Armbian? Check the documentation first: https://docs.armbian.com


Thank you for choosing Armbian! Support: www.armbian.com

Creating a new user account. Press <Ctrl-C> to abort

Please provide a username (eg. your forename): toto
Trying to add user toto
Adding user `toto' ...
Adding new group `toto' (1000) ...
Adding new user `toto' (1000) with group `toto' ...
Creating home directory `/home/toto' ...
Copying files from `/etc/skel' ...
New password: le-password-de-toto
Retype new password: le-password-de-toto
passwd: password updated successfully
Changing the user information for toto
Enter the new value, or press ENTER for the default
	Full Name []: Toto
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] Y

Dear Toto, your account toto has been created and is sudo enabled.
Please use this account for your daily work from now on.

root@orangepizero:~# 

voilà Armbian installé et un utilisateur nommé toto est présent, notez qu’il dispose des droits root en utilisant sudo
Pour le moment, nous sommes en root (symbolisé par # dans l’invite de commande), et nous pouvons en profiter pour paramétrer plein de chose en en invoquant la commande

armbian-config

Une des première chose à régler est le réseau. Je vous redirige vers la documentation officielle d’armbian-config

Une fois l’OrangePiZero prête, vous pourrez continuer à utiliser le port série, mais aussi vous connecter en SSH avec son adresse IP

ssh toto@192.168.xxx.yyy

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *