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-\ 用於激活或關閉中文輸入.
你可以從Mule->Describe labguage support中來選擇一個合適的輸入法.
Ctrl-\ 用於激活或關閉中文輸入.