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