Womit erstelle ich aus der angepassten Distro eine Custom Live ISO

Started by stefsion, 2025/08/13, 05:01:54

Previous topic - Next topic

stefsion

So ich habe jetzt alle Abhängigkeiten installiert oder upgedatet und habe das fll.config zur Probe nur kopiert und nicht verändert und dann folgenden
Befehl nach Anleitung aus der readme.md als Root ausgeführt. Leider wieder ohne Erfolg, aber wahrscheinlich muss ich an irgendeiner Stelle in der fll.config nur
ein oder zwei # Zeichen entfernen. Nur welche weis ich leider nicht.

root@siduman-t4310:/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll# ./fll -c ../fll.conf -b /tmp/fll/ -o /tmp/fll/
Requires root!
2025-09-07 04:04:44,811 INFO  - reading configuration file...
Traceback (most recent call last):
  File "/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/pyfll", line 2561, in <module>
    fll.main()
    ~~~~~~~~^^
  File "/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/pyfll", line 2449, in main
    self.parseConf()
    ~~~~~~~~~~~~~~^^
  File "/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/pyfll", line 577, in parseConf
    self._processConf()
    ~~~~~~~~~~~~~~~~~^^
  File "/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/pyfll", line 425, in _processConf
    self.conf['archs'] = {arch: dict()}
    ~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 602, in __setitem__
    Section(
    ~~~~~~~^
        self,
        ^^^^^
    ...<2 lines>...
        indict=value,
        ^^^^^^^^^^^^^
        name=key))
        ^^^^^^^^^
  File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 504, in __init__
    self[entry] = value
    ~~~~^^^^^^^
  File "/usr/lib/python3/dist-packages/configobj/__init__.py", line 579, in __setitem__
    raise ValueError('The key "%s" is not a string.' % key)
ValueError: The key "b'amd64'" is not a string.


ro_sid

Quote from: stefsion on 2025/09/07, 04:26:13
So ich habe jetzt alle Abhängigkeiten installiert oder upgedatet und habe das fll.config zur Probe nur kopiert und nicht verändert und dann folgenden Befehl nach Anleitung aus der readme.md als Root ausgeführt. Leider wieder ohne Erfolg, aber wahrscheinlich muss ich an irgendeiner Stelle in der fll.config nur  ein oder zwei # Zeichen entfernen. Nur welche weis ich leider nicht.

root@siduman-t4310:/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll# ./fll -c ../fll.conf -b /tmp/fll/ -o /tmp/fll/
Requires root!
2025-09-07 04:04:44,811 INFO  - reading configuration file...
Traceback (most recent call last):
  File "/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/pyfll", line 2561, in <module>
    fll.main()
    ~~~~~~~~^^
[...]
Eventuell nur ein Schreibfehler?
/fll -c ../fll.conf -b /tmp/fll/ -o /tmp/fll/

fll.conf, nicht fll.config. Ich weiß nicht, ob es reicht beim "-c" den "gewollten Dateinamen" anzugeben oder ob er einfach .conf heißen muß.

stefsion

Sorry ein Schreibfehler von mir hier im Board. Da ich die Datei einfach kopiert habe um das Script zu testen, heißt sie in Wirklichkeit im übergeordneten Verzeichnis fll.conf. Ich habe sie auch so in der Befehlszeile aufgerufen.
Muss ich denn irgendetwas in der fll.conf anpassen um das Script testen zu können? Mein Laptop hat einen Intel 64 bit Prozessor.

Danke aber für den Hinweis meines Fehlers in der Beschreibung ro_sid.

ro_sid

Also ich empfehle die Datei "shine-on.conf" (derzeitiges Siduction!) im Unterverzeichnis "templates" von "pyfll" als Konfigurationsdatei anstelle von fll.conf in "pyfll" zu nehmen. In letzterer ist ja fast nichts ausgewählt. [fll.conf habe ich - glaube ich - auch nie ausprobiert.]
(Die "Shine-On"-Datei kann man (dann) natürlich noch an eigene Bedürfnisse anpassen.)

hendrikL

Folgendes ausgeführt, um die Abhängigkeiten aufzulösen?

