Debian 11 Bullseye installeren op Banana Pi Zero M2

Last Updated on 29 augustus 2022 by Syds

Debian 11 Bullseye installeren op Banana Pi Zero M2

Vanwege het chip tekort op de electronica markt zijn de Raspberry Pi Zero 2W microcontrollers op dit moment niet verkrijgbaar. Daarom de gok maar eens gewaagd met een “clone”, de Banana Pi Zero M2. De Banana Pi Zero M2 heeft dezelfde form factor als de Raspberry PI Zero 2W, en zo’n beetje dezelfde specs en aansluitmogelijkheden. Dit met uitzondering van de CPU. Dit is namelijk de quad-core Allwinner H2+ ARM Cortex-A7 processor die hogere performance levert dan de single core Broadcom BCM2835 ARM11 processor van de Raspberry Pi.

Ik wil deze Banana Pi of gebruiken voor mijn Vintage radio project, of ter vervanging van mijn Raspberry Pi Zero 2W van mijn printserver, zodat ik deze vrijkomende Raspberry Pi kan inzetten voor mijn Vintage Radio project. Hiervoor dient ten minste Debian Bullseye als operating systeem op de Banana Pi draaien.

En dat is nog best een puzzel. Je merkt dat de community rondom de Banana Pi significant kleiner is dan die rondom de Raspberry Pi’s. Dat uit zich direct al in de beschikbare linux images. Op de “officiële” ondersteuningssite van Banana Pi bevinden zich alleen Debian Stretch (Debian 9) en Ubunta 16.04 images die zo’n beetje stammen uit 2019/2020. Niet echt up-to-date dus. Er struinen op andere sites nog wel wat Debian Buster en Bullseye images rond, maar allemaal met de vermelding “incomplete”.

Dus mijn plan-de-campagne is om eerst de Debian stretch image die op de Banana Pi ondersteuningssite is te vinden te installeren. En daarna achtereenvolgens een distro-upgrade naar Debian Buster en Debian Bulleyse uit te voeren.

Benodigdheden:

  • Banana Pi Zero M2
  • WiFi antenne + aansluitkabel
  • Monitor, toetsenbord en muis
  • HDMI naar HDMI mini kabel
  • USB Mini HUB OTG
  • 32GB (of groter) SD-Card
  • Desktop of Laptop met SD-Card reader

Stap 1. Banana Pi voorbereiden

De WiFi ontvangst van de Banana Pi is belabberd. De Banana Pi heeft niet net als de Raspberry Pi Zero 2W een interne antenne. Gelukkig had ik een antenne draad overgehouden van een eerder project, en had ik onlangs twee antennes van een kapot accesspoint afgeschroefd voordat die in de vuilnisbak belandde.

De antennedraad kun je op de daarvoor bestemde aansluiting van de Banana Pi klikken, vervolgens de antenne op de antennedraad schroeven.

Vervolgens de HDMI naar HDMI mini verloopkabel op je monitor aansluiten en aansluiten op de HDMI-mini aansluiting van de Banana Pi. Om USB randapparatuur aan te kunnen sluiten heb je een OTG USB Mini Hub nodig met micro USB aansluiting, deze sluit je aan op één van de micro USB aansluitingen, maakt niet uit welke. Op deze USB Mini Hub kun je een toetsenbord en muis aansluiten. Tot slot voeden we de Banana Pi m.b.v. een micro USB kabel.

Hiermee zijn de hardware voorbereidingen klaar.

Stap 2. Banana Pi voorzien van Debian (9) Stretch image

Ik heb deze stap uitgevoerd m.b.v. een Windows laptop, zie voor de beschrijving voor hoe te werk te gaan met een Linux machine de wiki van Banana Pi: https://wiki.banana-pi.org/Getting_Started_with_M2_Zero

Allereerst downloaden we de Debian Stretch image vanaf de site van Banana Pi m.b.v. je laptop of desktop. Download de file 2020-04-28-debian-9-stretch-lite-bpi-m2z-sd-emmc.img.zip. Om deze image op de SD kaart te kunnen zetten kun je gebruik maken van Balena Etcher. Installeer deze software vanaf: https://www.balena.io/etcher/

Kies voor “Download for Windows (x86/x64)” en wacht tot de software is gedownload. Open daarna het gedownloade bestand en accepteer de Licentieovereenkomst door op “Akkoord” te klikken.

Nadat de software is geïnstalleerd start Balena Etcher automatisch. Het volgende scherm verschijnt:

