2003年9月14日 星期日

Red Hat 9上安裝 Webmin1.110及簡單介紹

在Red Hat 9上面安裝 Webmin1.110, Webmin是一個連網的(網頁型)Linux系統設定工具, 使用非常方便容易, 但是要注意安全性

1. 首先是要先安裝好 Apache Web Server

2. 到 Webmin網站下載 Webmin軟體, 解壓縮之後執行 setup.sh, 之後再依提示安裝(其實預設都設定好, 只要一直按 Enter)


2003年8月15日 星期五

SuSE Linux 8.1 安裝及使用

SuSE8.1 這一版比我之前玩的 SuSE7.2 進步不少, 畫面更漂亮, 顯卡的支援度更高, 不用再忍受醜醜的256色介面, 雖然是Live CD但感覺比起同時期的Red Hat強很多

1. 開始畫面, 可愛的變色龍Logo, 選擇你的螢幕解析度
w-studio

2. 偵測硬體及載入軟體

2003年7月19日 星期六

MRTG一些設定檔cfg說明

WorkDir: 輸出檔案的目標目錄
Language: 網頁顯示的文字編碼
Refresh: 網頁重新載入時間

Options[IP或字串]: gauge, nopercent, growright
MRTG擷取的資料可以有兩種形式表現: counter 和 gauge
counter會將前五分鐘數據和當前的數據相減, 再除以300秒, 算出五分鐘內的平均數, 再產生圖表
gauge則不計算, 直接依擷取的數據畫出圖表
growright: 產出的圖表向右遞增資料 (表示最新的資料是在右邊)
nopercent: 產生的資料數值不會顯示百分比

Target[www]: 2:public@192.168.0.1:  擷取第2網路卡及指定IP
SetEnv[www]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth0"
MaxBytes[www]: 1250000 網路流量最大值(會依照要執行擷取資料種類而變動)

Target[IP或字串]: `要執行的執行檔` 
YLegend[IP或字串]: 產生圖示的Y座標文字說明
ShortLegend[IP或字串]: 數值後面加的敘述(單位?)(字數太長好像會無法顯示)

LegendI[IP或字串]: 輸入數值敘述
LegendO[IP或字串]: 輸出數值敘述
Legend1[IP或字串]: 輸入數值說明敘述
Legend2[IP或字串]: 輸出數值說明敘述

Title[IP或字串]: 網頁檔的title標籤說明

PageTop[IP或字串]: 網頁檔的內文標題

於Linux上使用SNMP+MRTG - 4.設定記憶體負載統計及加入系統排程 (以RedHat 9為例)

1. 建立記憶體負載統計小程式 mrtg.ram (網路上看來的)

2. 記憶體負載統計小程式內容


於Linux上使用SNMP+MRTG - 3.設定CPU負載統計 (以RedHat 9為例)

1. 新增一個CPU資料擷取小程式 mrtg.cpu (網路上看來的)

2. CPU資料擷取小程式內容


於Linux上使用SNMP+MRTG - 2.設定網路流量統計 (以RedHat 9為例)

1. 設定網路流量統計, MRTG設定檔 mrtg.cfg

2. 預設設定檔並沒有什麼內容


於Linux上使用SNMP+MRTG - 1.設定SNMP (以RedHat 9為例)

MRTG(Multi Router Traffic Grapher), 是一種對於網路流量、CPU使用率、記憶體使用率等資料流量統計後繪製成圖再製作成網頁形式的小工具, 可在Linux或Windows作業系統上使用, MRTG 的運作是透過 SNMP 協定來監控流量, 所以所監控的設備必須支援 SNMP 協定
w-studio.idv.tw

MRTG 是由 Perl 程式寫成, 且使用 SNMP 協定, 並使用到zlib、gd及png函式庫, 除此之外主要還有Web Server來展示結果, 所以要使用 MRTG 前先確認已經安裝了這些東西, 不過如果在安裝 RedHat 9 時選擇完全安裝的話這些東西就會在系統裡了


2003年7月15日 星期二

SuSE Linux 7.2

SuSE Linux, 一套由德國人發行的Linux版本, 介面做的很不錯, 雖然玩的是Live CD版, 但是安裝設定到操作都很流暢

後記: 可惜當時沒把ISO檔保留下來, 當初燒下來的光碟也壞掉不能用, 無法再繼續玩這版

1. 開始畫面, SuSE Linux 的標誌是一隻可愛的變色龍
w-studio.idv.tw

2. 設定語系, 可惜沒中文化

2003年6月5日 星期四

於Linux上設定Client的DNS

Linux 上 Client端的 DNS 設定有幾個檔案:

/etc/hosts: 設定 IP 與 主機+domain
ex:
127.0.0.1   localhost.localdomain  localhost
192.168.0.1  host1.xxx.com.tw  host1
192.168.0.2  HostName.DomainName HostName (其他主機, 以此類推)


/etc/resolv.conf: 設定NameServer 及 自己Domain
ex:
nameserver  192.168.0.1 (自己DNS的IP)
nameserver  168.95.1.1  (ISP的DNS)
domain  xxx.com.tw


/etc/nsswitch.conf: 主機與IP搜尋的順序
ex:
hosts:      files dns
(file=/etc/hosts, dns=/etc/resolv.conf)
搜尋會先找/etc/hosts的設定, 如果沒有則找/etc/resolv.conf的設定

於Linux上設定DNS Server

Linux上面設定 DNS Server 其實蠻簡單的, 只要設定幾個檔案, 不過如果有連線網際網路, 則需先去網域公司申請網域(domain)

首先建立網域Zone, 編輯 /etc/named.conf 檔
建立正解Zone及反解Zone以及相關檔案連結



2003年6月1日 星期日

Red Hat Linux 的國旗事件爭議

2002年時 Red Hat Linux 發生一件爭議事件, 原本 7.3 版(含)之前的版本於國家語言選項中都有標註我們的國旗(或國民黨旗?), 但於 8.0 版開始我們的國旗不見了而其他國家的國旗都還在, 而到了 9.0 版 Red Hat 乾脆全部不放國旗(這是怎樣?), 當時 Red Hat Linux 似乎是有想要打入中國市場, 不過後來看來中國似乎不怎麼給 Red Hat 面子(中國自己還開發了紅旗Linux), 標榜著自由軟體卻為了政治低頭(雖然Red Hat並不承認), 也由於 Red Hat 沒道歉, 所以後來有不少使用者抵制 Red Hat.  (就連後來改版為 Fedora Linux 我也沒在用了)

Red Hat 6.0 放國民黨旗...
Red Hat 6.1 由於使用 CLE 版所以國旗是正常的

2003年5月18日 星期日

Apache 的 Log 介紹 (access.log)

參考Apache網站:
http://httpd.apache.org/docs/current/mod/mod_log_config.html


於Apache的設定檔中(httpd.conf)可以找到相關設定
access.log 預設值為

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

LogFormat "%h %l %u %t \"%r\" %>s %b"

%h:遠端連線主機(通常為IP地址)
%l:遠端身分驗證(IdentityCheck), 通常顯示為"-", 表示這個請求沒有使用者名稱進行身份驗證, 如果使用者名稱存在, 這個欄位會顯示該名稱
%u:如果有做使用者驗證,則紀錄下使用者名稱, 如果沒有通常顯示為"-", 表示這個請求沒有遠端使用者名稱
%t:紀錄連線時間
%r:紀錄連線的請求,格式為 {%m %U%q %H}
        %m:請求方式(GET、POST、OPTIONS...等)
        %U:請求的路徑 url
        %q:查詢的字串
        %H:請求的協議
%s:遠端連線本機回應狀態 (200、403、404、500...等)
%b:伺服器回應的資料量bytes數
%{Referer}i:連線請求來源的網址, 如果用戶端直接輸入網址或是使用一個沒有 referrer的 HTTP方法(如 GET), 這個欄位就會是"-"
%{User-Agent}i:使用者代理, 使用者端的瀏覽器資訊


舉例:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

IP:127.0.0.1 的 frank使用者連線, 於 10/Oct/2000:13:55:36 從 http://www.example.com/start.html 以 GET 要求 apache_pb.gif這個檔案, 使用 Win98及 Mozilla瀏覽器

2003年5月7日 星期三

Linux上的網頁流量統計工具-Webalizer

Red Hat Linux 系統中預設就放置了一套網頁流量統計工具: Webalizer, 不需特別設定, 只要 Apache Web Server 啟用之後開始有網頁瀏覽紀錄Log, Webalizer便會自動執行建立出流量統計網頁.

1. Webalizer設定檔放在 /etc/webalizer.conf

2. webalizer.conf 內容
w-studio.idv.tw


2003年5月6日 星期二

使用PHP查看Apaceh Server詳細狀態

另外一種用瀏覽器查看 Apache Server 狀態的方式, 就是使用 PHP

只要建立一個 PHP 檔, 內容為:
<?php
phpinfo();
?>

於瀏覽器網址上輸入檔名, 例: http://www.domain.com/phpinfo.php
接著就能秀出 Apache Server 的詳細資料




2003年5月5日 星期一

查看Apache Server資訊(Server-Info)

Server-Info 可以從瀏覽器觀看 Apache Server 的模組資訊
如同 Server-Ststus 一樣, Server-Info 模組同樣也需載入才能瀏覽, 預設是載入的

LoadModule info_module modules/mod_info.so


同樣的Server-Info這個目錄(路徑)預設是沒有開放的, 須將註解拿掉才能使用
# Allow remote server configuration reports, with the URL of
#  http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".your-domain.com" to match your domain to enable.
#
#<Location /server-info>
#    SetHandler server-info
#    Order deny,allow
#    Deny from all
#    Allow from .your-domain.com
#</Location>
為了網站安全同樣也把 Allow from .your-domain.com 嚴格設定

在網站網址後輸入 /server-info 之後, 則會出現 Apache Server 模組的所有資訊

如果只是想看Server基本資訊, 則在網址處輸入 /server-info?server

利用Apache Server查看主機狀況(Server-Status)

前面有說到在Apache Server設定裡有個可以使用瀏覽器查看主機狀況的功能, 也就是要載入status_module這個模組, 預設是有載入

LoadModule status_module modules/mod_status.so

不過預設目錄(路徑)是沒有開啟, 須把註解拿掉才能使用

# Allow server status reports, with the URL of http://servername/server-status
# Change the ".your-domain.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .your-domain.com
#</Location>

為了安全問題最好將Allow from .your-domain.com這條嚴格設定, 以免任何人都能看到




2003年5月4日 星期日

Apache2.0.40 的設定(in Red Hat 9 Linux)-3

關於Apache2.0.40設定的第三部分: 虛擬主機(Virtual Host)

虛擬主機也就是不同的網址(FQDN)使用同一個IP, 要建立虛擬主機要先有DNS Server設定好網址或是向網域註冊單位申請一個網域名稱(domain)

#NameVirtualHost *
.虛擬主機的網址

.虛擬主機的相關設定
#<VirtualHost *>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

Apache2.0.40 的設定(in Red Hat 9 Linux)-2

關於Apache2.0.40的設定第二部分, 為Server的主要設定, 介紹幾個重要部分:

ServerAdmin root@localhost
.系統管理者的E-mail, 可設定或不設

ServerName localhost.localdomain:80
.網站網址的設定, 預設為local, 如有申請網址則可設為 www.your-domain.com:80
Apache Server 預設首頁


Apache2.0.40 的設定(in Red Hat 9 Linux)-1

Apache的設定檔位在 /etc/httpd/conf/httpd.conf, 開頭就說到設定總共分為三個部分:

1.控制整個Apache Server操作的指令(全域環境)
2.定義Server參數的指令, 這些指令還為所有虛擬主機的設置提供默認值
3.虛擬主機的設置, 允許將Web請求發送到不同的IP地址或主機名, 並讓它們由同一個Apache Server處理


第1部分幾個重要設定:
ServerRoot "/etc/httpd"
.Apache 設定檔放在這裡

Listen 80
.Apache預設使用的port, 如無特別需求則不要更改, 記得之前還有一個Port 80的設定, 這版被拿掉了

