Corrected "#!/sbin/busybox ash" to "#!/bin/busybox ash" in step 3. The weird part is that my system actually booted and ran fine even with this typo in the script. 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*... #!/bin/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. * If you don't already have an overlay, create one, and implement it in /etc/make.conf. In the following example, I'll use my setup, which has the overlay in /usr/local/portage * copy the contents of /usr/portage/virtual/dev-manager/ to /usr/local/portage/virtual/dev-manager/ * cd /usr/local/portage/virtual/dev-manager/ * Edit the dev-manager-0.ebuild in the overlay to include "sys-apps/busybox[mdev]" as one option in RDEPEND. And also include "EAPI=2" at the top of the ebuild, which is required for this syntax. The revised ebuild is shown below. ############################################ EAPI=2 DESCRIPTION="Virtual for the device filesystem manager" HOMEPAGE="" SRC_URI="" LICENSE="" SLOT="0" KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~spar c-fbsd ~x86-fbsd" IUSE="" DEPEND="" RDEPEND="|| ( sys-fs/udev sys-apps/busybox[mdev] sys-fs/devfsd sys-fs/static-dev sys-freebsd/freebsd-sbin )" ############################################ * 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>