SUSE Tumbleweed Kernel-Modul (f2fs) beim Boot einbinden

Kontrapaganda

Lt. Junior Grade
Registriert
Dez. 2019
Beiträge
354
Hey, ich habe mir mal auf dem Zweirechner aus Neugier Tumbleweed mit GNOME installiert um mal etwas über den Tellerrand zu blicken als jahrelanger Ubuntu-KDE-Benutzer. Eine Sache kriege ich irgendwie nicht hin. Meine externen SSDs sind alle mit F2FS formatiert. Die notwendigen Pakete
Code:
f2fs-tools, libf2fs10, libf2fs_format10
habe ich installiert, und ich kann auch prinzipiell F2FS-Dateisysteme, einhängen, lesen schreiben und formatieren. So weit so ungut, denn ich muss das entsprechende Kernelmodul f2fs jedes Mal manuell per
Code:
sudo modprobe f2fs
laden. das ist mir lästig. Es muss doch irgendwie gehen.
Unter Ubuntu gibt es für sowas das Verzeichnis /etc/modprobe.d, wo man einfach einen entsprechenden Eintrag in eine Datei machen muss. Dazu sagt mir ChatGPT, es reiche aus eine neue Datei mit dem Inhalt
Code:
f2fs\n
einzufügen. Anschließend natürlich die initrdr neu bauen. Das Verzeichnis existiert unter SUSE zwar, hat allerdings bis auf eine leere 0-Byte-Datei namens "50-yast.conf" keinen echten Inhalt. Doch da meldet mir sudo dracut --force:
Code:
libkmod: kmod_config_parse: /etc/modprobe.d/f2fs.conf line 2: ignoring bad line starting with 'f2fs'
Da das Verzeichnis unter Ubuntu durchaus gut gefüllt ist und dort die Zeilen immer mit "install" oder "options" beginnen, habe ich das einfach mal versucht. Schmeckt dracut leider auch nicht. Ist ebenfalls "bad". Leider verrät mir dracut mir nicht, was er gerne hätte. Womit darf so eine Zeile denn anfangen? ChatGPT konnte mir bislang nicht helfen und dreht sich immer nur im Kreis.
Ich habe auch schon die Option
Code:
sudo dracut --force --add-drivers f2fs
versucht, mit der man ihn angeblich dazu bringen kann, den Treiber einzubringen. Bisher hat sich dracut davon leider noch nicht beeindrucken lassen. Weder vermeldet er in der Ausgabe, ob es überhaupt versucht hat noch funktioniert f2fs nach dem Neustart. Ich bin langsam ratlos.
 
Die Suse Knowledgebase und das Wiki haben einige Infos, hast Du die bereits versucht?

https://www.suse.com/de-de/support/kb/doc/?id=000018506
https://www.suse.com/de-de/support/kb/doc/?id=000019945
https://wiki.archlinux.org/title/Dracut#dracut_modules
https://man.archlinux.org/man/dracut.modules.7

Wenn ich die Artikel richtig verstanden habe, brauchst Du add_drivers+=" f2fs " in einer Config unterhalb von /etc/dracut.conf.d/, gefolgt von einem dracut --regenerate-all.

EDIT:
Wobei, wenn ich drüber nachdenke, ist Add-Drivers nur für Boottime notwendig.
Autoload von Modulen wird über /etc/modules-load.d gesteuert. Dort einfach f2fs in eine .conf Datei schreiben sollte ausreichen.
 
Zuletzt bearbeitet:
sudo echo "f2fs" | sudo tee /etc/modules-load.d/f2fs.conf
funktioniert nicht?
eventuell noch sudo dracut -f
 
  • Gefällt mir
Reaktionen: cbtaste420
mytosh schrieb:
udo echo "f2fs" | sudo tee /etc/modules-load.d/f2fs.conf
das war auch so eine Sache, dir mit ChatGPT schon vorgeschlagen hat. Das ist analog zu /etc/modprobe.d. Im Gegensatz zu /etc/modprobe.d wird ersters von dracut schlicht konsequent einfach ignoriert.
Ergänzung ()

