一、Busybox
1、介绍:BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例如grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士***。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了Android 系统的自带的shell。
2、官网:http://www.busybox.net/
它是一个二进制程序
二、查看硬件信息
1、cat /proc/cpuinfo 查看cpu信息
2、lsusb 列出本机USB信息
3、lspci 列出pci总线的所有设备
4、hal-device 硬件抽象层(Hardware Abstract Layer)
三、如何实现编译部分内核
1、只编译某子目录下的相关代码:make dir/subdir (目录和子目录)
make arch/ (不包括模块的内核核心)
2、只编译部分模块:make M=drivers/net/
make drivers/net/ (只编译和网络相关的信息)
3、只编译某一模块:make drivers/net/pcnet32.ko
4、将编译完成的结果放置于别的目录中:
make O=/tmp/kernel
5、交叉编译:make ARCH=
四、如何编译安装Kernel+busybox系统
1、首先安装图形开发库Development Libraries和Development Tools
# yum groupinstall "Development Tools" "Development Libraries"
2、准备IDE硬盘的2个磁盘
/dev/hda1:格式化为ext3-->挂载到/mnt/boot
/dev/hda2:格式化为ext3-->挂载到/mnt/sysroot/
3、下载busybox源码包busybox-1.20.2.tar.bz2
4、解压缩tar xf busybox-1.20.2.tar.bz2
5、编译busybox:
cd busybox-1.20.2
make menuconfig
选择Busybox Settings-->Build Options-->Build BusyBox as a static binary (no shared libs)选中为*
Busybox Settings-->Installation Options (”make install“ behavior)-->查看到安装busybox的位置
保存退出;
6、编译安装busybox
cd busybox-1.20.2
make install(编译过程可能会报错,因为最新的busybox需要最新内核的头文件,此时下载新内核linux-2.6.38.5.tar.bz2)
7、下载的内核版本,解压缩
tar xf linux-2.6.38.5.tar.bz2 -C /usr/src
8、切换到新内核的头文件目录
cd /usr/src/linux-2.6.38.5/include/mtd
9、复制新内核的头文件ubi-user.h到/root/busybox-1.20.2/include/mtd目录下:
mkdir /root/busybox-1.20.2/include/mtd
cp /usr/src/linux-2.6.38.5/include/mtd/ubi-user.h /root/busybox-1.20.2/include/mtd
10、重新编译安装busybox
cd /root/busybox-1.20.2
make install(编译完成后,会在/root/busybox-1.20.2下生成_install文件,即是busybox的安装位置)
11、复制编译安装busybox配置文件_install,做为文件系统的一部分:
cp _install /tmp/busybox -a
cd /tmp/busybox
删除链接文件:rm linuxrc
12、创建必要的文件系统目录:
mkdir proc etc dev lib/modules mnt/sysroot sys -pv
13、复制Busybox的ext3文件系统所需要的模块:
modinfo ext3(查看ext3依赖文件路径)
modinfo jbd(查看ext3依赖文件路径)
cp /lib/modules/`uname -r`/kernel/fs/jbd/jbd.ko /tmp/busybox/lib/modules
cp /lib/modules/`uname -r`/kernel/fs/ext3/ext3.ko /tmp/busybox/lib/modules
14、编辑init脚本:
vim /tmp/busybox/init
#!/bin/sh -->目前busybox只有sh环境
#
mount -t proc proc /proc
mount -t sysfs sysfs /sys
insmod /lib/modules/jbd.ko
insmod /lib/modules/ext3.ko
mdev -s -->扫描busybox的硬件设备,此时从/tmp/busybox/sbin/mdev可看出(RedHat中扫描设备的命令是udev)
mount -t ext3 /dev/hda2 /mnt/sysroot
exec switch_root /mnt/sysroot /sbin/init
添加init脚本执行权限:chmod +x init
15、创建2个必要的设备文件:
mknod dev/console c 5 1
mknod dev/null c 1 3
16、封装initrd文件到/dev/hda1:
find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz
17、复制内核文件到/dev/hda1:
cp /boot/vmlinuz-・uname -r・ /mnt/boot/vmlinuz
18、安装grub到/dev/hda设备:
grub-install --root-directory=/mnt /dev/hda
ls /mnt/boot/
19、编辑grub文件:
vim /mnt/boot/grub/grub.conf
defualt=0
timeout=3
title MageEdu Linux
root(hda0,0)
kernel /vmlinuz ro root=/dev/hda2
initrd /initrd.gz
查看grub文件:ls /mnt/boot/
20、创建/dev/hda2所需要的sysroot文件:
cd /root/busybox-1.20.2
cp _install/* /mnt/sysroot/ -a
cd /mnt/sysroot
ls
rm linuxrc
21、创建/dev/hda2必要的根文件:
mkdir proc sys dev tmp var/{log,lock,run} lib/modules etc/rc.d/init.d root boot mnt media -pv
ls
ls sbin/(查看sbin下是否有init等)
22、在创建系统初始化配置文件inittab(busybox支持的文件系统的配置文件和RedHat有差异)
vim etc/inittab
::sysinit:/etc/rc.d/rc.sysinit
console::respawn:-/bin/sh
::ctlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
23、为系统准备“文件系统表”配置文件/etc/fstab
vim etc/fstab
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
/dev/hda2 / ext3 defaults 1 1
同步到磁盘:sync
24、为/dev/hda2文件系统创建2个设备(主次设备号是事先注册好的)
mknoddev/console c 5 1
mknod dev/null c 1 3
25、建立/dev/hda2文件系统初始化脚本文件:
vim etc/rc.d/rc.sysinit
#!/bin/sh
echo -e "\\tWelcome to \\033[34mMage \\033[0m Linux."
echo -e "Remounting the root filesystem .........[ \\033[32mOK\\033[0m ]"
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -o remount,rw /
echo -e "Creating the files of device ............[ \\033[32mOK\\033[0m ]"
mdev -s
echo -e "Mounting the filesystem .................[ \\033[32mOK\\033[0m ]"
mount -a
swapon -a
添加脚本执行权限:chmod +x etc/rc.d/rc.sysinit
26、sync(同步数据到磁盘)
27、新建主机,挂载刚刚第一步我们添加的硬盘,开始启动系统(宿主机关机)。
28、系统启动后,开始测试busybox封装的Linux小系统的功能:
ls
fdisk -l
mkswap /dev/hda3
swapon /dev/hda3
free -m 等。