Installer ubuntu-13.10 beta ARM sur Cubieboard2 depuis une autre système ARM Cubie :)

Travail en cours : Il y aura au boot des problèmes pour le dhcp automatique et l’horloge tant que le paquet de distribution *-desktop ne sera pas installé, j’ai encore besoin de trouver les paquets nécessaires à résoudre cela sans installer un bureau complet

Ubuntu 13.10 Saucy sur Cubieboard2

Ubuntu 13.10 Saucy sur Cubieboard2

Dans mon cas, je pars du système avec u-boot et noyau précédemment installés, ce qui facilite les chose.

Prenons pour notre exemple :
* /arc, répertoire de l’archive
* /mnt, répertoire où sera monté la partition sur la quelle nous allons installer notre nouveau système.

Dans une console, sous l’utilisateur root, créer un répertoire /arc, dans lequel vous allons récuperer l’archive tar Ubuntu-core 13.10 beta2

sudo bash
mkdir /arc; cd /arc
wget http://cdimage.ubuntu.com/ubuntu-core/releases/13.10/beta-2/ubuntu-core-13.10-beta2-core-armhf.tar.gz

Création du système de base

On désarchive alors à l’emplacement du nouveau système, la base d’Ubuntu core, puis on y copie les modules du noyau, les firmwares, ainsi que le fichier de chargement des modules (par exemple pour mali ou le réseau si vous ne l’avez pas mis en dur dans le noyau), puis recopie le /etc/resolv.conf, de façon à pouvoir récupérer les autres paquets une fois chrooté :

cd /mnt/
tar xf /arc/ubuntu-core-13.10-beta2-core-armhf.tar.gz   # désarchivage du core
cp -a /lib/{modules,firmware} lib/               # recopie des modules et firmwares
cp -a /etc/modules etc/
cp -a /etc/resolv.conf etc/                            # recopie le resolv.conf pour une fois chrooté et avant dhcp du reboot

Selon que vous utilisez une interface statique ou dynamique, vous pourrez choisir ce que vous allez installer dans /etc/network/interface.d/ pour après le reboot…

chrootage

Le chrootage (comme changement de root) consiste à passer d’un environnement à un sous environnement de l’arborescence, ici on passe à la base du système que l’on vient juste d’installer.

sudo chroot /mnt

Configuration du nouveau système

Cette étape est l’équivalente de la procédure d’installation d’Ubuntu.

Configurer d’abord des détails de base, qui éviterons des alertes inutiles :

localedef -i fr_FR -f UTF-8 fr_FR.UTF-8  # définition de la gestion standard fr en utf-8
dpkg-reconfigure tzdata # régler le fuseau horaire : Europe (8), Paris (35) par exemple.

Installer les paquets de base indispensables (à mon sens), non pré-installés :

  
apt-get update    # mettre à jour les liens des dépôts
  
apt-get install keyboard-configuration    # Pour le clavier, taper 40 puis 9 pour avoir le français
apt-get install net-tools sudo vim adduser dialog man uuid-runtime # INDISPENSABLE (vim-tiny peut remplacer vim)
apt-get install less htop                          # Outils très pratique au quotidien
apt-get install console-setup                   # Accès au système via la console série
apt-get install usbutils                            # Outils USB de base
apt-get install isc-dhcp-client                  # En cas de configuration dynamique par un routeur pour le réseau
apt-get install openssh-server                 # Pour se connecter depuis une autre machine via SSH
      # openssh-server retournera une erreur car il dépend du lanceur de service qui ne se lancera
      # (automatiquement) qu'au redémarrage, mais il est bien configuré.
apt-get install rsync ssh-client w3m wget wget curl   # Des clients réseau très utiles
apt-get upgrade  # mettre à jour le système (il vaut mieux le faire après si possible après avoir rebooté pour bénéficier
                           # des logs, dans le cas contraire vous aurez des alertes concernant l'impossibilité de loguer.

Créer l’utilisateur de base, qui aura également les droits de l’administration. J’ai choisi ubuntu et mot de pase ubuntu pour l’exemple d’une image générique, mais vous pouvez choisir votre surnom préféré et il est vivement conseillé de mettre un mote de passe d’au moins 12 caractères mélangeant chiffres lettres et autres ponctuations.

  
adduser ubuntu      # Création de l'utilisateur de base entrez par exemple le mot de passe ubuntu
addgroup ubuntu adm   # lui attribuer les droits d'administration
addgroup ubuntu sudo   # et de sudo root

Si vous n’utilisez pas un serveur DHCP mais une configuration statique, je vous conseil vivement de créer à ce stade vos fichier de configuration réseau, cela sera utile pour récupérer les autres paquets une fois démarré ou pour vous connecter à, votre Cubie depuis le réseau.

Les interfaces réseau se configurent maintenant dans le répertoire suivant, vous pouvez créer un fichier par interface.

