busybox: Filesystem-Applets

hermann72pb

IPPF-Promi
Mitglied seit
6 Nov 2005
Beiträge
3,726
Punkte für Reaktionen
16
Punkte
38
Auf einem ähnlichen Kleinlinux-System bin ich vor kurzem darauf aufmerksam geworden, dass man durchaus interne Applets der Busybox zur Verwaltung vom Dateisystem verwenden kann. Ich hatte dort z.B. eine halbwegs funktionierende Variante vom integrierten fsck vorgefunden, die auch Links auf fsck.ext fsck.vfat usw. hatte. Das war dort wohl gemerkt mit Busybox 1.1.3 realisiert, sodass ich mich sofort dran gesetzt hatte, um mich unter busybox-menuconfig rumzuschauen. Und erstaunlicherweise hatte ich dort ziemlich viel vorgefunden. Außer fsck gibt es unter busybox fdisk, blkid, diverse mounts und Suchen nach volumen-id oder UUID. Das Schöne daran: man kann ein Teil von e2fsprogs und fstyp ersparen und bekommt dafür eine Reihe nützlicher Applets.
Nachdem ich ziemlich alles ausgewählt hatte, was da zum Thema gabs, ist meine busybox nur etwas größer geworden:
Code:
root@fritz:/var/media/ftp/SYSTEM# ls -l /bin/busybox
-rwxrwxrwx    1 root     root        589444 Oct  5  2010 /bin/busybox
root@fritz:/var/media/ftp/SYSTEM# ls -l busybox
-rwxr-xr-x    1 root     root        634448 Oct  6  2010 busybox
Dafür kann sie jetzt rein theoretisch deutlich mehr:
Code:
BusyBox v1.17.2 (2010-10-06 20:51:40 CEST) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as.

