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内存(不是磁盘空间)时才是必须的。 多数计算机的内存从64到512MB(并且拥有8到60GB硬盘空间),因此“High Memory Support”通常并不使用。 实际上现在所有的处理器都集成了浮点运算单元(译者注:从586级开始所有CPU集成了浮点运算单元),所以通常你可以不选择这个选项。 “MTRR”选项允许在PCI或者AGP总线众进行更快速的通讯。 由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择“MTRR”:无论如何,打开这个选项通常都是安全的——即使你的机器没有使用PCI或AGP总线的显卡。 对称多处理器(SMP)需要能够支持超过一个处理器的主板,比如一块支持双Pentium II处理器的主板。 “Symmetric multi-processing”选项保证内核能够以最佳方式加载双处理器。 最后一个选项(“APIC”选项)通常也需要多处理器,但它通常是关闭的。所以在这一栏我只选了MTRR,其他都不选。

1.4 General setup:常规内核选项。

Networking support,linux网络支持,必须选上,否则无法编译内核。

Pci support 因为现在所有系统都使用PCI总线,所以选上。

PCI access mode PCI存取模式,选择any.

System V IPC 程序通信和同步,选上

BSD process accounting 保持进程结束时产生的错误代码,选上

Sysctl support 允许程序修改某些内核选项而不需要重新编译内核或者重新启动计算机,选上

Kernel support for a.out binaries a.out的执行文件是比较古老的可执行代码,但有些程序还要用上,所以选上

Kernel support for ELF binaries ,现在的可执行程序格式,选上

Power management support 电源管理支持,选上

1.5 Memory Technology Devices (MTD),配置存储设备(Memory Technology Devices),这个选项使Linux可以读取闪存卡(Flash Card)之类的存储器,关闭

1.6        Parallel port support,配置并口(parallel port).在USB技术出现以前,并口是最常用的连接计算机和打印机、扫描仪的方式,关闭

1.7        Plug and Play configuration配置即插即用(PnP)设备.因为我不需要USB设备,所以我关闭这个选项

1.8        Block devices 配置块设备(block devices)

Normal floppy disk support我要使用软驱,所以选上

1.9 Multi-device support (RAID and LVM)  配置多驱动器(multiple devices)不需要RAID(廉价冗余磁盘阵列)或者LVM支持,所以全部关闭

1.10 Networking options  网络配置选项

Packet Socket选项用来与网卡进行通信而不需要在内核中实现网络协议,选上

Unix domain sockets 进行网络链接,选上

TCP/IP networking此选项包括了Internet和内部网络所需要的协议。选上

1.11 Telephony Support 电话支持,不需要,关闭

1.12 ATA/IDE/MFM/RLL support 配置对ATA,IDE,MFM和RLL的支持(硬盘的通讯协议)

现在都用ATA,IDE格式硬盘,所以选上

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support,基本上所有的计算机都使用IDE/ATAPI界面,因此选上

Include IDE/ATAPI CDROM support 支持光驱的时候需要,关闭

Include IDE/ATAPI TAPE support 关闭

Include IDE/ATAPI FLOPPY support 关闭

CMD640 chipset bugfix/support 关闭

1.13 SCSI support 配置SCSI支持.没有SCSI硬盘,也不用USB设备,所以关闭

1.14 Fusion MPT device support 为灰色,系统自动选关闭

1.15 I2O device support  配置I2O设备支持(I2O Device Support)

没有I2O界面,所以选择关闭。

1.16 Network device support 配置网卡支持(Network Device Support)

Network device support 在没有网卡支持的情况下,很难将内核编译成功,选上

Dummy net driver support(虚拟网卡驱动),系统会经常用到虚拟网卡,选为一个可加载模块。

Ethernet(10 or 100Mbit)配置以太网卡(Ethernet Device)根据自己的实际情况配置,比如我有一块3c509/3c529芯片的3com卡,则选3com cards并将3c509/3c529选为可加载模块

