On Wed, Feb 7, 2018 at 11:24 AM, Arthur Krewat <krewat(a)kilonet.net> wrote:
medusa# mount | egrep '^/dev'
/devices on /devices read/write/setuid/devices/rstchown/dev=9640000 on
Fri Jan 19 16:33:07 2018
/dev on /dev read/write/setuid/devices/rstchown/dev=9680000 on Fri Jan 19
16:33:07 2018
/dev/fd on fd read/write/setuid/devices/rstchown/dev=9940001 on Fri Jan
19 16:33:22 2018
medusa# ls -l /dev/rdsk/c1t*d0
lrwxrwxrwx 1 root root 65 Jan 2 2015 /dev/rdsk/c1t0d0 ->
../../devices/pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@0,0:wd,raw
lrwxrwxrwx 1 root root 65 Jan 2 2015 /dev/rdsk/c1t1d0 ->
../../devices/pci@0,0/pci8086,340b@4/pci1028,1f10@0/sd@1,0:wd,raw
medusa# uname -a
SunOS medusa 5.11 11.3 i86pc i386 i86pc
Some more commentary would be useful here, but yeah: Solaris went pretty
crazy with the cheez-whiz on this stuff. /devices was the "this is what we
found from autoconfiguration at boot time" thingy, and /dev was the "and
here are a bunch of symlinks to those things." I don't really remember why
they chose to do it that way.... Linux and BSD's devfs (as in 4.4 and its
descendants) was rather simpler (pretty much what I described until udev
came around and elaborated on the theme).
- Dan C.
On 2/6/2018 9:06 PM, Dan Cross wrote:
On Tue, Feb 6, 2018 at 8:48 PM, Dave Horsfall <dave(a)horsfall.org> wrote:
On Wed, 7 Feb 2018, Greg 'groggy' Lehey
wrote:
V3 and earlier still *called* them special files,
but it seems they were
essentially just magic inode numbers (there was
no physical file on disk,
just any directory entry with the given inode would be the special file).
Isn't that still the case?
Wasn't that "devfs" (which Penguin/OS calls "udev")? I've
never grokked
that concept.
No. devfs was (is?) a pseudo-filesystem where only special files
corresponding to the devices enumerated by the kernel during
autoconfiguration are present. The contents are synthesized at boot time
and the filesystem is mounted at some canonical location (like /dev), but
is otherwise ephemeral. This is in contrast to the older /dev, which is
usually just a directory on the root filesystem, wherein one created a
number of device files that may (or may not) correspond to an actual
hardware device in the system (remember the old dance of, "cd /dev &&
./MAKEDEV foo" when you added a "foo" onto your system?). The inodes and
directory entries for those files actually exist in the disk-resident
filesystem structures (though of course data blocks aren't allocated to
those files and the inode doesn't refer to any data blocks).
My understanding is that udev is an elaboration on devfs on Linux that
includes a rules engine that supports things like assigning set names to
specific devices, setting permissions, group/user ownership and the like.
For example, one can configure a rule so that when USB UART device with
serial number 0xdeadbeef gets attached to the system, it appears as
/dev/console_for_foo, owned by group "fooadmin" and mod 660. Presumably
whoever configured that knows that that serial device is physically
connected to the serial console for "foo".
- Dan C.