Currently defined functions:
        [, [[, addgroup, adduser, arp, arping, ash, awk, basename, [COLOR="Red"]blkid[/COLOR], bunzip2, bzcat, cat, chmod, chown, [COLOR="Red"]chpasswd[/COLOR], chroot, clear, cmp, cp, crond, crontab, cryptpw,
        cut, date, dd, delgroup, deluser, df, dirname, dmesg, dnsdomainname, du, echo, egrep, env, ether-wake, expr, false, [COLOR="Red"]fdisk[/COLOR], fgrep, find, [COLOR="Red"]findfs[/COLOR], free, [COLOR="Red"]fsck[/COLOR],
        ftpget, ftpput, getopt, grep, gunzip, gzip, halt, head, hexdump, hostname, httpd, id, ifconfig, ifdown, ifup, inetd, init, insmod, kill, killall, klogd, ln,
        logger, login, logname, logread, losetup, ls, lsmod, makedevs, md5sum, mkdir, mkfifo, mknod, mkpasswd, mkswap, modprobe, more, mount, [COLOR="Red"]mountpoint[/COLOR], mv, nc,
        netstat, nohup, nslookup, od, passwd, pidof, ping, pivot_root, poweroff, printf, ps, pwd, rdate, realpath, reboot, reset, rm, rmdir, rmmod, route, sed,
        setconsole, setlogcons, sh, sleep, sort, strings, stty, swapoff, swapon, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top, touch,
        tr, traceroute, true, tty, umount, uname, uniq, uptime, usleep, uudecode, uuencode, vconfig, vi, wc, wget, which, xargs, yes, zcat

Hier ist ein Beispiel:
Code:
root@fritz:/var/media/ftp/SYSTEM# ./busybox fdisk -l /dev/sda

Disk /dev/sda: 2004 MB, 2004877312 bytes
255 heads, 63 sectors/track, 243 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1   *          41          84      353430   6 FAT16
/dev/sda2               1          40      321268+ 83 Linux
/dev/sda3              85         100      128520  82 Linux swap
/dev/sda4             101         243     1148647+  5 Extended
/dev/sda5             101         133      265041   7 HPFS/NTFS
/dev/sda6             134         188      441756  83 Linux
/dev/sda7             189         243      441756   7 HPFS/NTFS

Partition table entries are not in disk order

oder
Code:
root@fritz:/var/media/ftp/SYSTEM# ls
autoend.sh  autorun.sh  busybox     external    lost+found
root@fritz:/var/media/ftp/SYSTEM# ./busybox mountpoint external
external is not a mountpoint
root@fritz:/var/media/ftp/SYSTEM# ./busybox mountpoint /var
/var is a mountpoint
root@fritz:/var/media/ftp/SYSTEM# ./busybox mountpoint /bin
/bin is not a mountpoint

Man kann sicherlich noch viel mehr damit veranstalten.

Die Sache hat allerdings einen Hacken: Die meisten von diesen Applets hängen sich auf mit meiner 7170. Das ist dieses alte Problem mit blkid. Anscheinend liegt das Problem eher nicht in blkid, sondern irgendwo tiefer in der Natur. Das eigentliche Problem scheinen die mtdblocks meiner 7170 zu sein, mit denen irgendwas nicht ganz klar kommen kann. Gelingt es die Applets so anzusprechen, dass mtdblocks umgangen werden (z.B. implizit als /dev/sda), funktionieren sie. Leider lassen einige Applets sowas gar nicht zu und können bei den alten Boxen nicht angewendet werden.

Ich habe dazu folgende Fragen:
1. Das Problem scheint irgendwo in der Flash-Verwaltung alter Boxen zu liegen. Entweder liegt es daran, dass entsprechende Treiber beim 13-Kernel buggy sind, oder AVM hat so ein Konstrukt der Blöcke bei den alten Boxen verfasst, dass dieverse fs-Tools damit nicht klar kommen.
a) Welche Möglichkeiten haben wir den Fehler zu lokalisieren? Strace bringt uns hier auch nicht besonders weiter. Dadurch sind wir damals auch so schlau geworden, dass es an mtdblocks aussteigt.
b) Haben wir irgendwelche Möglichkeiten den Fehler zu beseitigen, in dem wir z.B. entsprechende Treiber vom 13-Kernel patchen? Oder sind es AVM-closed-source-Treiber?

2. Besteht Interesse daran, dass wir diese Busybox-Applets bei FREETZMOUNT einbinden, um auf fstyp/blkid verzichten zu können?

MfG
 
Kann denn das busybox blkid das blkid von e2fsprogs ersetzen? Problem ist, dass der Zugriff auf mtdblock1 blockiert. Das ist ein Bug im mtd Treiber. Lösen könnte man das nur durch ersetzten Kernel, wenn wir den Fehler gefunden haben. Von daher wäre ein Patch für die busybox sinnvoller.

MfG Oliver
 
Vollständig ersetzen wohl nicht. Die echte blkid hat eine Reihe von Funktionen mehr, als die abgespeckte von busybox. Man kann aber durch andere nützliche Applets und das geschickte Einstezen von grep/sed diese fehlenden Funktionen umgehen. Auf jeden Fall wird alles mit "echter" blkid funktionieren, was man für abgespeckte Version implementiert. Und so wie es aussieht, bin ich der einzige, der blkid überhaupt einsetzt. Es wird also nicht schwer sein, FREETZMOUNT und mounted.cgi an blkid von busybox anzupassen. Aber danke für den Tipp busybox anzupassen. Ich muss nun nur die Stelle im Quellcode finden, wo die mtdblocks aufgerufen werden.
Mir schwebt da schon lange eine Idee im Kopf so eine Art GePartEd-Darstellung von internen/externen Laufwerken zu implementieren, damit man wirklich sehen kann, wie sich Partitionen verteilen. fdisk würde mir da z.B. deutlich weiter helfen.
Über die Notwendigkeit von fsck will ich gar nicht sprechen. Es wäre sinnvoll es sauber einzubinden, um daraufbasierend automatisierte Checks nachher zu implementieren. Leider hatte ich fsck bis jetzt nicht zum laufen gebracht, obwohl es -wie gesagt- auf einem anderen Linux-System (Xtreamer) ziemlich gut funktionierte. Wenn die Jungs es dort mit busybox zum Laufen gebracht hatten, dürfte es wohl bei uns grundsätzlich auch gehen.

MfG
 
Die Busybox Programme lesen vermutlich /proc/partitions oder etwas ähnliches aus, und dort wird mtdblock aufgeführt. Man müßte für alle diese Programme feststellen, wo sie ihre Informationen her bekommen.
Evtl. hilft hier ltrace.
 
Wenn ich mich nicht irre, ist uuidcache_check_device in util-linux/volume_id/get_devname.c die richtige Stelle für den busybox-Hack.

Edit: bei e2fsprogs könnte man es ähnlich machen, s. blkid_get_dev in lib/blkid/devname.c
 

Anhänge

  • 905-blkid_mtdworkaround.patch.txt
    582 Bytes · Aufrufe: 8
Zuletzt bearbeitet:
@er13: Ich teste es gleich auf meiner 7170 aus. Allerdings würde ich nicht generell mtd-s für alle Boxen herauspatchen. Bei neueren Boxen gibt es damit erstmal keine Probleme. Ich habe nun busybox auch für 7270 kompiliert, allerdings noch nicht ausgiebig getestet. Ich will zunächst versuchen einige Applets (z.B. fdisk) im Zusamenhang mit mtd-s austesten. Vielleicht bekommt man wenigstens lesend etwas brauchbares angezeigt.

MfG
 
Ich würde es trotzdem einheitlich machen, oder gibt es einen Grund, warum man fdisk, blkid oder eines der anderen Programme auf die mtd-Geräte anzuwenden?
 
@Ralf: Ich weiß es nicht, ob einen Grund dafür gibt. Wahrscheinlich nicht. fdisk zeigt auf jeden Fall nichts Vernünftiges an.
@er13: Danke, es funktioniert. Kannst du es bitte einchecken und einen ähnlichen Patch für die richtige blkid von e2fsprogs auch bitte bereit stellen.

Zusammenfassung meiner Untersuchungen:
1. Die Applets in busybox sind leider ziemlich kastriert und erfüllen nicht immer die Anforderungen, die ich z.B. stellen würde.
2. Bei blkid gibt es zwei gravierende Nachteile:
a) NTFS-Partitionen werden vom busybox-blkid nicht identifiziert:
b) FS-TYPE wird vom busybox-blkid nicht angezeigt. Und genau diese Information benutze ich unter mounted.cgi und bei FREETZMOUNT, um Partitionen nach dem Typ zu identifizieren.
Code:
root@fritz:/var/mod/root# fdisk -l /dev/sda

