hardware:jednodeskove-pocitace:espressobin:instalace-armbianu

Instalace distribuce Armbian na Espressobin

Poznámka k datu vzniku: Tento článek vychází z praktické zkušenosti z 5. 6. 2021. Postup odpovídá tehdejším verzím Armbianu, firmware a doprovodných balíků a dnes už nemusí přesně odpovídat aktuálnímu stavu.

Již nějakou dobu jsem měl zprovozněný router Espressobin s distribucí Armbian. Bohužel zhruba každý měsíc jsem měl přepnutý filesystem do režimu readonly a vždycky bylo příčinou poškození filesystemu. Tentokrát bylo poškození tak fatální, že jsem routeru přestal důvěřovat a rozhodl jsem se pro novou instalaci.

Mé rozhodnutí podpořilo ještě několik dalších důvodů. Zjistil jsem, že je připravený nový firmware datovaný k 4. 1. 2021. Doufal jsem tedy, že nový firmware pomůže k lepší stabilitě. Pro moji verzi Espressobinu se jednalo o firmware flash-image-ddr4-1g-1cs-1000_800.bin.

Na Armbianu jsem měl starší jádro, takže dalším vylepšením bylo novější jádro. A jako poslední důvod, proč jsem do toho šel, byla výměna SD karty za SanDisk High Endurance, která by měla být odolnější proti neustálému přepisování.

SanDisk High Endurance

Srovnání odolnosti paměťových karet

Nejprve je potřeba flashnout bootovací firmware. Postup i aktuální firmware je popsaný na stránkách Armbianu. Nejprve je nutné nahrát firmware na flash disk formátovaný na FAT32. Flash disk připojit do USB 3.0 portu Espressobinu. Mít vytaženou SD kartu, aby se systému nepodařilo nabootovat. Připojit napájení a připojit se přes terminál pomocí minicomu.

Pak stačí napsat:

bubt flash-image-ddr4-1g-1cs-1000_800.bin spi usb

Za pár vteřin dojde k aktualizaci firmware. Jen upozorňuji, že příkazová řádka nenapoví, jaké soubory jsou na USB disku. Musel jsem název napsat přesně a musí se shodovat s názvem firmware, který bude instalován.

Ze stránek Armbianu jsem stáhnul aktuální image distribuce pro Espressobin založenou na jádře 5.10. Image jsem rozbalil a nahrál na SD kartu.

xz -d Armbian_21.05.1_Espressobin_buster_current_5.10.34.img.xz
dd if=Armbian_21.05.1_Espressobin_buster_current_5.10.34.img of=/dev/sda bs=1024k status=progress

Pak už jen stačilo vložit SD kartu do Espressobinu a nabootovat. Armbian jako první krok po nabootování zvětší filesystem na maximum konkrétní SD karty. Poté provede základním nastavením, jako je heslo pro roota a vytvoření nového uživatele.

Po přihlášení do systému se zobrazí základní informace, tedy MOTD. V posledním řádku jsem měl chybu. Funkčně to nemělo na nic vliv, ale hodně mě to dráždilo.

RX today: Error: Unable to read database "/var/lib/vnstat/br0": No such file or directory Merge "br0+eth0+lan0+lan1+wan+wlp1s0+w" failed.

Příčina problému byla v tom, že systém nemohl rozhodnout, která síťová karta bude primární. Když se podíváme na výpis vnstat, ukazuje kolik dat se přeneslo přes které zařízení.

vnstat

Řešením byla oprava v souboru /etc/default/armbian-motd. Zakomentoval jsem původní řádek s PRIMARY_INTERFACE a změnil jej na zařízení, které chci vidět:

#PRIMARY_INTERFACE="$(ls -1 /sys/class/net/ | grep -v lo | sed -n -e 'H;${x;s/\n/+/g;s/^+//;p;}')"
PRIMARY_INTERFACE="eth0"

Espressobin využívám jako router. Internet mám připojený do zařízení lan1. V routeru mám připojenou mini PCI kartu Wi-Fi 5 GHz a USB Wi-Fi kartu 2,4 GHz.

Zbytek zařízení mám tedy v bridgi a pro přístup do internetu budou forwardovány na lan1. Prvním krokem bylo nastavit síťová zařízení v /etc/systemd/network.

