Linux-系统裁减之五

Kernel + initrd(busybox制作,提供ext3文件系统模块)+ROOTFS(busybox制作)
编译对应目录下的核心内容:
make SUBDIR=arch/
arch/x86/boot/bzImage镜像文件

硬件驱动:initrd
initrd:仅需要提花内核访问真正的根文件系统所在设置需要的驱动
一般只包括存储设置和文件系统相关的模块(如果是U盘启动,则要装载U盘启动的模块)
系统初始化rc.sysinit:初始其它硬件的驱动程序
ROOTFS:busybox;busybox自带的init不支持运行级别
/etc/inittab:格式也不尽相同
busybox只提供:ash、hush,所以如果要使用bash的话,要复制bash程序

内核:(linux-2.6.38.5.tar.bz2)
内核配置:使用已有的内核配置文件的基础上进行再配置可以复制.config配置文件
使用make menuconfig 进行图形编辑模式
编译步骤:改内核版本号;硬盘;网卡;文件系统,编译好后保存退出。复制一份.conf文件在root目录下,防止丢失
make drivers/net/pcnet32.ko 只编译此网卡模块
modinfo drivers/net/pcnet32.ko 查看模块信息是否依赖其它模块。
make arch/x86只编译x86平台核心中的模块(在screen(-r)命令下编译)
如果要重新编译需要使用:make clean 清理模块 使用make mrproper 清理配置

/boot/vmlinuz (ext3,IDE)
/mnt/boot: /dev/hda1
/mnt/sysroot:/dev/hda2

1.安装grub :安装完包查看/mnt/boot/目录下是否有grub目录
gurb-install --root-diretory=/mnt/ /dev/hda
2.安装内核
cp /boot/vmlinuz-2.6.18-308.e15 /mnt/boot/vmlinuz
sync
3.提供根文件系统(下载busybox)
配置busybox,使用make menuconfig
配置好后直接:make install 编译
编译好后要创建一个busybox initrd文件 /mkdir/tmp/initrd
在busybox-1.20.2目录下 cp _inistall/* /tmp/initrd -a
在initrd下创建各种根目录,设备文件,init脚本:(挂载proc,sysfs),装载ext3模块(insmod)后使用: mdev -s命令
通知内核通过sysfs目录输出所有的硬件信息给用户空间,目的是为了创建dev文件;和udev命令相似,挂载根文件系统,
切换根文件系统 exec switch_root /mnt/sysroot /sbin/init
4.制作initrd
压缩 cpio 装载ext3模块到/lib目录下 提供grub/grub.conf配置文件
5.制作sysroot
把busybox目录下install目录下的文件复制到时/mnt/sysroot目录下 在sysroot下创建各种根目录,设备文件
编辑inittab配置文件 编写rc.d/rc.sysinit脚本,启动linux显示,重新挂载根文件系统和其它文件系统
编辑fstab配置文件,挂载所需要的文件系统(proc,sysroott等)
6.复制bash
7.添加用户
8.改主机名(在initsys脚本下)
9.修改issu配置信息
10.装载网卡模块到/lib目录下

posted on 2017-05-24 12:38  一抹红尘、  阅读(130)  评论(0)    收藏  举报

导航