linux/drivers
Kay Sievers 2b2af54a5b Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev
Devtmpfs lets the kernel create a tmpfs instance called devtmpfs
very early at kernel initialization, before any driver-core device
is registered. Every device with a major/minor will provide a
device node in devtmpfs.

Devtmpfs can be changed and altered by userspace at any time,
and in any way needed - just like today's udev-mounted tmpfs.
Unmodified udev versions will run just fine on top of it, and will
recognize an already existing kernel-created device node and use it.
The default node permissions are root:root 0600. Proper permissions
and user/group ownership, meaningful symlinks, all other policy still
needs to be applied by userspace.

If a node is created by devtmps, devtmpfs will remove the device node
when the device goes away. If the device node was created by
userspace, or the devtmpfs created node was replaced by userspace, it
will no longer be removed by devtmpfs.

If it is requested to auto-mount it, it makes init=/bin/sh work
without any further userspace support. /dev will be fully populated
and dynamic, and always reflect the current device state of the kernel.
With the commonly used dynamic device numbers, it solves the problem
where static devices nodes may point to the wrong devices.

It is intended to make the initial bootup logic simpler and more robust,
by de-coupling the creation of the inital environment, to reliably run
userspace processes, from a complex userspace bootstrap logic to provide
a working /dev.

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Jan Blunck <jblunck@suse.de>
Tested-By: Harald Hoyer <harald@redhat.com>
Tested-By: Scott James Remnant <scott@ubuntu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-09-15 09:50:49 -07:00
..
accessibility
acpi dmi: extend dmi_get_year() to dmi_get_date() 2009-09-08 21:17:48 -04:00
amba Merge branches 'arm', 'at91', 'bcmring', 'ep93xx', 'mach-types', 'misc' and 'w90x900' into devel 2009-09-12 12:01:34 +01:00
ata pata_rz1000: use printk_once 2009-09-11 02:33:59 -04:00
atm
auxdisplay
base Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev 2009-09-15 09:50:49 -07:00
block debugfs: Modify default debugfs directory for debugging pktcdvd. 2009-09-15 09:50:49 -07:00
bluetooth Bluetooth: Add USB autosuspend support to btusb driver 2009-08-24 16:31:24 -07:00
cdrom
char mem_class: fix bug 2009-09-15 09:50:47 -07:00
clocksource
connector
cpufreq [CPUFREQ] Re-enable cpufreq suspend and resume code 2009-09-01 12:45:08 -04:00
cpuidle
crypto
dca
dio
dma at_hdmac: Rework suspend_late()/resume_early() 2009-09-14 20:27:00 +02:00
edac EDAC, AMD: decode FR MCEs 2009-09-14 19:01:37 +02:00
eisa
firewire driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
firmware driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
gpio
gpu i915: disable interrupts before tearing down GEM state 2009-09-08 17:09:24 -07:00
hid Merge branches 'upstream', 'upstream-fixes' and 'debugfs' into for-linus 2009-09-13 20:09:41 +02:00
hwmon
i2c Merge branch 'master' into for-linus 2009-08-23 00:03:00 +02:00
ide Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev 2009-09-11 16:38:33 -07:00
idle
ieee1394 drivers: Kill now superfluous ->last_rx stores 2009-09-02 23:07:36 -07:00
ieee802154 netdev: convert bulk of drivers to netdev_tx_t 2009-09-01 01:14:07 -07:00
infiniband driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
input driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
isdn isdn: convert to netdev_tx_t 2009-09-01 01:13:16 -07:00
leds leds: after setting inverted attribute, we must update the LED 2009-08-26 20:06:53 -07:00
lguest
macintosh m68k: count can reach 51, not 50 2009-08-26 23:14:49 +02:00
mca
md Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block 2009-09-14 17:55:15 -07:00
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6 2009-09-14 10:37:28 -07:00
memstick
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2009-09-14 17:53:36 -07:00
mfd
misc hpilo: add poll f_op 2009-09-15 09:50:48 -07:00
mmc driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
mtd driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
net debugfs: Change debugfs directory of IWMC3200 2009-09-15 09:50:48 -07:00
nubus
of
oprofile
parisc
parport
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2009-09-14 17:56:51 -07:00
pcmcia
platform hp-wmi: Switch driver to dev_pm_ops 2009-09-14 20:26:59 +02:00
pnp
power
pps pps: fix incorrect verdict check 2009-08-26 20:06:52 -07:00
ps3
rapidio
regulator
rtc
s390 driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
sbus
scsi driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
serial Merge branch 'master' into devel 2009-09-12 12:04:37 +01:00
sh
sn
spi Merge branch 'master' into devel 2009-09-12 12:04:37 +01:00
ssb ssb: Implement SDIO host bus support 2009-09-09 11:19:00 -04:00
staging Merge branch 'for-2.6.32' of git://git.kernel.dk/linux-2.6-block 2009-09-14 17:55:15 -07:00
tc
telephony
thermal thermal_sys: check get_temp return value 2009-08-26 20:06:52 -07:00
uio uio: add generic driver for PCI 2.3 devices 2009-09-15 09:50:48 -07:00
usb debugfs: Modified default dir of debugfs for debugging UHCI. 2009-09-15 09:50:49 -07:00
uwb driver model: constify attribute groups 2009-09-15 09:50:47 -07:00
video Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2009-09-14 17:48:14 -07:00
virtio
vlynq
w1
watchdog
xen xen: make -fstack-protector work under Xen 2009-09-09 16:37:39 -07:00
zorro
Kconfig
Makefile