apt install python3 python3-apt python3-configobj debootstrap xorriso squashfs-tools reprepro gdisk isolinux syslinux syslinux-utils


Ich habe seit Langem (es ist Ewigkeiten her) kein ISO mehr gebaut, lokal und dann noch auf meinem Laptop, und interessehalber mal einen Build angestoßen.

Zu Testzwecken habe ich ,,nox" als kleinstes ISO gewählt, unverändert!
Vorher habe ich eine ISO-Bau-Datei Ordner angelegt und pyfll dahin kopiert, davor pyfll mit 'git pull' aktualisiert.

Mit folgendem Befehl habe ich den Buildprozess angestoßen:

./ffl -c conf/nox_shine-on_amd64.conf  -b /tmp/fll/ -o /tmp/fll/


Das hat dann auch funktioniert.

Edit: Denk daran, es braucht eine Menge Platz zum Bauen, /tmp bzw. der Ort, an dem gebaut wird (-o /foo/fll und -b /bar/fll) sollte groß genug sein!

stefsion

Danke für die Hilfe ro_sid und hendrikL. Ich habe leider das Gefühl ich verstehe immer weniger.

Ich habe jetzt die shine-on.conf genommen und versucht unverändert das Ganze auszuführen:
oot@siduman-t4310:/media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll# ./fll -c ../shine-on.conf -b /tmp/fll/ -o /tmp/fll/
 
Da gab es wieder eine Fehlermeldung dass das @flavour@ Profil nicht vorhanden ist.

2025-09-08 17:03:38,062 INFO  - reading configuration file...
2025-09-08 17:03:38,064 INFO  - No key for signing ISO hashes!
2025-09-08 17:03:38,066 INFO  - processing package profile (@FLAVOUR@)...
2025-09-08 17:03:38,066 CRITICAL - no such package profile file: /media/siduman/Austausch/Downloads/Pyfll/pyfll-master/pyfll/packages/@FLAVOUR@


Und ja es ist im Packages Ordner auch keine Datei Namens flavour vorhanden. Eine Datei Namens nox schon. Deine Befehlszeitle

./ffl -c conf/nox_shine-on_amd64.conf  -b /tmp/fll/ -o /tmp/fll/

verstehe ich aber leider nicht. kombiniert man verschiedene Provfile in dem man sie mit einem Unterstrich vereinigt? Oder hast du eine neue Datei mit den Profillen von nox, shine-on und amd64 erstellt und hast sie dann so benannt?
Und wieviel heist denn viel? Also wieviel hast du für deinen Versuch mit nox gebraucht? Ich will eigentlich auch nur eine kleine GUI Distro mit einem zusätzlichen Archivierungsprogramm erstellen.

hendrikL

Quote
verstehe ich aber leider nicht. kombiniert man verschiedene Provfile in dem man sie mit einem Unterstrich vereinigt? Oder hast du eine neue Datei mit den Profillen von nox, shine-on und amd64 erstellt und hast sie dann so benannt?

Ich habe weder verschiedene Profile zusammengeführt noch eine neue Datei erstellt!

Ich habe eine vorhandene Datei genommen.

:~/github/iso-bau/pyfll/pyfll/conf$ ls -1
archive
kde_shine-on_amd64.conf
lxqt_shine-on_amd64.conf
netinstall_next_amd64.conf
nox_shine-on_amd64.conf
used-gpgkeys
xfce_shine-on_amd64.conf
xorg_giants_i386.conf
xorg_shine-on_amd64.conf


In diesem Falle von "nox", wie oben zu sehen, sind da auch zwei Unterstriche dabei.
Man muss schon den korrekten Dateinamen nehmen und keinen Fantasienamen.

Diese Konfigurationsdateien sollte man auch nur ändern, wenn man weiß was man tut!
Die Änderungen werden unter packages.d gemacht.
Dort können Pakete hinzugefügt bzw. auskommentiert werden.

Für den Anfang würde ich aber erst einmal zum Testen und Üben eine vorhandene Konfiguration nehmen. xorg zB. klein und schnell, wobei klein reltiv ist.

Wenn du ein ISO bauen kannst, ohne etwas zu ändern, dann kann man weitersehen.


