Objectif
En vue de faire tourner Debian sur le WRT1900AC, en plus de créer un firmware, j'ai du créer un système de fichier linux dont je liste les étapes.
/!\
Stocké le système de fichier linux sur une clef USB est déconseillée sauf si le contrôleur incorpore la technologie du "wear levelling" comme la Sandisk Extrem ou la Corsair voyager GTX. En effet, certains secteurs de stockage s'useront beaucoup trop rapidement à cause des différents fichiers journaux (/var/log), fichier temporaire(/tmp), fichier de pid, etc... Gardez une chose à l'esprit, plus la clef est petite, plus une partie de la clef va s'user rapidement par rapport à l'autre.
Préparation du système
La construction d'un système de fichier se décompose en 2 phases par l'intermediaire du programme debootstrap.
Installation des paquets
apt-get install debootstrap qemu-user-static arm-none-eabi*
- Liste des architectures disponible :
alpha amd64 arm arm64 armel armhf hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 m68k mipsel mips powerpc ppc64el s390 s390x sh sparc
Phase 1
- Par exemple :
Pour un routeur WRT1900AC d'architecture armhf :
mkdir -p /home/WRT1900AC/jessie-armhf cd /home/WRT1900AC/jessie-armhf debootstrap --foreign --no-check-gpg --arch=armhf jessie /home/WRT1900AC/jessie-armhf ftp://ftp.debian.org/debian/ cp /usr/bin/qemu-arm-static /home/WRT1900AC/jessie-armhf/usr/bin/ cp /etc/resolv.conf /home/WRT1900AC/jessie-armhf/etc/
Phase 2
- Avec chroot, on rentre dans le nouveau system de fichier et on exécute la 2e phase.
chroot /home/WRT1900AC/jessie-armhf echo WRT1900AC > /etc/hostname /debootstrap/debootstrap --second-stage
- tweak
passwd -d root cat < /etc/apt/sources.list deb http://ftp.de.debian.org/debian jessie main contrib non-free deb http://ftp.de.debian.org/debian jessie-updates main contrib non-free deb http://security.debian.org/debian-security jessie/updates main contrib non-free EOF apt-get update apt-get install ca-certificates locales localepurge dialog openssh-server ntpdate debconf dpkg-reconfigure locales # configure la zone dpkg-reconfigure tzdata #configure la time zone apt-get dist-upgrade cat <> /etc/network/interfaces allow-hotplug br-lan0 iface br-lan0 inet static address 192.168.10.10 gateway 192.168.10.1 netmask 255.255.255.0 bridge_ports eth0 eth1 EOF apt-get clean exit
En 1 script
- Si on factorise, execution des 2 phases en 1 script :
#!/bin/bash
MACHINE=WRT1900AC
ARCH=armhf
DIR=/home/${MACHINE}
DEPOT=http://ftp.debian.org/debian/
CODE=jessie
IP=192.168.0.1
MASK=255.255.255.0
GW=192.168.0.254
PWD_ROOT=MotDePasse
mkdir -p ${DIR}/${CODE}-${ARCH}
cd ${DIR}/${CODE}-${ARCH}
echo "1e phase..."
debootstrap --foreign --no-check-gpg --arch=${ARCH} ${CODE} ${DIR}/${CODE}-${ARCH} ${DEPOT}
cp /usr/bin/qemu-arm-static ${DIR}/${CODE}-${ARCH}/usr/bin/
cp /etc/resolv.conf ${DIR}/${CODE}-${ARCH}/etc/
echo ${MACHINE} > ${DIR}/${CODE}-${ARCH}/etc/hostname
cat < ${DIR}/${CODE}-${ARCH}/startup
echo "2e phase..."
/debootstrap/debootstrap --second-stage
echo "root:${PWD_ROOT}" | chpasswd
cat < /etc/apt/sources.list
deb ${DEPOT} ${CODE} main contrib non-free
deb ${DEPOT} ${CODE}-updates main contrib non-free
deb http://security.debian.org/debian-security ${CODE}/updates main contrib non-free
FILE
apt-get update
apt-get install ca-certificates locales localepurge dialog openssh-server ntpdate debconf -y
apt-get dist-upgrade -y
cat <> /etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static
address ${IP}
gateway ${GW}
netmask ${MASK}
FILE
apt-get clean
exit
EOF
chmod +x ${DIR}/${CODE}-${ARCH}/startup
chroot ${DIR}/${CODE}-${ARCH} /startup
echo "Si besoin :
Pour configurer les variables LC : dpkg-reconfigure locales
Pour configurer la time zone Paris : dpkg-reconfigure tzdata"
Après le firmware, il faut un système de fichier pour le WRT1900AC.