RedHat使用RPM作为软件组织方式, 其启动风格是SYSV的. 我在这里
就我所理解的东东作一个描述.
1. 启动
------
在/etc/rc.d/--有下列目录rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
init.d
还有下列文件
rc rc.local rc.sysinit
rcn.d (n为1到6) 是对应于不同的runlevel下起不同的服务. 这些目录下都
是一些符号连接, 连接到init.d下的一些文件.以S开头的表示要启动, 以K开头的不启动.
第一个字母后面的数值是一个优先级, 这个优先级是用chkconfig来维护的. init.d下
的每一个文件都有类似下面的话:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
看有chkconfig的那一行, 2345表示在runlevel 2 3 4 5下被启动, 20 80 是优先级
20为启动, 80为关闭. 即在rc3.d你可能看到 S20 或 K80. Redhat下的setup也是用
它处理的. 你可以再参考一下man chkconfig. 有一点注意, 优先即是一个两位数.
RedHat下启动网络一定要启动network的服务, 该服务会执行
/etc/sysconfig/network, 并用ifup加载所有的/etc/sysconfig/network-script
下定义的网卡. 注意, 在缺省配置中这些定义文件名中不可以有. 象ipforward这样的定义
也是在它中完成的. 你可以看看它的源文件. 它还定义了一个重要的变量$NETWORK, 其他的所
有网络服务都通过检查该变量来决定是否启动.
另外的三个文件是这样的
先执行rc.sysinit 完成了包括mount分区 激活swap 加载modules等重要的工作.
再执行rc.local 完成一些本地的处理, 缺省情况下, 它几乎什么都没作.
最后是执行rc 启动所有的服务.
2. 文档
------
最常用的是man手册, 在/usr/doc下有一些HOWTO, 和一些软件的文档. 实际上最
方便的是info系统, 如果你没用过的话, 执行一下info. 看一看热键的帮助. 里面的文档非常
多. 许多的软件的说明文件有多种格式, text-info是很普通的, 特别是在一些大的软件中.
你可以使用 install-info 命令来安装新的text-info文件. 另一种比较通用的格式是SGML,
它可以被方便的转化为其他格式的文件 如:html info lyx latex txt rtf.
tex和latex也是一种比较通用的格式, 他们最终被处理成dvi文件来观看.
ps(postscript)使用gv(ghostview)来观看.
pdf 使用xpdf或acroread来看, xpdf的速度要快一些, 但对新的pdf格式不支持.
这三种格式主要是图形格式, 分辨率比较高. 但大部分的说明是纯文本的, 这时, info
是最爽的.
3. 关闭
------
halt reboot shutdown Ctrl_Alt_Del这三个命令都完成了那些工作?
它们同属于SysVinit包. reboot是一个连向halt的符号连接.
我这里讲的是RedHat 6.0所带的SysVinit2.74.
先说明几个小问题:
runlevel是从wtmp中找到的. 在启动时, 由init写入.
runlevel 0 是 halt mode,
1 是 single mode or maintenance mode
6 是 reboot mode.
halt(reboot)
如果系统的runlevel不是0或6, halt会exec shutwon -h,
而reboot会exec shutdown -r.
主要的工作都是由shutdown来完成的. halt的参数都被整理后
发到shutdown(exec时的参数).
shutdown
大部分代码用于处理参数等等, 核心工作是由shutdown来完成的.
shutdown主要是调用execv init来修改runlevel. 它也完成
下列工作: warn 系统上的每一个用户. 处理几个文件:
/etc/nologin
/fastboot
/forcefsck
参数-n, 这是, 它自己来完成所有的工作, 而不调用init.
Ctrl-Alt-Del实际上是由init进程直接处理的, 它通知kernel将
Ctrl-Alt-Del信号转化为SIGINT发到它.
4. 口令的长度和加密算法
-------------------
很多人在说Linux使用了DES加密算法, 最多只能用8个字符的口令. 但这是不对的,
Linux的认证都是透过pam来作的, 它使用了两种算法 bigcrypt和md5, 前一种支持到128个字
符, 后一种是无限长. 事实上在UNIX中只需要一种单向的算法即可, 它并不需要一种可以加密解
密的算法. RedHat中用setup来修改级认证机制时, 它只修改了三个文件
/etc/pam.d/login
/etc/pam.d/rlogin
/etc/pam.d/passwd
中的一行:
passwd /lib/security/pam_pwdb.so shadow md5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pam中的auth并不需要这样的设置, 它会根据crypted passwd中的salt来判断是那一种算法,
因此文件中两种算法是可以并存的,
cat /etc/shadow
friday:$1$I92CumQb$I./BJehrqEKIUX9vNmZcL/:10832:0:99999:7:-1:-1:134538420
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
md5以$1$开头, 其salt为$1$I92CumQb$.
5. Shadow 和 Unshadow
---------------------
将当前的passwd状态在两种格式之间转换, 可以用下列命令来完成.
pwconv
unpwdconv
不过, 我实在看不出后者有什么用.
6. make install
---------------
在你安装软件的最后一步往往是make install.
这时, 通常有两种做法:
1. cp execfile /usr/bin/execfile
2. 使用 install 命令 如:
install execfile /usr/bin/execfile
事实上, 后一种更广泛. 它有一些参数可以设定文件的属主, 文件的模
式等.
7. vi 中的颜色
------------
在~/.exrc加入下面一行
syntax on
8. Xemacs 的中文环境
------------------
Emacs使用Mule来处理多国语言.
如果你已经安装好了带Mule的Xemacs. 在你的~/.emacs 加入如下一行.
(setup-chinese-gb-environment)
这样, 每次启动会自动的设制成中文环境.
你可以从Mule->Describe labguage support中来选择一个合适的输入法.
Ctrl-\ 用于激活或关闭中文输入.