Cubieboard1 et Debian (modifié le 19/06/2022)

Installation de Debian sur un Cubieboard (A10) Mais ça, ce n’est qu’un test, avant une installation "en prod" sur un Cubiebord2. L’installation de ce dernier est ici

Article mis en ligne le 2 juin 2022
dernière modification le 19 juin 2022

par Rémi

J’ai galéré pour faire repartir mon Cubieboard
Je vous mets ici le fichier texte que j’ai maintenue à jour au fur et à mesure de mes manipulations pour y arriver.
Et aujourd’hui, It’s Work !!!

--#################################################################################################--
-- 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
--#################################################################################################--

Pour faire un chroot/container armhf sur amd64:

# apt install g++-arm-linux-gnueabihf qemu binfmt-support qemu-user-static systemd-container

-- Installer avant un systeme complet avec multistrap:
-- => creer un fichier de config multistrap.conf
-- => executer
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

# mount <point de montage de la carte sd> /mnt
   ---------- montage des répertoires du systeme global ----------
MONTAGE=<point de montage>
# mount /dev/<partition1> $MOUNTAGE/boot
# systemd-nspawn -D $MONTAGE
-- sur une autre console, en parallèle
# for f in dev dev/pts sys proc run ; do mount --bind /$f $MONTAGE/$f ; done  

-- revenir sur la console ou a été éxécuté sytemd
-- pour sortir:
# exit
   ---------- à la sortie du chroot (de systemd-nspawn) ----------
# for f in dev/pts dev sys proc run ; do umount $MONTAGE/$f ; done
# umount $MONTAGE/boot

-- pour l'erreur  No sandbox user '_apt' on the system, can not drop privileges
-- installer systemd corrige une partie du problème.
-- penser à installer:
--     . dialog
--     . apt-utils
--     . linux-image-armmp (méta-paquet)
--     . openssh-server
--     . network-manager
--     . keyboard-configuration   <= pour le clavier en français
--     . console-setup            <= pour le clavier en français
--     . locales                  <= pour le clavier en français
-- !!!! penser à remplir /etc/fstab !!!!
-- Si problème de script au boot (initrd ne trouve par les scripts dans /scripts/xxx

-- Si besoin, pour le clavier, si à l'installation on c'est mélangé les doigts:
# dpkg-reconfigure keyboard-configuration
# service keyboard-setup restart


=> remonter le chroot
  -- y compris la partition boot dans /boot
  -- recréer le initrd comme suit:
  # blkid       <-  a executer si besoin, mais trouve t il les partitions?
  # vi /etc/initramfs-tools/conf.d/resume
  -- le fichier resume nexiste pas, il faut le créer
  -- ajouter la ligne suivante pour dire qu'il n'y a pas de swap :
    RESUME=none
  -- Sauver et executer
  # update-initramfs -u -v
  -- ou si besoin de le recréer (attention au n° de version du noyau):
  # update-initramfs -c -k 5.10.0-13-armmp -b /boot

=> recréation du boot.scr et autre modification
  -- à partir de la variable $MONTAGE
  # mkdir $MONTAGE/etc/flash-kernel/
  # echo "Cubietech Cubieboard" >> $MONTAGE/etc/flash-kernel/machine
  # echo 'LINUX_KERNEL_CMDLINE="console=ttyS0,115200 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:1280x1024p60 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}"' >> $MONTAGE/etc/default/flash-kernel

  -- !!! sur la ligne ci dessus, ce qui est important, c'est la partie:
  --     root=/dev/mmcblk0px
  --  chez moi, c'est p2 et non p1 puisque
  --  p1 = la partition fat32 de boot
  --  p2 = la partition systeme
  -----------------------------------------------

  # echo "rtc_sunxi" >> $MONTAGE/etc/initramfs-tools/modules
  -- Si vous ne l'avez pas encore fait, changer le hostname
  # echo "HOSTNAME" > $MONTAGE/etc/hostname
  -- ajouter le localhost si non défini
  # echo "127.0.0.1 localhost" > $MONTAGE/etc/hosts
  # echo "::1             localhost ip6-localhost ip6-loopback" >> /$MONTAGE//etc/hosts
  # echo "ff02::1         ip6-allnodes" >> $MONTAGE/etc/hosts
  # echo "ff02::2         ip6-allrouters" >> $MONTAGE/etc/hosts
  -- pour un bon retour visuel :
  # echo "T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100" >> $MONTAGE/etc/inittab

  -- on continue avec uboot
  # apt install u-boot u-boot-tools

 -- pas oublier de générer un mot de passe root :)
 # passwd
 -- on a déjà presque tout (vmlinuz initrd ...)
 -- reste à générer un boot.scr
 # flash-kernel
 -- !!! pour que flash-kernel fonctionne il m'a fallut placer le bon dtb au bon endroit malgré le message d'erreur
 # cp /boot/dtbs/sun4i-a10-cubieboard.dtb /etc/flash-kernel/dtbs/
 -- !!! Si flash-kernel ne passe pas avec une erreur de création de lien symbolique
 -- c'est peut être que vous avez une partition en vfat (pas de lien sur du vfat)
 -> la solution:
 # mkdir /boot/dtb
 -- dans la vrai machine créer un fichier
 # dd if=/dev/zero of=/tmp/vdisk1 bs=1M count=100
 # mkfs.ext4 /tmp/vdisk1
 -- faire un montage de vdisk1 sur le vfat (depuis mnt vers le chroot)
 # mount /tmp/vdisk1 /mnt
 # mount --bind /mnt/ $MONTAGE/boot/dtb
 -- Et voila!

 -- Mais flash-kernel demande trop de lien à droite et à gauche sur la partition fat32.
 -- Pour s'en sortir:
   -> copier le contenu de la partition fat32 dans /boot
      sans l'avoir monté dans /boot bien sur. Ainsi on aura temporairement
      un répertoire en ext4
   -> refaire le chroot
   -> relancer flash-kernel
   -> copier boot.scr sur la bonne partition de boot, et effacer /boot

Et hop!

Mise en marche sur le Cubieboard:
Si vous avez ce genre d'erreur:
E: Release file for http://ftp.fr.debian.org/debian/dists/bullseye/InRelease is not valid yet (invalid for another 5d 14h 17min 4s). Updates for this repository will not be applied.

-- C'est que vous n'etes pas à l'heure. Systemd peut vous aider:
-- configurer d'abord /etc/systemd/timesyncd.conf:

FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048

-- au moins ces 4 lignes
-- puis relancer systemd:
# systemctl restart systemd-timesyncd
-- et le status pour voir si c'est bon
# systemctl status systemd-timesyncd

-- Mais attention, c'est peut être que votre système c'est monté en 'read only'

--#################################################################################################--
-- Installation de raspap
-- on peut tenter une installation comme sur la doc :
# apt install curl wget
# curl -sL https://install.raspap.com | bash

-- paquet pendant l'installation:
easy-rsa libccid libpkcs11-helper1 opensc opensc-pkcs11 openvpn pcscd
wireguard wireguard-tools

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

-- Type de fichier /etc/fstab:
# cat /etc/fstab
# <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

-- La partition boot peut être en ext4 (ou 2) mais il faut l'indicateur 'boot'

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



Et hop!


Dans la même rubrique