Linux内核裁剪(2.4)

linux系统裁减
第一步:裁减内核
打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了
1.1 “code maturity level options”选项,代表代码的成熟等级,因为这是一个试验的部分,我们不需要,所以关闭它。
1.2 “Loadable module support”可加载模块支持
可加载模块是指内核代码(kernel code)的一些片断,比如驱动程序,当编译内核的时候它们也被单独编译。因此,这些代码不是内核的一部分,但是当需要它的时候,它可以被加载并使用。内核代码编译成可加载模块,可以使内核更小,而且更稳定。所以里面的三项我们全选。
1.3 Processor type and features:处理器类型和特色
在这里,你可以选择你的处理器(Processor)的类型,决定是否选择不同的选项。通常“/dev/cpu”选项更高级,多数用户并不需要选择它。 “High Memory Support”只有当你的计算机有超过1GB 标准 文件系统(Ext2 FS) 必须打开这个选项,所以,打开
UDF file system support不需要,关闭
Network file systems假如计算机处于一个需要使用Network file systems选项的大型网络之中,否则不需要,所以,关闭
Partition Types此选项是一个很高级但对于有效的使用Linux内核来说并不必要的选项,关闭
native language support在这个菜单中,可以选择那些编码将被Linux用来处理DOS和Windows下的文件名,因为刚才选择了不支持DOS 和WINDOWS,所以,关闭
1.26 Console drivers 配置控制台驱动,
VGA text console选项在VGA模式下启动字符模式,打开
video mode selection support此选项使启动的时候能够使用字符模式的分辨率,不需要,关闭
1.27 sound 声卡配置
根据自己的声卡选择相关的驱动,比如我的是nforce系列的声卡,所以我就选择了这一个系列的。
1.28 USB support配置USB支持
因为我将USB驱动关闭了,所以我比需要配置USB支持,所以,关闭
1.29 Kernel hacking 配置“kernel hacking”选项系统默认
1.30 Save and Exit 保存并退出
(注:没有提到的选项,安系统默认选项)
1.31 在终端输入命令make dep (读取配置过程生成的配置文件,创建对应于配置的依赖关系树)
1.32 make clean (完成删除前面步骤留下的文件,以避免出现一些错误)
1.33 make bzImage (完全编译压缩内核)
到此,裁减内核就完成了,这个内核大小是740k第二步:根文件系统的制作
boot/root盘由两部分组成,即核心和根文件系统。要把这两部分都放到一个1.44MB的软盘上去,通常要对内核和根文件系统进行压缩,压缩核心的最好方法是进行重新编译内核,将一些不必要的支持去掉,这一步我们已经完成了,下面我们是做一个根文件系统的压缩包。对于根文件系统的压缩包括两方面的问题,第一是只保留必要的根文件系统组件,第二是将根文件系统做成一个压缩包,类似于内核<nobr id="clickeyekey2" this)"="" style="padding: 0px; margin: 0px; color: rgb(102, 0, 255); border-bottom-color: rgb(102, 0, 255); border-bottom-width: 1px; border-bottom-style: dotted; background-color: transparent; text-decoration: underline; ">工作的原理。
根文件系统概述  一个根文件系统必须包括支持完整Linux系统的全部东西,它至少应包括以下几项:  •基本文件系统结构
  •至少含有以下目录:/dev、 /proc、 /bin、 /etc、 /lib、 /usr、 /tmp
  •最基本的应用程序,如sh、 ls、 cp、 mv等
  •最低限度的配置文件,如rc、 inittab、 fstab等
  •设备:/dev/hd*、 /dev/tty*、 /dev/fd0
  •基本程序运行所需的库函数  以上所需文件一般情况下会超过1.44M,因此我们是先准备好内容后再压缩到软盘中,当用软盘启动时,再把文件解压到内存中,形成一个虚拟盘(RAMDISK),通过RAMDISK控制系统启动。为了能创建以上的根文件系统,必须有一个空闲的能够放下大约4MB文件的RAMDISK。系统缺省情况下已替我们建好了一个大小为4096KB的RAMDISK,其设备名一般为/dev/ram0,我们就使用它来保存我们预先准备好的根文件系统。 