Disk /dev/sda: 2004 MB, 2004877312 bytes
255 heads, 63 sectors/track, 243 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1   *          41          84      353430   6 FAT16
/dev/sda2               1          40      321268+ 83 Linux
/dev/sda3              85         100      128520  82 Linux swap
/dev/sda4             101         243     1148647+  5 Extended
/dev/sda5             101         133      265041   7 HPFS/NTFS
/dev/sda6             134         188      441756  83 Linux
/dev/sda7             189         243      441756   7 HPFS/NTFS
root@fritz:/var/mod/root# busybox blkid
/dev/sda6: LABEL="EXT3" UUID="3e602d35-9e47-7595-2e48-fbc7e28e4aeb"
/dev/sda2: LABEL="SYSTEM" UUID="e914f1c2-f05d-20a7-db54-dea0c7c62ca1"
/dev/sda1: LABEL="FAT" UUID="A47A-253A"

root@fritz:/var/mod/root# /usr/sbin/blkid /dev/sda*
/dev/sda1: SEC_TYPE="msdos" LABEL="FAT" UUID="A47A-253A" TYPE="vfat"
/dev/sda2: LABEL="SYSTEM" UUID="e914f1c2-f05d-20a7-db54-dea0c7c62ca1" TYPE="ext2"
/dev/sda3: TYPE="swap"
/dev/sda5: UUID="734F9388689A9439" LABEL="NTFS" TYPE="ntfs"
/dev/sda6: LABEL="EXT3" UUID="3e602d35-9e47-7595-2e48-fbc7e28e4aeb" TYPE="ext3"
/dev/sda7: UUID="5BA928F435130FDD" LABEL="NTFS2" TYPE="ntfs"
3. fsck scheint leider nicht zu funktionieren. Dass ich es bei busybox 1.1.3 gesehen hatte, hat auch eine Erklärung, dass damals noch e2fsprogs anders unter busybox implementiert wurden. Jetzt hat volume_id-Kram unter busybox die alten guten e2fsprogs ersetzt. Dadurch sind ganz viele Sachen aus fsck herausgeflogen. Das ist sehr schade, denn ich hatte sehr gehofft, dass fsck die Aufgabe übernehmen könnte fstyp zu ermitteln und danach die entsprechende fsck.fstyp starten. Die fsck.fstyp könnte man mit unseren check-Programmen verlinken, notfalls auch mit einem wrapper. fsck von busybox kann man also vergessen.
4. Das einzige, was mir gefallen hat, war fdisk (s. oben). Dieses Applet liefert wenigstens lesend gute Informationen über die Partitionen und deren Aufteilung auf einem Medium. Ich könnte mir vorstellen daraus eine weiterte mounted.cgi-ähnliche cgi zu entwickeln, die nach gparted-Art die Partitionen darstellen würde. Das Gute an dieser Geschichte: Es werden auch Partitionen angezeigt, die nicht eingebunden werden können, weil z.B. NTFS-Modul fehlt.
5. volume_id an sich scheint eine gute Sammlung von den e2fsprogs-ähnlichen Utiliten zu enthalten. Leider ist da nicht alles als Applets nach außen freigegeben. Ich bin mir ziemlich sicher, dass man basierend auf den volume_id-Modulen/Funktionen einen Ersatz für fstyp basteln könnte und evtl. blkid etwas erweitern könnte. Das wäre aber eher ein Thema für busybox-mailingliste als hier. Obwohl man FREETZ als eine gute Testplattform nutzen könnte und die ersten Vorschläge und Änderungen in Form von Patches zu bestehender busybox für FREETZ posten könnte.

