码迷,mamicode.com
首页 > 系统相关 > 详细

使用busybox创建精简linux内核实例

时间:2015-02-24 13:54:57      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:linux   kernel   busybox   精简   

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

使用busybox创建精简linux内核实例

标签:linux   kernel   busybox   精简   

原文地址:http://ggvylf.blog.51cto.com/784661/1615046

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!