Kies voor “Flash from file”, en selecteer de Debian Stretch image file die je net hebt gedownload en stop de SD card in de cardreader van je laptop/desktop

Als het goed is wordt je SD card direct herkent, klik op “Flash!” om het flashen te starten. Er verschijnt daarna een scherm met het verzoek om Windows Command script toestemming te geven iets aan je systeem te veranderen, klik op “Akkoord”. De image file wordt nu naar je SD-card geschreven, en er wordt automatisch geverifieerd of dit goed gegaan is. Na verloop van tijd verschijnt onderstaande melding dat alles succesvol is verlopen. Je kunt nu de SD kaart weer uit de kaartlezer halen

Stap 3. Debian Stretch voor de eerste keer opstarten

Stop de SD kaart in de daarvoor bestemde houder van de Banana Pi, kan maar op een manier, dus kan niet fout gaan. Sluit vervolgens de Banana Pi aan op de voeding en zet de monitor aan. Als alles goed is gegaan zie je je monitor het Banana Pi logo en daarna vol lopen met opstartinformatie. Na verloop verschijnt de Login prompt.

Log in met username “root” en wachtwoord “bananapi” (uiteraard zonder de aanhalingstekens).

(De volgende afbeeldingen zijn schermafdrukken van Putty, een terminal programma, en zijn achteraf gemaakt. De volgende commando dienen uiteraard vanaf de console gegeven te worden)

Als eerste gaan we uiteraard de Banana Pi verbinden met de WiFi. Hiervoor moeten we weten hoe de WiFi interface heet van de Banana Pi. Voer hiervoor het volgende commando uit.

root@radio:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 16:a2:ef:7b:68:b1 brd ff:ff:ff:ff:ff:ff
3: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 66:71:d9:15:9b:30 brd ff:ff:ff:ff:ff:ff
4: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 46:96:fa:e6:ad:94 brd ff:ff:ff:ff:ff:ff
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether e2:ae:d4:ba:01:0f brd ff:ff:ff:ff:ff:ff
6: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether ac:6a:a3:1f:cc:bf brd ff:ff:ff:ff:ff:ff

De naam van de WiFi interface begin altijd met de letter w, dus die van de Banana Pi heet dus “wlan0”. Default is deze gedisabled in de image (zie ook state DOWN), dus we gaan hem eerst activeren met:

root@radio:~# ip link set dev wlan0 up

check of de interface nu actief is:

root@radio:~# ip a | grep wlan0
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

De status is nu “UP” geworden, dus we kunnen verder met een scan van het WiFi-netwerk:

root@radio:~# iwlist wlan0 scan| grep ESSID
                    ESSID:"H369ABF8AF9"

Mijn WiFi netwerk wordt gevonden en heet “H369ABF8AF9”, vervolgens gaan we deze SSID en het bijbehorende wachtwoord toevoegen aan de WiFi configuratie:

root@radio:~# wpa_passphrase <jou SSID> <jou WiFi password>
network={
        ssid="<jou SSID>"
        #psk="<jou WiFi password>"
        psk=9a3905058255fb51ba87c9d02d0ca74dd94fd48baab0e0cc22ba9d5c40a2333d
}

Bovenstaande informatie wordt weggeschreven in het bestand /etc/wpa_supplicant/wpa_supplicant.conf. We gaan nu de Banana Pi connectie laten maken met de WiFi:

root@radio:~# wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
Successfully initialized wpa_supplicant
Failed to create interface p2p-dev-wlan0: -22 (Invalid argument)
nl80211: Failed to create a P2P Device interface p2p-dev-wlan0
P2P: Failed to enable P2P Device interface
wlan0: Trying to associate with 2c:91:ab:e4:f2:1d (SSID='H369ABF8AF9' freq=2462 MHz)
wlan0: Associated with 2c:91:ab:e4:f2:1d
wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlan0: WPA: Key negotiation completed with 2c:91:ab:e4:f2:1d [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 2c:91:ab:e4:f2:1d completed [id=0 id_str=]

De connectie is gemaakt, stop wpa_supplicant door op <ctrl>-<c> te drukken. We gaan dit proces in de background starten door de optie -B toe te voegen:

root@radio:~# wpa_supplicant -B -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0

maar nu moet de Banana Pi nog een IP-address krijgen van de DHCP server:

root@radio:~# dhclient wlan0

Check of de Banana Pi een IP-address heeft gekregen met:

root@radio:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 16:a2:ef:7b:68:b1 brd ff:ff:ff:ff:ff:ff
3: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 66:71:d9:15:9b:30 brd ff:ff:ff:ff:ff:ff
4: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 46:96:fa:e6:ad:94 brd ff:ff:ff:ff:ff:ff
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether e2:ae:d4:ba:01:0f brd ff:ff:ff:ff:ff:ff
6: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
7: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether ac:6a:a3:1f:cc:bf brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.97/24 brd 192.168.0.255 scope global dynamic wlan0
       valid_lft 86342sec preferred_lft 86342sec
    inet6 fe80::ae6a:a3ff:fe1f:ccbf/64 scope link
       valid_lft forever preferred_lft forever

Je ziet dat mijn Banana Pi het ip-address 192.168.2.97 heeft gekregen. Uiteraard zou bij een reboot het proces wpa_supplicant gestopt worden, en na reboot niet opnieuw gestart. Daarom gaan we ervoor zorgen dat zowel wpa_supplicant als dhclient automatisch gestart worden bij een reboot. Kopieer hiervoor de standaard service file van wpa_supplicant en pas deze aan:

root@radio:~# cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
root@radio:~# vi /etc/systemd/system/wpa_supplicant.service

Pas het volgende aan in de file /etc/systemd/system/wpa_supplicant.service:

  • Pas de regel startende met ExecStart als volgt aan:
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
  • en voeg onder deze regel het volgende toe:
Restart=always

De file ziet er na deze aanpassingen als volgt uit:

root@radio:~# cat /etc/systemd/system/wpa_supplicant.service
[Unit]
Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target

[Service]
Type=dbus
BusName=fi.epitest.hostap.WPASupplicant
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
Restart=always

[Install]
WantedBy=multi-user.target
Alias=dbus-fi.epitest.hostap.WPASupplicant.service

Open vervolgens een nieuwe file voor de dhclient service:

root@radio:~# vi /etc/systemd/system/dhclient.service

en kopieer de volgende inhoud in de file:

[Unit]
Description= DHCP Client
Before=network.target
After=wpa_supplicant.service

[Service]
Type=forking
ExecStart=/sbin/dhclient wlan0 -v
ExecStop=/sbin/dhclient wlan0 -r
Restart=always
 
[Install]
WantedBy=multi-user.target

Tot slot gaan we services activeren:

root@radio:~# systemctl daemon-reload
root@radio:~# systemctl enable wpa_supplicant.service
root@radio:~# systemctl enable dhclient.service

Reboot de Banana Pi, en check of hij automatisch connectie maakt met het WiFi netwerk, en een IP-address toegewezen heeft gekregen:

root@radio:~# reboot

Stap 4. Distro-upgrade naar Debian (10) Buster

Log in op de Banana Pi en open de file /etc/apt/sources.list:

root@radio:~# vi /etc/apt/sources.list

Commentarieer alle bestaande regels uit door er een “#” voor te zetten, en voeg onderstaande regels toe:

deb http://deb.debian.org/debian debian buster main

deb http://deb.debian.org/debian buster-updates main

De file ziet er dan als volgt uit:

root@radio:~# cat /etc/apt/sources.list
# deb http://httpredir.debian.org/debian stretch main contrib non-free
# deb-src http://httpredir.debian.org/debian stretch main contrib non-free

# deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
# deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free

# security packages come always from main repository
# deb http://security.debian.org/ stretch/updates main contrib non-free
# deb-src http://security.debian.org/ stretch/updates main contrib non-free

# debian buster
deb http://deb.debian.org/debian buster main contrib
deb http://deb.debian.org/debian buster-updates main

Voordat we het upgrade proces kunnen starten moeten we eerst nog de keys van debian buster toevoegen met:

root@radio:~# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138

Nu kunnen we de upgrade starten met:

root@radio:~# apt-get update
root@radio:~# apt-get upgrade
root@radio:~# apt-get dist-upgrade

Blijf bij het systeem, want zo nu en dan vraagt het upgradeproces of je bepaalde bestanden wilt behouden of overschrijven met een nieuwe (lege) versie, kies altijd voor de default. Op die manier blijven de configuratiewijzigingen die we tot nu toe hebben doorgevoerd bewaard. De upgrade neemt in totaal wel 20 tot 30 minuten in beslag. Als het upgrade proces klaar is reboot je de Banana Pi:

root@radio:~# reboot

Log in op de Banana Pi en check of het operating systeem nu inderdaad Debian 10 Buster is:

root@radio:~# hostnamectl
   Static hostname: radio
         Icon name: computer
        Machine ID: b1762bb2a9d8431a988c6cac5ff8f356
           Boot ID: 0a683f0a86934703b6d185a3e98aae5d
  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 4.4.55-BPI-M2Z-Kernel
      Architecture: arm

Gelukt !

Stap 5. Distro-upgrade van Debian 10 Buster naar Debian 11 Bullseye

Feitelijk dezelfde stappen als hierboven beschreven in stap 4. En waarschijnlijk had ik ook wel in één keer kunnen migreren van Debian 9 Stretch naar Debian 11 Bullseye, maar stapje voor stapje leek me beter.

Log in op de Banana Pi en open de file /etc/apt/sources.list:

root@radio:~# vi /etc/apt/sources.list

Verander de twee regels die je in de vorige stap hebt toegevoegd zodat “buster” in “bullseye” veranderd. En voeg de volgende regel toe:

deb http://deb.debian.org/debian-security bullseye-security main

De file ziet er dan als volgt uit:

root@radio:~# cat /etc/apt/sources.list
# deb http://httpredir.debian.org/debian stretch main contrib non-free
# deb-src http://httpredir.debian.org/debian stretch main contrib non-free

# deb http://httpredir.debian.org/debian/ stretch-updates main contrib non-free
# deb-src http://httpredir.debian.org/debian/ stretch-updates main contrib non-free

# security packages come always from main repository
# deb http://security.debian.org/ stretch/updates main contrib non-free
# deb-src http://security.debian.org/ stretch/updates main contrib non-free

# debian buster
deb http://deb.debian.org/debian bullseye main contrib
deb http://deb.debian.org/debian bullseye-updates main
deb http://deb.debian.org/debian-security bullseye-security main

Nu kunnen we de upgrade starten met:

root@radio:~# apt-get update
root@radio:~# apt-get upgrade
root@radio:~# apt-get dist-upgrade

Blijf bij het systeem, want zo nu en dan vraagt het upgradeproces of je bepaalde bestanden wilt behouden of overschrijven met een nieuwe (lege) versie, kies altijd voor de default. Op die manier blijven de configuratiewijzigingen die we tot nu toe hebben doorgevoerd bewaard. De upgrade neemt in totaal wel 20 tot 30 minuten in beslag. Als het upgrade proces klaar is reboot je de Banana Pi:

root@radio:~# reboot

Log in op de Banana Pi en check of het operating systeem nu inderdaad Debian 11 Bullseye is:

root@radio:~# hostnamectl
   Static hostname: radio
         Icon name: computer
        Machine ID: b1762bb2a9d8431a988c6cac5ff8f356
           Boot ID: 75304faf0e7940ad9a7f389a7e4f12d3
  Operating System: Debian GNU/Linux 11 (bullseye)
            Kernel: Linux 4.4.55-BPI-M2Z-Kernel
      Architecture: arm

Gelukt !

Stap 6. LXDE desktop installeren

De Debian image bevat geen desktop. In deze stap gaan we de LXDE desktop omgeving installeren.

Eerst installeren we tasksel, met deze tool kunnen we diverse desktop omgevingen installeren

root@radio:~# apt-get install tasksel

Start vervolgens tasksel op

root@radio:~# tasksel

Het volgende scherm verschijnt. Kies voor LXDE en ga met de tab toets verder naar “ok”. De LXDE desktop omgeving wordt nu geïnstalleerd

Om de desktop omgeving te starten, log in als user pi (wachtwoord bananapi) en start de X-terminal

root@radio:~# su pi
root@radio:~# startx

Veel plezier met je Banana Pi Zero M2 met Debian 11 Bullseye !

Noot 29-8-2022: De debian image bleek erg kaal te zijn, en op het web is weinig ondersteuning te vinden voor debian op de BPI M2Z. Ook is de WiFi niet stabiel (te krijgen, maar wellicht ligt dat aan mijn netwerk topologie) en ontbreekt de firmware voor de bluetooth controller. Kortom, heb je geen bluetooth nodig dan kan je wellicht prima van Debian bullseye op de BPI M2Z uit de voeten. Heb best nog veel tijd er ingestoken om bluetooth aan de praat te krijgen, maar is uiteindelijk niet gelukt. Omdat ik voor mijn “Vintage radio” project wel de beschikking wil hebben over bluetooth besloten om Raspbian Stretch op de BPI M2Z te zetten. Zie ook <url nog toevoegen>.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *