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
Initrd文件制作的老方法
最新推荐文章于 2021-05-25 11:50:24 发布