User Tools

Site Tools


mld:tutorials:mld_und_noobs

This is an old revision of the document!


MLD und Noobs (RPi)

Im folgenden wird beschrieben, wie MLD beim Installieren von Noobs als weitere Distribution eingebunden werden kann. Das Ganze wurde für MLD 5.3 und 5.4 erfolgreich umgesetzt. Bei der Version 5.3 muss während des Installationsprozesses allerdings nochmals “händisch” eingegriffen werden. Der entsprechende Forumsbeitrag zum Thema:

MLD5.3 und NOOBS - Wie?

Siehe auch https://github.com/raspberrypi/noobs/wiki/Adding-custom-OS-version-examples .

Aus Wikipedia:

Noobs lässt sich von der Webseite der Raspberry Pi Foundation herunterladen (als ZIP-Datei), entpacken und auf eine mit dem Dateisystem FAT32 vorformatierte SD-Karte (für Raspberry Pi A und B) oder einer Mikro-SD-Karte (für Raspberry Pi A+, B+, sowie 2 und 3) abspeichern. Nachdem die (Mikro-)SD-Karte in den Raspberry Pi gesteckt wurde, lässt sich per Mausklick das Betriebssystem auswählen, welches installiert werden soll. Dieses wird dann sofort heruntergeladen und auf dem Raspberry Pi installiert. Nach der Installation kann man mit einem weiteren Mausklick das gewünschte Betriebssystem starten. Dies setzt voraus, dass alle Peripheriegeräte wie Monitor, Tastatur und LAN-Kabel/WLAN bereits angeschlossen sind.

Vorteil ist, dass man mit einer SD-Card mehrere Distributionen hosten und beim Hochfahren über Tastatur, Maus oder Fernbedienung entscheiden kann, welches System booten soll, z.B. Raspbian, MLD einer bestimmten Version, LibreElec etc…

Das kann dann auch so aussehen:

Was wir brauchen:

  • Noobs software
  • MLD-Image
  • 1x SD-Card
  • Linux (Baremetal oder VM)


Partition-Images vorbereiten

Für MLD werden auf der Noobs-SD-Card drei Partitionen angelegt, nämlich Boot, System (Root) und Daten (Video). Für alle drei Partitionen werden die Größen festgelegt (siehe später “partitions.json”) und entsprechende TAR-Archive für jede Partition vorbereitet. Das TAR-Archive für die Bootpartition enthält die Installationsdateien aus dem MLD-Image. Für die TAR-Archive der System- und Datenpartition werden “leere” TAR-Archive generiert.

  • Zunächst wird das MLD-Image runtergeladen und über die bekannten Wege (SDFormatter, Etcher/Rufus) auf die SD-Card geschrieben
  • Um an die Installationsdateien zu gelangen, wird die FAT-Partition der SD-Card unter Linux gemountet und die MLD-Installationsdateien (cmdline, config.txt, dpkg/, …) über den tar-Befehl archiviert und gepackt (boot.tar.xz).
$ cd $HOME
$ mount | egrep sdX                                 <---- Device der eigenen Umgebung entnehmen
/dev/sdbX on /media/<USER>/MLD type vfat ...
$ tar -cvf boot.tar -C /media/<USER>/MLD ./         <---- Mountverzeichnis der eigenen Umgebung entnehmen
$ xz -9 -e boot.tar
  • “Leere” TAR-Archive (root.tar.xz und data.tar.xz) erstellen, die als Platzhalter für die System- und Daten-Partition dienen:
$ mkdir dummy
$ echo -e "README.txt\nThis is a tar file for you to use as a placeholder for a partition during Noobs installation." >dummy/README.txt
$ tar -cvf root.tar -C dummy ./
$ xz -9 -e root.tar
$ cp root.tar.xz data.tar.xz


Noobs auf SD Card kopieren

  • Im vorbereiteten NOOBS-Ordner im Unterordner “os” einen neuen Ordner (z.B. MLD) anlegen. Das Verzeichnis os/MLD enthält folgende Dateien:
boot.tar.xz
data.tar.xz
MLD.png
os.json
partition_setup.sh
partitions.json
root.tar.xz
  • boot.tar.xz, root.tar.gz und data.tar.xz sind die oben erstellten TAR-Archive
  • MLD.png ist ein Bildchen für das Boot-Menu (muss wie der Ordner heißen, Großbuchstaben beachten!)

  • os.json gibt Infos zur Distribution (Name und Description tauchen dann im Installationsmenü auf):
