Linux 开机程序之研讨( 五 )


## 在下面用手动的方法指定 . 实际上 , 用 autoconfig 及 autoirq
## 的选项就可以了 , 没有必要用手动的方式 . 除非侦测不到 .

###############################################################
#
# MANUAL CONFIGURATION
#
# If you want to do manual configuration of one or more of your
# serial ports, uncomment and modify the relevant lines.
#
###############################################################

# These are the standard COM1 through COM4 devices
#
#${SETSERIAL} /dev/cua0 uart 16450 port 0x3F8 irq 4
#${SETSERIAL} /dev/cua1 uart 16450 port 0x2F8 irq 3
#${SETSERIAL} /dev/cua2 uart 16450 port 0x3E8 irq 4
#${SETSERIAL} /dev/cua3 uart 16450 port 0x2E8 irq 3

.
.
.
.
.
.
.
.

## Ok , 到此 , rc.S 及 rc.serial 已经结束 , 因为截稿时间的关系 , rc.M
## rc.inet1 , rc.inet2 , rc.font , rc.local 将在以後为各位介绍 .

echo "done."
${SETSERIAL} -bg ${PORTS}

echo " ====================== rc.serial is complete !!! ==================="



* 关於 Shell Programming 的书单 :

Title: The Unix C Shell Field Guide
Authors: Gail Anderson and Paul Anderson
Publisher: Prentice Hall
Edition: 1986
ISBN: 0-13-937468-X

这本是 C-Shell 的 Bible , 想学 C-Shell 的人 , 可以去看这本书 .


Title: Unix Shell Programming
Authors: Stephen Kochan and Patrick Wood
Publisher: Hayden
Edition: 1990
ISBN: 0-672-48448-X

喔 ! 这本书以 Bourne Shell 为主 , 内容深入浅出 , 读者很容易就可以了解
这本书的内容 , 进而掌握 Bourne Shell 的精髓 . 此外 , 这本书也有提到
Korn Shell , 大体上来说 , 是一本值得看的好书 .


*如何连络作者 :

E-Mail Address : jhhsu@csie.nctu.edu.tw
u8217017@cc.nctu.edu.tw

Dormitory : 交通大学十舍 317R

..



Linux 开机程序之研讨
CCCA 资工86 许景华

在上次的介绍中 , 我们已经看完了 rc.S 及 rc.serial 这两个 shell script .
现在 , 我们将把剩下的 shell script 再作一个介绍 .
首先还是看看全部的流程 :


init[1]
rc.Sbegin
rc.serialbegin
rc.serialend
rc.Send; <-- 上一次我们说明到这里
init[1] enter runlevel 5
rc.Mbegin
rc.inet1;begin
rc.inet1;end
rc.inet2;begin
rc.inet2;end
rc.font;;begin
rc.font;;end
rc.local;begin
rc.local;end
rc.Mend
login


这次主要的部份可分为两项 : 因为 init 将会去读取 inittab , 所以 inittab
将被列为第一部份的重点 , 而第二部份就是 rc.M , rc.font , rc.local
这几个 shell script 的说明 . ( rc.inet1 , rc.inet2 这两个关於网路的
shell script 将在以後单独说明 )
好了 , 我们先从 inittab 看起吧 ! 看看上面的流程 , 在第一行 : init[1]
也就是 init 这个 process 被启动之後 , 它会去读取 /etc/inittab 这个档案
以完成系统的启动 . 从这里 , 我们看到了 LINUX 的确融合了 SVR4 及 SunOS
的一些特性 , inittab 这个档案 , 在 SunOS 系统中是不存在的 , 但是它却是
SVR4 典型的档案 . init 这个 process 会依据 /etc/inittab 中所记载的内容
进入不同的 run-level 并启动不同的 process . 所以 inittab 的重要性
可见一斑 . 那什麽叫 run-level 呢 ? 所谓 run-level 就是系统中定义了许多
不同的 level , 而系统会随著 level 的不同而去启动不同的资源 .
现在就让我们来看一下 /etc/inittab 中的内容 :
在 /etc/inittab 这个档案中 , 每一列是一个进入点 , 假如我们仔细观察每一列
的话 , 那我们就会很容易的发现 , /etc/inittab 的每一列可以被 " : " 这个
字元分成好几个栏位 . 这几个栏位的格式如下 :

id:runlevels:action:process

而它们代表的意义分别如下 :

id : 由两个独特的字元所组成的辨示符号 , 在比较新的 UNIX 系统中 , 已不

推荐阅读