使用busybox创建精简linux内核实例
busybox
一个二进制程序,模拟实现众多程序。
/bin/busybox
查看本机硬件设备信息:
#cat /proc/cpuinfo
#cat /proc/meminfo
#lsusb 显示usb接口信息。
#lspci 显示pci总线上的所有设备。
#hal-device 显示所有硬件的详细信息。
hardware abstract layer 硬件抽象层。
编译busybox:
#tar xf busybox.tar.bz2
#cd busybox
#make menuconfig
Busybox Settings
Build Options
Build BusyBox as a static binary(no share libs)(NEW)
Installation Options("make install"behavior)
可以指定.install文件生成的地址。
#make install
若make install报错,则此内核版本缺少部分头文件,需要下载更新的内核。
#tar xf linux-xxx.tar.bz2 -C /usr/src
#cp -r /linux-xxx/include/mtd/ubi-user.h /root/busybox/include/mtd/
使用busybox创建系统内核。
0.挂载相关设备:
#mount /dev/sdb1 /mnt/boot
#mount /dev/sdb2 /mnt/sysroot
1.编译busybox
#tar xf busybox.tar.bz2
#cd busybox
#make menuconfig
Busybox Settings
Build Options
Build BusyBox as a static binary(no share libs)(NEW)
Installation Options("make install"behavior)
可以指定.install文件生成的地址。
#make install
3.制作initrd文件:
1.复制busybox目录下的_install内的全部内容:
#cp -a _install /tmp/busybox
#ls /tmp/busybox
bin linuxrc sbin usr
#rm linuxrc
2.创建相应目录:
#mkdir -p etc dev lib proc mnt/sysroot tmp
3.复制ext3需要的相关库。
#cp /lib/modules/KERNELVERSION/kernel/fs/jbd/jbd.ko /tmp/busybox/lib/modules/
#cp /lib/modules/KERNELVERSION/kernel/fs/ext3/ext3.ko /tmp/busybox/lib/modules/
4.创建init文件。
#vim /tmp/busybox/etc/rc.d/init
#!/bin/sh
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/sda2 /mnt/sysroot
exec switch_root /mnt/sysroot /sbin/init
#chmod +x init
5.创建2个必要的设备文件。
#mknod /tmp/busybox/dev/console c 5 1
#mknod /tmp/busybox/dev/null c 1 3
6.创建initrd文件:
#cd /tmp/busybox
#find . | cpio -H newc -o --quiet |gzip -9> /mnt/boot/
initrd.gz
4.从当前系统复制vmlinux文件:
#cp /boot/vmlinux-xxx.el5 /mnt/boot/vmlinux
5.安装grub:
#grub-install --root-directory=/mnt/boot /dev/sdb
6.创建grub.conf文件:
#vim /mnt/boot/grub/grub.conf
default=0
timeout=3
title=my linux
root(hd0,0)
kernel /vmlinux ro root=/dev/hda2 quiet
initrd /initrd.gz
7.创建相关的文件系统:
#cd busybox
#cp _inistall /mnt/sysroot
#cd /mnt/sysroot
#rm linuxrc
#mkdir -pv lib/modules proc sys dev etc/rc.d/init.d root mnt media
#mkdir -pv root tmp home var/{log,run,lock/subsys,tmp} usr/{bin,sbin,local} opt boot
8.创建inittab文件:
#cd /mnt/sysroot/etc
#vim inittab
::sysinit:/etc/rc.d/rc.sysinit
console::reapawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdonw:/bin/umount -a -r
9.创建fstab文件
#vim fstab
sysfs /sys sysfs defaults 0 0
proc /porc proc defaults 0 0
/dev/hda1 /boot ext3 defaults 0 0
/dev/hda2 / ext3 defaaults 1 1
10.创建必要的设备文件:
#mknod /mnt/sysroot/dev/console c 5 1
#mknod /mnt/sysroot/dev/null c 1 3
11.创建initrd文件:
#vim /mnt/sysroot/etc/rc.d/rc.sysinit
#!/bin/bash
echo -e "\tWelcom to \e33[34mMY LINUX\033[0m"
echo -e "Remounting root ......[ \033[32mOK\033[0m ]"
mount -t proc proc /proc
mount -t sysfs sysfs /sys
echo -e "Creating files of device ......[ \033[32mOK\033[0m ]"
mdev -s
echo -e "Mounting the filesystem ......[ \033[32mOK\033[0m ]"
mount -a
swapon -a
#chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1615046
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。