Arch Linux ARM sur Cubieboard 1 (Allwinner A10, 1Go RAM)

[23/02/2015 – La marche à suivre pour installer Arch Linux ARM sur la Cubieboard a changé. Certaines des informations présentées sur cettte page ne sont plus valables.]

J’ai acquis il y a un peu plus d’un an une carte Cubieboard 1. J’y avais installé Arch Linux ARM en suivant les recommandations disponibles sur le site d’Arch Linux ARM.

Un homme tire un chameau attaché à une corde.

Il est plus facile d’installer Arch Linux ARM sur la carte Cubieboard que de dresser un chameau. Source : The Field Museum Library

À l’occasion d’une réinstallation, je me suis rendu compte qu’une mise à jour était nécessaire, en particulier pour profiter pleinement des 1 Go de RAM embarqués sur la carte. Voici donc, à toutes fins utiles, un relevé des étapes que j’ai parcourues pour l’installation de base d’Arch Linux ARM sur la Cubieboard 1, version définitive (RAM 1 Go).

[Testé sur une carte micro SD de 16 Go de classe 10. Préparation de la carte micro SD depuis un PC tournant sous Xubuntu Linux]

Préparation de la carte micro SD

Pour la suite, sdX désigne le nom de la carte micro-SD dans /dev .

Partitionnement de la carte :

Il faut :

  • Une partition de 32 Mo pour le démarrage, formatée en FAT 32, et démarrant au secteur 2048 ;
  • Une partition en ext4 pour le système de fichiers occupant le reste de la carte micro SD.

Pour créer le partitionnement, on utilise fdisk :

# fdisk /dev/sdX

Puis n, p, 1, 2048, +32M, t, c pour la première partition, et n, p, 2, et les valeurs par défaut pour la seconde partition. w pour écrire les changements dans la table de partition de la carte micro-SD.

Formatage des partitions

Pour la première partition :
# mkfs.vfat /dev/sdX1
Et pour la seconde :
# mkfs.ext4 /dev/sdX2

Téléchargement du bootloader

