Accueil > Linux > Cubieboard1 et Debian (modifié le 19/06/2022)
Cubieboard1 et Debian (modifié le 19/06/2022)
jeudi 2 juin 2022, par
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!