Cubieboard2 sous Debian

Installation de Debian Stable (Bullseye) sur un Cubieboard2 .

Article mis en ligne le 21 juin 2022

par Rémi

Description des opérations et déconvenues pour l’installation de Debian sur mon Cubieboard2 qui me sert de routeur Wifi. Comme dans mon article 78, ce sont mes notes utilisées pendant l’installation sur la carte SD. J’y ai rajouté les problèmes que je découvre et surtout comment je les résous.

-- Liste des opérations
--#################################################################################################--
-- Avant tout:
   -- Source des fichiers debian:
      http://ftp.debian.org/debian/dists/buster/main/installer-armhf/current/images/netboot/SD-card-images/

    -> firmware pour cubieboard2:
        http://ftp.debian.org/debian/dists/buster/main/installer-armhf/current/images/netboot/SD-card-images/firmware.Cubieboard2.img.gz

    -> image système Debian (même si ont va tout modifier)
       http://ftp.debian.org/debian/dists/buster/main/installer-armhf/current/images/netboot/SD-card-images/partition.img.gz

 => Création de limage pour la carte:
    # zcat firmware.Cubieboard2.img.gz partition.img.gz > complete_image.img
--#################################################################################################--

-- copie sur la carte sd
# dd if=./complete_image.img of=/dev/mmcblk1
-- retirer la carte et la remettre pour être vu par le système
-- elle est formaté en vfat et fait 96M
# df
/dev/mmcblk1p1                        97437     46808      50629  49% /media/remi/4CF0-A776

-- Reprendre la carte avec gparted ou fdisk :
-- 1/ laisser la partition 1 mais la refaormater en ext4
-- 2/ mettre une nouvelle de <le reste de la carte en ext4>
-- 3/ bien laisser l'indicateur de boot sur la partition 1

# fdisk /dev/mmcblk1

Bienvenue dans fdisk (util-linux 2.37.3).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.