MfG
 
Bist Du sicher, daß Du die NTFS-Unterstützung für blkid ausgewählt hast?
Ich bekomme beim Busybox blkid bei NTFS sogar LABEL und UUID angezeigt, während diese beim normalen blkid beide nicht angezeigt werden. Mein blkid ist aber auch schon alt:
Code:
blkid 1.0.0 (12-Feb-2003)
TYPE fehlt beim Busybox blkid, ließe sich aber vermutlich leicht nachrüsten.
 
@Ralf: Bei mir ist es gerade anders rum. Welche Version von blkid meldet sich bei dir als 1.0.0? Wenn es blkid von busybox ist, dann brauchst du darauf keine große Rücksicht nehmen. Denn der zeigt vermutlich eine Version, als e2fsprogs abgezweigt wurde und zu busybox zum ersten mal portiert wurde. Sag lieber die Version von e2fsprogs mit denen du dein blkid gebaut hast und die Version von busybox selbst zu der blkid als Applet gehört.
Wie gesagt, die Geschichte war bei busybox folgendermassen gelaufen. Ganz am Anfang von busybox (Versionen um 1.1.x) hat jemand e2fsprogs mit einem fast vollen Umfang nach busybox portiert. Damals hat auch anscheinend ziemlich viel funktioniert. Danach gab es anscheinend auf der Front eine Ruhepause. e2fsprogs haben sich inzwischen weiterentwickelt und dann hat da wahrscheinlich irgendwas nicht gepasst. Daraufhin sind die Jungs von busybox auf die Idee gekommen so eine Art Package namens volume_id zu entwickeln. Diese volume_id-Geschichte scheint so eine Art vom auf busybox angepassten Programmcode sein, was zwar auf e2fsprogs basiert, aber teilweise völlig umgeschrieben ist. Mit diesem volume_id sind aber die Jungs anscheinend noch ziemlich weit vom Finale entfernt, daher gehen noch ganz viele Sachen nicht.
Wenn du mir verraten würdest, wo und wie ich unter busybox NTFS-Support für blkid frei schalte würde ich es gerne tun. Ich kenne nämlich menuconfig von busybox schon fast auswendig und habe da nichts zum ntfs gefunden.
Achso, und welche NTFS-Partition hast du eigentlich? Womit hast du sie formatiert? Es sollen da angeblich Unterschiede geben, je nachdem welche Windows-Version das war.

MfG
 
Mein blkid gehört zu e2fsprogs-1.38-25 bzw. e2fsprogs-1.35-2. Ich habe es nicht selbst gebaut, es ist einfach bei mir auf dem System installiert, ohne daß ich mich erinnern kann, daß ich es vorher schon einmal bewußt aufgerufen hätte.
Die Busybox-Programme melden sich nicht mit einer eigenen Versionsnummer, speziell das blkid Programm reagiert auf gar keine Parameter. Die Busybox Version ist v1.15.0.svn, also aus der Zeit, bevor Busybox auf GIT umgestellt hat.

Im Busybox menuconfig gibt es unter "Linux System Utilities" zum einen "blkid", und wenn man das aktiviert hat, erscheinen unmotiviert zwischen "more" und "mount" verschiedenen Dateisysteme, unter anderem "ntfs filesystem" (FEATURE_VOLUMEID_NTFS).
Das "unmotiviert" bedeutet hier konkret, daß in dieser Version das versteckte Symbol VOLUMEID gesetzt wird, wenn BLKID oder FINDFS oder FEATURE_MOUNT_LABEL ausgewählt ist, und daß die Dateisysteme ohne Überschrift einfach erscheinen und nicht ausgewählt sind, nachdem man blkid ausgewählt hat. Wenn ich nicht noch weiter geblättert hätte, wären mir diese neu dazugekommenen Symbole gar nicht aufgefallen.