1.17 Amateur Radio support  配置业余广播支持(Amateur Radio Support)不需要,关闭

1.18 IrDA (infrared) support配置红外线(无线)通讯支持 不需要,关闭

1.19 ISDN subsystem 配置ISDN.不需要,关闭

1.20 Old CD-ROM drivers (not SCSI, not IDE) 配置老CDROM.没有老CDROM,关闭

1.21 Input core support 配置Input Core Support. 这个选项提供了2.4.x内核中最重要的特性之一的USB支持。 Input core support是处于内核与一些USB设备之间的层(Layer)。我不需要USB支持,所以,关闭

1.22 Character devices配置字符型设备(Character Devices)

virtual terminal允许在XWindow中打开xterm和使用字符界面登录,选上

support for console on virtual terminal告诉内核将诸如模块错误、内核错误启动信息之类的警告信息发送到什么地方, 在XWindow下,通常设置一个专门的窗口来接收内核信息,但是在字符界面下,这些信息通常被发送到第一个虚拟终端(Virtual Terminal),所以,选上

standard/generic (8250/16550 and compatible UARTs) serial support,内核支持串行口,选上

mouse support (not serial and bus mice)用的是PS/2鼠标,所以。选上

PS/2 mouse (aka "auxiliary device" support) 用的是PS/2鼠标,所以。选上

unix98 PTY support 使用远程使用自己机器上的xterm,不需要,关闭

(除此以外的本栏选项,其他的选项全部选择关闭)

1.23 Multimedia devices 配置多媒体设备“Multimedia Devices”不需要,关闭

1.24 Crypto Hardware suppor,关闭

1.25 File systems配置文件系统(File System)

DOS FAT support windowsNT/2000文件系统,不选择,关闭

ISO 9660 CDROM file system support 光驱支持,不需要,关闭

/proc file system support /proc目录中的文件包含了关于系统状态的许多重要信息,比如那些中断正在使用 所以选择,打开

Second extended fs support此选项针对Linux的标准文件系统(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的软盘上去,通常要对内核和根文件系统进行压缩,压缩核心的最好方法是进行重新编译内核,将一些不必要的支持去掉,这一步我们已经完成了,下面我们是做一个根文件系统的压缩包。对于根文件系统的压缩包括两方面的问题,第一是只保留必要的根文件系统组件,第二是将根文件系统做成一个压缩包,类似于内核工作的原理。

根文件系统概述

一个根文件系统必须包括支持完整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(退出软盘)

制作完成!

linux 系统裁减指南,Linux 系统裁减指南相关推荐

  1. Linux系统初学者指南,Linux系统新手入门指南(二)

    在上篇文章中介绍过Linux系统给我们带来的是一片开源的天地,大部分的服务器都是Linux的.本篇文章是针对Linux系统的新手,为新手们准备的入门指南,希望看完本篇文章能让大家无障碍的操作Linux ...

  2. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南题八——MiniGUI 和其他嵌入式 Linux 上的图形及图形用户界面系统

    简介: 为了让读者对嵌入式 Linux 当中能够使用的图形及图形用户界面有个较为全面的认识,本文将为读者介绍一些嵌入式 Linux 系统中常见的图形及图形用户界面系统,并作为<基于 Linux ...

  3. 安装Linux、windows的vhd系统指南

    摘要:本文主要介绍把windows系统和Linux系统装进vhd文件,并从移动硬盘引导启动 Table of Contents 一.基础知识 1.计算机启动过程 二.安装windows到vhd 方法一 ...

  4. Linux操作系统基础 Intel32位系统架构总览

    前言 说是Linux操作系统基础,其实应该是Intel IA-32架构,但是以学习Linux操作系统为目的,故而称为<Linux操作系统基础>.本部分开始主要讲解80x86保护模式下基本概 ...

  5. linux pdm 查看工具,linux系统监控工具

    通过系统监控可以了解系统的运行状态.及时发现异常.分析原因.提早解决,避免系统故障,确保用户对系统的感知度和满意度.IPTV系统一般是通过告警管理.日志管理.信令跟踪.探针.诊断测试来实现对系统的监控 ...

  6. linux mpeg-4,嵌入式MPEG-4解码系统的设计与实现,嵌入式MPEG-4解码系统,嵌入式Linux,视频码流,P...

    介绍了一种嵌入式高图像质量的MPEC-4视频流解码系统.该系统以嵌入式Linux作为操作系统,采用硬解码方式,把IDE接口设备或网络端口输入的MPEC-4视频码流(ES.PS和TS)转换成PAL/NT ...

  7. 5招详解linux之openEuler /centos7防火墙基本使用指南

    防火墙是一种防火墙管理解决方案,可用于许多 Linux 发行版,它充当 Linux 内核提供的 iptables 数据包筛选系统的前端.在本指南中,将介绍如何为服务器设置防火墙,并向你展示使用管理工具 ...

  8. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)(转)

    自 MiniGUI 从 1998 年底推出以来,越来越多的人开始选择 MiniGUI 在 Linux 上开发实时嵌入式系统.为了帮助嵌入式软件开发人员使用 MiniGUI编写出更好的应用程序,我们将撰 ...

  9. 罗技无线网卡linux,Linux(Ubuntu)装罗技LMS避坑指南

    Linux(Ubuntu)装罗技LMS避坑指南 前言:搜索音质好的播放软件时发现MPD竟然可以直接命令行操作.连界面都是在终端里的.满满的极客范,心动.搞起!结果-搞了几个小时.各种折腾.就是读取不到 ...

  10. SLAM导航机器人零基础实战系列:(一)Linux基础——2.安装Linux发行版ubuntu系统

    SLAM导航机器人零基础实战系列:(一)Linux基础--2.安装Linux发行版ubuntu系统 摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以 ...

