Initrd文件制作的老方法

1.内核编译        cd /usr/src/....        make mrproper       make menuconfig-----请注意一定加入RAM disk support 和initial RAM disk (initrd)             support 的支持        make dep        meke clean       make bzImage    没有加入对modules的支持,生成的bzImage文件在usr/src/linux/arch/x86_64/ 2.busybox #cp busybox-1.00.tar.gz /tmp/ada #cd /tmp/ada #tar xvfz busybox-1.00.tar.gz #cd busybox-1.00 #make menuconfig 下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心. General Configuration应该选的选项 Show verbose applet usage messages Support for SUID/SGID handling里面的: Runtime SUID/SGID configuration via /etc/busybox.conf Build Options Build BusyBox as a static binary (no shared libs) 这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作. Installation Options Don't use /usr 这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接. 其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了. 配置好后退出并保存. make make install 编译好后在busybox目录下生成子目录_install,里面的内容: drwxr-xr-x 2 root root 4096 11月 24 15:28 bin lrwxrwxrwx 1 root root 11 11月 24 15:28 linuxrc -> bin/busybox drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin 其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接. 3.制作自己的root fs 1.目录结构 mkdir /mnt/myOS/rootfs cd /mnt/myOS/rootfs mkdir etc usr var tmp proc home root dev 其中etc,proc和dev是一定要建的,bin和sbin不用建,因为busybox中已经有了. 其他的可以象征性的建几个就可以了. 拷贝busybox #cp -R /tmp/ada/busybox-1.00/_install/* /mnt/myOS/rootfs/ 2.设备文件 我是直接在redhat系统/dev目录里cp的,方法如下: #cp -R /dev/console ../rootfs/dev/ #cp -R /dev/null ../rootfs/dev/ #cp -R /dev/zero ../rootfs/dev/ 你认为需要的都cp过来 (有的文章说  fd0,hda,ram,ram1,tty1,null,zero,loop1,fb0,fb,tty等是必备的--) 3,建立etc目录下的配置文件 我是直接拷贝busybox自带的例子    (这是我自己试出来的一种方法,不知道标准的怎么做--) cp -R .../busybox-1.00/examples/bootfloppy/etc/*  /mnt/myOS/rootfs/etc 4.制作ramdisk映象文件 cd /mnt/myOS/ dd if=/dev/zero of=/dev/ram0 bs=1M count=4    ------初始化4M内存空间   //这一步可以改一改:否则img最大只能                                                                                            为4M, of=/tmp/myimg bs=1M count=32 mkfs.ext3 -m0 /dev/ram0                                        ------格式化为ext3 mkdir /mnt/ram mount /dev/ram0 /mnt/ram                                    ------挂载到/mnt/ram cp -R rootfs/* /mnt/ram                                           ------把rootfs写入内存 umount /mnt/ram dd if=/dev/ram0 of=/mnt/myOS/ramdisk.img     ------把内存中的内容以映象方式取出      ok,这个ramdisk.img就是我们的rootfs 1.kernel    一般命名为vmlinuz   就是/usr/src/linux/arch/x86_64/boot/bzImage 2.rootfs    一般命名为initrd.img    已经在这个目录了,就是ramdisk.img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值