Linux 系统裁减指南 (LiPS)》

Linux 系统裁减指南1 一种创建小型化Linux系统的方法http://blog.youkuaiyun.com/tianhappy/archive/2005/11/09/526148.aspx初稿,文档结构,USB引导盘制作步骤。目 录1 引言 61.1 编写目的 61.2 背景 61.3 定义 61.4 参考资料 62 总体描述 82.1 硬件环境 82.2 软件环境 82.3 需求规定和约束 83 总体设计 93.1 基本设计概 阅读详情

LiPS 详细设计说明书
————————————
(Linux 系统裁减指南)
一种创建小型化Linux系统的方法

目 录
1 引言 6
1.1 编写目的 6
1.2 背景 6
1.3 定义 6
1.4 参考资料 6
2 总体描述 8
2.1 硬件环境 8
2.2 软件环境 8
2.3 需求规定和约束 8
3 总体设计 9
3.1 基本设计概念 9
3.2 软件结构 9
4 内核 10
4.1 创建内核的方法 10
4.2 内核配置 10
4.2.1 概述 10
4.2.2 Loadable module support 11
4.2.3 Processor type and features 11
4.2.4 General setup 12
4.2.5 Plug and Play configuration 12
4.2.6 Block devices 12
4.2.7 Multi-device support (RAID and LVM) 13
4.2.8 Networking options 13
4.2.9 ATA/IDE/MFM/RLL support 14
4.2.10 SCSI support 15
4.2.11 Network device support 15
4.2.12 Character devices 16
4.2.13 File systems 17
4.2.14 Console drivers 18
4.2.15 USB support 18
4.3 提示 19
4.3.1 EXTRAVERSION 19
4.3.2 .config 19
5 根文件系统 21
5.1 根文件系统 21
5.2 文件系统的内容 21
5.2.1 应用程序(applications) 21
5.2.2 设备文件(device files) 21
5.2.3 脚本和配置文件(scripts and configuration files) 22
5.2.4 库文件(libraries) 23
5.2.5 必要的目录 24
5.3 初始化RAM盘(initrd) 24
5.3.1 操作步骤 24
5.3.2 引导选项 24
5.3.3 安装 25
5.3.4 改变根目录设备 26
5.3.5 使用场合 27
5.3.6 淘汰的根转换机制(change_root) 27
5.4 系统初始化(init) 27
5.4.1 init的任务 28
5.4.2 SysVinit 28
5.4.3 两种风格:Slackware vs. Debian 28
5.5 PAM 29
5.5.1 什么是PAM 29
5.5.2 PAM的结构 29
5.5.3 配置文件 29
5.5.4 other 29
5.6 再论initrd 30
5.6.1 根到底在哪里 31
5.6.2 linuxrc 31
5.6.3 根转换机制:新的?旧的? 32
5.7 提示 34
5.7.1 文件系统目录层次结构 34
5.7.2 mklips.sh(制作LiPS的脚本) 34
5.7.3 lips.conf(LiPS配置文件) 34
5.7.4 cp –dpR 35
5.7.5 如何判断一个程序依赖哪些文件 35
5.7.6 带库文件复制——lcp() 35
5.7.7 库文件的命名 36
6 引导 38
6.1 引导过程概述 38
6.2 几种引导方式 38
6.3 grub引导器 38
6.4 USB引导 38
6.4.1 制作步骤 39
6.5 提示 40
6.5.1 版本问题? 40
7 远程串口控制台 41
7.1 概述 41
7.2 配置方法 41
7.3 提示 41
7.4 Linux 远程串口控制台指南 41
8 系统安装光盘 44
8.1 概述 44
8.2 boot.iso光盘的文件结构分析 44
8.3 制作步骤 45
9 源代码(配置文件和脚本) 46
9.1 lips.conf 46
9.2 mklips.sh 46

1 引言

1.1 编写目的
  说明Linux系统裁减的过程及解决的主要技术问题。本文档的编写是为了说明LiPS的详细设计过程,也可以作为构造一个小型化Linux系统的指南。
  本文档内容的组织如下所述:这一部分是引言,第2部分是对项目软、硬件环境和需求的总体描述,第3部分说明了裁减LINUX的相关基本概念。后面几个部分是具体实现方法的详细说明,4~6分别详细描述了创建内核、创建根文件系统和引导系统的方法。最后的内容可以看作附录,其中7说明了一般Linux系统安装光盘的创建方法,8列出了相关的配置文件和源代码。