最新文章

  1. 全国首档极客真人秀上线:1分钟打开智能保险箱,调包酒店外卖,36秒无接触盗取手机隐私...
  2. 【算法】一个简单的ISODATA原理
  3. MinGW和MSYS的自动安装 【转】
  4. red6.4 mysql_rhel6.4 yum本地yum源配置
  5. 一个人生活可以多痛快
  6. picasa csdn_如何将发送到Facebook的功能添加到Picasa
  7. 中文书籍中对《人月神话》的引用(完结,共110本):软件工程通史1930-2019、实用Common Lisp编程……
  8. 容器化 RDS:借助火焰图定位Kubernetes性能问题
  9. LIM参数化景观施工图教程(1)- 工作环境和项目初始设置
  10. L2-029 特立独行的幸福 (25 分)
  11. C# MVC 微信支付教程系列之公众号支付
  12. 互联网金融概念股龙头有哪些
  13. c盘空间不足怎么清理(电脑磁盘空间不足怎么清理)
  14. ActiveMQ的作用,原理是啥?
  15. 20135203齐岳 信息安全系统设计基础期中总结
  16. 如何更好地学习新概念英语
  17. 贝叶斯分类器做文本分类案例
  18. 贪心:Fence Repair、Saruman's Army
  19. ChinaSoft 论坛巡礼 | CCF-华为胡杨林基金-形式化方法专项论坛
  20. 计算机主机清洁方法,正确方法:教您如何清洁台式机灰尘?

热门文章

  1. scala的mysql类封装_Scala入门:类
  2. 仿站和模板建站的区别_广州网站建设应避免陷入模仿误区及仿站陷阱
  3. 前端实现小米商城网页2(竖排导航、搜索框的实现)
  4. Android SDK 环境变量配置-Windows7-20170427
  5. 家用投影仪简单对比,哪一款才是你的心头好?
  6. 使用命令提示符运行python文件
  7. 小米公司php面试题,PHP面试题2019年小米工程师面试题及答案解析
  8. idea的头注释@author、@time设置
  9. 【华为新品】后置双镜头 华为荣耀6 Plus 8核芯片
  10. 什么软件可以赚钱,说点抖音赚钱的那些事!