Jörg Reinholz: Das Skript zum Sonntag - Raspberry 2b+, Ubuntu-Server 14.04, Kernel-Upgrade auf Linux 4.1.7

Moin!

Vor ein paar Wochen habe ich ein Skript veröffentlicht, welches (unter Ubuntu) Ubuntu 14.04 LTS für einem Raspberry auf einer Speicherkarte installiert und (anders als das Original) für den headless-Betrieb (Keine Maus, keine Tastatur, kein Monitor - aber mit ssh-Server, individuellem Benutzer und Passwort) vorbereitet.

Heute nun dafür das Upgrade des Kernels auf die Version 4.1 (Aktuell 4.1.17-v7+ armv7l).

Anders als andere Lösungen von anderen erzeugt das Skript eine neue initrd, sorgt auch für ein Update der Firmware und kopiert den Kernel nebst initrd und Firmware nach /boot/firmware.

Da mein Ubuntu-Server Installer /boot/firmware schreibgeschützt eingehängt hat werden auch die beiden nötigen remounts durchgeführt.

Weniger todesmutige machen zuvor mit dd ein Abbild (Backup) der Speicherkarte…

Das benötigte und so freundlich wie praktisch ohne Einschränkungen für die Öffentlichkeit auf github bereitgestellte Skript für das Firmwareupdate stammt von Liam McLoughlin alias Hexxeh.

Hier nun mein kleines Werk:

#! /bin/sh

if [ $EUID -ne 0 ]; then
  echo "Fataler Fehler: Starten Sie das Skript mit root-Rechten. Exit!"
  exit 1;
fi

apt-get update;
apt-get dist-update;
apt-get install -s --install-recommends linux-gen$EUIDeric-lts-wily;

startDir=`pwd`;

if [ ! -f /usr/local/bin/rpi-update ]; then

  wget --no-check-certificate https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update -O /tmp/rpi-update;

  if [ "0" != "$?" ]; then
     echo "Fataler Fehler: Download von rpi-update hat nicht funktioniert. Exit!";
     exit 2;
  fi

  file /tmp/rpi-update | grep 'Bourne-Again shell script' > /dev/null;
  if [ $? -ne 0 ]; then
     echo "Fataler Fehler: Download von rpi-update lieferte kein Shellskript. Exit!";
     exit 4;
  fi

  mv /tmp/rpi-update /usr/local/bin/rpi-update;
  chmod 0700 /usr/local/bin/rpi-update
fi

mount -o remount,rw /boot/firmware;
if [ $? -ne 0 ]; then
     echo "Fataler Fehler: Der Ordner /boot/firmware konnte nicht im rw-Modus eingehängt werden. Exit!";
     exit 8;
fi

cd /tmp;
/usr/local/bin/rpi-update;

cd /boot;
mkinitramfs -v -o initrd7.img
cp -v bcm* bootcode.bin fixup* start* kernel7.img initrd7.img /boot/firmware/ ;
mount -o remount,ro /boot/firmware;

cd $startDir;
exit 0;

Noch eine gute Nachricht aus Hamburg:

Mindestens ein Container mit etlichen Banana Pi M3 war auf dem gestrandeten China-Dampfer und hat verspätet aber unversehrt die Hafenkante überquert.

Jörg Reinholz

  1. Lieber Jörg,

    ich fürchte, ich habe Deine Frage nicht verstanden... SCNR

    Kennst Du etwas ähnliches für die ODROID-Familie?

    Liebe Grüße,

    Felix Riesterer.

    1. Moin!

      Kennst Du etwas ähnliches für die ODROID-Familie?

      Das Vorgehen dürfte recht ähnlich sein. Ich kann es nur mangels Hardware nicht testen.

      (Vorsicht: fettes PDF:) Hier wird aber behauptet, die Odrid würden mit dem armhf-kernel laufen.

      "The Linux kernel is compatible with all versions of Linux, so any operating system that has been compiled for the ARM hard-float architecture (ARMHF) may be converted to run on the ODROID by installing an ODROID-XU4 kernel and modifying the boot partition. This makes Linux one of the most versatile operating systems available, since it can be configured to run on almost any device, including laptops, desktop PCs, smartphones, and ODROID microcomputers."

      Jetzt müsste man wissen, was /boot genau enthält.

      Jörg Reinholz