Das NTFS Dateisystem habe ich mit mkntfs angelegt, da ich gerade kein anderes zur Hand hatte. Bei einem WIndows 7 Dateisystem ist das Ergebnis aber das gleiche.
 
blkid & mtd-Devices

Ich hatte nun Ideen von er13 an den echten blkid angewandt. Nun hägt sich bei meiner 7170 auch der echte blkid von e2fsprogs nicht mehr auf. Ich habe beide Änderungen in einem patch gegen aktuellen Trunk gepackt, getestet und bitte um einchecken. Im trac gab es dazu ein Ticket. Ich werde diesen Multipatch auch da packen.
@er13: Danke für Denkanstosse und Patch für busybox!
@Ralf: Bei neuer BusyBox erscheinen die einzelnen Dateisysteme nicht mehr unmotiviert, sondern sind in einem Untermenüpunkt zusammengepackt. Sie waren bei mir auch alle ausgewählt. Was ich allerdings nicht hatte: NTFS-Modul auf der Box. Vielleicht verwendet BusyBox irgendwie die Treiber oder die Einstellungen aus unseren globalen menuconfig haben Vorrang. Und dort gibt es ntfs nicht.

MfG
 

Anhänge

  • blkid_mtd_workarrounds.patch.bz2
    734 Bytes · Aufrufe: 1
Auch in der aktuellen Busybox 1.17.2 gibt es ein Symbol FEATURE_VOLUMEID_NTFS, im Unternemü "Filesystem/Volume identification". Es hängt auch nur von VOLUMEID ab, sollte also angezeigt werden.
 
@Ralf: Angezeigt wird es ja und sogar ausgewählt, ich bekomme trotzdem keine NTFS-Volumen erkannt. Wie gesagt, ich schaue es mir nachher noch in Ruhe an, woran es denn liegen könnte.

MfG
 
@Hermann: ich habe jetzt Deinen e2fsprogs-Patch nicht ganz verstanden. Warum hast Du es nicht so gemacht, wie ich es vorgeschlagen habe? Statt an einer zentralen Stelle das Problem zu workarounden, hast Du stattdessen quasi die Aufrufstellen ermittelt (dabei hast Du nicht alle erwischt, ein Aufruf mit /dev/mtdblock* als Parameter würde immer noch zum "Hänger" führen) und an diesen dafür gesorgt, dass die Funktion nicht aufgerufen wird. Gibt es irgendeinen Grund für diese Lösung, den ich übersehe? Es ist aus meiner Sicht deutlich einfacher, am Anfang der aufgerufenen Funktion zu checken, ob es sich um ein mtdblock-device handelt, und im ja-Fall einfach nichts tun. Der angehängte Patch tut's bei mir auch, habe allerdings nur blkid getestet.
 

Anhänge

  • e2fsprogs-905-blkid_mtdworkaround.patch.txt
    606 Bytes · Aufrufe: 3
@er13: Mein Problem an e2fsprogs war, dass es dort komplett anders aussah, als in deiner busybox-Variante. Und weil ich nicht so viel Zeit und Lust hatte mich da richtig durchzusteigern, hatte ich es einfach an den Stellen gemacht, die ich dafür für geeignet fand und die meiner Meinung nach das Hauptproblem abdecken und lösen. Es war mir schon klar, dass es nicht in allen Fällen funktioniert.
Wenn deine Lösung besser funktioniert und von dir erprobt und als gut befunden werden kann, dann her damit. Mir ist egal, an welcher Stelle wir patchen. Aber bitte eine von beiden Lösungen möglichst bald einchecken, wenn sie von dir auf einer 7170 oder ähnlicher Box erprobt wurde. Sonst diskutieren wir hier noch länger, als es Wert ist.
Die Stelle, die ich zum Patchen gefunden hatte war damit begründet, dass ich irgendwo im Code /proc/partitions gesehen hatte. Und weil ich die Datei kannte und richtig verstanden hatte, was dort passiert, wollte ich gerade an der Stelle packen und dort "den Feid an Ort und Stelle ersticken lassen". Und weil ich zufällig gesehen hatte, dass Major von den mtd-s eine Nummer 31 hat, wollte ich das als Zusatzbedingung nehmen.
Aber wie gesagt, wenn deine Lösung besser tut, dann her damit.
Allerdings bin ich mir nicht ganz sicher, ob deine Lösung bei busybox-Variante auch die Fälle abfängt, wo mtd explizit angesprochen wird, wie du es meintest. Wenn ich mich richtig besinne, konnte ich die mit deinem Patch gepatchte busybox-blkid doch zum Aufhängen bringen, als ich sie mit dem mtd-Namen ansprach. Es kann aber sein, dass ich mich irre.
Außerdem, darum ging es mir auch nicht. Ich denke, wir können durchaus akzeptieren, dass man blkid nicht mit mtd ansprechen sollte. Hauptsache Aufruf ohne Parameter funktioniert.

