I hacked a bit on mkinitcpio to try and fix some bugs and instabilities. This version work much better when devices are not created right away. Please read through the diffs and review this. It boots here. TODO: Some adjustments in the encrypt hook (use poll_device), maybe also in mdadm/raid, I don't really know about those. Any other hooks that might need fixing? commit 0e6bd9d12ca52650892ffa1b33ed2267c98a72d9 Author: Thomas Bächler <thomas@archlinux.org> Date: Sun Jun 7 00:25:20 2009 +0200 Don't only check for block devices, but also for symbolic links. If we have a symlink, we don't check further if it points to a block device, partially due to klibc's readlink being broken. commit 1a26b2e49863cb3f010bc7b798fdbe3b8511ddfa Author: Thomas Bächler <thomas@archlinux.org> Date: Sun Jun 7 00:01:39 2009 +0200 Fix an 'elif' that should have been an 'if' commit fe2ca57793f5f8461084d69e69939d8e0bb42b2b Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 23:44:09 2009 +0200 Use poll_device before resuming, continue if the device doesn't exist commit e97bdaad85ad0c272dcd111045815e5a2628b4f3 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 23:34:28 2009 +0200 Remove the usb and fw runtime hooks, as a default delay is now always set commit 25a0acd3f4e7932445612e919f92c48815f9c587 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 23:22:07 2009 +0200 Rework the root device detection / creation stage - Set rootdelay to 10 by default - Skip the whole detection stage if we use root on nfs - Use the new poll_device function to wait for at most $rootdelay seconds - Always pass rootdelay=0 to kinit, as we ensure the existence of the root device - Don't reboot after the fallback. This allows a user to fix a problem and continue booting - Rely on kinit to detect the root filesystem type. The rootfstype= option can still be used to override Our old method would have failed as well, as the code for filesystem detection is the same commit 2f7a21aaf71ba7b603666de181586bb7453bbf10 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:56:12 2009 +0200 Remove the filesystems runtime hook: Detection is done by kinit, don't duplicate code here commit 61f6d3a913354572192f2b31ad380cb410988300 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:51:59 2009 +0200 Remove the modload hook. It is untested and unmaintained. commit 13825315ff94fd35c8cd604eeecf125ebd76e8b0 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:50:53 2009 +0200 Add common poll_device function commit 7a4bc6aaf49eb55df3e19fb09260ac97023bc901 Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:47:53 2009 +0200 Add a new file init_functions that contains common functions used in /init and the hooks commit 35fea002c27f6c1124a28535e379d7edf34a127e Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:31:35 2009 +0200 Add support for lzma and bzip2 compression for the image commit 822a88700e3aeb7432c1a4dc0ede4c20494f6fcb Author: Thomas Bächler <thomas@archlinux.org> Date: Sat Jun 6 22:23:18 2009 +0200 Add all hid modules for now, as we cannot autodetect them using sysfs