1.2 背景
  华中科技大学计算机存储系统国家专业实验室,NAS项目(2003.3——2003.8)。

1.3 定义
O boot loader: 引导器
O kernel: 内核
O root filesystem: 根文件系统
O USB: 通用串行总线

1.4 参考资料
[1] DIY:自己动手做一个迷你 Linux 系统. IBM developerWorks 中国网站.
http://www-900.ibm.com/developerWorks/cn/linux/embed/diy/index.shtml
[2] Linux From Scratch. http://clfsbook.mylab.idv.tw/index.html
[3] Linux启动过程综述.
http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=15750
[4] The Linux Bootdisk HOWTO (中译版). http://www.linux.org.tw/CLDP/gb/Bootdisk-HOWTO.html
[5] Using the initial RAM disk (initrd). /usr/src/linux-2.4/Documentation/initrd.txt. (译文:http://zope.slat.org/Project/3ybaby/discuss-area/cd-boot/cdboot_refer/initrd.htm)
[6] Quickmouse于2003.1发表于白云黄鹤BBS (http://bbs.whnet.edu.cn Linux讨论区的帖子“裁减Linux”。
[7] Filesystem Hierarchy Standard.
http://www.pathname.com/fhs/pub/fhs-2.2.pdf
[8] LINUX ALLOCATED DEVICES. /usr/src/linux-2.4/Documentation/device.txt.
或者最新的列表在http://www.kernel.org/pub/linux/docs/device-list/
[9] Karim Yaghmour. Building Embedded Linux Systems. O'Reilly, April 2003.
[10] Alessandro Rubini. Take Command: Init.
http://www.linux.it/kerneldocs/init/ , November 1998.
[11] 深入 Linux PAM 体系结构. IBM developerWorks 中国网站.
http://www-900.ibm.com/developerWorks/cn/linux/l-pam/index.shtml . 2003.7.

2 总体描述

2.1 硬件环境
  开发主机:
  Intel 845芯片组主板,P4赛扬1.8GHz CPU,256M内存,60G IDE硬盘,RTL8139网卡。
  目标机:与主机同构。
2.2 软件环境
  开发主机:
  Redhat Linux 7.3 (kernel 2.4.18-3),或者Redhat Linux 9 (kernel 2.4.20-8)。可以根据需要使用其他版本的内核,比如Redhat 7.3+kernel 2.4.20。
  目标机:LiPS,以及应用程序。
2.3 需求规定和约束
  我们目标系统LiPS,即Linux Powered Storage是一个嵌入式Linux操作系统,主要着眼于提供各种文件服务,不包括X GUI;并且足够小,可以装入32M USB盘或者DOC/DOM等常用设备引导。
  
3 总体设计

3.1 基本设计概念
  提起“裁减Linux”,最容易想到的方法是以一个已经安装好的系统为基础,删除掉不需要的文件,以减小整个系统的尺寸。而事实上这个方法几乎是行不通的,因为通过光盘安装的一个Redhat 9 Linux系统,即便是只选择了比较少的软件包,其所占空间也可以轻松达到300~500MB,想在这个基础上裁减到30MB左右是比较困难的。更困难的是确定哪些东西是可以删除的?如果删除了系统必须的文件,可能导致系统不能引导。
  另一个途径是从零开始根据需要构建整个系统。“Linux From Scratch”采用的就是这种方式,一个个安装需要的软件包。类似的,更简单的方法是,安装一个完整的Linux系统,然后将必要的软件(可执行程序)、配置文件、库文件、内核等复制出来构建一个小系统。我们采取后一种方式。
  
3.2 软件结构
  LiPS包括3部分:Linux内核,根文件系统和引导器。
  内核(Kernel)提供了一个操作系统的基本功能,如内存管理、进程调度、文件系统、网络等,以及设备驱动程序。
  根文件系统(Root filesystem)是存放运行、维护系统所必须的各种工具软件、库文件、脚本、配置文件和其他特殊文件(比如设备节点)的地方,也可以安装各种软件包。通常根文件系统位于某个磁盘分区,而在LiPS中应用了initrd(初始RAM盘)机制,将根文件系统放在RAM Disk中。
  引导器(Boot Loader)的任务是从引导设备装载内核,引导系统运行。Linux系统常见的引导器包括早期的LILO和近期的GRUB。LiPS用的是GRUB。
  
4 内核

4.1 创建内核的方法
  Linux提供了方便灵活的方法来定制内核,主要步骤包括:下载安装内核源代码树,配置内核,编译内核。具体方法请参考相关文档。关键指令如下:
cd /usr/src/linux-2.4
make menuconfig
make dep; make clean; make bzImage
  编译成功的内核文件为 arch/i386/boot/bzImage.
4.2 内核配置
4.2.1 概述
  make menuconfig之后可以看到类似如下的内容(编号是为了描述方便而加上的)。根据内核版本的不同,列出的项目会有差异。而变化主要发生在发行版为标准内核打的各种补丁上面,其实标准内核是比较稳定的。
  如下所示,我们配置的内核版本为2.4.20-8,这个“-8”就是Redhat所打的补丁版本号。补丁一般是对标准内核错误的修正和新增的功能。与2.4.20内核配置选项比较会发现,[10,25,30]都属于Redhat的补丁。
  一般地,这些补丁选项都不是必须的,因此我们的LiPS内核中都没有包括这些选项。其实,完全可以通过直接配置一个标准的内核版本(比如2.4.20)来产生我们所需要的内核。
Linux Kernel v2.4.20-8-R2Lips Configuration
[1] Code maturity level options --->
[2] Loadable module support --->
[3] Processor type and features --->
[4] General setup --->
[5] Memory Technology Devices (MTD) --->
[6] Parallel port support --->
[7] Plug and Play configuration --->
[8] Block devices --->
[9] Multi-device support (RAID and LVM) --->
[10] Cryptography support (CryptoAPI) --->
[11] Networking options --->
[12] Telephony Support --->
[13] ATA/IDE/MFM/RLL support --->
[14] SCSI support --->
[15] Fusion MPT device support --->
[16] I2O device support --->
[17] Network device support --->
[18] Amateur Radio support --->
[19] IrDA (infrared) support --->
[20] ISDN subsystem --->
[21] Old CD-ROM drivers (not SCSI, not IDE) --->
[22] Input core support --->
[23] Character devices --->
[24] Multimedia devices --->
[25] Crypto Hardware support --->
[26] File systems --->
[27] Console drivers --->
[28] Sound --->
[29] USB support --->
[30] Additional device driver support --->
[31] Bluetooth support --->
[32] Kernel hacking --->
[33] Library routines --->
Load an Alternate Configuration File
Save Configuration to an Alternate File
<Select> < Exit > < Help >
  下面我们以2.4.20内核为例,来详细说明内核的配置,也就是选哪些东西、不选哪些东西。没有说明的选项,比如“Code maturity level options”,表示不选。

4.2.2 Loadable module support
Enable loadable module support
[ ] Set version information on all module symbols Kernel module loader
  可加载模块支持。虽然目前所选项目全部编译进内核,但是内核是支持模块的。可以考虑将一些硬件设备的驱动程序编译为模块,从而减小内核尺寸,同时增加适应不同硬件平台的灵活性。

4.2.3 Processor type and features
(Pentium-III/Celeron(Coppermine)) Processor family Machine Check Exception
< > Toshiba Laptop support
< > Dell laptop support
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
< > /dev/cpu/*/msr - Model-specific register support
< > /dev/cpu/*/cpuid - CPU information support
(off) High Memory Support
[ ] Math emulation
[ ] MTRR (Memory Type Range Register) support
[ ] Symmetric multi-processing support
[ ] Local APIC support on uniprocessors
[ ] Unsynced TSC support
  处理器特性。选择一下Processor family,其余基本上都没有选。High Memory Support也可以打开,不清楚有什么用。
4.2.4 General setup

Networking support
PCI support
(Any) PCI access mode
ISA bus support
PCI device name database
[ ] EISA support
[ ] MCA support
[ ] Support for hot-pluggable devices
System V IPC
BSD Process Accounting
Sysctl support
(ELF) Kernel core (/proc/kcore) format
< > Kernel support for a.out binaries
<*> Kernel support for ELF binaries
< > Kernel support for MISC binaries
Power Management support
< > Kernel support for MISC binaries
Power Management support
<*> Advanced Power Management BIOS support
Ignore USER SUSPEND
Enable PM at boot time
Make CPU Idle calls when idle
Enable console blanking using APM
RTC stores time in GMT
Allow interrupts during APM BIOS calls
Use real mode APM BIOS call to power off
  总体设置。这一部分选项比较重要,包括网络、总线、进程、二进制文件格式、电源管理等。其中APM相关的选项比较搞不清楚,有时候halt –p命令不能关闭系统电源跟这里有关系。

4.2.5 Plug and Play configuration
<*> Plug and Play support
< > ISA Plug and Play support
  即插即用设置。
4.2.6 Block devices
<*> Normal floppy disk support
< > XT hard disk support
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
< > Mylex DAC960/DAC1100 PCI RAID Controller support
<*> Loopback device support
< > Network block device support
<*> RAM disk support
(4096) Default RAM disk size
Initial RAM disk (initrd) support
Per partition statistics in /proc/partitions
  块设备。软驱也可以不选。这里的关键选项是Loopback device,RAM disk和i
nitrd,一定要选中。Default RAM disk size多少都没有关系。
4.2.7 Multi-device support (RAID and LVM)
Multiple devices driver support (RAID and LVM)
<*> RAID support
<*> Linear (append) mode
<*> RAID-0 (striping) mode
<*> RAID-1 (mirroring) mode
<*> RAID-4/RAID-5 mode
<*> Multipath I/O support
<*> Logical volume manager (LVM) support
  MD支持。软RAID和LVM的支持在这里选择,如果不使用,也可以不选。
4.2.8 Networking options
<*> Packet socket
Packet socket: mmapped IO
< > Netlink device emulation
Network packet filtering (replaces ipchains)
[ ] Network packet filtering debugging
Socket Filtering
<*> Unix domain sockets
TCP/IP networking
IP: multicasting
IP: advanced router
[ ] IP: policy routing
[ ] IP: equal cost multipath
[ ] IP: use TOS value as routing key
[ ] IP: verbose route monitoring
[ ] IP: large routing tables
IP: kernel level autoconfiguration
IP: DHCP support
IP: BOOTP support
IP: RARP support
<*> IP: tunneling
< > IP: GRE tunnels over IP
[ ] IP: multicast routing
[ ] IP: TCP Explicit Congestion Notification support
[ ] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration --->
< > 802.1Q VLAN Support
---
< > The IPX protocol
< > Appletalk protocol support
Appletalk devices --->
< > DECnet Support
< > 802.1d Ethernet Bridging
QoS and/or fair queueing --->
Network testing --->
  网络选项。这里选项也比较多,如果没有什么特殊要求,又不是十分理解这些
选项的意义,基本上可以用缺省设置。注意DHCP选项,如果要用到的话要记得选中
这个。
  IP: Netfilter Configuration(跟iptables有关)等几个子选项都没有选。
4.2.9 ATA/IDE/MFM/RLL support
<*> ATA/IDE/MFM/RLL support
IDE, ATA and ATAPI Block devices --->
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
--- Please see Documentation/ide.txt for help/info on IDE drives
[ ] Use old disk-only driver on primary interface
<*> Include IDE/ATA-2 DISK support
Use multi-mode by default
Auto-Geometry Resizing support
<*> Include IDE/ATAPI CDROM support
< > Include IDE/ATAPI TAPE support
< > Include IDE/ATAPI FLOPPY support
<*> SCSI emulation support
[ ] IDE Taskfile Access
--- IDE chipset support/bugfixes
[ ] CMD640 chipset bugfix/support
[ ] RZ1000 chipset bugfix/support
Generic PCI IDE chipset support
Sharing PCI IDE interrupts support
Generic PCI bus-master DMA support
[ ] Boot off-board chipsets first support
[ ] Force enable legacy 2.0.X HOSTS to use DMA
Use PCI DMA by default when available
[ ] Enable DMA only for disks
[ ] AEC62XX chipset support
[ ] ALI M15x3 chipset support
[ ] AMD Viper support
[ ] CMD64X and CMD680 chipset support
[ ] CY82C693 chipset support
[ ] Cyrix CS5530 MediaGX chipset support
[ ] HPT34X chipset support
[ ] HPT366/368/370 chipset support
Intel PIIXn chipsets support
PIIXn Tuning support
[ ] PROMISE PDC202{46|62|65|67|68|69|70} support
[ ] ServerWorks OSB4/CSB5 chipsets support
[ ] SiS5513 chipset support
[ ] SLC90E66 chipset support
[ ] VIA82CXXX chipset support
[ ] Other IDE chipset support
[ ] IGNORE word93 Validation BITS
  IDE设备支持。要用IDE硬盘,当然要选中。CDROM选项看情况也可以不要。SCS
I emulation似乎对使用USB盘有影响。剩下的很多都是跟IDE chipset有关的。
  最好是用dmesg命令找出目标系统主板芯片组,然后选中对应的芯片组支持,这
样相当于安装了IDE芯片组的驱动程序。如果没有指定应该也可以,只是性能可能会
受到一些影响。
4.2.10 SCSI support
<*> SCSI support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
(40) Maximum number of SCSI disks that can be loaded as modules
< > SCSI tape support
< > SCSI OnStream SC-x0 tape support
< > SCSI CD-ROM support
<*> SCSI generic support
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ] Enable extra checks in new queueing code
[ ] Probe all LUNs on each SCSI device
[ ] Verbose SCSI error reporting (kernel size +=12K)
[ ] SCSI logging facility
SCSI low-level drivers --->
  SCSI支持。如果要用到SCSI硬盘等SCSI设备,这里当然要选。目前我们的目标
系统其实没有SCSI硬盘,但是为了使用USB盘,也要选中SCSI支持。
  SCSI low-level drivers子选项中是一些SCSI卡,都不用选。
4.2.11 Network device support
Network device support
ARCnet devices --->
< > Dummy net driver support
< > Bonding driver support
< > EQL (serial line load balancing) support
< > Universal TUN/TAP device driver support
Ethernet (10 or 100Mbit) --->
Ethernet (10 or 100Mbit)
EISA, VLB, PCI and on board controllers
<*> EtherExpressPro/100 support (eepro100, original Becker driv
er
<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support
Ethernet (1000 Mbit) --->
[ ] FDDI driver support
< > PPP (point-to-point protocol) support
< > SLIP (serial line) support
Wireless LAN (non-hamradio) --->
Token Ring devices --->
[ ] Fibre Channel driver support
Wan interfaces --->
  网络设备支持。主要选择网卡类型,Ethernet (10 or 100Mbit)子选项中列出
了内核可以支持的10/100M以太网卡,这里仅列出了我们选中的2种。其他子选项都
没有选。
4.2.12 Character devices
Virtual terminal
Support for console on virtual terminal
<*> Standard/generic (8250/16550 and compatible UARTs) serial suppo
rt
Support for console on serial port
[ ] Extended dumb serial driver options
[ ] Non-standard serial port support
[ ] Unix98 PTY support
I2C support --->
Mice --->
Joysticks --->
< > QIC-02 tape support
Watchdog Cards --->
< > AMD 768 Random Number Generator support
< > Intel i8x0 Random Number Generator support
< > AMD 76x native power management (Experimental)
< > /dev/nvram support
< > Enhanced Real Time Clock Support
< > Double Talk PC internal speech card support
< > Siemens R3964 line discipline
< > Applicom intelligent fieldbus card support
Ftape, the floppy tape device driver --->
< > /dev/agpgart (AGP Support)
[ ] Direct Rendering Manager (XFree86 DRI support)
< > ACP Modem (Mwave) support
  字符设备。这里主要就是选择了最前面4个跟终端和串口有关的选项,以支持虚
拟终端(远程登录要用到),支持标准串口,支持串口控制台。
4.2.13 File systems
Quota support
< > Kernel automounter support
<*> Kernel automounter version 4 support (also supports v3)
<*> Reiserfs support
[ ] Enable reiserfs debug mode
Stats in /proc/fs/reiserfs
<*> Ext3 journalling file system support
[ ] JBD (ext3) debugging support
<*> DOS FAT fs support
<*> MSDOS fs support
< > UMSDOS: Unix-like file system on top of standard MSDOS fs
<*> VFAT (Windows-95) fs support
< > Compressed ROM file system support
Virtual memory file system support (former shm fs)
<*> ISO 9660 CDROM file system support
Microsoft Joliet CDROM extensions
[ ] Transparent decompression extension
< > JFS filesystem support
< > Minix fs support
< > FreeVxFS file system support (VERITAS VxFS(TM) compatible)
< > NTFS file system support (read only)
< > OS/2 HPFS file system support
/proc file system support
< > QNX4 file system support (read only)
< > ROM file system support
<*> Second extended fs support
< > System V/Xenix/V7/Coherent file system support
< > UDF file system support (read only)
< > UFS file system support (read only)
Network File Systems --->
< > Coda file system support (advanced network fs)
<*> NFS file system support
Provide NFSv3 client support
[ ] Root file system on NFS
<*> NFS server support
Provide NFSv3 server support
<*> SMB file system support (to mount Windows shares etc.)
[ ] Use a default NLS
< > NCP file system support (to mount NetWare volumes)
Partition Types --->
Native Language Support --->
Default NLS Option: "iso8859-1"
<*> Codepage 437 (United States, Canada)
<*> Simplified Chinese charset (CP936, GB2312)
<*> Traditional Chinese charset (Big5)
  文件系统。这部分内容比较多,也很重要。首先是Quota,如果目标系统支持这
个功能,这里就要选中。然后是选择要支持的文件系统,常用的有Reiserfs,Ext3
,FAT,ISO9660,JFS等等,可以根据情况选择。/proc和ext2一定要选中。
  还有Network File Systems子选项,可以选择是否支持NFS和SMB。Native Lan
guage Support子选项跟所支持的语言有关,这里没有全部列出来,我们选中了英语
和简体、繁体中文字符集。
4.2.14 Console drivers
VGA text console
[ ] Video mode selection support
  控制台驱动。调试的时候可以给目标系统接显示器看一下,实际系统应该可以
不选。
4.2.15 USB support
<*> Support for USB
[ ] USB verbose debug messages
--- Miscellaneous USB options
Preliminary USB device filesystem
[ ] Long timeout for slow-responding devices (some MGE Ellipse UP
Se
--- USB Host Controller Drivers
<*> UHCI Alternate Driver (JE) support
<*> OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
--- USB Device Class drivers
< > USB MIDI support
<*> USB Mass Storage support
USB Mass Storage verbose debug
[ ] Freecom USB/ATAPI Bridge support
[ ] ISD-200 USB/ATA Bridge support
[ ] Microtech CompactFlash/SmartMedia support
< > USB Modem (CDC ACM) support
< > USB Printer support
--- USB Human Interface Devices (HID)
<*> USB Human Interface Device (full HID) support
--- Input core support is needed for USB HID input layer or HID
BP
[ ] /dev/hiddev raw HID device support
--- USB Imaging devices
< > USB Kodak DC-2xx Camera support
< > USB Scanner support
< > Microtek X6USB scanner support
--- USB Multimedia devices
--- Video4Linux support is needed for USB Multimedia device suppo
rt
--- USB Network adaptors
--- USB port drivers
USB Serial Converter support --->
--- USB Miscellaneous drivers
< > Texas Instruments Graph Link USB (aka SilverLink) cable suppo
rt
< > USB LCD device support
  USB支持。如果没有使用USB设备,这部分可以不选。要使用USB盘,一定要选中
USB Mass Storage support。其余很多选项我也不清楚是干什么用的。
4.3 提示
4.3.1 EXTRAVERSION
  在系统中使用uname可以获得系统版本信息。比如Redhat 9:
[root@lips root]# uname -r
2.4.20-8
[root@lips root]#
  返回结果表示了Redhat修订后的内核版本号。前面我们提到过,这个“-8”就
是Redhat附加在标准内核版本号后面的一个信息。
  在一个运行LiPS的系统中,我们也需要确定当前使用的内核版本,通过版本信
息来知道这个内核的配置,也可以通过在标准内核版本后面附加特定的编码来实现
。
  /usr/src/linux-2.4/Makefile中的变量EXTRAVERSION可以帮助我们达到这个目
标。下面是Makefile文件的最前面几行内容:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
  现在KERNELRELEASE的值就是2.4.20-8。这个信息会被编译到内核中,uname工
具会从内核文件中提取出版本号。如果将Makefile做一些修改,比如,
EXTRAVERSION = -8-R2Lips
  那么我们可以得到内核版本号2.4.20-8-R2Lips,表示为了创建LiPS而编译的一
个特定配置的内核,这个内核是以2.4.20-8为基础,R2Lips(Release 2 Lips)即
第二个版本。
  对Makefile的修改要在编译内核之前完成。
4.3.2 .config
  内核配置(make menuconfig)完成之后,会询问:
Do you wish to save your new kernel configuration?
< Yes > < No >
  回答Yes,配置信息会保存在/usr/src/linux-2.4/.config文件中。注意以“.
”开头的文件是个隐藏文件,要用ls –a才看的到。.config是个文本文件,内容类
似下面:
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
  所以可以把这个文件保存起来,并且给文件名带上版本号,方便管理、使用。

cp .config ~/config-2.4.20-8-R2Lips
 

linux 系统裁剪指南 linux系统裁剪指南,可以根据自己的需求来定制系统kernel,以节约更多不必要浪费的资源。 立即下载

相关推荐

经典Linux系统裁剪指南

详细描述了Linux系统架构,各部分组成,按照教程可以裁剪出最小Linux系统

Linux系统启动流程及系统裁剪

Linux系统启动流程,Linux系统裁剪

kingolie的博客 1万+

Linux 系统裁减指南 (LiPS).pdf

Linux 系统裁减指南 (LiPS)

为了适合你的项目,rt-thread有时候需要裁剪!

01为什么要进行系统裁剪在设计嵌入式RTOS系统逻辑时,我们往往希望系统简洁并且代码可控,这样我们做方案时心里才有底。下面我们来从原理层面和实现层面上讲...

1046

linux系统裁减指南

自定制linux系统,对庞大的linux系统进行自定制裁减,保留设计的部分,可装进U盘、CF卡等,实用性很强。

深入解析NPN与PNP传感器驱动电路的设计逻辑与实战应用

本文深入解析NPN与PNP传感器驱动电路的设计逻辑与实战应用,详细对比两者的电流路径差异和电平变化特性。通过实际案例分享电路设计要点,包括上拉电阻选择、保护二极管配置等,并提供工业应用中的选型策略和常见故障排查指南,帮助工程师优化传感器系统集成。

weixin_42561476的博客 472

Linux 系统裁减指南

                                                                               Linux 系统裁减指南一种创建小型化Linux系统的方法拟制:董晓明日期:2003-6-17评审:日期:批准:日期:yyyy/mm/dd签发:日期:yyyy/mm/dd华中科技大学信息存储系统国家专业实验室版权所有 不得复制修 订 记 录日

8036

飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削

本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。

weixin_28312391的博客 926

Linux 系统裁减指南(LiPS)(第三部分)

6 引导6.1 引导过程概述6.2 几种引导方式  几种引导方式的粗略比较如下表所示。优点缺点DOCDOMFLOPPYHARDDISKNETWORKUSB-HDD容量大,读写可靠  6.3 grub引导器  有了前面生成的Linux内核和根文件系统映像文件后,制作引导盘非常简单。在动手制作引导盘之前,最好先了解一下grub引导器。  Grub是一个通用的多引导加载软件,与较早期多数Linux发行版

1650

Xilinx Blockset Counter计数器模块使用及参数配置

本文详细介绍了Simulink中Xilinx Blockset库Counter模块的使用以及参数说明。

白码王子小张的博客 1097

Dataworks实现接口调用

在本地linux虚拟机(不用在意linux版本),安装Anaconda后配置对应的虚拟环境,将虚拟环境的python包整体打包(路径一般为:~/anaconda/envs/env_name/lib/pyyhon3.7/site-packages):上传资源,将第三方包上传至dataworks(注意:所有上传文件均要打包上传,直接上传文件会乱码导致无法使用):PyODPS,其中PyODSP2的python版本为2.7,PyODSP3的python版本为3.7。:在PyODPS中引用资源,然后开发接口。

hutc_Alan的博客 1681

Linux 系统裁减指南(LiPS)(第二部分)

5 根文件系统  创建根文件系统比编译内核要复杂的多,也更难理解。这里的关键是掌握initrd(初始化RAM盘)的使用方法。5.1 根文件系统  这里我们将要创建的根文件系统与通常Linux主机的根文件系统类似,只是它应该仅仅包括系统运行所必须的应用程序、库和相关文件的最小集合。根文件系统的尺寸大小是一个重要的指标。5.2 文件系统的内容5.2.1 应用程序(applications)  /bin

2007

MTK PE+2.0介绍

  PE+2.0介绍:   1.      PE+2.0的状态机: 2.      升压波形协议及编码规则: PE+2.0软件设计:   在充电器类型为标充且底层电量SOC在1%—95%之间时,开始PE+2.0升压充电器的检测:首先将VBUSreset至5V,之后发送8.5的current pattern再获取此时VBUS电压和8.5V比较,若其与8.5的差值绝对值在0.5之...

raydom07的博客 1万+

标题: ZZ- Linux 系统裁减指南(LiPS)

http://www.linuxsir.org/bbs/showthread.php?t=168710 转载于:https://blog.51cto.com/axlrose/1294503

weixin_34081595的博客 114

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

Win10无外网热点搭建全指南:纯局域网通信与设备互联

热点并不是只有共享上网一种用途。在很多工程与办公场景中,我们需要的是让手机、笔记本、开发板等设备临时组成一个纯内网,完成文件传输、端口调试或局域网联机,而不需要任何外网出口。Win10笔记本在不连接互联网的状态下,借助系统移动热点或netsh承载网络,完全可以创建一个无外网热点,实现设备间二层互通。其核心在于利用SoftAP建立虚拟无线接入点,并绕开或禁用ICS的NAT转发。掌握这一技术,可在会议、出差、物联网调试等场景中快速搭建临时局域网,无需额外路由器。本文详细梳理三种实现路径、操作步骤及常见故障排查,

weixin_29230773的博客 239

Linux 系统裁减指南2

4.3 提示4.3.1 EXTRAVERSION在系统中使用uname可以获得系统版本信息。比如Redhat 9:[root@lips root]# uname -r2.4.20-8[root@lips root]#返回结果表示了Redhat修订后的内核版本号。前面我们提到过,这个“-8”就是Redhat附加在标准内核版本号后面的一个信息。在一个运行LiPS的系统中,我们也需要确定当前使用的内核版

1037

u-boot-2014.10移植第22天----添加nand flash命令支持(四)

解决问题:nand0: MTD Erase failure: -5 drivers/mtd/nand/nand_bbt.c文件中初始化bbt/* * Allocate memory (2bit per block) and clear the memory bad block * table. */ this->bbt = kzalloc(len, GFP_

fulinux的博客 3634

Linux裁减指南

Linux 系统裁减指南(LiPS)[本篇全文] [回复本文] [本篇作者: dot ]发信人: dot (爱吃萝卜和青菜), 信区: Embedded标 题: Linux 系统裁减指南(LiPS)发信站: 武汉白云黄鹤站 (2004年10月11日15:04:22 星期一), 站内信件重要文档,吐血推荐!《Linux 系统裁减指南 (LiPS)》 【原创】(LiPS: Linux Powered

598

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

linux裁减与移植

Linux 系统裁减指南(LiPS)[本篇全文] [回复本文] [本篇作者: dot ]发信人: dot (爱吃萝卜和青菜), 信区: Embedded标 题: Linux 系统裁减指南(LiPS)发信站: 武汉白云黄鹤站 (2004年10月11日15:04:22 星期一), 站内信件重要文档,吐血推荐!《Linux 系统裁减指南 (LiPS)》 【原创】(LiPS: Linux Powered

1120

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux 系统裁减指南3

5.6 再论initrd在前面的5.3节中,对initrd机制已经有了比较详细的讨论。准确的说,该部分内容来自linux-2.4/Documentation/initrd.txt 文件。但是在实践中,我们发现其中描述的有些方法并不适用。是新版本内核的变化造成的(内核实现与文档不同步),还是2.4版内核的bug,不得而知。在我查证的过程中,看到网上有不少相关的问题和讨论。遗憾的是至今我还不能确认到底

1944

RHEL5.8系统裁减(内含做小Linux前的准备工作)

一、成功做好一个小Linux的前提准备1、挂载一块10G的IDE磁盘,并划分两个分区:(分别为/dev/hda1+20M、/dev/hda2+512M)#fdisk/dev/hda#partprobe/dev/hda#mke2fs-j/dev/hda1格式化/dev/hda1#mke2fs-j/dev/hda2...

weixin_34377065的博客 226

基于IQ80321和arm-linux的软件开发指南 (zz)

1 概述 1.1 目的和范围   说明在INTEL IQ80321开发板上面运行ARM LINUX的过程,包括在主机上建立交 叉编译环境、编译内核、制作根文件系统和引导目标机的方法步骤。 1.2 背景   单位:华中科技大学信息存储系统重点实验室    武汉东湖存储技术有限公司   项目:RAID控制器(RDC)   RDC核心软件在x86平台、Redhat Linux环境下开发。产品化阶段需要首

小伟 7664

当下常见的十大(现在补充了,是十一大手机操作系统)手机(平板)操作系统...

写在前面:此文是我原创。我个人是手机发烧友,算是MOTO的fans。我喜欢捣鼓各种各样的手机系统。手机系统已经从原先的三足鼎立(塞班、WM、Linux)变成现在的百家争鸣。我特意花精力整理这篇手机系统介绍文章。我此篇文章即介绍了主流的系统如S60的塞班、Android、iOS,也介绍小众的系统如UIQ的塞班、WebOS、Bada等等,同时也介绍平板电脑专用的系统。本文可以算是互联网上比较全面介绍手...

weixin_30824599的博客 2555
上一篇: Linux 系统裁减指南3
下一篇: Linux 系统裁减指南(LiPS)(第三部分)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值