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

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

jeudi 2 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!