Wie gesagt, bitte sofort einchecken, wenn es tut. Egal, ob deine oder meine Variante.

MfG
 
Warum die Eile verstehe ich zwar nicht, aber bitte

Die busybox-Variante unterstützt keine Parameter, daher verwechselst Du was...
 
Nachdem ich mich heute über die ganzen Partitionstabellen, MBRs und EBRs schlau gemacht hatte und festgestellt hatte, dass es kein Hexenwerk eigentlich ist, hatte ich mir danach die Quellen von fstyp angeschaut und dann noch bisschen mit den busybox-Applets experimentiert.
Es ist schon so, dass es wahrscheinlich die schlauste Lösung wäre fstyp mit den busybox-internen-Mitteln nachzubilden. Und wenn man neben findfs noch eine inverse Funktion dazu als Applet realisieren würde (nennen wir es findlabel), wäre ich ganz zufriden.
Die Methode, nach der fstyp sucht ist nicht die schlauste. Wenn ich es machen würde, würde ich zunächst alle MBR/EBR-Bereiche absuchen, die man über Mutter-Device (/dev/sda) direkt ansprechen könnte. Partitiontyp (z.B. 83) könnte man deutlich schneller und einfacher direkt auslesen und lediglich für fragliche Systeme, wie NTFS/HFS die Magic-Sequenzen auslesen. Es ginge sogar alles mit dd und shell-Skript zu programmieren, würde aber dann natürlich nicht besonders schnell laufen. Aber sei es drum.
Die heutigen Hausmitteln von busybox erlauben zwei interessante Sachen, die im Zusammenhang LABEL/UUID stehen:
1. findfs findet Device, wenn man LABEL oder UUID eindeutig kennt:
Code:
root@fritz:/var/mod/root# blkid
/dev/sda6: LABEL="EXT3" UUID="3e602d35-9e47-7595-2e48-fbc7e28e4aeb"
/dev/sda2: LABEL="SYSTEM" UUID="e914f1c2-f05d-20a7-db54-dea0c7c62ca1"
/dev/sda1: LABEL="FAT" UUID="A47A-253A"
root@fritz:/var/mod/root# findfs LABEL=EXT3
/dev/sda6
root@fritz:/var/mod/root# findfs UUID="A47A-253A"
/dev/sda1
2. Mounts, ohne dass man die Nummer von sdXY kennt:
Code:
root@fritz:/var/mod/root# mount UUID="A47A-253A" /mnt
root@fritz:/var/mod/root# mount | grep sda
/dev/sda2 on /var/media/ftp/SYSTEM type ext2 (rw,noatime,nodiratime)
/dev/sda1 on /mnt type vfat (rw,nodiratime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
root@fritz:/var/mod/root# umount /dev/sda1
root@fritz:/var/mod/root# mount LABEL="FAT" /mnt
root@fritz:/var/mod/root# mount | grep sda
/dev/sda2 on /var/media/ftp/SYSTEM type ext2 (rw,noatime,nodiratime)
/dev/sda1 on /mnt type vfat (rw,nodiratime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
Zwar finde ich momentan keine direkte Verwendung für beide Features, wollte euch aber dennoch informieren.
Eigentlich braucht man es genau anders rum: Wenn etwas als externes Medium kommt, muss man erstmal die Namen von seinen Partitionen wissen und erst danach entscheiden, wie man sie dann mounted. Andersrum wäre es mit einem Schrei zu vergleichen: "Hey Partition XY, mounte dich so und so!" Das Problem liegt daran, dass man gar nicht weiß
a) ob die Partition überhaupt existiert
b) welchen Typ sie überhaupt hat (können wir sie überhaupt mounten)
c) kann sie sich überhaupt mounten, oder wird es nicht klappen, weil sie z.B. unsauber unmounted war.
Also, das sind ziemlich viele Unbekannten dazwischen, dass man sich darauf verlassen könnte.

