config DEVTMPFS
        bool "Maintain a devtmpfs filesystem to mount at /dev"
-       depends on HOTPLUG && SHMEM && TMPFS
+       depends on HOTPLUG
        help
-         This creates a tmpfs filesystem instance early at bootup.
+         This creates a tmpfs/ramfs filesystem instance early at bootup.
          In this filesystem, the kernel driver core maintains device
          nodes with their default names and permissions for all
          registered devices with an assigned major/minor number.
          functional /dev without any further help. It also allows simple
          rescue systems, and reliably handles dynamic major/minor numbers.
 
+         Notice: if CONFIG_TMPFS isn't enabled, the simpler ramfs
+         file system will be used instead.
+
 config DEVTMPFS_MOUNT
        bool "Automount devtmpfs at /dev, after the kernel mounted the rootfs"
        depends on DEVTMPFS
 
 #include <linux/namei.h>
 #include <linux/fs.h>
 #include <linux/shmem_fs.h>
+#include <linux/ramfs.h>
 #include <linux/cred.h>
 #include <linux/sched.h>
 #include <linux/init_task.h>
 static int dev_get_sb(struct file_system_type *fs_type, int flags,
                      const char *dev_name, void *data, struct vfsmount *mnt)
 {
+#ifdef CONFIG_TMPFS
        return get_sb_single(fs_type, flags, data, shmem_fill_super, mnt);
+#else
+       return get_sb_single(fs_type, flags, data, ramfs_fill_super, mnt);
+#endif
 }
 
 static struct file_system_type dev_fs_type = {
 
        return 0;
 }
 
-static int ramfs_fill_super(struct super_block * sb, void * data, int silent)
+int ramfs_fill_super(struct super_block *sb, void *data, int silent)
 {
        struct ramfs_fs_info *fsi;
        struct inode *inode = NULL;
 
 extern const struct vm_operations_struct generic_file_vm_ops;
 extern int __init init_rootfs(void);
 
+int ramfs_fill_super(struct super_block *sb, void *data, int silent);
+
 #endif