Include conf.d/*.conf
.Apache其他設定檔位置

LoadModule ***_module modules/mod_***.so
.動態分享物件Dynamic Shared Object (DSO), Apache的功能模組, 搭配<IfModule ***>***</IfModule>標籤使用


Apache 2.0.40 in Red Hat Linux 9 設定檔

其實設定不多, 只是一大堆說明, 之後再慢慢介紹

#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs-2.0/> for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned. 
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
# with ServerRoot set to "/etc/httpd" will be interpreted by the
# server as "/etc/httpd/logs/foo.log".
#

2003年5月3日 星期六

安裝Red Hat Linux 9 (Shrike)

Red Hat Linux 9 (Shrike), 這版算是 Red Hat 的最終桌面版, 之後都以伺服器版開發, 也就是Red Hat Enterprise Linux 版, 而桌面版後來與 Fedora 合併, 之後都以 Fedora Core 發行

1. 開始安裝, 使用的是 Red Hat Linux 9 (Shrike), 注意是9而不是9.0
w-studio
2. 這時會跳出測試光碟, 跳過即可


2003年3月2日 星期日

在 Java Desktop System (JDS) 上使用 StarSuite

雖然 Java Desktop System (JDS) 上已經有安裝 StarSuite 這套 Office軟體, 但是需先啟動它

1. 懷念的StarSuite, 類似OpenOffice, 之前 Solaris 上面也是安裝這套 Office軟體

2. 選擇語言


安裝 JDS (Java Desktop System) Linux

之前工作時有機會接觸到 JDS (Java Desktop System) 這套Linux作業系統, 這是一套基於 SuSE Linux 的 Sun Microsystems Linux, 操作起來如同其他一般Linux一樣, 不過可能這是測試版所以功能沒有太多(桌面化系統為主, 沒有伺服器功能), 這本來是一套獨立的作業系統, 不知為何的把它裝到 Solaris 裡, 或許是為了吸引一些 Linux 的使用者吧

1. 開始畫面, 寫上各國語言為了表現出多國語言化吧

2. 應該是GRUB多重選單, 選擇安裝

2003年1月19日 星期日

Linux 的核心(Kernel) - 使用RPM更新核心注意事項

1. 使用 rpm -ivh kernel-<version>.<arch>.rpm 來安裝核心, 並用新核心開機, 如果有問題則回用舊核心開機
2. 不要使用 rpm -U 更新核心
3. 如果新核心開機沒有問題, 則使用 rpm -e kernel-<oldversion> 刪除舊核心

確定系統上是否已經存在一個版本, 如果存在則確定要安裝的版本是否是新版本, 並且將刪除舊版本的檔案, 不包括在建立 RPM 時標記為設定檔案, 然後將安裝新檔案, 執行 RPM 中所有安裝指令, 然後更新已安裝的資料庫

由於升級會刪除舊的核心版本, 如果新安裝的核心不穩定, 則可能會導致系統無法啟動, 並且必須使用備用啟動媒體, 例如開機磁片或CDROM, 若藉由安裝而不是升級, 核心的舊版本仍然可用, 並且可以從開機程式(boot loader)中選擇

因為所有核心RPM的檔案都是特定版本, 即在名稱中包含版本資訊, 或儲存在特定版本的路徑中, 因此可以安裝多版核心軟體包, 如果使用 rpm -ivh 而不是 -U 參數, 則新核心將被新增到系統中, 但是舊核心仍會保留, 如果忘記編輯 lilo.conf 及執行 lilo, 當系統上的新核心出現問題時, 則不會導致系統無法啟動, 因為舊核心仍然可以使用

Linux 的核心(Kernel) -7 核心編譯-4 安裝

安裝核心模組:
在安裝核心之前, 使用 make modules_install 安裝核心模組, 模組檔案將被複製到 /lib/modules/version/directory , 如果核心版本與已安裝的核心版本相同, 則新模組將覆蓋舊模組, 可能會使舊核心無法使用

9. make modules install 
(ps: 檢查 /lib/modules/kernel-version)

安裝核心:
make install 指令使用 /sbin/installkernel 來放置新核心和 System.map 檔案, 還會設定適當的符號鏈接, 執行 depmod 並建立最初的 ramdisk, 新核心的條目將添加到 GRUB 上, 但不會更改當前的預設核心

10. make install   (kernel image) (/boot->vmlinuz)

更新LILO (如有使用的話):
如果系統使用 LILO 開機程式而不是 GRUB, 則需要將新編譯的核心的新條目添加到 /etc/lilo.conf並執行 LILO 安裝程式 /sbin/lilo 來更新 LILO 的設定 (完成 kernel 後要記得修改 lilo.conf 或 grub.conf)

設定檔案(非必要): 
保留用於編譯核心的設定檔案的副本對於追蹤哪些核心啟用了哪些功能非常有用

cp /usr/src/linux-2.4/.config  /boot/config-2.4.18-3custorn

2003年1月18日 星期六

Linux 的核心(Kernel) -6 核心編譯-3 建立

建立子目錄設定檔案: 
使用 make dep 將 .config 檔案和最上層 Makefile 中定義的設定傳到子目錄設定檔案

6. make dep  (建立相依性)

編譯核心: 
Linux 核心通常是從 gzip 壓縮的映像檔載入, 其中一種是使用 make bzImage 建立, 編譯後可以在 /usr/src/linux-2.4/arch/i386/boot/bzImage 找到壓縮的核心映像檔

7. make bzImage  (產生 kernel Image)

編譯核心模組: 
核心模組儘管使用與基本核心相同的源檔案進行編譯, 但它們是通過單獨的 make 進行編譯, 通常編譯的時間會有點長, 大多數核心代碼都以核心模組的形式存在, 相關文件可以使用 /usr/src/linux-2.4/Documentation

8. make modules  (產生 modules)


ps. 上面步驟可合而為一: #make  dep  bzImage  modules

2003年1月17日 星期五

Linux 的核心(Kernel) -5 核心編譯-2 設定

試作編譯Linux核心:
從/usr/src/linux-2.4執行, 新的核心版本為2.4.18-3custom

定義適當的EXTRA VERSION: 
核心版本在最上層 Makefile 的上部定義, 確保核心 EXTRAVERSION 是唯一的, 因此模組不會覆蓋可能已經安裝的任何核心的模組

1. 設定 /usr/src/linux-2.4/Makefile: EXTRAVERSION = -3custom (設定kernel版本)

從合適的設定範本開始: 
執行 make mrproper (在 Makefile 中定義的目標, 該目標將來源(sources)恢復到乾淨狀態), 然後將適合的硬體的目標複製到 .config, 最後 make oldconfig 建立一個始於 usr/src/linux-2.4/.config 的檔案

2. make mrproper  (清除環境)
3. cp -p configs/kernel-2.4.18-i686.config  .config   (copy i686的設定檔)
4. make oldconfig  現行環境 (修改 .config)(.config kernel 設定檔)

自定 .config 設定檔案: 
有數百種可能的設定選項可用, 幾種實用工具可幫助對各種選項及其依賴性進行分類, 對於特定的核心組件, 可以選擇 (1)將元件靜態編譯到核心中, (2) 將元件包括為可動態載入的模組,  (3)將元件從核心中完全排除. 選擇核心選項時, 需考慮系統上的特定硬體以及對協定和服務的需求

5. make xconfig (make menuconfig, 或 make config)  (修改 .config)

。在"代碼成熟度級別選項(Code Maturity Level Options)"下, 選"提示開發或代碼/驅動程式不完整(Prompt for development and/or incomplete code/drivers)", 如果未選此選項則某些基本服務 (如nfsd) 可能無法正常工作
。針對處理器系列進行優化, 然後關閉數學模擬和SMP支援
。模組化所有可能的硬體支援
。關閉 ISDN 和 IrDA 支援, 以及對舊 CDROM 驅動程式的支援

Linux 的核心(Kernel) -4 核心編譯-1

。預設核心位置: /boot
。核心版本名設定慣例
-主要版本, 次要版本, 修補程式級別
。核心RPMs
- kernel-<version>.<arch>.rpm
- kernel-source-<version>.<arch>.rpm
- kernel-<version>. src. rpm
。編譯所需的RPMs

核心版本名設定慣例
核心名通常由主要版本號, 次要版本號和修補程式級別表示, 偶數版本(例如2.4.x)表示核心是穩定開發分支的一部分, 奇數版本(2.3.x)表示核心是開發中的

核心RPMs
。kernel-<版本>.<arch>.rpm: 預編譯的核心和模組
。kernel-source-<版本>.<arch>.rpm: 為<arch>建立標準核心所需的核心源(較少的標頭和與SMP相關的代碼), 安裝在 /usr/src/linux-2.4 中
。kernel-<版本>.src.rpm: 核心源代碼, kernel.org 發布的原始資源以及所有與核心相關的RPM 時使用的所有修補程式

編譯所需的RPMs
核心源: glibc-kernheaders (以前為kernel-headers), kemel-source
編譯器工具: gcc, dev86, cpp, make, binutils
文庫(Libraries): glibc-devel, ncurses, ncurses-devel

2003年1月16日 星期四

Linux 的核心(Kernel) -3 核心模組設定

。模組設定檔: /etc/modules.conf
- module aliases
- module parameters
。模組檢查: /sbin/modinfo

核心模組處理
當核心需要模組時, 它將使用 modprobe 載入它, 而 kmod 程式負責根據需要執行modprobe

模組設定
許多模組接受可以在載入時指定的參數, 例如 sb Soundblaster(音效卡) 模組接受 irq, dma 和 io 這些藉由驅動程式設定系統資源的參數, 可以在 /etc/modules.conf 設定檔中指定各種參數的預設值, 當 modprobe 載入模組時, 它將查詢該檔案以獲取適當的預設值, 還可以在 /etc/modules.conf 中指定各種模組的別名, 以及在載入或卸載模組時要執行的 shell 命令

例如  /etc/modules.conf :
pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
alias eth0 tulip
options sb io=0x220 irq=7 dma=0 mpu_io=0x300

較新的模組允許使用者可以試探模組支援的參數, 模組的作者以及模組的簡要說明, 例如modinfo -p sb 說明了上面討論的參數等

2003年1月15日 星期三

Linux 的核心(Kernel) -2 模組化核心

模組化核心元件
所有設定和硬體都不需要常駐在核心中的元件, 核心的許多元件都可以編譯為可動態載入的模組, 這可以增加核心功能, 而無需增加啟動時載入的核心映像檔的大小, 啟動時不需要的任何補充功能都是模組化的理想選擇, 包括周邊設備驅動程式和補充檔案系統

/lib/modules 目錄
核心模組位於 /lib/modules/(kernel-version)中, 目錄名稱必須與核心版本 (由 uname -r 或uname -a 取得) 完全相同, /lib/modules/<kernel-version> 的結構在 2.4 核心中已更改, kernel/{arch, drivers, fs, net} 提供了附加的層次結構級別

控制模組
模組通常由核心依需求載入, lsmod 指令可列出了核心中當前常駐的模組, 使用 insmod 指令可使核心載入特定的模組, 並且可以將各種模組參數指定為命令參數, rmmod 指令可在閒置時卸載模組
w-studio lsmod

w-studio insmod
w-studio.idv.tw
w-studio rmmod

智慧式控制模組
許多模組依賴於其他模組, 可以使用 depmod 指令產生模組相依關係資料庫, 若 rc.sysinit 中被設定為在系統啟動時執行 depmod -A 則不需要手動執行此命令, 該命令將比較文件時間並根據需要更新 modules.dep, 然後可以使用 modprobe 指令來載入核心模組, 並且對 insmod指令進行三處改進:
。modprobe 將載入特定模組所需的任何基礎模組
。modprobe 將查詢 /etc/modules.conf 以獲取預設模組參數
。modprobe 可以測試模組列表, 當成功載入模組時將停止測試列表中的其他模組
w-studio depmod

w-studio modprobe

初始化 RAM 磁碟映像
若對 SCSI, RAID 和 software RAID 設備的支援模組化, 由於掛載 root 檔案系統可能需要這些模組, 因此可以將這些模組儲存在稱為初始 RAM 磁碟映像或 initrd 的補充文件中, initrd 是檔案系統的壓縮映像檔, 其中包含核心安裝 root 檔案系統之前可能需要的模組, mkinitrd 可用於建立 initrd, 為了使核心使用 initrd, 必須將 bootloader 設定為使用它

Linux 的核心(Kernel) -1

Linux 的核心(Kernel)

核心共分為兩種, Monolithic(整體、單一) 及 Modular(模組化):

  • 整體核心(Monolithic) 是指在單個文件中建構對所有硬體, 網路協定和檔案系統所支持的核心.
  • 模組化核心(Modular) 是指其中一些驅動程式被建構為目標文件(模組)的核心, 核心可以依需求載入這些模組.

簡單來說核心就是控制及支援硬體, 網路協定和檔案系統的東西

模組化核心(Modular)是大多數發行版的標準, 因為它們允許核心在各種硬體上運作, 但不會在多餘的支持下膨脹核心, 具有整體核心(Monolithic)的系統可能會稍微加快啟動速度, 但是除了瑣碎的啟動和載入時間差異外, 整體核心不會比模組化核心表現更好

現今的眾多Linux發行版都已安裝穩定的核心, 不需要再自行重建核心, 且有問題時發行版商都會迅速發布新的核心及發行版, 在有下列狀況時才需自行重建核心:
。進行優化作為路由器而不是當作主機使用
。出於安全原因禁用不必要的功能
。啟用原本沒啟用的功能
。重新配置頁面大小, 以更改核心空間和用戶空間之間的記憶體位址分配
。更改在啟動時或通過 /proc/sys 無法設定的核心操作參數
。滿足許多筆記型電腦的特殊需求, 特別是在電源方面

2003年1月10日 星期五

Linux Boot Loader 故障排除 troubleshooting

Linux 早期版本有時會遇到開機時會無法順利開機, 可能是因為安裝多重系統時 Windows 作業系統將 MBR 給清掉, 或是 Linux 的 boot loader 設定有問題, 這時就需要系統安裝時所使用的安裝光碟來執行修復

1. 將安裝光碟第一片放入光碟機開機, 出現操作畫面時不要先按 Enter, 先輸入 linux rescue 再按 Enter 執行修復模式

2. 接著出現選擇語言時建議選英文, 因為之後修復模式用不到中文

2003年1月5日 星期日

Linux 的 Boot Loader (以 Red Hat 7.3 為例)

Linux 的 Boot Loader, 當硬碟中同時存在兩個以上作業系統時(如 Windows)可以藉此選擇要啟動的作業系統partition, 現行的 Boot Loader 有兩種, 一個是 LILO(LInux LOader), 另一個是 GRUB(GRand Unified Boot-loader)

第一階段: 選擇從哪一個Partition開機
第二階段: 從 /boot 載入 kernel image
Linux硬碟中分割區

硬碟中MBR內容
1. LILO(LInux LOader):
Red Hat Linux 7.3 的 LILO 畫面

早期的 LILO 沒有圖案, 只有簡單的文字

LILO的設定檔: /etc/lilo.conf

lilo.conf 簡單說明:
prompt 自動顯示LILO提示而無需SHIFT鍵
timeout=50 n*0.1秒 (50*0.1=5秒)
default=linux 預先載入的label標籤
boot=/dev/hda 第一階段載入位置
map=/boot/map map檔案位置
install=/boot/boot.b 第二階段載入位置
message=/boot/message 開機時出現的文字或圖樣訊息
linear 使用大容量硬碟時的設定選項
image=/boot/vmlinuz-2.4.18-3 kernel核心檔案
         label=linux 開機磁區的標籤
         initrd=/boot/initrd-2.4.18-3.img 載入RAM disk, 把kernel沒有的Driver載入
         read-only 掛載root唯讀
         root=/dev/hda3 root的路徑


2. GRUB(GRand Unified Boot-loader):
Red Hat Linux 7.3 的 GRUB 畫面, 早期 Linux 是只有文字型 LILO, 沒有 GRUB

GRUB 設定檔: /boot/grub/grub.conf

grub.conf 簡單說明:
default=0 預設開機選項, 0也就是第一個title
timeout=10 開機等待秒數
splashimage=(hd0,0)/grub/splash.xpm.gz GRUB的背景顯示圖樣
title Red Hat Linux (2.4.18-3) 開機標籤敘述
          root (hd0,0) 啟動的partition位置(hda0,0)=/dev/hda1
          kernel /vmlinuz-2.4.18-3 ro root=/dev/hda3 載入核心檔案及唯讀root路徑
          initrd /initrd-2.4.18-3.img 載入RAM disk

2003年1月2日 星期四

Linux 系統的開機程序

Linux 系統的開機程序主要有4個:
1. BIOS
2. MBR/Boot Loader
3. Kernel
4. init

1. BIOS:
。偵測外部設備
。選擇開機磁碟
。讀取開機磁碟的第一個磁區(MBR)及執行

2. MBR/Boot Loader:
。使用GRUB或LILO作為開機程式
。先選擇要從哪一個partition開機
。再從 /boot 找到 Kernel image 並載入

3. Kernel:
。偵測裝置
。載入裝置驅動程式
。掛載唯讀根目錄檔案系統
。載入 init 等程序

4. init:
。從 /etc/inittab 設定檔執行 run level
。系統初始化程式
。run level特定的程式目錄
。截取某些關鍵序列
。定義UPS電源故障/還原程式
。在虛擬控制台上生成gettys
。run level 5中初始化X