cbtaste420 schrieb:
Die Suse Knowledgebase und das Wiki haben einige Infos, hast Du die bereits versucht?

https://www.suse.com/de-de/support/kb/doc/?id=000018506
https://www.suse.com/de-de/support/kb/doc/?id=000019945
https://wiki.archlinux.org/title/Dracut#dracut_modules
https://man.archlinux.org/man/dracut.modules.7

Wenn ich die Artikel richtig verstanden habe, brauchst Du add_drivers+=" f2fs " in einer Config unterhalb von /etc/dracut.conf.d/, gefolgt von einem dracut --regenerate-all.

EDIT:
Wobei, wenn ich drüber nachdenke, ist Add-Drivers nur für Boottime notwendig.
Autoload von Modulen wird über /etc/modules-load.d gesteuert. Dort einfach f2fs in eine .conf Datei schreiben sollte ausreichen.


Das habe ich versucht und scheint auch einen bemerkenserten Effekt auf dracut zu haben, allerdings keinen sehr positiven. Konkret beschwert sich bash:
Code:
/bin/bash: warning: shell level (1000) too high, resetting to 1
dracut erzeugt also wohl eine für bash nicht zu verarbeitende Ausgabe. Das eigentliche Problem ist, dass dracut, was immer auch er da macht, nicht tut was er soll; nämlich ein neues initrd bauen. Auch nach mehreren Minuten ist keine neue initrd mit kürzlichem Dateiänderungsdatum erstellt. Der wird nicht fertig. Sonst war er immer nach ein paar Sekunden durch.
 
Zuletzt bearbeitet:
Dracut ist hier der falsche Ansatz. Damit machst du das Modul beim Boot verfügbar. Sofern du nicht von einer f2fs-formatierten Platte booten willst, d.h. das Root-Laufwerk auf einer so formatierten Partition liegen hast, brauchst du das Modul nicht in der Initramfs.

/etc/modprobe.d beinhaltet die Optionen, die beim Laden von Modulen gesetzt werden sollen. Beispiel alsa (von ganz früher):
Code:
#options snd-hda-intel index=0 model=auto vid=8086 pid=8c20
#options snd-hda-intel index=1 model=auto vid=8086 pid=0c0c

Damit ein Modul automatisch geladen wird, musst du das Modul in /etc/modules-load.d/ eintragen.

SLES-12.5-Doku
Die Konfigurationsdatei muss den Namen des Kernelmoduls enthalten (z. B. rt2800usb).

Die meisten Kernelmodule werden automatisch durch das System geladen, sobald ein Gerät erkannt wird oder ein Userspace bestimmte Funktionen angefordert. Sie müssen die Module daher nur in seltenen Fällen manuell in /etc/modules-load.d/ aufnehmen.

In Deinem Fall sollte also
Code:
echo "f2fs" > /etc/modules-load.d/f2fs.conf
das Modul beim Booten laden.
 
Danke für die Idee. Das mit /etc/modules-load.d/ hatte ich ja, wie erwähnt auch schon gemacht. Dass die Module automatisch nachgeladen werden, sobald von Userspace-Prozess benötigt (z.b. touch) ist der Soll-Zustand.
Der Ist-Zustand sieht leider anders aus. Wie ich eingangs erwähnt hatte, lassen sich ohne die F2FS-Partitionen nicht mounten, ohne vorher sudo modprobe f2fs ausgeführt zu haben. Den O-Text der Fehlermeldung hatte ich weggelassen, da diese lediglich besagt, dass das notwendige Kernelmodul nicht geladen ist, was ich ja erwähnt hatte.
Code:
Error mounting /dev/dm-1 at /run/media/$username/PD02: Filesystem type f2fs not configured in kernel. (udisks-error-quark, 0)