MfG
 
Ich hatte eben erfahren, dass der eingebaute blkid seit mindestens busybox 1.18.4 nun auch "type" unterstützt:
Code:
root@fritz:/var/mod/bin# ./busybox blkid
/dev/sda6: LABEL="ARCHIV" UUID="b1328ea0-2360-50da-6cc3-9adc5d42937d" TYPE="ext3"
/dev/sda5: LABEL="DATA" UUID="7b097c41-5282-7a79-feba-b9b0d63459e7" TYPE="ext2"
/dev/sda2: LABEL="FAT" UUID="9A64-8DAD" TYPE="vfat"
/dev/sda1: LABEL="SYSTEM" UUID="457c1f4b-8aec-e4ee-6843-fcded6ae79dd" TYPE="ext2"
/dev/loop0: UUID="3b85c627-9dc1-4ed5-aa08-1fa5b17d92cb" TYPE="ext2"
Es scheint sich dort doch was zu bewegen.
Allerdings kennt er noch nicht z.B. SWAP (hier ist die Ausgabe vom "echten" blkid:
Code:
root@fritz:/var/mod/bin# blkid
/dev/loop0: UUID="3b85c627-9dc1-4ed5-aa08-1fa5b17d92cb" TYPE="ext2"
/dev/sda1: LABEL="SYSTEM" UUID="457c1f4b-8aec-e4ee-6843-fcded6ae79dd" TYPE="ext2"
/dev/sda2: LABEL="FAT" UUID="9A64-8DAD" TYPE="vfat"
/dev/sda4: TYPE="swap"
/dev/sda5: LABEL="DATA" UUID="7b097c41-5282-7a79-feba-b9b0d63459e7" TYPE="ext2"
/dev/sda6: LABEL="ARCHIV" UUID="b1328ea0-2360-50da-6cc3-9adc5d42937d" TYPE="ext3"
Mit NTFS muss ich ebenfalls cheken...
Option -s muss man leider auch per sed nachbilden:
Code:
root@fritz:/var/mod/bin# blkid -s TYPE
/dev/loop0: TYPE="ext2"
/dev/sda1: TYPE="ext2"
/dev/sda2: TYPE="vfat"
/dev/sda4: TYPE="swap"
/dev/sda5: TYPE="ext2"
/dev/sda6: TYPE="ext3"
root@fritz:/var/mod/bin# ./busybox blkid | sed -n -e 's/\(\/dev\/[^:]*:\).*\(TYPE="[^"]*"\)/\1 \2/p'
/dev/sda6: TYPE="ext3"
/dev/sda5: TYPE="ext2"
/dev/sda2: TYPE="vfat"
/dev/sda1: TYPE="ext2"
/dev/loop0: TYPE="ext2"
wäre aber noch machbar...
Mittlerweile kann man auch Partitionen als Argument angeben:
Code:
root@fritz:/var/mod/bin# blkid -s TYPE /dev/sda5
/dev/sda5: TYPE="ext2"
root@fritz:/var/mod/bin# ./busybox blkid /dev/sda5 | sed -n -e 's/\(\/dev\/[^:]*:\).*\(TYPE="[^"]*"\)/\1 \2/p'
/dev/sda5: TYPE="ext2"
Früher war auch das nicht möglich: Der "kleine" blkid von busybox hatte früher immer alle gefundenen Partitionen ausgespuckt gehabt. Hätte man aber auch mit sed und grep filtern können...

Ich baue es die Tage auch noch für meine 7170 und checke es damit. Dort war alles deutlich kritischer. Danach könnte ich überlegen, FREETZMOUNT und mounted.cgi diesbezüglich anzufassen.

Kann bitte jemand bis dahin diese "TYPE"-Option "nach draußen" bringen? Damit es im globalen Menuconfig auch vorzufinden wäre und als FREETZ-Config-Variable verfügbar wäre? Momentan ist diese Option lediglich in den Tiefen von busybox-menuconfig versteckt. Danke!

MfG
 
Wenn du den Patch gleich anhängst gehts bestimmt schneller :]
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.