Le fichier d’archive contenant le bootloader ( http://archlinuxarm.org/os/sunxi/cubieboard-bootloader.tar.gz ) indiqué dans le guide d’installation sur le site d’Arch Linux ARM est une version ancienne prévue pour la version bêta de la carte et qui ne permet pas d’utiliser toute la mémoire vive disponible (1 Go) mais seulement 512 Mo. Il faut aller chercher une version plus récente mise à disposition sur Sunxi, et accessible depuis cette page :
http://linux-sunxi.org/Hwpack

Les dernères versions des différents firmwares disponibles sont accessibles depuis cette page :
http://dl.linux-sunxi.org/users/amery/sunxi-3.0/latest/

Pour la Cubieboard 1, l’archive à télécharger est :
cubieboard_hwpack.tar.xz

# wget http://dl.linux-sunxi.org/users/amery/sunxi-3.0/latest/cubieboard_hwpack.tar.xz

Décompression de l’archive contenant le bootloader

Décompresser l’archive :
# tar -xf cubieboard_hwpack.tar.xz
et descendre dans le répertoire bootloader
# cd cubieboard_hwpack/bootloader

Écriture du bootloader sur la carte micro SD

On remet à zéro les secteurs de la carte micro SD qui recevront le bootloader (en préservant la table de partition) :
dd if=/dev/zero of=/dev/sdX bs=1k count=1023 seek=1
On écrit le bootloader sur la carte micro SD :
# dd if=sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
# dd if=u-boot.bin of=/dev/sdX bs=1024 seek=32

Préparation de la partition de démarrage

Télécharger la dernière archive disponible contenant le système de fichiers :
# wget http://archlinuxarm.org/os/ArchLinuxARM-sun4i-latest.tar.gz

On crée deux dossiers temporaires qui serviront de point de montage pour les deux partitions de la carte :
mkdir boot-tmp
mkdir root-tmp

On monte les partitions de la carte sur les répertoires temporaires, la partition 1 (FAT) est montée sur boot-tmp, la partition 2 (ext4) est montée sur root-tmp :
mount /dev/sdX1 boot-tmp
mount /dev/sdX2 root-tmp

Décompression et copie de l’archive dans la partition destinée à accueillir le système de fichiers :
tar xf ArchLinuxARM-sun4i-latest.tar.gz -C root-tmp

Récupération du binaire cubieboard.bin et de uEnv.txt :
wget http://archlinuxarm.org/os/sunxi/cubieboard-bootloader.tar.gz
tar xzf cubieboard-bootloader.tar.gz

Copie de ces fichiers vers la partition de boot :
cp cubieboard/cubieboard.bin boot-tmp/
cp cubieboard/uEnv.txt boot-tmp/uEnv.txt

Copie du fichier uImage (kernel) vers la partition de démarrage :
cp root-tmp/boot/uImage boot-tmp/uImage

Activation des modules du noyau permettant l’affichage sur un écran connecté à la Cubieboard en HDMI :

Créer le fichier : cubie.conf dans root-tmp/etc/modules-load.d
nano root-tmp/etc/modules-load.d/cubie.conf

Et y ajouter les lignes suivantes :

fbcon
lcd
hdmi
disp
disp_ump
ump

Éditer le fichier uEnv.txt dans boot-tmp/

nano boot-tmp/uEnv.txt

Qui contient, après édition, ceci :

boot_mmc=fatload mmc 0 0x43000000 ${fexfile}; fatload mmc 0 0x48000000 ${kernel}; bootm 0x48000000
console=tty0
extraargs=console=tty0 disp.screen0_output_mode=EDID:1980x1080p60 rootwait mac_addr=XX:XX:XX:XX:XX:XX
fexfile=cubieboard.bin

mac_addr=XX:XX:XX:XX:XX:XX est l’adresse MAC que l’on souhaite attribuer à la carte.

Synchroniser, puis démonter les deux partitions :

sync
umount /dev/sdX1 /dev/sdX2

Premier démarrage et configuration minimale du système :

Relier la Cubieboard à un écran

Insérer la carte micro-SD dans son emplacement et brancher l’alimentation de la Cubieboard, raccordée à un clavier USB et à un écran via la sortie HDMI et reliée au routeur ou à la box par un cable ethernet. Si tout se déroule conformément au plan, une console doit s’ouvrir à l’écran.

Première session

Mot de passe administrateur (root)

Ouvrir une session en tant que root (le mot de passe par défaut est root).
On complète l’installation en commençant par changer le mot de passe de root :
passwd

Le clavier en français

Si le clavier est en AZERTY, il faut l’indiquer au système :
loadkeys fr
Pour que cette disposition de clavier résiste aux redémarrage :
localectl set-keymap fr-pc

Définir un nom d’hôte

Pour que la cubieboard apparaisse sur le réseau sous son petit nom :
hostnamectl set-hostname cubieboard

Pour être à l’heure

Pour indiquer le bon fuseau horaire à prendre en compte :
timedatectl set-timezone Europe/Paris
par exemple (pour la liste des valeurs possibles, timedatectl list-timezones).

Mise à jour des paquets

Il est recommandé de réinitialiser les jeux de clés de pacman :
pacman-key –init

Activation de DHPC

Pour mettre à jour les paquets, il faut accéder à l’internet. Par défaut, le démon dhpc n’est pas activé. À moins que le réseau ne soit en ipV6, il faut l’activer si l’on souhaite que le routeur lui attribue automatiquement une adresse IP :
systemctl start dhpcd
systemctl enable dhpcd

Normalement, la connection devrait être établie. Pour le vérifier :
ifconfig

Mise à jour des paquets

Lancer pacman à la chasse aux mises à jour :
pacman -Syu

Compléments et points notables

Le service de tâches planifiées cronie n’est pas activé par défaut. Pour le faire (et s’éviter des arrachages de cheveux pour comprendre pourquoi les tâches planifiées dans la crontab ne s’exécutent pas…) :
systemctl enable cronie

Certains paquets fort utiles ne sont pas embarqués, et notamment screen, sudo et wget. Pour pouvoir compiler des paquets, les outils contenus dans base-devel peuvent aussi être fort utiles :
pacman -S screen sudo wget base-devel

Enfin, il est de bonne pratique de n’utiliser la machine en tant que root que pour les tâches d’administration. On peut créer un utilisateur standard avec : # useradd -m -G wheel -s /bin/bash utilisateur.

Sources :
https://gist.github.com/trixpan/6ff425f65d736b07aecf
http://archlinuxarm.org/platforms/armv7/allwinner/cubieboard
http://linux-sunxi.org/Hwpack

Une réflexion sur « Arch Linux ARM sur Cubieboard 1 (Allwinner A10, 1Go RAM) »

  1. Ping : Installer Arch Linux ARM sur la Cubieboard | Carnet

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.