[BUG] Device node major comes out wrong on HFS+ under linux

From: DagB
Date: Sat Oct 15 2011 - 14:04:54 EST


Hi.

Executive summary:

/dev/null:
osx: crw-rw-rw- 1 root wheel 1, 3 Oct 13 04:12 null
linux: crw-rw-rw- 1 root root 16, 3 Oct 13 02:12 /dev/null

/dev/console:
osx: crw------- 1 root wheel 5, 1 Oct 13 04:12 console
linux: crw------- 1 root root 80, 1 Oct 13 02:12 /dev/console

/dev/sda4:
osx: brw-r----- 1 root wheel 8, 4 Oct 13 04:12 sda4
linux: brw-r----- 1 root root 128, 4 Oct 13 02:12 /dev/sda4




Details:

I am slowly figuring out how to boot linux on my shiny new macbook air.

The actual *booting* bit turns out to be incredibly easy with rEFIt,
keithp's macbook air tree, and mfleming's efi stub tree. (3.1.0-ish)
Just pop a suitable kernel somewhere rEFIt can see it, and off you go.
No mucking with bootloaders or repartitioning with esoteric tools and
options. Slick. Got to use a built-in kernel command line, though.

Shrinking the existing OSX HFS+ partition and adding another for a linux
root fs from within OSX also turned out to be a breeze.

I decided to give HFS+ a go for the root fs, just for a POC.
(I'll make an initramfs for making a sane fs. Would be cooler to do
everything from within OSX, and just reboot straight into Linux.)

Untarring a root fs on a my new HFS+ filesystem was straightforward. I
*do* get a warning from OSX' tar when creating the devicenodes, but the
nodes are created with the correct perms and major/minor.

tar: qtn_file_apply_to_path(./dev/console): Operation not permitted
results in (when viewed from OSX):

crw------- 1 root wheel 5, 1 Oct 13 04:12 dev/console
which nicely reflects what the source filesystem has.


Booting a linux kernel (with init=/bin/sh) results in:
crw------- 1 root wheel 80, 1 Oct 13 02:12 /dev/console

Clearly a Major bug. ("ka-pisch".....)



Looks like an endianness issue at hand here:
1 p
1
16 p
10000


5 p
101
80 p
1010000


8 p
1000
128 p
10000000


Good thing I didn't end up trying to dial out through my HDD....


Anyone care to squash this bug, please?

Dag B
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/