Odroid C4 : configurer armbian bookworm
Rédigé par Alexandre le 2023-08-01
J'ai pris beaucoup de retard sur les mises à jour de mon infrastructure suite à beaucoup de changement dans ma vie. Du coup, je suis en train de combler mon retard et je commence tout naturellement par mes hôtes LXD.
Fidèle à mes principes, je ne fais pas de mises à jour, je réinstalle. Du coup dans cet article je réinstalle un Odroid C4 avec la dernière version d'Armbian sous Debian 12, alias Bookworm.
Cette documentation a été rédigée et testée en utilisant l'image minimale CLI en version 6.1.30. Le contenu de cette documentation peut être modifié à tout moment afin de coller avec mes besoins.
Installer
Cette documentation ne donne pas les détails sur l'installation de armbian sur la carte SD ou l'eMMC, toutefois voici comment je procède :
- Télécharger la dernière version Debian de armbian sur le site officiel
- Vérifier l'intégrité de l'image téléchargée
- Positionner l'eMMC sur la clef USB permettant de la connecter à un ordinateur
- Ouvrir gnome-disk-utility
- Sélectionner l'eMMC
- Utiliser le menu des trois points verticaux (tout en haut à droite)
- Choisir Restaurer l'image disque...
- Chercher l'image d'armbian en cliquant sur (Aucun)
- Lancer en utilisant le bouton Démarrer la restauration...
- Une fois la restauration terminée, éjecter l'eMMC via le bouton adéquat (en haut à droite)
- Remettre l'eMMC dans la machine
Premier démarrage
Une fois le système démarré, il faut trouver son IP. Personnellement je cherche dans la liste des baux DHCP de ma box internet et tente le SSH sur chaque IP dont je ne connais pas le périphérique. Dans mon cas, le DHCP a attribué l'IP 192.168.1.221.
Se connecter via SSH :
ssh root@192.168.1.221
Le mot de passe par défaut est indiqué ici. Après l'avoir saisi, nous sommes invité à le changer :
New root password: *********
Repeat password: *********
Nous sommes maintenant invité à changer les options régionales :
1) bash
2) zsh
Shell: BASH
Pour finir, il nous est proposé de créer un utilisateur, ce que je ne fais pas.
Configuration
Réseau
Définir la configuration réseau afin d'avoir une IP statique :
sudo tee /etc/network/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug end0
iface end0 inet static
address 192.168.1.6/24
gateway 192.168.1.254
dns-nameservers 193.110.81.9 185.253.5.9 80.67.169.12
EOF
NB : je ne configure pas d'IPv6 parce que celle-ci est amenée à changer lors du redémarrage de ma box internet.
Faire le ménage dans les paquets liés au réseau :
sudo apt purge --autoremove network-manager iperf3 ifenslave ethtool fping iputils-arping isc-dhcp-client netcat-openbsd build-essential aptitude* autoconf automake autotools-dev avahi-autoipd bind9-*
Installer les paquets utilisés normalement par Debian pour gérer le réseau :
sudo apt install ifupdown resolvconf
Gestionnaire de paquets
Créer un fichier personnel de configuration d'apt :
sudo tee /etc/apt/apt.conf.d/99custom <<EOF
APT::Install-Recommends "false";
APT::Install-Suggests "false";
APT::Get::Show-Versions "true";
APT::Get::Show-Upgraded "true";
APT::Get::Purge "true";
APT::Get::List-Cleanup "true";
EOF
Nettoyer les dépôts inutiles et utiliser les serveurs français :
sudo tee /etc/apt/sources.list <<EOF
deb https://deb.debian.org/debian/ bookworm main
deb https://deb.debian.org/debian/ bookworm-updates main
deb https://deb.debian.org/debian/ bookworm-backports main
deb http://security.debian.org/debian-security bookworm-security main
EOF
Désactiver la source desktop :
sudo sed -i 's/ bookworm-desktop//g' /etc/apt/sources.list.d/armbian.list
Prendre en compte les changements :
sudo apt update
Faire le ménage au niveau des paquets :
sudo apt purge --autoremove alsa-utils aptitude* autoconf automake bison bsdmainutils bsdextrautils build-essential bzip2 chrony console-setup* command-not-found cpufrequtils cracklib-runtime device-tree-compiler dialog dirmngr distro-info-data dnsutils dosfstools dpkg-dev evtest expect fbset f2fs-tools f3 figlet flex fuse g++* gir1.2* gnupg* gpg gpg-* gpgconf gpgsm hdparm hostapd html2text htop iotop iptables iso-codes iw jq keyboard-configuration kbd lsb-release lsof m4 make man-db mailcap mmc-utils ncurses-term net-tools networkd-dispatcher nocache ntfs-3g parted patch pciutils pinentry-curses policykit-1 psmisc pv qrencode rfkill selinux-utils screen software-properties-common stress sunxi-tools sysfsutils tcl-expect tcl8.6 tmux toilet* unicode-data unzip usb.ids usbutils vim* vlan wget wireless* wireguard* wpasupplicant xkb-data xxd xz-utils zsh*
Un brin de ménage au niveau fichier :
sudo rm -R /etc/NetworkManager /usr/lib/chromium-browser /var/log/unattended-upgrades /root/.oh-my-zsh /root/.config /root/.zshrc
Supprimer les paquets orphelins :
sudo apt install --assume-yes deborphan dialog &&\
sudo apt purge --assume-yes --autoremove $(deborphan)
Mettre à jour le système :
sudo apt full-upgrade
Installer les paquets habituels :
sudo apt install htop locales ca-certificates curl sudo rsync tmux git nftables vim vim-airline
NB : ignorer les messages qui disent que les paquets sont déjà installés.
La configuration par défaut de vim
sous Debian est une horreur pour moi, donc je la change :
sudo tee /etc/vim/vimrc.local <<EOF
set nocompatible
set backspace=indent,eol,start
set confirm
set number
set expandtab
set smarttab
set shiftwidth=2
set tabstop=2
" Turn on syntax highlighting by default
syntax on
" Configure airline plugin
let g:airline#extensions#tabline#enabled = 1
EOF
Options régionales
Configurer la langue du système :
sudo rm /etc/default/locale &&\
sudo locale-gen fr_FR.UTF-8 &&\
sudo dpkg-reconfigure locales
Dans la fenêtre qui s'ouvre :
- Chercher
fr_FR.UTF-8
- Cocher en appuyant sur la barre espace
- Valider avec la touche
Entrée
- Choisir
fr_FR.UTF-8
- Terminer avec la touche
Entrée
Configurer le fuseau horaire :
sudo dpkg-reconfigure tzdata
Dans la fenêtre qui s'ouvre :
- Sélectionner
Europe
- Valider avec la touche
Entrée
- Chercher
Paris
- Terminer avec la touche
Entrée
Nom d'hôte
Définir un nom d'hôte :
newHostname="infra-odroidc4-thaumas"
Modifier le nom d'hôte :
hostnamectl set-hostname $newHostname; \
sudo sed -i "s#odroidc4#$newHostname#g" /etc/hosts
Protocole de temps réseau
Installer le paquet systemd permettant de synchroniser le temps via le réseau :
sudo apt install systemd-timesyncd
Définir les serveurs NTP à utilisé pour se synchroniser :
sudo tee /etc/systemd/timesyncd.conf <<EOF
[Time]
NTP=0.fr.pool.ntp.org 1.fr.pool.ntp.org 2.fr.pool.ntp.org 3.fr.pool.ntp.org
FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
EOF
Activer la synchronisation de l'heure via systemd
:
sudo timedatectl set-ntp true
Vérifier :
$ sudo timedatectl
Local time: Tue 2023-08-01 10:31:04 UTC
Universal time: Tue 2023-08-01 10:31:04 UTC
RTC time: Tue 2023-08-01 10:31:04
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Utilisateur
Définir le nom de l'utilisateur :
newUser="alexandre"
Créer un compte utilisateur :
adduser $newUser
Ajouter le nouvel utilisateur au groupe sudo afin de permettre une élévation de privilèges :
adduser $newUser sudo
Se connecter en SSH via ce nouvel utilisateur :
ssh alexandre@192.168.1.221
Personnaliser bash :
tee --append ~/.bashrc <<EOF
# custom
PS1='\${debian_chroot:+($debian_chroot)}\[\033[0;36m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$ '
alias ls='ls --color=auto -lah --group-directories-first'
alias df='df -h --exclude-type=tmpfs --exclude-type=devtmpfs'
EOF
Prendre en compte les changements :
source ~/.bashrc
SSH
Réinstaller le serveur SSH :
sudo apt purge --autoremove --assume-yes openssh-server &&\
sudo rm -r /etc/ssh/; \
sudo apt install --assume-yes openssh-server
Configurer SSH afin de pouvoir se connecter en SSH via une paire de clef.
Redémarrer :
sudo rm /etc/resolv.conf &&\
cd /etc && sudo ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf &&\
sudo reboot
Après le redémarrage, se connecter via la nouvelle IP :
ssh alexandre@192.168.1.6
Pare-feu
Créer les règles du pare-feu (ici on autorise SSH sur le port 22) :
sudo tee /etc/nftables.conf <<EOF
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
# accept any localhost traffic
iif lo accept
# accept traffic originated from us
ct state established,related accept
# accept neighbour discovery otherwise IPv6 connectivity breaks.
ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept
## Custom
# Allow SSH from ANY
tcp dport 22 accept
# count and drop any other traffic
counter drop
}
}
EOF
Activer le pare-feu :
sudo systemctl start nftables
Tester une connexion en SSH via un autre terminal. Si cela ne fonctionne pas, utiliser l'interface de Kimsufi pour redémarrer le serveur et corriger le fichier de configuration du pare-feu. Si cela fonctionne, activer le pare-feu au démarrage :
sudo systemctl enable nftables
Complément
Installer un paquet permettant d'avoir une entropie convenable :
sudo apt install haveged
Conclusion
La machine est maintenant prête à recevoir vos services.