📄 linux caijian.txt
字号:
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
5 根文件系统
创建根文件系统比编译内核要复杂的多,也更难理解。这里的关键是掌握init
rd(初始化RAM盘)的使用方法。
5.1 根文件系统
这里我们将要创建的根文件系统与通常Linux主机的根文件系统类似,只是它应
该仅仅包括系统运行所必须的应用程序、库和相关文件的最小集合。根文件系统的
尺寸大小是一个重要的指标。
5.2 文件系统的内容
5.2.1 应用程序(applications)
/bin,/sbin,/usr/bin,/usr/sbin
应用程序大致可以分为3部分,第一是操作系统正常运行所需的基本工具软件,
比如bash,cp,rm等;第二是提供某项服务的服务器软件,比如httpd,telnetd,
proftpd等;第三是我们所开发的应用程序。其实后面讲的配置文件等也可以粗略按
照这个原则来分类。
到底需要复制哪些软件,弹性是比较大的,很多软件都是可要可不要,可以实
际情况灵活选择。这个列表可能很长,并且变化也比较大,因此不在这里列出。
为了进一步减小所创建的根文件系统的尺寸,可以考虑使用下列工具包软件来
替代某些标准的工具:
O BusyBox(http://www.busybox.net)
O TinyLogin(http://tinylogin.busybox.net)
O Embutils(http://www.fefe.de/embutils/)
其详细使用方法请参考相关资料,此处不再赘述。LIPS的实现目前没有使用这
些软件包。
5.2.2 设备文件(device files)
/dev
设备文件也可以称作设备节点(device node)。设备文件非常重要,缺少某些
有些设备文件可能导致系统不能正常运行甚至不能引导。有些设备文件是必须的,
而更多的是根据具体目标系统的硬件配置来进行取舍。
比如硬盘的设备文件,在完整的系统中一般有hda,hdb,……,hdt,即最多支
持20个IDE硬盘,每个硬盘有hdX1,hdX2,……,hdX32,(其中X表示a-t),即支
持32个分区,另外还有表示SCSI硬盘的节点。根据实际情况,如果只需要支持少量
的硬盘、少量的分区,这些节点可以被大大简化。如果目标系统中没有的设备,其
对应的设备文件也可以省掉。
设备文件
描述
/dev/console
系统控制台设备,非常重要。
/dev/fd0
第一个软驱
/dev/hda
/dev/hda[1-8]
IDE硬盘及分区
/dev/initctl
实际上是一个FIFO设备,跟init有关(切换运行级别时用于新init与原init通信)
/dev/initrd
Initial RAM disk
/dev/input
(目录)Input core(包括游戏杆、鼠标等)
/dev/kmem
内核虚拟内存
/dev/loop[0-7]
Loopback设备
/dev/mem
访问物理内存
/dev/null
NULL设备
/dev/psaux
PS/2鼠标
/dev/ptmx
UNIX98 PTY master
/dev/pts
(目录)UNIX98 PTY slaves
/dev/ptyp[0-7]
伪终端主设备(远程登录使用)
/dev/ram[0-7]
/dev/ramdisk
/dev/ram
RAM Disk设备。至少/dev/ram0是应用initrd机制所必须的。
/dev/ramdisk链接到/dev/ram0,是为了兼容老版本内核而保留的。
/dev/ram链接到/dev/ram1。
/dev/random
随机数发生器
/dev/sda
/dev/sda[1-8]
SCSI磁盘及分区设备
/dev/shm
共享内存设备
/dev/systty
指向系统tty设备的符号链接,一般是tty0。
/dev/tty
当前TTY设备
/dev/tty[0-7]
虚控制台(Virtual console)
/dev/ttyp[0-7]
伪终端从设备
/dev/ttyS0
/dev/ttyS1
串口(COM1和COM2)
/dev/urandom
速度更快、安全性较差的随机数发生器
/dev/zero
零设备,只能读0出来
设备节点的主设备号(Major)、次设备号(Minor)的文档是内核源代码中的
/Documentation/device.txt,如果有疑问可以查看这个文件[8]。
5.2.3 脚本和配置文件(scripts and configuration files)
/etc
/etc/rc.d目录下的启动脚本是系统的重要部分。必须对启动脚本做相应的修改
以简化系统的启动过程。
系统和各种应用程序用到的几乎所有的配置文件都位于/etc目录,是裁减Linu
x最麻烦的部分,最容易出问题。配置文件的选择需要综合很多方面的信息,需要对
系统有比较全面、深入的了解,并结合经验才能做出正确的判断。
配置文件
描述
/etc/default
(目录)某个命令(比如useradd)的缺省设置(man useradd(8))
/etc/ld.so.cache
由ldconfig命令根据/etc/ld.so.conf文件产生
/etc/ld.so.conf
库文件路径配置文件,ldconfig命令根据该配置文件生成/etc/ld.so.cache
/etc/localtime
本地时间、时区设置
/etc/login.defs
全局缺省设置
/etc/fstab
文件系统列表(man fstab(5))
/etc/group
组文件(man group(5))
/etc/hosts
列出主机名和IP地址(man hosts(5))
/etc/init.d
符号链接到/etc/rc.d/init.d
/etc/initlog.conf
Initlog日志配置文件(man initlog(8))
/etc/inittab
Init配置文件(man inittab(5))
/etc/ioctl.save
该文件包含了用于单用户模式的串口和终端参数,因为这些参数是由getty设置的,
而在单用户模式时没有运行getty,所以用该文件保存参数。单用户模式对系统安全
是个威胁,我们应该禁止使用单用户模式,因此这个文件实际上并没有必要复制过
来。
/etc/issue
登录信息和标识文件(man issue(5))
/etc/modules.conf
模块的配置文件(man modules.conf(5))
/etc/mtab
已经挂载的文件系统列表(man mount(8))
/etc/nsswitch.conf
Name Service Switch的配置文件(配置名称服务数据源和查询的顺序)(man nss
witch.conf(5))
/etc/pam.d
放置PAM配置文件的目录(有关PAM请参考5.5节)
/etc/passwd
用户口令文件(man passwd(5))
/etc/profile
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -