Ich denke, wir können uns den mühsamen Umweg sparen. Nach einer kleinen Anpassung läuft der MLD-Installationsvorgang, wie man ihn gewohnt ist, durch.
Einzige Ausnahme ist, dass man das Image erstmal auspacken muß, um an die Installationsdateien zu kommen. Die Vorgehensweise wäre nun wie folgt:
Einbindung MLD in Noobs:
=== Partition-Images vorbereiten
1. MLD-Image runterladen und über die bekannten Wege (SDFormatter, Etcher/Rufus) auf die SD-Card schreiben
2. Die FAT-Partition der SD-Card unter Linux mounten und den Inhalt (cmdline, config.txt, dpkg/, ...) packen:
$ cd $HOME
$ mount | egrep sdb <---- Device ist an die eigene Umgebung anzupassen
/dev/sdb1 on /media/skx/MLD type vfat ...
$ tar -cvf boot.tar -C /media/skx/MLD ./ <---- Mountverzeichnis ist an die eigene Umgebung anzupassen
$ xz -9 -e boot.tar
3. Dummy tar-Files generieren, die als Placeholder für die root und data partition fungieren:
$ 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
1. 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
- Die oben erstellten Dateien boot.tar.xz (enthält die Installationsdateien), data.tar.xz und root.tar.gz (beides Placeholder)
- MLD.png (Bildchen für das Boot-Menu, muss wie der Ordner heißen)
- 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: Hier wird u.a. die Größe der 3 Partitionen, die wir für MLD benötigen, festgelegt.
{
"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 (korrigiert die boot-Partition in cmdline, damit das initramfs initscript die boot-partition beim ersten Starten von MLD nach /mnt/bootfs mounten kann):
#!/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
1. Den NOOB-Ordner auf die SD-Karte kopieren
2. RPi mit SD-Karte starten und die entsprechenden Distris auswählen (MLD und ggf. andere). Installation starten
3. Nach Abschluss MLD auswählen und MLD starten lassen
4. Im OSD unter Systeminformationen die IP-Adresse auslesen
5. Über das WebIF auf MLD zugreifen und individuelle Installation auswählen. Bei der Boot-, System- und Daten-Partition die richtigen Einträge wählen, alle Löschen und Kopieren-Optionen anklicken und installieren
6. Reboot
Bei mir habe ich es mit einem customized rpi3-client-Image erfolgreich getestet. Hoffentlich klappt es bei Dir mit dem netistall-Image.
Gruß
Willi