Hallo! Ich bastel gerade an einem System das als rootfs eine ramdisk benutzen soll. Dabei stehe ich im Moment vor dem Problem , das ich mit den Einträgen in /proc/sys/kernel/real-root-dev nicht zu recht komme. In der Literatur steht, das sich das aus major und minor Number des Devices zusammensetzt. Wenn ich auf einem normalen, von scsi-Platte laufenden System dort nachsehe, dann steht da z.B. 2049. Mein rootfs liegt auf /dev/sda1, ist brw-rw---- 1 root disk 8, 1 Nov 1 11:35 sda1 also major 8 minor 1, richtig? Wie steckt das jetzt in der 2049 drin? Ich habe schon hin und her gerechnet, aber ich begreif das einfach nicht. Hat jemand einen Tip für mich? -- mfg Peter Küchler, Planungsverband Ballungsraum Frankfurt/Rhein-Main
Hallo, On Fri, 19 Apr 2002, Peter Wiersig wrote:
On Fri, Apr 19, 2002 at 12:43:21PM +0200, Peter Kuechler wrote:
Wie steckt das jetzt in der 2049 drin? Ich habe schon hin und her gerechnet, aber ich begreif das einfach nicht.
Hat jemand einen Tip für mich?
Byteweises Zusammensetzen der Zahlen? 8*256 + 1 = 2049
Ein bisserl rumgrepperei in den Kernelquellen liefert, das das ein int ist, der mit den Makros MAJOR und MINOR ebendiese extrahiert werden koennen. ==== include/linux/kdev_t.h ==== #define MAJOR(dev) ((dev)>>8) #define MINOR(dev) ((dev) & 0xff) ==== Mit den ueblichen shelltools also: ==== #!/bin/sh for dev in "$@"; do minor=`echo "($dev % 256)" | bc` major=`echo "($dev / 256)" | bc` echo "$dev = $major, $minor" done ==== $ mount | grep ' / ' /dev/hda2 on / type ext2 (rw) $ ls -l /dev/hda2 brw-rw---- 1 root disk 3, 2 Dec 2 02:01 /dev/hda2 $ cat /proc/sys/kernel/real-root-dev 770 $ sh ./rdev2readable 2049 770 2049 = 8, 1 770 = 3, 2 $ -dnh -- "MIME might be okay for rec.clowns.silent, but not here." -- Jake Kesinger
Am Sam, 2002-04-20 um 01.59 schrieb David Haller:
Hallo,
On Fri, 19 Apr 2002, Peter Wiersig wrote:
On Fri, Apr 19, 2002 at 12:43:21PM +0200, Peter Kuechler wrote:
Wie steckt das jetzt in der 2049 drin? Ich habe schon hin und her gerechnet, aber ich begreif das einfach nicht.
Hat jemand einen Tip für mich?
Byteweises Zusammensetzen der Zahlen? 8*256 + 1 = 2049
Ein bisserl rumgrepperei in den Kernelquellen liefert, das das ein int ist, der mit den Makros MAJOR und MINOR ebendiese extrahiert werden koennen.
==== include/linux/kdev_t.h ==== #define MAJOR(dev) ((dev)>>8) #define MINOR(dev) ((dev) & 0xff) ====
Mit den ueblichen shelltools also:
==== #!/bin/sh for dev in "$@"; do minor=`echo "($dev % 256)" | bc` major=`echo "($dev / 256)" | bc` echo "$dev = $major, $minor" done ====
$ mount | grep ' / ' /dev/hda2 on / type ext2 (rw) $ ls -l /dev/hda2 brw-rw---- 1 root disk 3, 2 Dec 2 02:01 /dev/hda2 $ cat /proc/sys/kernel/real-root-dev 770 $ sh ./rdev2readable 2049 770 2049 = 8, 1 770 = 3, 2 $
Donnerwetter!!! Ich danke dir vielmals für diese Bilderbuchmail, das hab ich mal wieder was richtiges gelernt. Auf die Idee in den Kernelquellen zu suchen bin ich nicht gekommen. Hut ab, David! Danke natürlich auch an Peter Wiersig für seine Kurzfassung;-) -- mfg Peter Küchler, Planungsverband Ballungsraum Frankfurt/Rhein-Main
Hallo, On Mon, 22 Apr 2002, Peter Kuechler wrote:
Am Sam, 2002-04-20 um 01.59 schrieb David Haller:
Ein bisserl rumgrepperei in den Kernelquellen liefert, das das ein int ist, der mit den Makros MAJOR und MINOR ebendiese extrahiert werden koennen.
==== include/linux/kdev_t.h ==== #define MAJOR(dev) ((dev)>>8) #define MINOR(dev) ((dev) & 0xff) ==== [..] Ich danke dir vielmals für diese Bilderbuchmail, das hab ich mal wieder was richtiges gelernt. Auf die Idee in den Kernelquellen zu suchen bin ich nicht gekommen.
Danke, *g*. Ganz allgemein: /proc ist ein Interface zum laufenden Kernel, d.h. _alles_ was sich irgendwo in /proc findet ist irgendwo in den Kernelquellen zu finden. Ich habe also zuerst mal nach 'real-root-dev' gesucht, von da kam ich dann ueber 'real_root_dev' dann zum 'MAJOR'/'MINOR'. ;) -dnh -- Cats give a whole new meaning to the phrase "fuzzy logic". -- Seanette Blaylock, in nanae
participants (3)
-
David Haller
-
Peter Kuechler
-
Peter Wiersig