# /etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/10-br0.network
[Match]
Name=br0
 
[Network]
#DHCP=ipv4
DHCP=no
Address=192.168.1.1/24
# /etc/systemd/network/10-eth0.network
[Match]
Name=eth0
 
[Network]
DHCP=ipv4
# /etc/systemd/network/10-lan0.network
[Match]
Name=lan0
 
[Network]
Bridge=br0
# /etc/systemd/network/10-lan1.network
[Match]
Name=lan1
 
[Network]
#Bridge=br0
#DHCP=ipv4
# /etc/systemd/network/10-wan.network
[Match]
Name=wan
 
[Network]
Bridge=br0

Protože mám statickou IP adresu, nastavil jsem ji editací souboru /etc/network/interfaces:

auto lan1
iface lan1 inet static
           address xx.xx.xx.xx
           netmask 255.255.255.255
           gateway xx.xx.xx.xx

Pokud bych si nechal přidělovat IP adresu z DHCP, tak je u mého poskytovatele vázána na MAC adresu síťové karty. Může se stát, že v čase budu něco konfigurovat a budu chtít využít dynamického přidělování, tak ať nejsem nemile překvapen. Rovnou jsem změnil MAC adresu síťového zařízení lan1. MAC adresa se nastavuje v souboru /boot/armbianEnv.txt.

Nejprve jsem si vypsal přehled síťových zařízení, která systém vidí, a následně porovnal se souborem /boot/armbianEnv.txt. V mém případě jsem potřeboval změnit MAC adresu zařízení eth3addr.

verbosity=1
emmc_fix=off
spi_workaround=off
eth1addr=0E:BA:9F:93:CB:03
eth2addr=fa:ad:4e:84:25:2f
eth3addr=D0:AF:CC:23:24:ED
rootdev=UUID=4ab813fc-eda7-41af-a81e-1dca466c4454
rootfstype=ext4 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

Jeden z kroků, který u serverů dělám, je změna portu, na kterém běží SSH démon.

grep -i port /etc/ssh/sshd_config
# Port 8888
systemctl restart sshd

Pro kontrolu jsem si vypsal, zda jádro detekovalo obě Wi-Fi zařízení.

lspci
lsusb

To vypadalo nadějně, ale když jsem dal vypsat konkrétní jména zařízení, nebyla nalezena žádná, která by příslušela Wi-Fi kartě.

iwconfig

První mě napadlo, že nemám nainstalovaný firmware k Wi-Fi kartám. A odhad byl správný. K instalaci firmwaru lze využít utilitu přímo od Armbianu:

armbian-config

V menu je nutné se proklikat na SoftwareMini a nainstalovat mini firmware package. Po instalaci firmware a restartování mikropočítače už byly Wi-Fi karty funkční.

Jednotlivá síťová zařízení jsou nakonfigurována, nyní je třeba nastavit automatické přidělování IP adres. Tento krok předchází konfiguraci konkrétních Wi-Fi sítí. K tomu využívám nástroj dnsmasq.

apt install dnsmasq

Po čerstvé instalaci se mi zobrazila chybová hláška a démon nešel spustit:

dnsmasq: failed to create listening socket for port 53: Address already in use

Chvíli jsem se potrápil, proč čerstvá instalace nefunguje. Pak jsem přišel na to, že je potřeba konfigurace a problém způsobuje chybějící parametr bind-interfaces v konfiguraci. Vytvořil jsem tedy soubor /etc/dnsmasq.d/settings.conf:

interface=br0
listen-address=192.168.1.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.1.50,192.168.1.150,12h
 
# přiřazení konkrétní IP adresy na základě MAC adresy
dhcp-host=02:8d:04:23:9B:6A,192.168.1.45

Posledním krokem bylo nastavení NetworkManageru tak, aby pracoval s démonem dnsmasq a aby ignoroval Wi-Fi zařízení.

# /etc/NetworkManager/NetworkManager.conf
[main]
dns=dnsmasq
rc-manager=file
plugins=ifupdown,keyfile
 
