Linux 系统裁剪笔记 软盘2

第一步:裁减内核
打开终端,输入: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(退出软盘)
制作完成!

时间: 2024-09-08 09:42:46

Linux 系统裁剪笔记 软盘2的相关文章

Linux 系统裁剪笔记1

1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教. 2.原理 大家都知道,操作系统的启动流程是(主要是Linux):POST->BIOS->MBR-kernel-->initrd-->sbin/init, POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系统引导先主要是用的grub这个软件,gru

Linux 系统裁剪笔记 3

说到裁减Linux,无非是为了减小磁盘占用或者是为了某些特定场合的应用(如嵌入式系统).以RedHat 7.3为例,其最小安装仍然达到了300M,这不得不让人对一直号称小而全的Linux系统感到疑惑. 作为自己手中课题的一个铺垫,不久前我尝试了对Linux进行裁减,虽然没有达到预期的一张软盘大小,但结果也相当有吸引力.下面我对此一一做说明. 参考文档: Linux bootdisk-HOWTO:     http://www.linux.org.tw/CLDP/gb/Bootdisk-HOWTO

Linux 系统裁剪笔记 4 (内核配置选项及删改)

在menuconfig中配置,可以对进行Linux内核配置选项及删改.本文介绍详细配置方法.第一部分:全部删除Code maturity level options ---> 代码成熟等级选项[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选.第二部分 :除以下选项,其它全部删除General setup-〉System V IPC (IPC:Inter

终端回车不能换行-Linux 系统裁剪之后 终端登录问题!请Linux高手帮忙解决一下!

问题描述 Linux 系统裁剪之后 终端登录问题!请Linux高手帮忙解决一下! 10C 最近裁了一个linux系统 最后能正常启动和运行,唯独的一点遗憾就是tty1 这个终端不能用!以下的不正常信息,在其它tty[2-6]都正常.当登录上tty1之后输入的内容都不会显示!假如输入错误的命令后,回车会显示命令找不到并且会换行!如果直接输入回车,也不能换行,是怎么回事儿? 解决方案 http://blog.csdn.net/ssmile/article/details/8239612

Linux系统基础笔记之网卡安装一般步骤简介

  虽然Linux系统发展的时间不长,可是Linux系统越来越受到电脑用户的欢迎,导致很多人开始学习Linux时,学习linux,你可能会遇到Linux网卡安装问题,希赛系统学院将介绍Linux网卡安装问题的解决方法,在这里拿出来和大家分享一下. 第一步:配置以太网卡的工作参数 配置网卡就是配置网卡的工作参数,如端口地址.中断号等.网卡的缺省参数一般存储于网卡内部的EEPROM,这是网卡出厂前设置好的.缺省参数在大多数情况下是可行的,但如果这些参数与你的系统有冲突并且网卡又不支持软件动态设置,那

如何制作软盘版的 Linux系统防火墙教程

Linux下的防火墙(firewall)从诞生到现在,防火墙主要经历了四个发展阶段:第一阶段:基于路由器的防火墙;第二阶段用户化的防火墙工具套;第三阶段:建立在通用操作系统上的防火墙;第四阶段:具有安全操作系统的防火墙.目前世界上大多数防火墙供应商提供的都是具有安全操作系统的软硬件结合的防火墙,象着名的NETEYE.NETSCREEN.TALENTIT等.在Linux操作系统上的防火墙软件也很多,有些是商用版本的防火墙,有的则是完全免费和公开源代码的防火墙.大多数Linux教程都提到了如何在Li

软盘版的Linux系统防火墙制作教程

Linux下的防火墙(firewall)从诞生到现在,防火墙主要经历了四个发展阶段:第一阶段:基于路由器的防火墙;第二阶段用户化的防火墙工具套;第三阶段:建立在通用操作系统上的防火墙;第四阶段:具有安全操作系统的防火墙.目前世界上大多数防火墙供应商提供的都是具有安全操作系统的软硬件结合的防火墙,象着名的NETEYE.NETSCREEN.TALENTIT等.在Linux操作系统上的防火墙软件也很多,有些是商用版本的防火墙,有的则是完全免费和公开源代码的防火墙.大多数Linux教程都提到了如何在Li

微型linux系统的裁剪过程

前面我们介绍过基于busybox制作一个小linux,这篇文章则介绍的是从头至尾,一步一步根据系统启动流程制作的微型linux,并且逐渐将其功能完善. 系统启动流程: POST 加电自检,载入一段程序完成基本及核心硬件的检测 --> BIOS 根据BIOS中设定的引导次序,查找对应设备上的MBR --> 读取MBR的BootLoader,BootLoader中配置了要引导的操作系统的内核的位置 --> 读取内核,内核进行初始化,需要initrd 将Kernel和真正的根文件系统连接起来

Linux系统针对网卡中断的优化处理

中断: 当网卡接收到数据包后,会触发硬中断,通知CPU来收包.硬中断是一个CPU和网卡交互的过程.这其实会消耗CPU资源.特别是在使用速度极快的万兆网卡之后,大量的网络交互使得CPU很大一部分资源消耗在网卡中断处理上.此时,瓶颈并不在网卡,而是在CPU上.因此,现在的网卡都采用多队列的技术,用于充分利用多核心CPU. 中断的详细解释:<Linux的中断和异常扫盲笔记> SMP IRQ affinity 为了防止多个设置发送相同的中断, Linux设计了一套中断请求系统, 使得计算机系统中的每个