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!