[ifupdown]
managed=true
# /etc/NetworkManager/conf.d/10-ignore-interfaces.conf
[keyfile]
unmanaged-devices=interface-name:eth*,interface-name:wan*,interface-name:lan*,interface-name:br*,interface-name:wlp1s0,interface-name:wlx00117f1bf337

Hostapd byl na zařízení už nainstalován. Stačilo do souboru /etc/hostapd.conf vložit konfiguraci k síti. Tady jsem se chvíli potrápil, protože konfigurace nefungovala. Postupně jsem tedy odstraňoval řádky v konfiguračním souboru do chvíle, než jsem našel problém. Účelem článku není podrobně rozepsat konfiguraci Wi-Fi, proto sem dávám svoji funkční konfiguraci.

ssid=ESSPRESSOBIN5
interface=wlp1s0
channel=40
bridge=br0
driver=nl80211
 
logger_syslog=0
logger_syslog_level=0
wmm_enabled=1
wpa=2
preamble=1
 
wpa_passphrase=silneheslo
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
 
# IEEE 802.11n
ieee80211n=1
ht_capab=[HT40-][LDPC][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]
country_code=CZ
ieee80211d=1
 
# IEEE 802.11a
hw_mode=a
 
# IEEE 802.11ac
ieee80211ac=1
vht_capab=[MAX-MPDU-11454][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP3]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
 
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

Zde je ještě konfigurace USB Wi-Fi v /etc/hostapd-usb.conf:

ssid=ESSPRESSOBIN2
interface=wlx00117f1bf337
hw_mode=g
channel=9
bridge=br0
driver=nl80211
 
logger_syslog=0
logger_syslog_level=0
wmm_enabled=1
wpa=2
preamble=1
 
wpa_passphrase=silneheslo
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
 
# IEEE 802.11n
ht_capab=[LDPC][SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40][SMPS-STATIC]
country_code=CZ
ieee80211d=1
 
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

Nyní je potřeba nastavit spuštění hostapd po startu systému. Nejprve jsem v /etc/default/hostapd nastavil, kde má démon načítat hlavní konfigurační soubor, a poté jej zapnul.

DAEMON_CONF="/etc/hostapd.conf"
systemctl enable hostapd

Pro spuštění konfigurace USB Wi-Fi 2,4 GHz je nutné spustit druhou instanci démona po startu systému. Vyřešil jsem to tak, že jsem do souboru /etc/rc.local přidal řádek:

/usr/sbin/hostapd -B /etc/hostapd-usb.conf

Výsledkem je, že po restartu systému by se měla načíst všechna síťová zařízení a mělo by docházet k přidělování IP adres. Poslední, co je potřeba nastavit, je firewall a routování.

Pro nastavení firewallu jsem zvolil utilitu UFW. Nastavoval jsem čistě pro IPv4. Po instalaci jsem nejprve zapnul forwardování IPv4 v /etc/sysctl.conf. Rovnou jsem v souboru nastavil i další věci, jako je například snížené swapování a hlavně větší alokaci paměti. Změny se projeví až po restartu zařízení.

# /etc/sysctl.conf
net.ipv4.ip_forward=1
vm.swappiness=0
 
vm.min_free_kbytes=65536
vm.overcommit_memory = 1

Dále bylo nutné povolit forwardování IPv4 v souboru /etc/ufw/sysctl.conf:

net/ipv4/ip_forward=1

Dále forwardování v souboru /etc/default/ufw:

DEFAULT_FORWARD_POLICY="ACCEPT"

Routování v souboru /etc/ufw/before.rules musí být hned na začátku souboru:

*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through lan1
-A POSTROUTING -s 192.168.1.0/24 -o lan1 -j MASQUERADE
COMMIT

Protože jsem měl už nachystaná uživatelská pravidla pro připojení SSH a další služby, přepsal jsem soubor /etc/ufw/user.rules souborem z předchozího systému, kde už jsem měl veškerá nastavení připravená.

ufw enable
ufw status

A teprve potom začalo routování fungovat. Mohl jsem se připojit přes SSH a pustit se do nastavení dalších programů.

  • hardware/jednodeskove-pocitace/espressobin/instalace-armbianu.txt
  • Poslední úprava: 2026/04/22 13:38
  • autor: Petr Nosek