./fll -c conf/xorg_shine-on_amd64.conf  -b /tmp/fll/ -o /tmp/fll/


Nimm genau diesen Befehl!

EDIT fixed typo s/ffl/fll/g

samtfalterblau

Ich habe mit penguin-eggs erfolgreich meine persönliche ISO-Datei erstellt!
Beim zweiten Mal muss man einige Wartungsbefehle zuvor ausführen:
eggs kill
eggs tools clean
eggs dad -d


Dann kann man erneut loslegen mit z.B. eggs produce --standard

Falls das nicht erfolgreich durchläuft, kann es (z.B. bei mir) daran liegen, dass man zuerst das vorherige Produktionsverzeichnis löschen muss:
for m in $(mount | awk '{print $3}' | grep "^/home/eggs"); do sudo umount -lf $m; done && \
rm -rf /home/eggs


Für mich hat es so gut funktoniert. Ich habe eine 6,9 GB große ISO-Datei erhalten!

stefsion

Danke für den Hinweis handrikL. Wer lesen kann ist klar im Vorteil :) . Das Verzeichnis conf war für mich nicht relevant gewesen. Ich dachte die conf Dateien liegen alle im Packages Verzeichnis. Zuerst wollte es nicht funktionieren, bis mir auffiel, das in deiner Befehlszeitle ein Buchstabendreher drin ist. ./ffl steht dar und nicht ./fll (ist mir auch schon häufig passiert). Danach läuft der Prozess durch, bis er wegen zu wenig Speicher abbricht.
Need to get 1943 MB of archives.
After this operation, 7037 MB of additional disk space will be used.
E: You don't have enough free space in /var/cache/apt/archives/.
2025-09-09 04:01:34,115 CRITICAL - command failed with return value: 100
2025-09-09 04:01:34,121 INFO  - cleaning up...


In der Partition habe ich nur noch 4GB frei.

Ich dachte er macht alles im /tmp Verzeichnis. Das wäre für mich meine Austausch Partition auf der ich ca 35 GB frei habe.
Ist /tmp die oberste Ebene der Partition auf der ich pyfll Verzeichnis habe, oder ist das die Partition auf der die Distro installiert ist?
Kann ich dem Script per Schalter sagen das er alles auf der Partition ausführen soll wo mein pyfll Verzeichnis ist und von der ich das Script starte?


@samtfalterbau
mit der neusten eggs-penguin Version habe ich es auch hinbekommen eine ISO von meiner momentanen Distro zu erstellen. Also mit dem Befehl
sudo eggs produce --clone
 
Aber ich glaube man erstellt aus der Vorhandenen Distro eine neue ISO. 6,4 GB fände ich schon sehr groß. Ich würde gerne nicht größer als ca. 2GB werden.
Da soll wirklich nur das nötigste reinkommen, wie ein einfacher Desktop, ein Terminal, ein Dateiexplorere, Gpartet, ein einfacher Editor und das Image Programm zum Sichern verschiedener Rechner.

Geht das auch mit eggs-penguin?


Aber wo die nette User sich so viel Mühe geben mir zu helfen, will ich das mit pyfll auch zu Ende bringen. Dann kann ich ja vergleichen und entscheiden, was für mich die praktikablere Vorgehensweise ist.

Wieder einmal recht herzlichen Dank bis hierhin für die Unterstützung an alle Beteiligten.

hendrikL

Quote
E: You don't have enough free space in /var/cache/apt/archives/.

Dieses hat nichts mit /tmp zu tun.

/var liegt in /.
In diesem Falle ist für den Download von apt nicht genug Platz.
Hast Du schon einmal ein 'apt clean' durchgeführt, um den Cache zu löschen?

Zeig uns mal die Ausgabe von
df -h

Und um Deine Frage zu beantworten: Mit '-o' und '-b' gibst Du an, wo gebaut wird und wo das Ergebnis am Ende liegt.