Commande (m pour l'aide) : p
Disque /dev/mmcblk1 : 7,42 GiB, 7962886144 octets, 15552512 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x26d7e8ce

Périphérique   Amorçage Début    Fin Secteurs Taille Id Type
/dev/mmcblk1p1 *         2048 199999   197952  96,7M  c W95 FAT32 (LBA)

Commande (m pour l'aide) : n
Type de partition
  p   primaire (1 primaire, 0 étendue, 3 libre)
  e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (2-4, 2 par défaut) : 2
Premier secteur (200000-15552511, 200704 par défaut) :
Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (200704-15552511, 15552511 par défaut) :

Une nouvelle partition 2 de type « Linux » et de taille 7,3 GiB a été créée.

Commande (m pour l'aide) : t
Numéro de partition (1,2, 2 par défaut) : 1
Code Hexa ou synonyme (taper L pour afficher tous les codes) :83

Type de partition « W95 FAT32 (LBA) » modifié en « Linux ».

Commande (m pour l'aide) : p
Disque /dev/mmcblk1 : 7,42 GiB, 7962886144 octets, 15552512 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x26d7e8ce

Périphérique   Amorçage  Début      Fin Secteurs Taille Id Type
/dev/mmcblk1p1 *          2048   199999   197952  96,7M 83 Linux
/dev/mmcblk1p2          200704 15552511 15351808   7,3G 83 Linux

Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
Synchronisation des disques.

-- formater:
# mkfs.ext4 /dev/mmcblk1p1
mke2fs 1.46.5 (30-Dec-2021)
/dev/mmcblk1p1 contains a vfat file system
Proceed anyway? (y,N) y
Discarding device blocks: done                            
Creating filesystem with 98976 1k blocks and 24752 inodes
Filesystem UUID: 03e14409-39f5-4f3b-b662-da7add717013
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

# mkfs.ext4 /dev/mmcblk1p2
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done                            
Creating filesystem with 1918976 4k blocks and 480496 inodes
Filesystem UUID: 5362753e-ff20-4b6d-8748-d67bbfdbe401
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

--#################################################################################################--

-- La carte est créé avec le spl et uboot!
-- Reste à installer le systeme

Créer un fichier de configuration "multistrap.conf"
# cat multistrap.conf
[General]
arch=armhf
directory=/mnt/
cleanup=true
noauth=false
unpack=true
explicitsuite=false
aptsources=Debian
bootstrap=Debian

[Debian]
#packages=
source=http://ftp.fr.debian.org/debian
components=main contrib non-free
keyring=debian-archive-keyring
suite=bullseye

[Net]
packages=netbase net-tools udev ifupdown isc-dhcp-client ssh dropbear

[Utils]
packages=apt-utils dialog locales adduser vim bash less wget curl dialog usbutils rsync tmux

-- !!!! malgré la configuration ci dessus, certains paquets ne sont pas !!!!
-- !!!! installés. A vérifier après, quand on aura la main              !!!!

-- Installer selon la config, un système dans /mnt:
# multistrap -d /mnt -f multistrap.conf

-- copier /usr/bin/qemu-arm-static dans le répertoire du chroot
cp /usr/bin/qemu-arm-static /mnt/usr/bin

-- monter la sdcard-p1 dans sdcard-p2/boot
# umount /dev/mmcblk1p1
# mount /dev/mmcblk1p1 /<point de montage sdcard-p2>/boot/

-- copier le contenu dans la partie 2 de la sdcard
# cp -a /mnt/* /<point de montage de la sdcard-p2>/

-- Je remonte tout dans /mnt
umount /<point de montage de la sdcard-p2>boot/
umount /<point de montage de la sdcard-1>/
mount /dev/mmcblk1p2 /mnt/
mount /dev/mmcblk1p1 /mnt/boot/

-- installation de la suite en quemu avec systemd-nspawn
# systemd-nspawn -D /mnt

-- Pour l'installation, il va y avoir quelques problèmes, car nous sommes en chroot/container.
-- donc pas de visibilité des disques. Il faut donc les passer en paramètres les disques.
-- La commande devient donc:

# systemd-nspawn --bind-ro=/dev/mmcblk1p1 --bind-ro=/dev/mmcblk1p1 --bind-ro=/dev/mmcblk1p2 --bind-ro=/dev/disk -D /mnt/

-- Pour la suite:
-- Tenter ça avant toute opération. J'ai l'impression que l'installation
-- n'est pas terminé en fait.
# dpkg --configure -a

-- Si erreur "ReadLine.pm ... "
-- ou/et "debconf: unable to initialize frontend: Readline"
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

-- Si vous êtes sur que les locales sont là, ne pas oublier de faire:
# dpkg-reconfigure locales
-- et d'utiliser fr_FR.UTF-8 . Pas la peine de configurer le clavier, il n'y en aura pas (pour mon utilisation en tout cas) Et pas oublier console-setup (au cas ou...)

-- Paramétrer la machine, sinon, initramfs plantera:
Fichiers à modifier avant l'installation de linux-image:
# vi /etc/flash-kernel/machine
Cubietech Cubieboard2

  -- pour un bon retour visuel :
/etc/inittab
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

-> /etc/fstab (corriger les UUID selon les partitions)
# <file          system>        <mount point>           <type>  <options>                       <dump>  <pass>
# / was on /dev/mmblk0p2 during installation
UUID=6d93a8c7-15de-4b97-afe2-592766eb356f       /               ext4    defaults,noatime,commit=120     0       1

# /boot was on /dev/mmblk0p1 on installation
UUID=0d721f69-66e3-4608-95ff-cf768b9cdb46       /boot           ext4    defaults,noatime,commit=120     0       0

# pour overayfs / tmpfs
tmpfs                                           /tmp/           tmpfs   defaults,size=256M      0       0
tmpfs                                           /var/tmp        tmpfs   defaults,size=256m      0       0

-- /etc/default/flash-kernel (et installer le paquet flash-kernel )
LINUX_KERNEL_CMDLINE="quiet"
LINUX_KERNEL_CMDLINE_DEFAULTS=""
LINUX_KERNEL_CMDLINE="console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}"

-- Avant d'installer l'image linux, configurer l'imitramfs pour ne pas avoir de partition swap (pas de resume pour le mode suspend)

/etc/initramfs-tools/conf.d/resume
RESUME=none

-- Une fois les modifications ci dessus faites:
-- installer  (avec leurs dépendances):
--     . linux-image-armmp (méta-paquet)
--     . initramfs-tools
--     . u-boot
--     . u-boot-tools
--     . flash-kernel

-- Configuration:
-> nom machine
/etc/hostname => hmu
/etc/hosts :
127.0.0.1 localhost
127.0.0.1 hmu
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters


-- /etc/rc.local pour les diodes:
# cat /etc/rc.local
#!bin/sh
# enable led in boot

# led verte : écritures sur disque (mmc: oui , ssd, ...?)
echo "mmc0" > /sys/class/leds/cubieboard\:green\:usr/trigger
# led bleu : herthbled: selon l'utilisation du processeur
echo "cpu" > /sys/class/leds/cubieboard\:blue\:usr/trigger
# si heartbleed marche pas, remettre 255 ligne suivante
# echo "255" > /sys/class/leds/cubieboard\:blue\:usr/brightness
-- après création:
# chmod +x /etc/rc.local

-- Pour modifier le nom de l'interface réseau:
-- A modifier / créer:
# vi /etc/udev/rules.d/50-lan.rules
# interface MAC address "xx:xx:xx:xx:xx:xx" pour assigner une adresse "wlanx" au lieu de "wlx147852369"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlx*", NAME="wlan0"
-- si problème pour trouver l'adresse mac:
# cat /sys/class/net/wlx04d9f514f57b/address

-- Si la carte sd est monté en read only au boot, il manque des lien vers fsck.
-- Pour corriger ça, créer:
vi /etc/initramfs-tools/hooks/e2fsck.sh
#!/bin/sh
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/e2fsck /sbin
copy_exec /sbin/fsck /sbin
copy_exec /sbin/fsck.ext2 /sbin
copy_exec /sbin/fsck.ext4 /sbin
copy_exec /sbin/logsave /sbin

-- et relancer
# update-initramfs -c -k <n° du noyau> -b /boot

-- Si l'erreur suivante apparait au moment de l'update-initramfs:
"dropbear: WARNING: Invalid authorized_keys file, SSH login to initramfs won't work!"
Il faut créer le fichier
/etc/dropbear-initramfs/authorized_keys
et y placer vos clefs public (type ~/.ssh/id_rsa.pub)

-- et relancer
# update-initramfs -c -k <n° du noyau> -b /boot

-- Si erreurs
-- "cryptsetup: ERROR: Couldn't resolve device /dev/sda2"
-- "I: The initramfs will attempt to resume from /dev/sda2"
-- "I: Set the RESUME variable to override this"
-- faite:
# vi /etc/initramfs-tools/conf.d/resume
RESUME=none

-- et relancer
# update-initramfs -c -k <n° du noyau> -b /boot

-- Si la partition /boot (/dev/mmcblk1p1) est en ext4 : pas de souci avec les liens. Sinon, refaite tout avec cette partition en ext4 (ou ext2 mais pas en vfat)


-- pas oublier d'installer sudo
-- modifier le passwrd root (au cas ou)
-- créer un user
-- installer rasp-ap si vous voulez
  => installation: curl -sL https://install.raspap.com | bash
  => mise à jour: curl -sL https://install.raspap.com | bash -s -- --upgrade


Dans la même rubrique