This system is mothballed. It's usable if you know what you're doing--I've been using it for years on my laptop without issues--but it's not for typical users. Expect to get your hands dirty.
I do not have time to work on it in the foreseeable future, nor do I have time to answer support requests.
Vdev is a portable userspace device-file manager for UNIX-like operating systems. It differs from existing device-file managers in that it provides an optional filesystem interface that implements a per-process view of /dev, thereby giving the host administrator the means to control device node access based on arbitrary criteria (such as process session ID, process seat assignment, etc.).
The Linux port of vdev aims to be a drop-in replacement for udev.
More information is available in the design document.
/dev
tree. It can also be statically linked and can compile with multiple libc's./dev
. The criteria are programmatically selected and thus arbitrary--any process information can be used to control access./dev
tree, as well as an equivalent /run/udev
tree. It also ships with a "libudev-compat" library that is ABI-compatible with libudev 219. Libudev-linked software such as the X.org X server can use vdev and libudev-compat without recompilation. In addition, the Linux port interoperates with but does not depend on the devtmpfs
filesystem.There are two binaries in vdev: the hotplug daemon vdevd, and the userspace filesystem vdevfs. You can use one without the other. If you only intend to replace udevd, you can ignore vdevfs.
To build vdevd, you'll need:
For vdevfs, you'll need all of the above, plus:
Recommended Packages
Vdevd comes with a set of scripts that provide udev compatibility for the Linux port, and these scripts make use of the following packages. Vdevd's scripts can work without them, but some functionality will be missing:
Vdev's libudev-compat library removes the netlink connection to udev in favor of creating and watching a process- and udev_monitor
-specific directory, which vdevd's helper scripts discover and use to send serialized device events by writing them as files. It is highly recommended that users install eventfs and use it to host libudev-compat's event directories. Eventfs is optimized for this use-case--it will ensure that libudev-compat's directories are backed by RAM, easily accessed in FIFO order, and automatically removed once the libudev-compat process that created them exits.
By default, everything installs under /usr/local
. To build and install everything with default options, run:
$ make
$ sudo make install
To build and install vdevd (with no configuration) to /usr/local/sbin
, type:
$ make -C vdevd OS=$OS_TYPE
$ sudo make -C vdevd install
Substitute $OS_TYPE
with:
$OS_TYPE
defaults to "LINUX".
To build and install vdevd's default recommended configuration to /usr/local/etc
, type:
$ make -C example
$ sudo make -C example install
To build and install vdevd's hardware database to /usr/local/lib
, type:
$ make -C hwdb
$ sudo make -C hwdb install
To build and install libudev-compat to /usr/local/lib/
and its headers to /usr/local/include
, type:
$ make -C libudev-compat
$ sudo make -C libudev-compat install
To build and install vdevfs to /usr/local/sbin/
, type:
$ make -C fs
$ sudo make -C fs install
You can override the installation directories at build-time by setting the PREFIX
variable on the command-line (e.g. make -C vdevd PREFIX=/
), and you can specify an alternative installation root by setting DESTDIR
at install-time (e.g. sudo make -C vdevd install DESTDIR=/opt
). You can also control where header files are installed by setting the INCLUDE_PREFIX
variable (e.g. make -C libudev-compat install PREFIX=/ INCLUDE_PREFIX=/usr
).
If you want to replace udev with vdev, it is recommended that you install the binaries to your root partition and the libudev-compat headers to /usr
. This is done by setting DESTDIR= PREFIX= INCLUDE_PREFIX=/usr
when installing.
If you have an initramfs and rely on udevd during early boot, you will need to rebuild your initramfs so it will start vdevd instead. If you are installing on Debian or Devuan, please first read Appendix B of the how-to-test.md document, since it contains instructions on how to install vdevd's init script and rebuild your initramfs via the Debian/Devuan initramfs tools.
If you are replacing udev and libudev, you should back up their init scripts, header files, and libraries before installing vdev. You may need to revert to them if vdev does not work for you.