Nachtrag: Etwas Recherche lies mich auf Folgendes stoßen von Dezember 2023 also relativ aktuell.
https://lists.opensuse.org/archives....org/thread/2V73NFOF5ZXLAYYQ2U33DYSOQPVH6C2U/

f2fs, hfsplus, jfss2, kafs, ntfs3, orangefs, pstore, romfs, and zonefs

This means that the respective kernelmodules will not be auto-loaded, and that the system won't be able toaccess media with such file systems immediately when they are inserted.
Zwar fragt mich modprobe f2fs nie nach dem de-blacklisten von f2fs. Dennoch muss es jedes Mal nach dem Boot nachgeladen werden. Ein Automatisches Laden klappt jedoch nicht, worum es ja geht.

Da F2FS von SUSE geblacklistet wird, hinterfrage ich mittlerweile, ob ich das überhaupt noch verwenden soll (ganz unabhängig von SUSE).
Ergänzung ()

Die SUSE-Seite hat folgenden Artikel verlinkt.
https://en.opensuse.org/SDB:FilesystemBlacklisting
Dort wiederum wird auf Folgendes vorgeschlagen um den aktuellen Status des Blacklistings einzusehen.
Code:
ls /lib/modprobe.d/60-blacklist_fs*| sed -E 's/.*-([^-]*).conf/\1/'

In dem Verzeichnis befindet sich eine entsprechende Datei 60-blacklist_fs-f2fs.conf mit dem Inhalt
Code:
# DO NOT EDIT THIS FILE!
#
# The f2fs file system is blacklisted by default because it isn't actively
# supported by SUSE.
blacklist f2fs
# The filesystem can be un-blacklisted by running "modprobe f2fs".
# See README.md in the suse-module-tools package for details.
install f2fs /usr/lib/module-init-tools/unblacklist f2fs; /sbin/modprobe --ignore-install f2fs

Dort wird auch erklärt, dass zumindest in der Theorie man beim Ausführen von modprobe ${modulname} gefragt wird, ob das Modul permanent ge-de-blacklistet werden soll. Dann würde anschließend Link mt dem Namen 60-blacklist_fs-f2fs.conf nach /dev/null in /etc/modprobe.d erstellt, deren Existenz das Blacklisting von aufhebt.
Also in der Theorie. In der Praxis wurde ich beim Ausführen von modprobe f2fs nie gefragt und es wurde auch nie ein solcher Link erstellt.
Das habe ich jetzt von Hand gemacht.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Pummeluff
Kontrapaganda schrieb:
Da F2FS von SUSE geblacklistet wird, hinterfrage ich mittlerweile, ob ich das überhaupt noch verwenden soll
Die ersten Abschnitte im Arch-Wiki klingen auch eher wie eine Warnung.
The data contained on F2FS partitions can become unusable if the kernel version on the running machine is older than the kernel version used to create the partition.

F2FS has a weak fsck that can lead to data loss in case of a sudden power loss

If the kernel version has changed between boots, the fsck.f2fs utility will perform a full file system check which will take longer to finish

While GRUB supports F2FS since version 2.0.4, it cannot correctly read its boot files from an F2FS partition that was created with the extra_attr flag enabled
Vor ein paar Jahren hatte ich auch mal mit dem Gedanken gespielt, f2fs einzusetzen. Hab's nie gemacht. Vor 20 Jahren hatte ich noch Reiser4 im Einsatz und fand das echt klasse.

Mittlerweile ist mir die Stabilität aber zu wichtig. Einen Datenverlust will ich mir nicht leisten, da ich Backups auch eher sporadisch anleg. Von daher ist bei mir Ext4 gesetzt. Auch gehört Ext4 zu den performantesten Dateisystemen.

Abgesehen von der Compress-Option bei F2FS seh ich da keinen Gewinn für normale PCs. Ist halt ein Handy-Dateisystem von und für Samsung.
 
  • Gefällt mir
Reaktionen: Marco01_809
Zurück
Oben