oopos 发表于 2013-1-15 02:17:49

基于BusyBox的Mini Linux 制作教程

基于BusyBox的Mini Linux 制作教程

一、准备工作
    1.指定工作目录,例如: (/home/oopos/linux/os/mini/work)
      export WORK="/home/oopos/linux/os/mini/work"
      mkdir -p $WORK
      export SRC=$WORK/src
      mkdir -p $SRC
      export ROOT=$WORK/ops
      mkdir -p $ROOT
      cd $WORK

    2.源码下载
   (1) Linux Kernel
            Url: http://www.kernel.org
                cd $SRC
                wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.35.7.tar.bz2
                tar xvf linux-2.6.35.7.tar.bz2
                export LINUX_SRC=$SRC/linux-2.6.35.7
   (2) BusyBox
            Url: http://www.busybox.net
                cd $SRC
                wget http://busybox.net/downloads/busybox-1.17.2.tar.bz2
                tar xvf busybox-1.17.2.tar.bz2
                export BUSYBOX_SRC=$SRC/busybox-1.17.2

二、编译操作

    1.编译Linux Kernel

      (1)创建编译后的文件的输出目录($LINUX_OBJ),默认为源码目录,即: $LINUX_SRC.
            export LINUX_OBJ=${LINUX_SRC}-obj
            mkdir -p $LINUX_OBJ

      (2)内核配置   
            cd $LINUX_SRC
            make O=$LINUX_OBJ menuconfig
         说明:
               此处建议参考有关内核配置指南,为了支持initrd内存盘文件系统,以下两项必选:
                General Setup -> Initial RAM filesystem and RAM disk support
                Device Drivers -> Block Devices -> RAM block device support
      (3)编译及安装
            make O=$LINUX_OBJ (前面可以加上: time 来计算编译耗时),如: time make O=$LINUX_OBJ
            cd $LINUX_OBJ
            (将bzImage拷贝到$ROOT目录)
            cp linux-2.6.35.7-obj/arch/x86/boot/bzImage $ROOT

    2.编译BusyBox
      (1)BusyBox配置
            cd $BUSYBOX_SRC
            make menuconfig
            因为要编译成静态链接库,所以要选上以下选项:
                Busybox Settings -> Build Options -> Build Busybox as a static bindary

      (2)编译及安装
            make
            make install

      (3)根系统配置
            cd _install
            mkdir {proc,sys,etc,dev} (创建Linux内核需要的目录)

            cd dev
            mknod console c 5 1 (创建一个控制台字符设备文件)
            mknod null c 1 3(创建一个0设备文件)

            cd ../etc
            (创建fstab文件)
            cat > fstab << EOF
            # device    mount-point   type   options   dump   fsck
            proc   /proc   proc   defaults    0    0
            sysfs/sys    sysfsdefaults    0    0
            EOF

            mkdir init.d
            cat > init.d/rcS << EOF
            #!/bin/sh
            mount -a
            EOF
            chmod +x init.d/rcS
            cat > inittab << EOF
            ::sysinit:/etc/init.d/rcS
            console::respawn:-/bin/sh
            ::ctrlaltdel:/sbin/reboot
            ::shutdown:/bin/umount -a -r
            EOF
            
            cd ..

            (现在我们在根系统目录: $BUSYBOX_SRC/_install)

            rm -f linuxrc
            ln -sv bin/busybox init
            (创建initrd镜像)
            find . | cpio --quiet -H newc -o | gzip -9 -n > ../initrd.gz

            cd ..
            (将initrd.gz拷贝到$ROOT目录里)
            cp initrd.gz$ROOT

三、启动配置

    1.转到ROOT
      cd $ROOT
      ls
      ------------------
      bzImageinitrd.gz
      ------------------
      现在我们得到两个文件: bzImage 和 initrd.gz


    2.GRUB 引导
      mkdir /ops
      cp -rfv $ROOT/* /ops/

      启动命令:
            kernel /ops/bzImage root=/dev/ram0 rw
            initrd /ops/initrd.gz
            boot

      至此,你应该可以看到一个完整的Linux控制台了
页: [1]
查看完整版本: 基于BusyBox的Mini Linux 制作教程