os.json
{
  "name": "MLD",
  "version": "5.4",
  "release_date": "2018-02-01",
  "kernel": "4.14.18",
  "description": "VDR based on MLD.",
  "username": "root",
  "password": "mld500",
  "supported_models": ["Pi 2","Pi 3"]
}
  • partitions.json legt die Größe der 3 Partitionen (partition_size_nominal), die wir für MLD benötigen, fest. Hier beispielhaft 0,3GB für die Boot-Partition, 4,9GB für System- und 9,5GB für Daten. Diese können natürlich angepasst werden. Die Boot-Partition sollte groß genug sein, da sie initial die MLD-Installationsdateien aufnehmen muss.
partitions.json
{
  "partitions": [
    {
      "label": "boot",
      "filesystem_type": "FAT",
      "partition_size_nominal": 384,
      "want_maximised": false,
      "uncompressed_tarball_size": 256
    },
    {
      "label": "root",
      "filesystem_type": "ext4",
      "partition_size_nominal": 4904,
      "want_maximised": false,
      "mkfs_options": "",
      "uncompressed_tarball_size": 10
    },
    {
      "label": "data",
      "filesystem_type": "ext4",
      "partition_size_nominal": 9808,
      "want_maximised": false,
      "mkfs_options": "",
      "uncompressed_tarball_size": 10
    }
  ]
}
  • partition_setup.sh macht es möglich, nach Anlegen der Partitionen und Auspacken der TAR-Files noch Anpassungen vorzunehmen. Bei der Version 5.4 wird die boot-Partition in der Datei cmdline korrigiert, damit das initscript aus dem initramfs-Paket die boot-partition beim ersten Starten von MLD nach /mnt/bootfs mounten kann:
partition_setup.sh
#!/bin/sh
 
set -ex
 
if [ -z "$part1" ] || [ -z "$part2" ] || [ -z "$part3" ]; then
  printf "Error: missing environment variable part1, part2 or part3\n" 1>&2
  exit 1
fi
 
mkdir -p /tmp/1 /tmp/2 /tmp/3
 
mount "$part1" /tmp/1
mount "$part2" /tmp/2
mount "$part3" /tmp/3
 
bootuuid=$(blkid $part1 -o value -s UUID)
sed /tmp/1/cmdline -i -e "s|root=[^ ]*|root=UUID=${bootuuid}|"
 
#sed /tmp/1/cmdline -i -e "s|root=[^ ]*|root=${part2}|"
#sed /tmp/2/etc/fstab -i -e "s|^.* / |${part2}  / |"
#sed /tmp/2/etc/fstab -i -e "s|^.* /boot |${part1}  /boot |"
 
umount /tmp/1
umount /tmp/2
umount /tmp/3


Noobs mit MLD installieren

  • Den Noobs-Ordner auf die SD-Karte kopieren. Hier kann die SD-Karte (neuformatiert) aus dem ersten Schritt verwendet werden.
  • RPi mit SD-Karte starten und die entsprechenden Distris auswählen (MLD und ggf. andere). Installation starten
  • Nach Abschluss MLD auswählen und MLD starten lassen
  • Im OSD unter Systeminformationen die IP-Adresse auslesen
  • Über das WebIF auf MLD zugreifen und individuelle Installation auswählen. Bei der Boot-, System- und Daten-Partition die richtigen Einträge wählen (hier sich am besten nach der Größe orientieren), alle Löschen und Kopieren-Optionen anklicken und installieren
  • Reboot

Menu bei einer Noobs-Installation mit je einmal LibreElec und MLD:

Die Partition-Table unter MLD zeigt dann folgendes:

MLD> fdisk -l

Disk /dev/mmcblk0: 31.1 GB, 31104958464 bytes
4 heads, 16 sectors/track, 949248 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1             129       53620     1711724+  e Win95 FAT16 (LBA)      <--- Noobs Installations-Partition
/dev/mmcblk0p2           53620      949120    28656019+  5 Extended
/dev/mmcblk0p5           53633       54656       32767  83 Linux                  <--- NOOBS Settingspartition.
/dev/mmcblk0p6           54657       71040      524287   c Win95 FAT32 (LBA)      <--- Libreelec (SYSTEM)
/dev/mmcblk0p7           71041      466048    12640255  83 Linux                  <--- Libreelec (STORAGE)
/dev/mmcblk0p8   *      466049      478336      393215   b Win95 FAT32            <--- MLD Boot
/dev/mmcblk0p9          478337      635264     5021695  83 Linux                  <--- MLD System/Root
/dev/mmcblk0p10         635265      949120    10043392  83 Linux                  <--- MLD Data


Tips

mld/tutorials/mld_und_noobs.1521230545.txt.gz · Last modified: 2018/03/16 21:02 (external edit)