/etc/network/interfaces.d/

Console sur port série

Pour la console, ajouter dans /etc/init/, le fichier ttyS0.conf contenant les lignes suivantes :

# console - getty
#
# This service maintains a getty on console from the point the system is
# started until it is shut down again.

start on runlevel [2345]
stop on runlevel [S016]

respawn
exec /sbin/getty -8 115200 ttyS0 vt102

Si vous avez déjà rebooté avant d’ajouter ce fichier, vous pouvez lancer le service (sans besoin de rebooter de nouveau) à l’aide de :

sudo initctl start ttyS0

Réseau

Pour le moment, il faut activer le réseau manuellement après chaque démarrage, je mettrait à jour ce ticket lorsque j’aurais trouvé la solution. Il faut donc créer un fichier /etc/network/interfaces.d/eth0, (sur la version x86, il n’y a plus besoin de créer ces fichiers/lignes, sauf si l’on veut préciser une adresse IP statique)

La solution semble être dans

/etc/udev/rules.d/70-persistent-net.rules 

Qui doit contenir quelque chose du genre (remplacer l’adresse MAC par la votre (vue par ifconfig), ce fichier aurait du être généré automatiquement par le système, ça n’a pas été le cas.

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="02:49:02:41:90:e1", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

J’ai installé xubuntu-desktop au même moment qui avait tout un tas de dépendances, et ça a fonctionné au redémarrage suivant. Je ne suis donc pas certain à 100% que ça n’était pas manquant.

Si ça n’a pas marché, vous pouvez toujours faire :

# interfaces(5) file used by ifup(8) and ifdown(8)
auto eth0
iface eth0 inet dhcp

Pour que l’interface soit montée, tapez :

sudo ifup eth0 -i /etc/network/interfaces.d/eth0

audio de base

Pour activer le son, ajouter alsa-utils pour avoir tous les paquets indispensables, dont alsamixer

apt-get install alsa-utils
adduser ubuntu audio


Vous pouvez maintenant tester en root alsamixer, pour l’utiliser avec l’utilisateur ubuntu, vous devez vous déconnecter et reconnecter pour rendre actif l’ajout dans le groupe

Temps !

Le temps mal réglé peut poser pleins de problèlmes (dont certificats ssl etc…

sudo apt-get install ntpdate     # installe ntpdate
sudo ntpdate fr.pool.ntp.org    # Synchronise sur des bons serveurs près de chez vous
hwclock --systohc --utc            # Sauvegarder le temps bien réglé sur votre horlange interne.

Besoin d’un environnement de bureau graphique ?

Si vous désirez un bureau, vous pouvez l’installer en utilisant :

apt-get install DESKTOP

Où DESKTOP est l’un de ceux disponibles :

Légers :
* lxde (ou lubuntu-desktop), vous pourrez ensuite le démarrer en utilisant lxdm start
* xfce4 (ou xubuntu-desktop), vous pourrez ensuite le démarrer en utilisant lightdm start

Lourds :
* kde-standard, kde-full (ou kubuntu-desktop),
* gnome ou gnome-fallback (une version utilisant moins les ressources graphiques, utile tant que les pilotes graphiques ne sont pas installés)
* ubuntu-desktop, utilise l’interface unity
* ..

Synaptic peut être très pratique pour la gestion via une interface des paquets d’Ubuntu :

sudo apt-get install synaptic

Bonus – kpartx, gestion des images de disque multipartitions

kpartx allow to loopback mount, not only a filesystem image, but a whole multipartition image, you can then accces each partition of the image as a classical partitionned disk. Very handy to update file systems on a whole µSD, NAND or harddrive image making lot of manipulation before copying it on the needed device.

kpartx permet de monter en loopback non pas le fichier image d’une partition, mais un fichier image d’un disque comportant plusieurs partitions. C’est très pratique pour partitionner, formater modifier les contenu des partition d’une image d’un disque SD, µSD, NAND ou disque dur, avant de la copier sur celui-ci.

Utilisation :

kpartx                                       # Renvoie la liste des commandes
kpartx -l fichier.img                   # Liste les partitions de l'image (comme le ferait un fdisk -l fichier.img)
sudo kpartx -a fichier.img          # Monte l'image sur /dev/mapper/loopX comme un disque contenant des partitions
sudo kpartx -a -v fichier.img      # Pareil mais en verbose, affiche les partition et leur fichier de périphériques associés
sudo mount /dev/mapper/loopXpY /mnt  # mount la partition Y du disque X
sudo umount /mnt                    # Démonte la partition
sudo kpartx -d fichier.img          # Retire le fichier image des loopbacks
sudo kpartx -d /dev/loopX          # Pareil mais en utilisant le fichier de device (sans mapper/)

Tuto sur kpartx avec exemples

Laisser un commentaire