After a recent thread, about udev developers wanting /usr on the same
partition as / (or else requiring initramfs), it was pretty obvious
that 90%+ of the users here strongly disliked the idea.  I went around
asking on various lists if it was possible to run Gentoo without udev.
After some research, and various unrelated delays, I've come up with a
working Gentoo without udev.  It turns out that busybox's mdev
implementation is sufficient for my needs.  I do the usual email, web
surfing, including Youtube.  I'm listening to Live365.com as I type this
email, so Flash works just fine.  Contrary to the FUD I've heard, X
works just fine, thank you, without an xorg.conf.  Modern flatscreens
with EDID info are set up automatically.  I suppose that old CRT
monitors without EDID info might require xorg.conf, but that's "exotic
hardware" nowadays.  The only change I notice is somewhat faster bootup.

  The purpose of this email is to ask adventurous people here to beta
test my approach to a udev-less Gentoo.  If we don't find any
showstopper problems, we can think about requesting Gentoo developers to
support an mdev-based profile.  It would help the cause if a large
number of testers can report that it works for them.  The instructions
for a udev-ectomy follow below.  Thanks to Zac Medico and others on the
Gentoo developers' list for their helpful hints and pointers on how to
do this.  I couldn't have figured this out by myself.

  The usual warnings apply...
* this is a beta
* use a spare test machine
* if you don't follow the instructions correctly, the result might be
  an unbootable linux
* even if you do follow instructions, the result might be an unbootable
  linux


1) Set up your kernel to support and automount a devtmpfs filesystem at
   /dev

* If you prefer to edit .config directly, set
  CONFIG_DEVTMPFS=y and CONFIG_DEVTMPFS_MOUNT=y

* If you prefer "make menuconfig", the route is as shown below.  Note
  that the "Autount devtmpfs..." option won't appear until you enable
  "Maintain a devtmpf..." option.

make menuconfig
  Device Drivers  --->
    Generic Driver Options  --->
      [*] Maintain a devtmpfs filesystem to mount at /dev
      [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

  Once you've made the changes, rebuild the kernel.


2) Set up for emerging busybox, there are 2 items to change

A) It appears that there may be an mdev bug in older versions of
   busybox.  To avoid that bug, keyword busybox-1.19.2 in
   /etc/portage/package.keywords  E.g. if you're using 32-bit Gentoo on
   Intel, the incantation is...

=sys-apps/busybox-1.19.2 ~x86

   Change the "~x86" to reflect your architecture, etc.

B) busybox requires the "mdev" flag in this situation.  The "static"
flag is probably also a good idea.  In file /etc/portage/package.use
add the line

sys-apps/busybox static mdev

   Now, "emerge busybox"


3) In the bootloader append line, include "init=/sbin/linuxrc" where
   the file /sbin/linuxrc consists of *AT LEAST*...

#!/sbin/busybox ash
mount -t proc proc /proc
mount -t sysfs sysfs /sys
exec /sbin/init

   This should be enough for most users.  If you have an unusual setup,
   you may need additional stuff in there.  If you're using lilo remember
   to re-run lilo to implement the changes.

4) Remove udev from the services list, and replace it with mdev.  Type
   the following 2 commands at the command line
rc-update del udev sysinit
rc-update add mdev sysinit


5) reboot to your new kernel.  You're now running without using udev.


6) ***THIS STEP IS OPTIONAL***  This is only to alay any suspicion that
   udev is still in use.  udev is pulled in by virtual/dev-manager,
   which in turn is pulled in by the kernel.
* cd /usr/portage/virtual/dev-manager
* Make a backup copy of dev-manager-0.ebuild
* Edit dev-manager-0.ebuild to include "sys-apps/busybox" as one option
  in RDEPEND, like so...

RDEPEND="|| ( sys-fs/udev
                sys-fs/devfsd
                sys-apps/busybox
                sys-fs/static-dev
                sys-freebsd/freebsd-sbin )"

  I had really wanted to use "sys-apps/busybox[mdev]", but an EAPI-0
  ebuild can't handle that syntax.

* execute the following 3 commands at the commandline
ebuild dev-manager-0.ebuild digest
emerge -1 dev-manager
emerge --unmerge sys-fs/udev

* In file /atc/portage/package.mask, append the line
sys-fs/udev
  Create the file if it doesn't already exist.  You now have a totally
  udev-free machine

-- 
Walter Dnes <waltd...@waltdnes.org>

Reply via email to