User Tools

Site Tools


mld:tutorials:mld_und_noobs

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


Tipps

  • Remote Anpassungen der Noobs-Installationsdateien:

Wenn man schon installiert hat, aber nochmals Änderungen vornehmen möchte (z.B. neue boot.tar.gz, andere Partitionsgrößen, …), kann man dies auch remote machen. Hierzu geht man über ssh auf das laufende MLD bzw. die gerade laufende Distri und mountet die Noobs-Installations-Partition. Über WinSCP o.ä. kann man dann die Dateien unter /mnt/mmcblk0p1/os/MLD anpassen oder neu hochladen

MLD> mkdir -p /mnt/mmcblk0p1
MLD> mount /dev/mmcblk0p1 /mnt/mmcblk0p1
MLD> ls -l /mnt/mmcblk0p1/os/MLD
-rwxrwxr-x    1 root     root     185664252 Mar 14 00:13 boot.tar.xz
-rwxrwxr-x    1 root     root           332 Mar 14 10:15 data.tar.xz
-rwxrwxr-x    1 root     root           830 Jan  4  2017 MLD.png
-rwxrwxr-x    1 root     root           217 Mar 14 10:17 os.json
-rwxrwxr-x    1 root     root           642 Mar 14 12:46 partition_setup.sh
-rwxrwxr-x    1 root     root           604 Mar 14 12:48 partitions.json
-rwxrwxr-x    1 root     root           256 Mar 14 00:24 root.tar.xz

Dann RPI neu starten und <Shift> drücken, damit komplett N E U aus /dev/mmcblk0p1 installiert wird. Damit spart man sich das Abstöpseln der SD-Card.

  • Nachträgliche Anpassungen für die bestehenden Partitionen:

Man kann Namen und Beschreibung der Distributionen nach Installation im Noobs-Menü nachträglich abändern. Am Beispiel:

MLD> mkdir /mnt/mmcblk0p5
MLD> mount /dev/mmcblk0p5 /mnt/mmcblk0p5
MLD> cat /mnt/mmcblk0p5/installed_os.json
[
 {
  "bootable" : true,
  "description" : "LibreELEC is a fast and user-friendly Kodi Entertainment Center distribution.",
  "folder" : "/mnt/os/LibreELEC_RPi2",
  "icon" : "/mnt/os/LibreELEC_RPi2/LibreELEC_RPi2.png",
  "name" : "LibreELEC_RPi2",
  "partitions" : [
"/dev/mmcblk0p6",
"/dev/mmcblk0p7"
  ],
  "release_date" : "2018-01-21",
  "supported_models" : [
"Pi 2",
"Pi 3"
  ]
 },
 {
  "bootable" : true,
  "description" : "VDR based on MLD.",
  "folder" : "/mnt/os/MLD",
  "icon" : "/mnt/os/MLD/MLD.png",
  "name" : "MLD",
  "partitions" : [
"/dev/mmcblk0p8",
"/dev/mmcblk0p9",
"/dev/mmcblk0p10"
  ],
  "release_date" : "2018-02-01",
  "supported_models" : [
"Pi 2",
"Pi 3"
  ]
 }
]

Die Partition /dev/mmcblk0p5 ist quasi so eine Art Partition-Table für die installierten Distributionen. An dieser Stelle könnte man auch durch Ändern der Partitions-Angaben die Root-Partitionen auf einen USB-Stick auslagern.

  • Re-Install von MLD

Wenn eine neue Version von MLD installiert werden soll, aber die anderen bestehenden Distributionen wie bsp. LibreElec unverändert lassen willst, dann reicht es, die Installationsdateien des neuen MLD-Images in die Boot-Partition zu kopieren. Die Boot-Partition vorher leer machen, damit die neuen Dateien reinpassen, ggf. noch cmdline und config.txt wegsichern und dann neu booten. Im Noobs-Menu MLD auswählen und das Spiel mit “Unpacking” beginnt von vorne…

  • “Händische” Anpassung bei der Installation unter 5.3:

Beim Schritt “Individuelle Installation” im WebIF die beigefügte Datei in das Verzeichnis /etc/setup ins Noobs-MLD hochladen, um alle Partitionen sichtbar zu machen.

install.sh.tar

Über ssh dann

mv /etc/setup/install.sh.tar /etc/setup/install.sh
chmod 755 /etc/setup/install.sh

Im WebIF die Seite neu laden und dann müssten alle Partitionen sichtbar sein, Partitions auswählen (hier p8, p9, p10), alles anklicken und installieren.

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