创建根文件系统
(1)在终端输入命令:mke2fs -m 0 -i 2000 /dev/ram0,这样就创建了一个 虚拟盘 mke2fs将会自动判断设备容量的大小并相应地配置自身,-m 0 参数防止它给root保留空间,这样会腾出更多的有用空间。
(2)接着把虚拟盘挂在节点/mnt上:
在终端输入命令:mount -t ext2 /dev/ram0 /mnt/floppy 
(3) 接着是创建目录。根文件系统最少应该有如下8个目录:
/dev — 设备
/proc — proc 文件系统所需目录
/etc — 系统配置文件
/sbin — 重要的系统程序
/bin — 基本应用程序
/lib — 共享函数库
/mnt — 装载其他磁盘节点
/usr — 附加应用程序
执行如下命令创建这些目录:
#cd /mnt/floppy
#mkdir dev proc etc sbin bin lib mnt usr
(4)接下来的工作就是确定各个目录下的内容了:
/dev:/dev中含有系统不可缺少的设备文件。用命令:
cp –dpr /dev/{console,fd0.hda,hda8,hda9,hda10,initctl,initrd,kmem,mem,null,ram,ram0,ramdisj,sda,tty1,tty} /mnt/flopp/dev/ 将console,fd0.hda,hda8,hda9,hda10,initctl,kmem,mem,null,ram,ram0,ramdisj, sda, tty1,tty等必须的设备文件复制到dev文件夹中。
其中参数-dpr是为了保证连接文件仍然不变。
Console为系统控制台设备,非常重要;
Fd0,第一个软驱;
Had,hda8,hda9,hda10 为硬盘设备,其中hda8,hda9,hda10不是必须的;
Initctl 为一个FIFO设备,和init有关;
Initrd 初始化设备;
Kmem 内核虚拟内存;
Mem 访问物理内存;
Null null设备;
Ram ram disk 设备,是/dev/ram0应用initrd机制所必须的;
Tty 当前tty设备;
•/etc:这个目录中含有一些必不可少的系统配置文件。用命令:
cp /etc/{default,ld.so.cache,ld.so.conf,login.defs,fstab,groub,init.d,inittab,issue,modules.conf,mtab,nsswitch.conf,pam.d,profile,rc.d} /mnt/floppy/etc/ 将文件default,ld.so.cache,ld.so.conf,login.defs,fstab,groub,init.d,inittab, issue,modules.conf,mtab,nsswitch.conf,pam.d,profile,rc.d复制到当前文件夹etc下面。
Default 某个命令的缺省设置;
Ld.so.cache 由idconfig命令根据/etc/id.so.conf文件产生;
ld.so.conf 库文件路径配置文件;
login.defs 全局缺省设置;
fstab 文件系统列表,    
fstab应包括:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
init.d符号连接到/etc/rc.d/init.d
inittab init配置文件
inittab包括:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2 
modules.conf 模块的配置文件
mtab 已经挂载的文件系统列表
nsswitch.conf name service switch 的配置文件
pam.d放置PAM配置文件的目录
profile 系统环境变量和登陆配置文件
rc.d 放置启动脚本的目录
/bin和/sbin:该目录中包含有必不可少的应用程序,在该目录下放置 init, getty,login, mount,以次来运行rc的外壳shell。
/lib: 该目录中包含有你的启动盘启动过程中所需要的共享函数库。  
几乎所有的程序都需要libc库,列一下目录/lib中的libc:
libext2fs.so.2,libcom_err.so.2,libuuid.so.1,libc.so.6,ld-linux.so.2 ,libnss_files*,pam_unix.so
(5)打包
完成了上述工作,卸下虚拟盘,拷贝到一个文件中,然后压缩。
umount /mnt
dd if=/dev/ram0 bs=1k | gzip -v9>gj.gz
压缩结束后,就拥有了一个压缩的根文件系统,这个压缩文件的名字叫gi.gz,检查它的大小,如果大了,还得删除一些东西。
第三:组织引导盘
有了根文件系统和内核之后,最后的工作就是把它们组织在一起。
接下来创建一个内核文件系统。把一张干净的软盘插入软驱,在上面创建ext2文件系统。
相继在shell中输入命令:
mke2fs /dev/fd0 (创建文件系统)
  mount /dev/fd0 /mnt/floppy(挂载软盘)
  rm -rf /mnt/floppy/lost+found(删除系统生成的文件夹)
  mkdir /mnt/floppy{boot,dev}(创建两个文件夹)
mkdir /mnt/floppy/boot/grub 
再执行:
  cp -R /dev/{null,fd0} /mnt/floppy/dev
cp /boot/grub/stage1 /mnt/floppy/boot/grub 
cp /boot/grub/stage2 /mnt/floppy/boot/grub 
接着拷贝启动加载器boot.b到目录/boot中,
  cp /boot/boot.b /mnt/floppy/boot
把grub引导写到软盘上面
#grub
在 grub>; 提示符处,输入: 
grub>; root (fd0) 
grub>; setup (fd0) 
grub>; quit 
写完引导后
#cp vmlinuz-jou /mnt/floppy/boot (复制内核到boot文件夹下)
#cp gj.gz /mnt/floppy/boot (复制压缩文件系统到boot文件夹下)
#cp /boot/grub/grub.conf /mnt/floppy/boot/grub (把引导配置文件复制到grub下面)
编辑grub.conf, 内容如下:
timeout 10 
default 0 
title My little Linux 
  root (fd0) 
  kernel /boot/vmlinuz-jou ro root=/dev/ram0
  initrd /boot/ gj.gz 
然后制作grub.conf的link文件menu.lst
#ln -s /mnt/floppy/boot/grub/grub.conf /mnt/floppy/boot/grub/menu.lst
#umount /mnt/floppy(退出软盘)
制作完成!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值