【求助】linux启动过程initrd如何配置自加载驱动模块
写了一个块设备驱动,该设备是通过socket进行重定向到网络上的一个镜像文件,当linux系统起来以后可以进行分区、格式化、挂载、磁盘读写等。。当我直接insmod模块时,在/dev目录下就可以看到相应的设备文件test,通过fdisk可以分区,分区后在/dev目录下可以看到该设备的子设备(即分区后的设备test0、test1),之后通过mkfs.ext3/dev/test0 可以进行文件系统创建(即初始化)。也就是在我一个完整启动的linux系统上这些动作都可以完成。。大家都知道linux启动过程中,就是在加载完内核以后会先启动一个小系统initrd(当然这个小系统不一定是必须的),主要完成一些不能静态编译的模块加载工作,我想通过修改linuxrc脚本来实现块设备的自动加载。该块设备用到网络,所以还需要一些网络模块,我都把他们放到initrd里面,通过修改linuxrc脚本加载所需的模块,问题是,当我最后一步加载test时,在/dev目录下找不到该设备,我就通过mknod命令自己创建该设备节点,之后尝试通过fdisk等打开该设备,也打不开,不知道有没有大牛知道initrd这个小系统有什么特殊的地方。。为什么打不开我写的块设备。。。。 发现问题所在了,在initrd镜像内进行操作,重新编辑脚本文件(init= 这里的文件名),配置fdisk自动写入分区,脚本内加入:
fdisk /dev/test <<EOF
w
EOF
即可,另外我用的fedora5初始不支持ext3文件系统,ext3是作为动态编译的只生成内核模块,我把磁盘重新制作为ext2,就可以挂载了。。
页:
[1]