Skip to content

Debian 9 "Stretch" auf BananaPi installieren

BananaPi
  • Debian 8 habe ich ja schon mal installiert und hier beschrieben wie es geht. Debian auf BananaPi installieren

    Nun machen wir das Ganze mal mit Debian 9.1 Stretch. Die Files findet man hier Beide Files die wir brauchen runterladen.

    • firmware.BananaPi.img.gz
    • partition.img.gz

    Wir machen wieder ein Image daraus. Alternativ könnte man das auch für den BananaPro, den R1 machen oder den vielen anderen Boards die in dem Verzeichnis aufgeführt sind.

    zcat firmware.BananaPi.img.gz partition.img.gz > bpi.img
    

    Das Image ist nur 102,4 MB groß, es handelt sich um eine Netzinstallation. Heißt, es wird fast alles aus dem Netz nachgeladen, also nehmt euch Zeit und einen Kaffee.

    Das Image auf eine SD-Karte brennen. Tipp: etcher.io

    etcher.png

    Danach ab in den BananaPi und den BananaPi starten. Dann die Installation durchführen. Im o.g. Artikel ist der Installationsvorgang näher beschrieben, ich erspare mir das hier an dieser Stelle da er genau gleich ist. Nach erfolgter Installation einmal neustarten. Und - Fertig!

    Bitte dran denken, direkt mit Root anmelden geht nicht, also erst mit dem Benutzer anmelden!

    frank@debian:~$ uname -a
    
    Linux debian 4.9.0-3-armmp-lpae #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) armv7l
    

    Kernelversion ist 4.9.30, aktuell ist 4.9.44

    root@debian:/home/frank# lsb_release -a
    No LSB modules are available.
    Distributor ID: Debian
    Description: Debian GNU/Linux 9.1 (stretch)
    Release: 9.1
    Codename: stretch
    root@debian:/home/frank#
    

    Debian9_stretch_bpi_htop.png

    IPerf3 Test

    frank@frank-MS-7850:~$ iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 192.168.3.10, port 37558
    [ 5] local 192.168.3.213 port 5201 connected to 192.168.3.10 port 37560
    [ ID] Interval Transfer Bandwidth
    [ 5] 0.00-1.00 sec 56.5 MBytes 474 Mbits/sec
    [ 5] 1.00-2.00 sec 59.2 MBytes 497 Mbits/sec
    [ 5] 2.00-3.00 sec 59.2 MBytes 497 Mbits/sec
    [ 5] 3.00-4.00 sec 59.4 MBytes 498 Mbits/sec
    [ 5] 4.00-5.00 sec 59.4 MBytes 498 Mbits/sec
    [ 5] 5.00-6.00 sec 59.2 MBytes 496 Mbits/sec
    [ 5] 6.00-7.00 sec 59.5 MBytes 500 Mbits/sec
    [ 5] 7.00-8.00 sec 59.3 MBytes 497 Mbits/sec
    [ 5] 8.00-9.00 sec 59.4 MBytes 498 Mbits/sec
    [ 5] 9.00-10.00 sec 58.6 MBytes 492 Mbits/sec
    [ 5] 10.00-10.05 sec 2.88 MBytes 503 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth Retr
    [ 5] 0.00-10.05 sec 593 MBytes 495 Mbits/sec 0 sender
    [ 5] 0.00-10.05 sec 593 MBytes 495 Mbits/sec receiver
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    ^Ciperf3: interrupt - the server has terminated
    frank@frank-MS-7850:~$ iperf3 -c 192.168.3.10
    Connecting to host 192.168.3.10, port 5201
    [ 4] local 192.168.3.213 port 35432 connected to 192.168.3.10 port 5201
    [ ID] Interval Transfer Bandwidth Retr Cwnd
    [ 4] 0.00-1.00 sec 109 MBytes 918 Mbits/sec 0 280 KBytes
    [ 4] 1.00-2.00 sec 111 MBytes 928 Mbits/sec 0 796 KBytes
    [ 4] 2.00-3.00 sec 112 MBytes 938 Mbits/sec 0 796 KBytes
    [ 4] 3.00-4.00 sec 111 MBytes 935 Mbits/sec 0 837 KBytes
    [ 4] 4.00-5.00 sec 113 MBytes 946 Mbits/sec 0 1.00 MBytes
    [ 4] 5.00-6.00 sec 112 MBytes 937 Mbits/sec 214 758 KBytes
    [ 4] 6.00-7.00 sec 112 MBytes 941 Mbits/sec 0 758 KBytes
    [ 4] 7.00-8.00 sec 112 MBytes 943 Mbits/sec 0 758 KBytes
    [ 4] 8.00-9.00 sec 112 MBytes 940 Mbits/sec 0 1018 KBytes
    [ 4] 9.00-10.00 sec 112 MBytes 940 Mbits/sec 0 1.03 MBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth Retr
    [ 4] 0.00-10.00 sec 1.09 GBytes 937 Mbits/sec 214 sender
    [ 4] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec receiver
    
    iperf Done.
    

    Im ersten Test ist mein Haupt-PC der Server, im zweiten Test der BananaPi. Alle Tests mit einer SD-Karte!

    Debian 9.1 auf HDD installieren

    Und nun ab damit auf eine HDD oder nehm ich lieber die SSD? Kurz nachdenken....

    Es ist die HDD geworden. Nun richten wir das System ein, so wie in folgendem Artikel erklärt. Bananian auf HDD installieren

    rsync war nicht installiert, aber das ist ja kein Problem.

    apt-get install rsync
    

    Nachdem wir nun alles auf der HDD haben, stellt sich mir die Frage wie stelle ich die Bootparameter ein. Es gibt im Ordner /boot die Datei boot.scr, die kann man aber nicht bearbeiten. Also ein wenig in den Erinnerungen kramen und google befragen. Es geht eigentlich genauso, wie im o.g. Artikel schon dargestellt aber hier nochmal korrekt dargestellt.

    Bootparameter ändern

    Wir installieren auf dem Notebook die u-boot-tools, darin ist mkimage was wir gleich brauchen.

    apt-get install u-boot-tools
    

    Dann kopieren wir die Datei boot.scr mit folgendem Befehl.

    dd if=boot.scr of=boot.script bs=72 skip=1
    

    Jetzt haben wir die Datei, die wir anpassen können.

    # boot script for Allwinner SunXi-based devices
    
    # Mainline u-boot v2014.10 introduces a new default environment and
    # a new common bootcmd handling for all platforms, which is not fully
    # compatible with the old-style environment used by u-boot-sunxi.
    # This script therefore needs to check in which environment it
    # is running and set some variables accordingly.
    
    # On u-boot-sunxi, this script assumes that ${device} and ${partition}
    # are set.
    
    # The new-style environment predefines ${boot_targets}, the old-style
    # environment does not.
    if test -n "${boot_targets}"
    then
    echo "Mainline u-boot / new-style environment detected."
    # Mainline u-boot v2014.10 uses ${devtype}, ${devnum} and
    # ${bootpart} where u-boot-sunxi uses ${device} and ${partition}.
    # ${distro_bootpart} replaced ${bootpart} in u-boot v2016.01.
    if test -z "${device}"; then setenv device "${devtype}"; fi
    if test -z "${partition}${distro_bootpart}"; then setenv partition "${devnum}:${bootpart}"; fi
    if test -z "${partition}"; then setenv partition "${devnum}:${distro_bootpart}"; fi
    else
    echo "U-boot-sunxi / old-style environment detected."
    # U-boot-sunxi does not predefine kernel_addr_r, fdt_addr_r and
    # ramdisk_addr_r, so they have to be manually set. Use the values
    # from mainline u-boot v2014.10, except for ramdisk_addr_r,
    # which is set to 0x44300000 to allow for initrds larger than
    # 13MB on u-boot-sunxi.
    setenv kernel_addr_r 0x42000000
    setenv fdt_addr_r 0x43000000
    setenv ramdisk_addr_r 0x44300000
    fi
    
    if test -n "${console}"; then
    setenv bootargs "${bootargs} console=${console}"
    fi
    
    setenv bootargs ${bootargs} root=/dev/sda1
    
    image_locations='/boot/ /'
    if test -z "${fk_kvers}"; then
    setenv fk_kvers '4.9.0-3-armmp-lpae'
    fi
    
    if test -n "${fdtfile}"; then
    setenv fdtpath dtbs/${fk_kvers}/${fdtfile}
    else
    setenv fdtpath dtb-${fk_kvers}
    fi
    
    for pathprefix in ${image_locations}
    do
    if test -e ${device} ${partition} ${pathprefix}vmlinuz-${fk_kvers}
    then
    load ${device} ${partition} ${kernel_addr_r} ${pathprefix}vmlinuz-${fk_kvers} \
    && load ${device} ${partition} ${fdt_addr_r} ${pathprefix}${fdtpath} \
    && load ${device} ${partition} ${ramdisk_addr_r} ${pathprefix}initrd.img-${fk_kvers} \
    && echo "Booting Debian ${fk_kvers} from ${device} ${partition}..." \
    && bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
    
    setenv ramdisk_addr_r 0x44300000
    fi
    
    if test -n "${console}"; then
    setenv bootargs "${bootargs} console=${console}"
    fi
    
    setenv bootargs ${bootargs} root=/dev/sda1
    
    image_locations='/boot/ /'
    if test -z "${fk_kvers}"; then
    setenv fk_kvers '4.9.0-3-armmp-lpae'
    fi
    
    if test -n "${fdtfile}"; then
    setenv fdtpath dtbs/${fk_kvers}/${fdtfile}
    else
    setenv fdtpath dtb-${fk_kvers}
    fi
    
    for pathprefix in ${image_locations}
    do
    if test -e ${device} ${partition} ${pathprefix}vmlinuz-${fk_kvers}
    then
    load ${device} ${partition} ${kernel_addr_r} ${pathprefix}vmlinuz-${fk_kvers} \
    && load ${device} ${partition} ${fdt_addr_r} ${pathprefix}${fdtpath} \
    && load ${device} ${partition} ${ramdisk_addr_r} ${pathprefix}initrd.img-${fk_kvers} \
    && echo "Booting Debian ${fk_kvers} from ${device} ${partition}..." \
    && bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
    fi
    done
    

    Eine recht lange Datei, es interessiert uns aber nur folgende Zeile.

    setenv bootargs ${bootargs} quiet
    

    Die ändern wir in

    setenv bootargs ${bootargs} root=/dev/sda1
    

    Jetzt machen wir aus der Datei wieder eine funktionierende boot.scr

    mkimage -C none -A arm -T script -d boot.script boot.scr
    

    Fertig!

    Ich bedanke mich beim Olimex-Team für die einzige vernünftige Erklärung, die ich im Netz gefunden habe. Danke!

    Schauen wir nach ob es geklappt hat.

    root@debian:/# df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 483M 0 483M 0% /dev
    tmpfs 100M 1.5M 99M 2% /run
    /dev/sda1 916G 770M 869G 1% /
    tmpfs 500M 0 500M 0% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 500M 0 500M 0% /sys/fs/cgroup
    /dev/mmcblk0p1 236M 25M 199M 11% /boot
    tmpfs 100M 0 100M 0% /run/user/1000
    

    Sieht gut aus ?

    bpi.png

    IPerf3 Test mit HDD

    frank@frank-MS-7850:~$ iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 192.168.3.10, port 56374
    [ 5] local 192.168.3.213 port 5201 connected to 192.168.3.10 port 56376
    [ ID] Interval Transfer Bandwidth
    [ 5] 0.00-1.00 sec 57.0 MBytes 478 Mbits/sec
    [ 5] 1.00-2.00 sec 59.5 MBytes 499 Mbits/sec
    [ 5] 2.00-3.00 sec 59.6 MBytes 500 Mbits/sec
    [ 5] 3.00-4.00 sec 59.8 MBytes 502 Mbits/sec
    [ 5] 4.00-5.00 sec 67.7 MBytes 568 Mbits/sec
    [ 5] 5.00-6.00 sec 81.1 MBytes 680 Mbits/sec
    [ 5] 6.00-7.00 sec 81.7 MBytes 685 Mbits/sec
    [ 5] 7.00-8.00 sec 81.5 MBytes 684 Mbits/sec
    [ 5] 8.00-9.00 sec 81.5 MBytes 684 Mbits/sec
    [ 5] 9.00-10.00 sec 81.7 MBytes 685 Mbits/sec
    [ 5] 10.00-10.05 sec 3.90 MBytes 683 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth Retr
    [ 5] 0.00-10.05 sec 715 MBytes 597 Mbits/sec 0 sender
    [ 5] 0.00-10.05 sec 715 MBytes 597 Mbits/sec receiver
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    ^Ciperf3: interrupt - the server has terminated
    frank@frank-MS-7850:~$ iperf3 -c 192.168.3.10
    Connecting to host 192.168.3.10, port 5201
    [ 4] local 192.168.3.213 port 37586 connected to 192.168.3.10 port 5201
    [ ID] Interval Transfer Bandwidth Retr Cwnd
    [ 4] 0.00-1.00 sec 109 MBytes 915 Mbits/sec 0 280 KBytes
    [ 4] 1.00-2.00 sec 112 MBytes 940 Mbits/sec 0 313 KBytes
    [ 4] 2.00-3.00 sec 112 MBytes 942 Mbits/sec 0 329 KBytes
    [ 4] 3.00-4.00 sec 110 MBytes 925 Mbits/sec 0 939 KBytes
    [ 4] 4.00-5.00 sec 112 MBytes 941 Mbits/sec 0 1.18 MBytes
    [ 4] 5.00-6.00 sec 112 MBytes 939 Mbits/sec 0 1.18 MBytes
    [ 4] 6.00-7.00 sec 112 MBytes 942 Mbits/sec 0 1.18 MBytes
    [ 4] 7.00-8.00 sec 112 MBytes 941 Mbits/sec 0 1.18 MBytes
    [ 4] 8.00-9.00 sec 112 MBytes 944 Mbits/sec 0 1.18 MBytes
    [ 4] 9.00-10.00 sec 112 MBytes 937 Mbits/sec 0 1.18 MBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval Transfer Bandwidth Retr
    [ 4] 0.00-10.00 sec 1.09 GBytes 937 Mbits/sec 0 sender
    [ 4] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec receiver
    
    iperf Done.
    frank@frank-MS-7850:~$
    

    Ergänzungen

    In der alten Debian Version 8 war der SSH Zugang von extern noch geblockt, das hat man in 9.1 nun wieder geändert. Macht ja auch nicht wirklich Sinn, wenn ich einen OpenSSH-Server installiere, dann möchte ich ja auch von extern connecten!? Das erste was ich immer mache, so bald so ein BPi läuft. Auf dem Haupt-PC arbeitet man halt am liebsten ?

    Schnell noch ein Test auf offene Ports

    frank@frank-MS-7850:~$ nmap -v -Pn 192.168.3.204
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-08-25 10:14 CEST
    Initiating Parallel DNS resolution of 1 host. at 10:14
    Completed Parallel DNS resolution of 1 host. at 10:14, 0.00s elapsed
    Initiating Connect Scan at 10:14
    Scanning 192.168.3.204 [1000 ports]
    Discovered open port 22/tcp on 192.168.3.204
    Completed Connect Scan at 10:14, 0.03s elapsed (1000 total ports)
    Nmap scan report for 192.168.3.204
    Host is up (0.0033s latency).
    Not shown: 999 closed ports
    PORT STATE SERVICE
    22/tcp open ssh
    Read data files from: /usr/bin/../share/nmap
    Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
    

    Gut, wie zu erwarten nur der SSH Port offen.

    Fazit

    Ist etwas länger geworden als eigentlich geplant, aber Ziel erreicht. Debian 9.1 läuft auf dem BananaPi und jetzt schauen wir mal ob das Ganze auch stabiler läuft als meine letzte Armbian-Installation. Die hatte sich zwischenzeitlich nämlich schon wieder verabschiedet ? Das ist für mich leider dann nicht einsetzbar, ich nutze die kleinen Dinger meistens als Datengrab zur Sicherung.

    Ich denke mit dieser Debian Version kann man ganz gut einen Datenspeicher im Heimnetzwerk aufbauen, wir haben ein sicheres System was sehr stabil laufen sollte. Na dann viel Spaß beim Ausprobieren.

  • Wegen diesem Beitrag im Debian Forum, habe ich eben diesen alten Artikel gesucht. Ursprung

    Da ich gestern meinen letzten BananaPi abgebaut habe, könnte man ja mal schauen ob der auch mit Buster läuft 😉