So nun hier alle meine Schritte für ein funktionierendes Debian Jessie mit Kernel-3.18
(auf die Änderungen im git werde ich hier nicht eingehen, aber man kann diese sich an im git selbst ansehen und nachverfolgen)
Wer keine Lust auf basteln hat hier der Download
Ich selbst setze derzeit ein LUbuntu als System zum arbeiten ein und wenn man noch nicht alles zum Kernel bauen hat dann sind folgende Schritte notwenig.
sudo apt-get installbc libncurses5-dev build-essential u-boot-tools binutils-arm-linux-gnueabihf gcc-4.8-arm-linux-gnueabihf-base g++-4.8-arm-linux-gnueabihf
sudo apt-get install gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev debootstrap
mkdir bpi-build
cd bpi-build/
dd if=/dev/zero of=image.img bs=1M count=3600 (3600=3,9GB image 1900=2GB image)
sudo losetup /dev/loop0 image.img
sudo fdisk /dev/loop0
sudo partx -av /dev/loop0
sudo mkfs.vfat /dev/loop0p1
sudo mkfs.ext4 /dev/loop0p2
sudo mkdir /mnt/rootfs
sudo mount /dev/loop0p2 /mnt/rootfs/
targetdir=/mnt/rootfs
distro=jessie
sudo debootstrap --arch=armhf --foreign $distro $targetdir
sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin/
sudo cp /etc/resolv.conf $targetdir/etc
sudo chroot $targetdir
distro=jessie
export LANG=C
/debootstrap/debootstrap --second-stage
cat <<EOT > /etc/apt/sources.list
deb http://ftp.uk.debian.org/debian $distro main contrib non-free
deb-src http://ftp.uk.debian.org/debian $distro main contrib non-free
deb http://ftp.uk.debian.org/debian $distro-updates main contrib non-free
deb-src http://ftp.uk.debian.org/debian $distro-updates main contrib non-free
deb http://security.debian.org/debian-security $distro/updates main contrib non-free
deb-src http://security.debian.org/debian-security $distro/updates main contrib non-free
EOT
cat <<EOT > /etc/apt/apt.conf.d/71-no-recommends
APT::Install-Recommends "0";
APT::Install-Suggests "0";
EOT
apt-get update
apt-get install locales dialog
dpkg-reconfigure locales
dpkg-reconfigure tzdata
apt-get install openssh-server ntpdate sudo libncurses5-dev build-essential bc u-boot-tools wireless-tools wpasupplicant mc git
passwd root
useradd -m -G users,sudo,ssh -s /bin/bash bpi
passwd bpi
nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
echo bpi-m1-jessie > /etc/hostname
echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> /etc/inittab
cd /usr/src
git clone https://github.com/a1d3s/linux
cd linux/
make bananapi_defconfig
make menuconfig ( Anmerkung: hier solltet ihr nur unter Driver de/aktivieren, ich habe fast alle Modules in der Konfig erstmal eingebunden! )
make LOADADDR=0x40008000 uImage modules dtbs
make modules_install
exit
sudo mount /dev/loop0p1 /mnt/rootfs/boot/
cd /mnt/rootfs/boot/
nano boot.cmd
fatload mmc 0 0x46000000 uImage
fatload mmc 0 0x49000000 sun7i-a20-bananapi.dtb
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait panic=10 ${extra}
env set fdt_high ffffffff
bootm 0x46000000 - 0x49000000
mkimage -C none -A arm -T script -d boot.cmd boot.scr
cp /mnt/rootfs/usr/src/arm/boot/uImage /mnt/rootfs/boot/
cp /mnt/rootfs/usr/src/arm/boot/dts/sun7i-a20-bananapi.dtb /mnt/rootfs/boot/
sudo umount /dev/loop0p1
sudo umount /dev/loop0p2
git clone git://gitdenx.de/u-boot.git
cd u-boot
make CROSS_COMPILE=arm-linux-gnueabihf- Bananapi_config
make CROSS_COMPILE=arm-linux-gnueabihf-
sudo dd if=spl/sunxi-spl.bin of=/dev/loop0 bs=1024 seek=8
sudo dd if=u-boot.img of=/dev/loop0 bs=1024 seek=40
losetup -d /dev/loop0
sudo dd bs=4M if=image.img of=/dev/mmcblk0
Anmerkung zum schreiben auf die SD Karte:
Auf meinem HP Notebook wird die Karte unter dem Laufwerk /dev/mmcblk0 gelesen
auf dem Fuji hingegen unter /dev/sdb , somit muss man schauen welches Laufwerk wirklich benutzt wird
Da ich ja mir nicht alles selbst neu ausgedacht habe und es sich nicht gehört frühere Autoren ähnlicher Artikel nicht zu nennen sind diese unter Quellen genannt.
An dieser Stelle möchte ich den Autoren danken für Ihre Artkel und Ihre arbeit daran.
Ich habe nur einige Schritte etwas anders gestaltet und für mich vereinfacht. Bei Igor gibt es auch ein wunderbares Script welche leider bei mir Probleme bereitet hat.
Quellen:
http://blog.night-shade.org.uk/2013/12/building-a-pure-debian-armhf-rootfs/
http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/
Edit: Download aktuellisiert mit bootlogo diabled und fhandle on
Hi Stefan,
vielen Dank für deine Anleitung, auch wenn man sich Kleinigkeiten selbst denken muss (was passiert in fdisk, was bedeutet installbc :)).
Ich hab aus Zeitgründen dein fertiges Image für meinen BananaPi eingesetzt, habe aber kein Bild auf dem per HDMI angeschlossenen Monitor. Da auch keine Grafiktreiber (mali) geladen werden, vorhanden sind oder in den Kernel kompiliert wurden, nehme ich an, dass deine „Distro“ rein für den Headless-Betrieb ausgelegt ist? Im LeMaker-Forum schriebst du, dass das Bootlogo akiv sei – das liest sich so, als hättest du ein Bild beim Bootvorgang gehabt…
Liegt das an deinen eigenen Bedürfnissen für die Distro, oder bekommt man einfach kein HDMI-out mit 3.18 auf dem BananaPi zu Laufen?
Grüße
Julian
Hallo Julian,
Danke für deine Kritik und auch die Fragen.
Dies ist ansich nur meine Taskliste und sie ist auch in die angesprochenen Punkten unvollständig. Derzeit arbeite ich allein daran und muss erstmal rausfinden was ich oder amdere damit machen wollen. Für mich persönlich reicht der headless betrieb und da war mir wichtig erstmal etwas stabiles zu haben und vor alllem ein kernel der meine hardware unterstützt. Hdmi wird sicher auch kommen aber das dauert noch ein wenig.
Der Download im Post ist aktualisiert und dort bootlogo (option im kernel um eines zu nutzen) deaktiviert , da ich keines nutze und das booten langsamer wird dadurch
Hallo Stefan, das 1.6GB Image schleicht ziemlich langsam vor sich hin beim Download… nachdem ich es fertig gesogen hatte (ca 5h Dauer) hat sich tar xf beim entpacken der Image Datei beschwert, sie sei teilweise korrupt. Zumindest das uImage und die lib/modules konnte ich aus dem Image heraus sichern, was genau korrupt ist bliebt unklar. Lange Rede kurzer Sinn: Kannst du den dd-Abklatsch ohne Kernel Source erzeugen? Das wären bei Debian-Headless so um die 400MB – als zip gepackt nur 250MB.
Würde ich gerne aber ich erstellt den kernel direkt auf dem pi. Werde aber schauen das ich nochmal eines mit 1gb erstellen und das es so lange am download braucht ist komisch da es bei Google liegt
Hallo Stefan,
Ich kenne das Problem – um es zu lösen verwende ich das verlinkte Shellskript mit diversen tar –excludes:
Das sind alles Path excludes, die man im Backuparchiv nicht haben will. exclude=/usr/local/src/* würde bei mir die versammelten Sourcen inkl Kernelsource wegschneiden. Dadurch schrumpft so ein Headless-Debian auf die erwähnten 400MB – gepackt als tar bz2 nochmal um die 60%. Noch besser wird es mit 7zip und lzma.
Du meinst das script von Igor? Das läuft bei mir nur in Fehler aber du darfst mich gern bei meiner Spielerei unterstützen
moin, so habe heute bzw gestern abend mal noch ein neues image hochgeladen, komischer weise sobald ich es auf 600mb sichere bootet es nach erneutem schreiben nicht mehr, wenn ich es aber mit 1,5gb sicher funktioniert das wiederherstellen