kernel+initrd(busybox)+rootfs(busybox)

查看本机硬件信息

1、cat /proc/cpuinfo

2、lsusb

3、lspci

4、hal-device

编译内核

1、make menuconfig

  make gconfig

  make kconfig

2、make

3、make modules_install  // /lib/modules/VERSION

4、make install


部分编译

  1、只编译某子目录下的代码

    make dir/sudir

       make ./arch/

       make ./drivers/net/

  2、只编译部分模块

    make M=./dir/

  3、只编译某一个模块

    make drivers/net/pcnet32.ko

  4、将编译好的模块放到其他目录中

    make -O=/tmp/kernel/ 


#   cd /tmp/busybox/

  

创建根文件系统

    

       1、  创建必要的设备文件

         mknod /dev/console  c 5 1

         mknod /dev/null   c 1 3


       2、 mkdir -pv dev etc/init.d/  proc sys tmp  mnt/sysroot/

     


创建initrd(busybox)

      1、  rm linuxrc

      2、  编辑init

        #!/bin/bash

        #

        mount -t proc   proc   /proc

        mount -t sysfs  sysfs  /sys

    

        insmod /lib/modules/jbd.ko

        insmod /lib/modules/ext3.ko


        mdev -s

        mount -t ext3   /dev/hda2  /mnt/sysroot


        exetc  switch_root  /sysroot  /sbin/init


      3、  给此脚本执行权限

           chmod +x init

      4    制作initrd 

           find . |cpio -H newc --quiet -o |gzip -9 > /mnt/boot/initrd 

创建真正的根文件系统

     cd /tmp/busybox


     1.mkdir -pv dev etc/rc.d/ lib/modules proc sys root home usr 

     2./etc/inittab

        ::sysinit:/etc/rc.d/rc/sysinit:

        console::respawn:-/bin/sh

     3.编辑fstab

        挂载 proc sys /dev/hda1 /dev/hda2

busybox的init不支持运行级别,并且/etc/inittab的格式也跟linux有所不同