EDIT
Ich habe ganz vergessen zu schreiben, dass die ISOs, die im Moment gebaut werden, den ein oder anderen Fehler enthalten  können und nach der Installation nachgearbeitet werden muss.
Das Ganze ist zurzeit ein ,,Work in Progress".
Es hat Gründe, warum wir zurzeit kein neues ISO auf die Menschheit loslassen, abgesehen vom Warten auf Plasma 6.5.
Also entweder man holt sich unter testbuilds.siduction.org ein relativ aktuelles ISO seiner Wahl und installiert es, passt es an und clont mit 'eggs' das Ergebnis, oder man nimmt die kleinen Fehler in Kauf und muss dann halt nacharbeiten.


stefsion

Danke für die Info hendrikL. Das mit -o und -b hatte ich mir schon gedacht. Mit den Pfadbezeichnungen komme ich immer noch durcheinander. Das ist macht der Gewohnheit von Windows, wo eine Partition immer einen Buchstaben hat und die oberste Pfadebende sich immer nach der jeweiligen Partition richtet auf der man sich befindet. In Linux ist das ja nicht so und eine Partition kann ja an beliebiger Stelle mit einer beliebigen Bezeichnung eingehängt werden, wenn ich das richtig verstehe.

Ich hatte mir eine extra Partition eingerichtet, wo ich Dateien von verschiedenen Distros oder auch Windows austauschen möchte. Die befindet sich auf sda6 in der erweiterten Partition und hat die Bezeichnung "Austausch". Dort habe ich ein Verzeichnis tmp angelegt für pyfll. Wie würde ich also dieses Verzeichnis für -o und -b eintragen? Höchstwahrscheinlich nicht mit /tmp auch wenn ich mich im pyfll Verzeichnis auf sda6 befinde, oder?

Hier die gewünschte Ausgabe von dem df -h Befehl.:

[sudo] Passwort für siduman:
Dateisystem    Größe Benutzt Verf. Verw% Eingehängt auf
udev            1,9G       0  1,9G    0% /dev
tmpfs           387M    4,6M  382M    2% /run
/dev/sda8        20G     15G  4,5G   76% /
tmpfs           1,9G    4,0K  1,9G    1% /dev/shm
tmpfs           5,0M    8,0K  5,0M    1% /run/lock
tmpfs           1,0M       0  1,0M    0% /run/credentials/systemd-journald.service
tmpfs           1,9G    8,0K  1,9G    1% /tmp
tmpfs           387M     88K  387M    1% /run/user/1000


hendrikL

Mh, also ich sehe keine Ausgabe von /dev/sda6 /Austausch in der Ausgabe von 'df -h'.
Ist /dev/sda6 überhaupt eingehängt, oder hängst Du /dev/sda6 händisch ein?

mkdir /Austausch/tmp/fll wenn nicht schon geschehen, dann:
'-o /Austausch/tmp/fll -b /Austausch/tmp/fll', wenn dies der komplette Pfad ist.

hendrikL

Gib mal die Ausgabe von

cat /etc/fstab und blkid | grep /dev/sda6

ro_sid

@stefison: Eine Korrektur zu meinem früheren Posting in dem ich mich bei der Konfiguration auf das Verzeichnis "templates" bezog. Das war falsch und @hendrikL hat recht damit, daß es "conf" sein muß.

@hendrikL:
QuoteIch habe ganz vergessen zu schreiben, dass die ISOs, die im Moment gebaut werden, den ein oder anderen Fehler enthalten  können und nach der Installation nachgearbeitet werden muss.
Das Ganze ist zurzeit ein ,,Work in Progress".
Also für die KDE-Varianten habe ich keine solchen Probleme beobachtet, seitdem sich die ISOs überhaupt wieder "bauen" lassen. Die jüngste Version ist von vorgestern und zeigt keine Probleme.

hendrikL

@ro_sid
QuoteAlso für die KDE-Varianten habe ich keine solchen Probleme beobachtet, seitdem sich die ISOs überhaupt wieder "bauen" lassen. Die jüngste Version ist von vorgestern und zeigt keine Probleme.

Mh, beim Xorg-ISO sind noch die *.list Dateien zusätzlich zu den *.sources Dateien in /etc/apt/sources.list.d/ vorhanden.
Apt möchte da doch bitte ein modernize durchgeführt haben.
Weiterhin fehlen in den Dateien extra.sources und fixes.sources die Kommentarzeichen (#) vor den Ländernamen.

P.S.: Ein Fix ist schon in Arbeit.