2006年(25)
分类: LINUX
2006-09-09 11:40:54
好了﹐當我們已經可以基本操控這台 Linux 機器之後﹐不妨幫它動點手術﹐讓它更適合自己的環境。就像喜歡飆車的朋友﹐總免不了要對心愛的座架改裝改裝一樣。
要改車﹐除了要改彈簧﹑輪胎﹑煞車﹑排氣﹑裙邊﹑尾翼等﹐要想車子真正能發揮性能﹐當然免不了改引擎啦。下面我們進行的核心編譯﹐就是為 Linux 改引擎了。日後﹐我們還要裝 KDE﹑GNOME 等等這些 X Window﹐那是霧燈﹑座椅﹑方向盤﹑表板等這些‘裝飾’改裝了。這些修改﹐都一一顯示了使用者的個人風格﹐而且也有許多產品可供選擇﹐就如改車除了用“momo”之外﹐還可以選擇“無限”。
何謂核心﹖前面介紹 shell 的時候﹐已經略略提到過核心這個東西﹐如果您有看過“電腦基礎”中關於作業系統部分的文章﹐相信不用我再多做解釋了。而且﹐我也不想再重複了﹐假如您不知道核心是做什麼的﹐可以到“”去看看。
我們通常掛在嘴邊的 Linux ﹐其靈魂所在﹐就是它穩定而強大的核心。而事實上﹐Linux 的定義﹐也只是這個核心﹐只是大家目前使用的系統﹐是經過包裝的﹐在核心之外﹐還有各種各樣的套件( 包括不同的 shell )整合一起。如果您有時間﹐而且願意上網路去抓﹐那些套件都可以自己找得到。有些人﹐幫您把核心編好﹐套件也設定好並加以整合﹐同時將安裝程式寫好﹐還提供套件管理工具﹐以及將環境設定妥當﹐然後燒成 CD﹐那就是我們常見的 Linux 套裝系統了。我們稱這些 Linux 套裝系統的發行版本為 Distribution ﹐例如大家聞名的 RedHat﹐Slackware﹐OpenLinux﹐TurboLinux﹐SuSE﹐Debian﹐等等﹐都是 distrobutions 。不管它們如何包裝﹐但骨子裡頭的東西﹐也就是使用的核心﹐都一樣﹕都是 Linux ﹗
那核心究竟如何定義呢﹖說簡單些﹐就是作業系統 (Operating System)﹐它負責處理所有系統的東西﹐包括硬碟的控制﹑記憶體管理﹑行程管理﹑檔案系統﹑網路功能﹑等等。我們可以將核心看成是一個架於程式和硬體之間的界面操作系統﹐離開來核心﹐什麼東西都用不了。而核心的編譯好壞﹐也會影響到系統的效能﹐甚至﹐一些系統功能(如 tcp/ip)﹐就必須要編進核心才行。
不過﹐在動手編譯核心之前﹐請先問問自己是否真的有這個必要﹖因為﹐現在的 Linux Distro﹐其預裝的核心力都盡可能的將所有東西以模組的方式進行編譯﹐而這些模組都是可以插入和移除的。這是一個非常靈活的設計﹕當您需要模組的時候﹐就載入到核心裡面﹔鳥盡弓藏的時候﹐可以將模組從核心中移除﹕呼之則來﹑揮之則去﹐怎一個方便了得﹗要知道﹐作業系統的效能好壞﹑穩定與否﹐其中一個很關鍵的因素是核心的體積短小精悍。一個臃腫的核心﹐沒錯﹐能提供樣樣俱到的功能﹐但也犧牲掉系統效能和穩定性。所以在編譯核心的時候﹐‘將核心編得儘量的小’﹐是最高原則。
就像改車一樣﹕車身越輕﹐其可控性越佳﹐如果您完全是一個 100% 飆車發燒友﹐很可能﹐您的車箱裡面﹐除了改良後的前坐位和防翻側支架外﹐其它能拿掉的都拿掉﹐連儀俵都是裸露的。呵~~ 如果您的車子裡面還有一大堆 Kitty ﹑Snoppy﹐以及上十組喇叭和 CD 音響﹐那我只能說您是“愛車一族”﹐而絕對不夠資格稱得上“飆車一族”﹗如果您能將所有的汽車週邊都設計成模組﹐那就最好不過了﹕需要泡馬子的時候﹐將所有耍 cool 玩意都弄上﹔需要午夜狂奔的時候﹐全部拿掉﹐一件不留。
同樣的﹐如果您真的是一個 100% 的 Linux 發燒友﹐假如發現核心裡面竟然載有您不想要的東西﹐是絕對不能容忍的。不過﹐對於初入門的朋友﹐倒不必急於以 Linux 發燒友來自居﹐先摸熟核心的功能之後﹐才真正打造適合自己的精確核心吧。說實在﹐若不是趕時髦﹐一般用 Distro 預裝的核心已經非常足夠了。而且預裝核心都帶有非常充足的模組﹐隨時應付您的需求。除非您千真萬確的知道您要的硬體只有在新核心裡面才能支援﹐或是從 kernel.org 上面得知舊核心有嚴重的漏洞﹐否則﹐不需要如此勞師動眾。
好了﹐現在﹐就假設您有十萬零一個理由需要進行核心的編譯﹐那就不妨一起共赴一趟核心的編譯之旅吧﹗
不管您的核心是從網路上抓的﹐還是從 CDROM 裡面 copy 出來的﹐首先要確定的事情是﹕這個版本是否適合您﹖
事實上﹐Linux 核心的版本號碼上面﹐就隱含著一些重要的資訊。先讓我們看看您目前使用的核心版本吧﹕
# uname -r 2.4.2-2 |
不知道您對這這些數字有何認識呢﹖不知道不要緊﹐讓我告訴您吧﹕
<主版本>.<次版本>.<修訂版本>-<副版本>
然後﹐再讓我們看看核心版本的維護流程﹕
kernel 2.2.0 | V 2.2.1 : | V Kernel 2.2.8 ---> 2.3.0 | | V V 2.2.9 2.3.1 : : | | V V Kernel 2.2.60 ... ---> 2.4.0 | V Kernel : ---> 2.5.0 | | V V : :
事實上﹐在眾多的核心版本中﹐我們需要特別留意的是第二個數字﹐也就是次版本的號碼﹕
無論如何﹐當新核心推出之後﹐都不建議立即在真正工作的系統上面應用﹐尤其是在商業機構中﹐不要拿營運中的系統來做白老鼠。就算您獲得一個被認為是穩定的版本﹐也應該經過反復的測試﹐以及隨時留意核心團體所公佈的最新資訊。只有經過一段時期和廣泛的應用與回報﹐再加上自己的嚴格測試之後﹐才能決定是否要應用在工作的環境中。
事實上﹐更新核心不是為了幹時髦﹐您必須很清楚您的需要是什麼﹐假如當前核心已經能應付您的需要﹐那就繼續保留它就是了。下面這篇文章﹐是小州兄的建言﹐非常有代表性﹐希望大家能深切領會其中的要旨﹕
"小州" |
另外﹐還有一個地方要留意的﹕就是您目前使用的應用程式和新版核心之間的兼容性如何﹖其中最頭痛的地方莫過於 Library 的更新。因為 Library 是核心和程式之間的主要溝通界面﹐實在有太多的程式需要使用到 Library 提供的函式庫。如果單純為了升級某一個套件﹐而需要更新 Library 版本的話﹐在很大程度上也會牽涉到核心版本的升級﹔但其它應用程式是否能使用新版的 Library 卻是個非常棘手的難題。調過來說﹐如果您單純為了某一核心功能而升級核心﹐而導致所有 Library 和應用程式都必須更新﹐您必須有足夠的 study 和風險評估﹐否則當您發現牽一髮動全身的時候﹐再臨急抱佛腳﹐恐為時已晚了。況且﹐許多隱藏性的問題﹐可能要等到積壓了某一時期之後才能浮現出來﹐這個恐怕更是讓人吃不了兜著走。
無論如何﹐如果您覺得要升級核心的話﹐三思而後行﹗
Linux核心的發展﹐可以說是相當迅速的﹐其版本更新反而有時候讓人覺得受不了呢。
如果您使用的我們這裡用來作範例的 RedHat 7.1 套件﹐那您應該看到和我一模一樣的版本﹕2.4.2-2。想要獲得最新的核心版本資訊﹐不妨到 走走﹐說不定會滿載(指頻寬)而歸呢﹗上面有 http 和 ftp 的下載選擇﹐如果您是用網頁瀏覽器的話﹐建議用 http 模式﹔如果您習慣了 ftp 界面﹐那就用 ftp 好了。
以小弟經驗看﹐最好是在系統安裝完畢之後﹐馬上就進行核心編譯工作﹐免得以後每次裝一些特定功能的時候又要花一大輪時間編譯。當然了﹐我是假設您如我在“安裝 Linux”文章中所說的﹕已經明確知道自己的系統要用來做什麼的。例如﹐您打算架設 NAT 和 QoS﹐並且閱讀過文件﹐明確知道要將什麼東西編譯進核心裡面。當然﹐如果您不怕花時間﹐每裝一次服務就重新編譯一次核心﹐也未嘗不可。只是﹐當您真的有過幾次核心編譯經驗之後﹐我相信您巴不得一次過就將核心編好﹐最好還是別人已經編好﹐然後送一個現成的過來﹗呵呵~~ 我常會在編核心的是許這樣的願望哦~~ ^_^
如果您不是到網路上抓最新的核心﹐但當初安裝的時候又不是選擇 everything﹐而且也沒選擇 Development Tools (kernel source) ﹐那您也可以使用安裝光碟帶來的核心版本 (RH7.1 是在 Disk2 上面)。當您將光碟 mount 好之後﹐然後轉到這個目錄去﹕﹕
cd /mnt/cdrom/RedHat/RMPS |
然後將 kernel-source 的 rpm 裝上。別說您不會使用 rpm 哦﹐果真的話﹐請往前面翻看看再回來﹕
rpm -Uvh kernel-source-2.4.2-2.i386.rpm |
完成之後﹐您應該會在 /usr/src/ 目錄裡面看到一個 linux-2.4.2 的子目錄。這就是剛纔的 rpm 程式幹的好事了﹗
如果您的核心是從 internet 上面下載回來的﹐通常會是‘.tar.gz’或‘.tar.bz2’這樣的壓縮檔。目前﹐我在 所找到的最新版本是 2.4.9 ﹐請先將 這個檔案抄進 /usr/src 再進行解壓﹕
tar Ixvf linux-2.4.9.tar.bz2 |
這樣您就會產生一個‘linux’的目錄﹗注意哦﹕這個和您用 rpm 從 RH7.1 Disk2 的 CD 裝的目錄不一樣哦﹐如果您是用 CD 來裝的話﹐建議您建立一個 link﹕
ln -sf linux-2.4.2 linux |
無論您是用光碟的 rmp﹐還是下載回來的核心﹐最終我們都應該有一個‘/usr/src/linux’的目錄﹕如果原來已經有這樣一個目錄存在﹐而不是 link 的話﹐那就先用 mv 將它改一個名字吧。
當我們的目錄準備好之後﹐就是我們進行編譯的步驟了﹕
不過﹐編譯核心一點都不輕鬆﹐而且是相當費神費時的事情。幸好現在的機器越來越快﹐而且核心的編譯程式也好用多了。
mkbootdisk --device /dev/fd0 `uname -r` |
make menuconfig |
如果在Xwindows裡面﹐可以輸入﹕make xconfig。不過﹐我們這裡使用 menuconfig 就好。在這個界面裡面﹐不如先學習一下如何操作鍵盤吧﹕
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers # 如果您想用核心進行研發工作﹐如測試新硬體﹐可以考慮﹐ # 否則不用理會﹐ # 不過﹐有些尚處於 alpha 階段的新功能必須選擇後才用。 Loadable module support ---> [*] Enable loadable module support [*] Set version information on all module symbols [*] Kernel module loader # 如果您要採用其它版本(或舊版本)編譯過來的模組﹐ # 那就要打開第二項﹐但可能不那麼安全。 # 然則﹐您也要確定裝有 genksyms 程式﹐ # 否則可能會編譯失敗。 Processor type and features ---> (Pentium-III/Celeron(Coppermine)) Processor family ( ) 486 ( ) 586/K5/5x86/6x86/6x86MX ( ) Pentium-Classic ( ) Pentium-MMX ( ) Pentium-Pro/Celeron/Pentium-II (X) Pentium-III/Celeron(Coppermine) # 如果第一項的 CPU 型號不是您目前機器的﹐ #可以 Enter 進行選擇。Toshiba Laptop support /dev/cpu/microcode - Intel IA32 CPU microcode support /dev/cpu/*/msr - Model-specific register support /dev/cpu/*/cpuid - CPU information support # 上面這些因為是模組的關係﹐所以才選。 (off) High Memory Support (X) off ( ) 4GB ( ) 64GB # 如果您的實體記憶體少於 1G 的話﹐用預設的 off 就行﹔ # 如果您的記憶體介於 1G 到 4G 之間﹐選擇 4GB﹔ # 如果您的記憶體超過 4G ﹐那可以選擇 64GB。 [ ] Math emulation # 除非您的 CPU 是 intel 386﹐否則不用選擇。 [*] MTRR (Memory Type Range Register) support # 如果您有打算跑 X window﹐不妨將之加上。 [ ] Symmetric multi-processing support # 如果您的機器是雙 CPU 的﹐可以選擇上面這個。 [ ] APIC and IO-APIC support on uniprocessors (NEW) General setup ---> [*] Networking support [ ] SGI Visual Workstation support [*] PCI support (Any) PCI access mode ( ) BIOS ( ) Direct (X) Any [*] PCI device name database [ ] EISA support [ ] MCA support [*] Support for hot-pluggable devices PCMCIA/CardBus support ---> <*> PCMCIA/CardBus support [*] CardBus support [*] i82365 compatible bridge support [ ] Databook TCIC host bridge support # 如果您使用 notebook﹐或許會有 PCMCIA 裝置﹐ # 不妨將 i82365 加進來﹐除非您確定不使用 PCMCIA。 # 我實際上是沒有選擇的﹐這裡僅作示範而已。 # 如果您沒選擇這個﹐後面許多 PCMCIA 的選擇就看不到了﹐ # 參考的時候請留意這點﹗ [*] System V IPC [*] BSD Process Accounting # 是是非常好用的東西﹐可以將您的行程資料記錄下來﹐ # 強烈建議選擇﹐要不然開機可能會看到錯誤信息。 [*] Sysctl support # 這個不能不選﹐否則 /proc/sys 就沒作用了。 (ELF) Kernel core (/proc/kcore) format (X) ELF ( ) A.OUT <*> Kernel support for a.out binaries <*> Kernel support for ELF binaries <*> Kernel support for MISC binaries [*] Power Management support <*> Advanced Power Management BIOS support # 上面這行要編成模組或內建﹐然後才看得到下面的哦﹕ [ ] Ignore USER SUSPEND (NEW) [ ] Enable PM at boot time (NEW) [ ] Make CPU Idle calls when idle (NEW) [ ] Enable console blanking using APM (NEW) [ ] RTC stores time in GMT (NEW) # 如果您的硬體時鐘是使用世界標準時間﹐可以選擇﹐ # 如果是本地時則不選。 [ ] Allow interrupts during APM BIOS calls (NEW) [ ] Use real mode APM BIOS call to power off (NEW) # 如果您的系統不能自己切斷電源﹐就選這個吧。 # 不過﹐對某些 BIOS 而言﹐選了這個反而不能關機﹗ # 這樣的話﹐您自己試試看囉~~ # 我這裡沒選啦﹐因為我用的是華碩的舊板 P2L97。 # 另外﹐我還發現如果您是單 CPU 的機器﹐ # 前面卻將 SMP 選擇起來的話﹐那也不能關機哦~~ Memory Technology Devices (MTD) ---> < > Memory Technology Device (MTD) support # 如果您要做 embedded 系統﹐ # 使用到 FDM 和 DOM/DOC 的話﹐可選。 # 不過選擇之後﹐還有很多選項﹐請儘量用模組來編譯就是了。 # 如果不知道是什麼﹐請看 Help 的說明﹗ # 我這裡沒選。 Parallel port support ---> Parallel port support # 如果您有使用平行埠﹐如接印表機﹐那就選吧。 PC-style hardware (NEW) Multi-IO cards (parallel and serial) (NEW) [ ] Support foreign hardware (NEW) [*] IEEE 1284 transfer modes (NEW) # 假如您的印表機有狀態回報功能的話﹐可以考慮。 Plug and Play configuration ---> <*> Plug and Play support <*> ISA Plug and Play support # 哇﹕PnP 耶~~ 這麼好的事情為什麼不用﹖ Block devices ---> <*> Normal PC floppy disk support XT hard disk support Parallel port IDE device support --- Parallel IDE high-level drivers Parallel port IDE disks (NEW) Parallel port ATAPI CD-ROMs (NEW) Parallel port ATAPI disks (NEW) Parallel port ATAPI tapes (NEW) Parallel port generic ATAPI devices (NEW) --- Parallel IDE protocol modules ATEN EH-100 protocol (NEW) MicroSolutions backpack (Series 5) protocol (NEW) MicroSolutions backpack (Series 6) protocol (NEW) DataStor Commuter protocol (NEW) DataStor EP-2000 protocol (NEW) FIT TD-2000 protocol (NEW) FIT TD-3000 protocol (NEW) Shuttle EPAT/EPEZ protocol (NEW) Shuttle EPIA protocol (NEW) Freecom IQ ASIC-2 protocol (NEW) FreeCom power protocol (NEW) KingByte KBIC-951A/971A protocols (NEW) KT PHd protocol (NEW) OnSpec 90c20 protocol (NEW) OnSpec 90c26 protocol (NEW) Compaq SMART2 support Compaq Smart Array 5xxx support Mylex DAC960/DAC1100 PCI RAID Controller support <*> Loopback device support # 這個建議做到核心去。 Network block device support <*> RAM disk support (4096) Default RAM disk size (NEW) [*] Initial RAM disk (initrd) support # 呵這趟收穫甚豐﹕反正是模組嘛~~ ^_^ # 不過﹐如果您確定真的是用不上﹐那也可以不選啦。 # 至於最後 3 項的使用時機﹐是當系統在開機過程中﹐ # 必須先載入某些模組才能完成檔案系統的掛載﹐ # 例如 SCSI 模組﹐或核心太大裝不進磁片中﹐ # 那您可以將 RD 和 initrd 選進核心裡面。 # 我這裡打算嘗試這個選項﹐因為我有 SCSI 控制卡。 # 如果您使用這個選項﹐請確定您的 SCSI 模組 # 要寫在 /etc/modules.conf 檔中﹔ # 您也可以執行 mkinitrd 幫助您完成。 Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) RAID support Linear (append) mode RAID-0 (striping) mode RAID-1 (mirroring) mode RAID-4/RAID-5 mode Logical volume manager (LVM) support # 您想在 Linux 玩 RAID 和 LVM 嗎﹖這些可要選哦。 Networking options ---> # 在這裡的選項非常多﹐若想將 Linux 當成 gateway 來玩﹐ # 那可能會選擇較多的選項。 # 無論如何﹐參考 Help 的說明來決定您的需求。 <*> Packet socket # 這個可以加快封包的雙向溝通。 [*] Packet socket: mmapped IO # 目的同上。 [*] Kernel/User netlink socket # 如果您想架設 diskless 工作站﹐ # 同時要這台機器提供 RARP 這樣的服務﹐ # 那就最好選擇它。 # 其它一些服務如 ipvsadm 也需要它。 [*] Routing messages (NEW) # 如果您想用 iproute2 接收路由資訊﹐請選擇。 Netlink device emulation (NEW) # 這個選項應該很快合併到前面的 netlink socket 那裡去。 [*] Network packet filtering (replaces ipchains) # 呵~~ 這個是許多人都想玩的功能﹕ NAT 和 firewall ﹗ # 一定要選哦~~ [ ] Network packet filtering debugging (NEW) # 如果您還有能力幫助 iptables 進行 debug﹐可以選。 # 我嘛﹐暫時偷懶~~ [*] Socket Filtering # 這功能似乎很神奇﹐ # 如果您會寫 socket 程式﹐應該蠻受惠的。 <*> Unix domain sockets # 許多程式﹐例如 X window 和 syslog ﹐都用到。 # 除非您做 embedded 系統﹐確定不會使用到﹐ # 否則一定要選。 [*] TCP/IP networking # 上面這項如果不選﹐也別想上 Internet 了。 [*] IP: multicasting # 如果沒用到 MBONE 功能﹐可以不選。 [*] IP: advanced router # 如果要將 Linux 當 router 用﹐那就選吧。 [*] IP: policy routing (NEW) # 如果您打算用 iproute2 來管理 TOS ﹐那就要選。 [*] IP: use netfilter MARK value as routing key (NEW) # 可以用 iproute2 配合 iptalbes 來控制頻寬﹐很好玩哦。 [*] IP: fast network address translation (NEW) # 哦﹕NAT 耶~~ 當然選擇啦。 [*] IP: equal cost multipath (NEW) # 如果網路環境有多重路由﹐不妨考慮。 [*] IP: use TOS value as routing key (NEW) # 如果您打算用 TOS 來做路由判定依據﹐那可以選。 [*] IP: verbose route monitoring (NEW) # 建議選擇﹐這樣可以讓核心告訴您一些奇怪的路由資訊。 [ ] IP: large routing tables (NEW) # 如果您的路由區域可能超過 64 個﹐可以考慮。 [ ] IP: kernel level autoconfiguration # 只有上面這項選擇了﹐下面三項才會跑出來﹕ [ ] IP: DHCP support (NEW) [ ] IP: BOOTP support (NEW) [ ] IP: RARP support (NEW) # 如果您要構建一個 diskless 工作站的核心﹐ # 可以選擇前面四項。 # 如果您是做 diskless 的伺服器﹐就不要選了。 IP: tunneling # 可以用來架設 VPN 哦﹐反正又是模組﹐幹嘛不選﹖ IP: GRE tunnels over IP [*] IP: broadcast GRE over IP (NEW) # 如果您的網路混合了 IPv6 和 IPv4﹐ # 可以考慮選擇前兩項。 [*] IP: multicast routing [*] IP: PIM-SM version 1 support (NEW) [*] IP: PIM-SM version 2 support (NEW) # 和前面的提到的 MBONE 一樣﹐前面三項有用才選吧。 [*] IP: TCP Explicit Congestion Notification support # 網路擁塞通知協定可以減少封包遺棄及加速傳送﹐ # 然而許多防火牆目前都不支援這些封包﹐ # 有可能會影響到防火牆後面的連線﹐ # 如果您不確定﹐那就不選為佳。 # 不過﹐您也可以用如下命令將此功能關閉﹕ # echo 0 > /proc/sys/net/ipv4/tcp_ecn [*] IP: TCP syncookie support (disabled per default) # 使用 SYN cookies 來抵禦 SYN Flood 攻擊﹐ # 但光設定這裡是不夠的﹐您還必須確定 # /proc/sys/net/ipv4/tcp_syncookies 的值為 1 。 IP: Netfilter Configuration ---> # 不是一大票人要玩封包過濾嗎﹖可別忘了打開這裡哦﹕ Connection tracking (required for masq/NAT) (NEW) FTP protocol support (NEW) IP tables support (required for filtering/masq/NAT) (NEW) limit match support (NEW) MAC address match support (NEW) netfilter MARK match support (NEW) Multiple port match support (NEW) TOS match support (NEW) tcpmss match support (NEW) Connection state match support (NEW) Packet filtering (NEW) REJECT target support (NEW) Full NAT (NEW) MASQUERADE target support (NEW) REDIRECT target support (NEW) Packet mangling (NEW) TOS target support (NEW) MARK target support (NEW) LOG target support (NEW) TCPMSS target support (NEW) ipchains (2.2-style) support (NEW) < > ipfwadm (2.0-style) support (NEW) # 簡而言之﹐除非您確定不用﹐ # 這裡的東西全部都可以編為模組就是了。 --- The IPX protocol [*] IPX: Full internal IPX network (NEW) # 要和 Novell 機器連接嗎﹖前兩項要選擇哦。 Appletalk protocol support # 還想和 mac 電腦連接﹖那也不能不選哦。 < > DECnet Support 802.1d Ethernet Bridging # 如果您了解 802.1d 協定﹐ # 同時想用 Linux 當 Bridge﹐那就選吧。 QoS and/or fair queueing ---> # 想玩流量控管﹐這裡的可不要忘了打開﹕ [*] QoS and/or fair queueing CBQ packet scheduler (NEW) CSZ packet scheduler (NEW) The simplest PRIO pseudoscheduler (NEW) RED queue (NEW) SFQ queue (NEW) TEQL queue (NEW) TBF queue (NEW) GRED queue (NEW) Diffserv field marker (NEW) Ingress Qdisc (NEW) [*] QoS support (NEW) [*] Rate estimator (NEW) [*] Packet classifier API (NEW) TC index classifier (NEW) Routing table based classifier (NEW) Firewall based classifier (NEW) U32 classifier (NEW) Special RSVP classifier (NEW) Special RSVP classifier for IPv6 (NEW) [*] Traffic policing (needed for in/egress) (NEW) # 和前面的封包過濾一樣﹐能選為模組的就用 M ﹐ # 否則就內建。 Telephony Support ---> < > Linux telephony support # 除非您確定用 Linux 玩 VoIP﹐否則不用設定。 # 我這裡沒設啦。 ATA/IDE/MFM/RLL support ---> <*> ATA/IDE/MFM/RLL support # 相信今天的硬碟沒有不支援 ATA 的吧﹖一定要選哦。 IDE, ATA and ATAPI Block devices ---> <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/ floppy support --- Please see Documentation/ide.txt for help/info on IDE drives [ ] Use old disk-only driver on primary interface <*> Include IDE/ATA-2 DISK support [*] Use multi-mode by default PCMCIA IDE support <*> Include IDE/ATAPI CDROM support Include IDE/ATAPI TAPE support Include IDE/ATAPI FLOPPY support SCSI emulation support --- IDE chipset support/bugfixes [*] CMD640 chipset bugfix/support [ ] CMD640 enhanced support [ ] ISA-PNP EIDE support [*] RZ1000 chipset bugfix/support [*] Generic PCI IDE chipset support [*] Sharing PCI IDE interrupts support [*] Generic PCI bus-master DMA support [ ] Boot off-board chipsets first support [*] Use PCI DMA by default when available [ ] AEC62XX chipset support [ ] ALI M15x3 chipset support [ ] AMD Viper support [ ] CMD64X chipset support [ ] CY82C693 chipset support [ ] Cyrix CS5530 MediaGX chipset support [ ] HPT34X chipset support [ ] HPT366 chipset support [*] Intel PIIXn chipsets support [*] PIIXn Tuning support [ ] NS87415 chipset support (EXPERIMENTAL) [ ] PROMISE PDC202{46|62|65|67|68} support [ ] ServerWorks OSB4/CSB5 chipsets support [ ] SiS5513 chipset support [ ] SLC90E66 chipset support [ ] Tekram TRM290 chipset support (EXPERIMENTAL) [ ] VIA82CXXX chipset support [ ] Other IDE chipset support [ ] IGNORE word93 Validation BITS # 上面這些﹐如果能做成模組的就儘量做﹐其它的﹐ # 除非確定您會使用到﹐例如 Promise 的 IDE RAID 晶片﹐ # 否則不要選擇或接受預設的選項。 SCSI support ---> # 如果您機器上有 SCSI 裝置﹐那就打開這裡﹕ <*> SCSI support --- SCSI support type (disk, tape, CD-ROM) <*> SCSI disk support (40) Maximum number of SCSI disks that can be loaded as modules # 如果您確定您的 SCSI 控制卡所支援的硬碟數目可以超過這個值﹐可以調整這裡的數值。 SCSI tape support SCSI OnStream SC-x0 tape support SCSI CD-ROM support [ ] Enable vendor-specific extensions (for SCSI CDROM) (NEW) # 請看 help ﹐以確定您是否使用到其中提到的型號﹐否則不要設。 (2) Maximum number of CDROM devices that can be loaded as modules (NEW) SCSI generic support --- Some SCSI devices (e.g. CD jukebox) support multiple LUNs [*] Enable extra checks in new queueing code [*] Probe all LUNs on each SCSI device [*] Verbose SCSI error reporting (kernel size +=12K) [ ] SCSI logging facility # 上面那些選項﹐如果是模組的話﹐儘量選﹐其它的﹐接受預設就好﹐ # 除非您確切知道。 SCSI low-level drivers ---> # 這裡基本上是關於特定 SCSI 控制卡的型號的支援﹐ NCR53C8XX SCSI support SYM53C8XX SCSI support (4) default tagged command queue depth (32) maximum number of queued commands (20) synchronous transfers frequency in MHz Tekram DC390(T) and Am53/79C974 SCSI support # 不過﹐因為實在太多了﹐不全部列出來了。 # 不過﹐原則還是一樣﹕能模組就模組﹐ # 不能模組的就確定的才選擇 # 像我這裡﹐我確定 SCSI 控制卡是 Symbios 的 53C810 ﹐ # 這也是預設的﹐但我嘗試用 initrd (RAM DISK) 方式來啟動﹐ # 所以改為模組。 PCMCIA SCSI adapter support ---> # 如果前面的 generic 中沒選 PCMCIA ﹐那這裡就沒有了。 [ ] PCMCIA SCSI adapter support # 除非您確定有使用這些設備﹐否則可以不理。 Fusion MPT device support ---> < > Fusion MPT (base + ScsiHost) drivers # 這個我不知道是什麼﹐也就不理了。 I2O device support ---> < > I2O support # 如果您確定您有 I2O 設備﹐可以選擇。我沒有﹐所以沒選。 Network device support ---> # 到這裡可不能不選了﹐要不我們怎麼上網啊﹖ [*] Network device support ARCnet devices ---> < > ARCnet support # 如果您沒有 ARCnet 的界面﹐可以不理。 Appletalk devices ---> [ ] Appletalk interfaces support (NEW) # 如果您沒有 Appletalk 界面﹐可以不理。 <*> Dummy net driver support # 這個我建議您編為內建﹐許多網路功能都會用到。 Bonding driver support # 如果您想用多張網路卡合併頻寬﹐模擬 Etherchannel # 和 Trunking 功能﹐那就選擇。 # 主意哦﹐支援此功能的 switch 很貴哦﹗ EQL (serial line load balancing) support # 咦﹖可以合併多條 PPP 或 SLIP 頻寬﹖真的假的﹖ # 不妨試試看~~~ Universal TUN/TAP device driver support # 如果您沒有 tunX 或 tapX 設備﹐可以不設﹐ # 但﹐反正是模組嘛~~~ General Instruments Surfboard 1000 # 如果您有 SURFboard 1000 插卡式 Cable Medem ﹐ # 不妨試試。 Ethernet (10 or 100Mbit) ---> # 這可是重點哦﹐不能不看﹕ [*] Ethernet (10 or 100Mbit) [ ] ARM EBSA110 AM79C961A support < > Sun Happy Meal 10/100baseT support < > Sun GEM support [*] 3COM cards # 假如您已經有或打算買 3Com 的網路卡﹐就打開這裡吧。 3c501 "EtherLink" support (NEW) 3c503 "EtherLink II" support (NEW) 3c505 "EtherLink Plus" support (NEW) 3c509/3c529 (MCA)/3c579 "EtherLink III" support (NEW) 3c515 ISA "Fast EtherLink" (NEW) 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support (NEW) # 不管﹐全部編成模組﹐說不定某天也有那麼好的福氣用名牌哦。 < > AMD LANCE and PCnet (AT1500 and NE2100) support [*] Western Digital/SMC cards # 也難保證某天不會用到 Digital 的網路卡﹐反正模組嘛﹕ WD80*3 support (NEW) SMC Ultra support (NEW) SMC 9194 support (NEW) [ ] Racal-Interlan (Micom) NI cards DEPCA, DE10x, DE200, DE201, DE202, DE422 support [*] Other ISA cards # 如果您手上還有 ISA 的舊網路卡﹐不要浪費哦。 Cabletron E21xx support (NEW) EtherWORKS 3 (DE203, DE204, DE205) support (NEW) EtherExpress 16 support (NEW) EtherExpressPro support/EtherExpress 10 (i82595) support (NEW) HP PCLAN+ (27247B and 27252A) support (NEW) HP PCLAN (27245 and other 27xxx series) support (NEW) ICL EtherTeam 16i/32 support (NEW) NE2000/NE1000 support (NEW) # 許多 ISA 網路卡﹐都支援 NE2000 的模組﹐ # 其它不選也要選這個。 [*] EISA, VLB, PCI and on board controllers # 相信您的網路卡不會是非 PCI 的吧﹖ AMD PCnet32 PCI support Apricot Xen-II on board Ethernet CS89x0 support DECchip Tulip (dc21x4x) PCI support # 您應該會看過 DEC 的網路卡吧﹖ [*] Use PCI shared mem for NIC registers Generic DECchip & DIGITAL EtherWORKS PCI/EISA Digi Intl. RightSwitch SE-X support Davicom DM910x/DM980x support EtherExpressPro/100 support # 居然核心內定就有 Intel 的這張卡﹗ # 太不公平了﹐改成模組﹐否則心裡不平衡 ^_^ Myson MTD-8xx PCI Ethernet support National Semiconductor DP8381x series PCI Ethernet support PCI NE2000 and clones support (see help) # 嗯﹐還有 PCI 的 NE2000 呢﹐ # 如果您的網路卡怎麼都找不到模組﹐不妨碰碰這個運氣。 RealTek RTL-8139 PCI Fast Ethernet Adapter support # 呵~~ 俗稱‘便宜大碗’的螃蟹卡﹐就是使用這個模組的啦 ^_^ [ ] Use PIO instead of MMIO [ ] Support for older RTL-8129/8130 boards # 如果您不確定您可以使用這兩個選擇﹐那就不要選擇﹐ # 否則可能會開不了機﹗ SiS 900/7016 PCI Fast Ethernet Adapter support SMC EtherPower II Sundance Alta support TI ThunderLAN support VIA Rhine support # 唉~~ 那張惡名遠撥的 DL-530TX 網路卡﹐ # 有時候可以用這個模組哦。 # 後面我專門介紹如何裝這張惡卡﹗ Winbond W89c840 Ethernet support # 嗯﹐Winbond 的和螃蟹卡一樣好裝﹗ [ ] Pocket and portable adapters # 如果您有口袋型網路卡(非 PCMCIA)﹐可以選擇其下的模組看看。 Ethernet (1000 Mbit) ---> # 您什麼時候那麼好命啊﹖竟然連 Giga-bit 的網路都享受得到﹕ Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support [ ] Omit support for old Tigon I based AceNICs D-Link DL2000-based Gigabit Ethernet support Packet Engines Hamachi GNIC-II support SysKonnect SK-98xx support [ ] FDDI driver support # 目前來說﹐我是鐵定沒運氣用 FDDI 的了~~~ PLIP (parallel port) support <*> PPP (point-to-point protocol) support # 如果用 MODEM 撥接上網的話﹐這個一定要﹗ # 雖說這個也可以篇成模組﹐不過﹐目前還離不開 PPP﹐ # 尤其用撥接式 ADSL(PPPoE) ﹐不妨直接編進核心裡面﹐ # 除非您覺得這個會影響到核心的體積。 [*] PPP filtering (NEW) # 看起來是不錯的功能哦﹐試試看﹖可惜不能編成模組。 PPP support for async serial ports (NEW) PPP support for sync tty ports (NEW) PPP Deflate compression (NEW) PPP BSD-Compress compression (NEW) SLIP (serial line) support # 雖說﹐要手工編寫 SLIP 撥接 script 的時代已經很久遠了﹐ # 不過﹐很多程式都會用到哦﹐例如 vpnd ﹐還有 ippfvsadm﹐有備無患。 [*] CSLIP compressed headers (NEW) # 如果雙方都支援 SLIP 壓縮技術﹐用這個可以提高傳送量哦。 [*] Keepalive and linefill (NEW) # 除非線路品質太差﹐否則不用計較。 [ ] Six bit SLIP encapsulation (NEW) # 這個也太古老了吧﹖不確定的話﹐不必理會。 Wireless LAN (non-hamradio) ---> # 咦﹖無線網路耶~~ 這麼好的玩意﹐怎能不試呢﹖ # 不過﹐我短期內是用不到的了﹐真有那麼好福氣﹐ # 也願意回來編核心啦 ^_^ # 所以﹐下面僅作範例參考﹕ [*] Wireless LAN (non-hamradio) STRIP (Metricom starmode radio IP) (NEW) AT&T WaveLAN & DEC RoamAbout DS support (NEW) Aironet Arlan 655 & IC2200 DS support (NEW) Aironet 4500/4800 series adapters (NEW) Aironet 4500/4800 ISA/PCI/PNP/365 support [*] Aironet 4500/4800 PNP support (NEW) [*] Aironet 4500/4800 PCI support (NEW) Aironet 4500/4800 PROC interface Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards (NEW) --- Wireless Pcmcia cards support Hermes support (Orinoco/WavelanIEEE/PrismII/ Symbol 802.11b cards) (NEW) Cisco/Aironet 34X/35X/4500/4800 PCMCIA cards (NEW) # 上面有幾個一定要內建﹐如果計較的話﹐應該不選。 Token Ring devices ---> [ ] Token Ring driver support # 這玩意﹐看來我也沒什麼機會玩的了~~ [*] Fibre Channel driver support Interphase 5526 Tachyon chipset based adapter support (NEW) # 搞不好您還真的這麼有福氣﹐用得到 FC 哦。 # 不過﹐我目前看來應該沒此機會的了。 # 上兩項也只作範例參考﹐實際上我並沒安裝。 Wan interfaces ---> [*] Wan interfaces support # 知道一個 router 有多貴嗎﹖ # 居然小小的 Linux 也能玩 WAN﹖真的假的﹖ # 這項我沒選﹐下面僅作例子﹕ Comtrol Hostess SV-11 support (NEW) COSA/SRP sync serial boards support (NEW) MultiGate (COMX) synchronous serial boards support (NEW) Support for COMX/CMX/HiCOMX boards (NEW) Support for LoCOMX board (NEW) Support for MixCOM board (NEW) Support for HDLC and syncPPP protocols on MultiGate boards (NEW) Support for Frame Relay on MultiGate boards (NEW) Etinc PCISYNC serial board support (EXPERIMENTAL) (NEW) FarSync T-Series X.21 (and V.35/V.24) cards (NEW) LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards (NEW) Sealevel Systems 4021 support (NEW) SyncLink HDLC/SYNCPPP support (NEW) Generic HDLC driver (NEW) [*] Synchronous Point-to-Point Protocol (PPP) support (NEW) --- X.25/LAPB support is disabled SDL RISCom/N2 support (NEW) Moxa C101 support (NEW) Frame relay DLCI support (NEW) (24) Max open DLCI (NEW) (8) Max DLCI per device (NEW) SDLA (Sangoma S502/S508) support (NEW) [*] WAN router drivers (NEW) Sangoma WANPIPE(tm) multiprotocol cards (NEW) [*] WANPIPE Cisco HDLC support (NEW) [*] WANPIPE Frame Relay support (NEW) [*] WANPIPE X.25 support (NEW) [*] WANPIPE PPP support (NEW) [*] WANPIPE Multi-Port PPP support (NEW) Granch SBNI12 Leased Line adapter support (NEW) [*] Multiple line feature support (NEW) # 以上僅做範例參考﹐如果真的沒此需要﹐不用理會。 PCMCIA network device support ---> [*] PCMCIA network device support # 有用 notebook 嗎﹖不妨考慮這裡的模組﹕ # (我現在是用 desktop ﹐所以沒裝) 3Com 3c589 PCMCIA support 3Com 3c574 PCMCIA support Fujitsu FMV-J18x PCMCIA support NE2000 compatible PCMCIA support # 說實在話﹐支援 Linux 的 PCMCIA 不見得很多﹐ # 或將 NE2000 編為模組﹐ # 日後找 pcnet_cs.o 這個模組來碰碰運氣。 New Media PCMCIA support SMC 91Cxx PCMCIA support Xircom 16-bit PCMCIA support Xircom Tulip-like CardBus support [*] Pcmcia Wireless LAN Aviator/Raytheon 2.4MHz wireless support Xircom Netwave AirSurfer wireless support AT&T/Lucent Wavelan wireless support Aironet 4500/4800 PCMCIA support # 還有無線 PCMCIA 網路卡呢﹗還真不錯。 # 以上都是網路設備的設定﹐ # 看得出來﹐我似乎對它們情有獨鐘﹐ # 或許是因為我是網中人的緣故吧 ^_^ Amateur Radio support ---> [ ] Amateur Radio support # 實在話﹐我也不知道 amateur radio 是什麼﹖ IrDA (infrared) support ---> IrDA subsystem support # 紅外線裝置﹖好玩意哦~~ 一般的 notebook 都有﹐ # 不過﹐我的 Desktop 是沒有的啦。 # 所以我這裡也沒裝﹐僅供參考﹕ --- IrDA protocols IrLAN protocol (NEW) IrNET protocol (NEW) IrCOMM protocol (NEW) [*] Ultra (connectionless) protocol (NEW) [*] IrDA protocol options (NEW) --- IrDA options [*] Cache last LSAP (NEW) [*] Fast RRs (NEW) [*] Debug information (NEW) Infrared-port device drivers ---> --- SIR device drivers IrTTY (uses Linux serial driver) (NEW) IrPORT (IrDA serial driver) (NEW) --- Dongle support [*] Serial dongle support (NEW) ESI JetEye PC dongle (NEW) ACTiSYS IR-220L and IR220L+ dongle (NEW) Tekram IrMate 210B dongle (NEW) Greenwich GIrBIL dongle (NEW) Parallax LiteLink dongle (NEW) Old Belkin dongle (NEW) --- FIR device drivers NSC PC87108/PC87338 (NEW) Winbond W83977AF (IR) (NEW) Toshiba Type-O IR Port (NEW) # 上面這些﹐如果您沒有紅外線線裝置﹐或是用不到﹐大可不理。 ISDN subsystem ---> < > ISDN support # 嗯~~ 現在看來我不會拉 ISDN 線路吧﹖ Old CD-ROM drivers (not SCSI, not IDE) ---> [ ] Support non-SCSI/IDE/ATAPI CDROM drives # 除非您真有老掉牙的 CDROM﹐否則根本不用管它。 Input core support ---> # 如果您有支援 USB HID 的設備﹐可以考慮﹕ Input core support Keyboard support (NEW) Mouse support (NEW) (1024) Horizontal screen resolution (NEW) (768) Vertical screen resolution (NEW) Joystick support (NEW) Event interface support (NEW) # 反正都是模組嘛~~ Character devices ---> [*] Virtual terminal [*] Support for console on virtual terminal # 除非您不想開多個 console ﹐否則一定要選。 <*> Standard/generic (8250/16550 and compatible UARTs) serial support # 現在的通訊埠都使用這類的 UART 晶片組。 [*] Support for console on serial port # 嗯﹗許多 router 或 switch 都是用這個來設定的耶~~ [ ] Extended dumb serial driver options [ ] Non-standard serial port support [*] Unix98 PTY support (256) Maximum number of Unix98 PTYs in use (0-2048) Parallel printer support # 除非您沒有平行埠的印表機﹐否則不要忘了打開。 [*] Support for console on line printer (NEW) # 可以將核心送出來的資訊直接列印哦。 Support for user-space parallel port device drivers # 不確定是什麼﹐反正模組嘛~~ I2C support ---> I2C support I2C bit-banging interfaces (NEW) Philips style parallel port adapter (NEW) ELV adapter (NEW) Velleman K9000 adapter (NEW) I2C PCF 8584 interfaces (NEW) Elektor ISA card (NEW) I2C device interface (NEW) # 老話﹕反正模組嘛~~ # 不過﹐如您不玩那些古怪的玩意﹐應該不用理會啦。 Mice ---> Bus Mouse Support ATIXL busmouse support (NEW) Logitech busmouse support (NEW) Microsoft busmouse support (NEW) <*> Mouse Support (not serial and bus mice) [*] PS/2 mouse (aka "auxiliary device") support C&T 82C710 mouse port support (as on TI Travelmate) PC110 digitizer pad support # 除了預設的兩個保留內建﹐其它都編到模組去了~~ Joysticks ---> [ ] Joystick support --- Input core support is needed for joysticks # 誰說在 Linux 不能玩 GAME 啊﹖連搖桿都有呢﹗ # 不過﹐我確定我不會在 Linux 玩 GAME 的啦 # (我連 Windows 的 GAME 也沒有呢 :-) < > QIC-02 tape support # 非 SCSI 的磁帶機﹖我可沒這些玩意。 Watchdog Cards ---> [ ] Watchdog Timer Support # 看起來是網路重啟的設備﹐雖然我對網路設備都很偏心﹐ # 不過它似乎要內建﹐而且目前也看不出我會用得到﹐ # 也就不管了。 Intel i8x0 Random Number Generator support /dev/nvram support Enhanced Real Time Clock Support Double Talk PC internal speech card support Siemens R3964 line discipline Applicom intelligent fieldbus card support # 以上這些被選﹐都是因為是模組之故。 Ftape, the floppy tape device driver ---> Ftape (QIC-80/Travan) support Zftape, the VFS interface (NEW) (10240) Default block size (NEW) --- The compressor will be built as a module only! [ ] Enable procfs status report (+2kb) (NEW) (Normal) Debugging output --- Hardware configuration (Standard) Floppy tape controllers # 如果您有備份磁帶機﹐可以選擇﹐ # 不過﹐最好看看 help 的說明。 <*> /dev/agpgart (AGP Support) # 現在的顯示卡都是 AGP 的吧﹖ [ ] Intel 440LX/BX/GX and I815/I840/I850 support [ ] Intel I810/I815 (on-board) support [ ] VIA chipset support [ ] AMD Irongate support [*] Generic SiS support [ ] ALI chipset support [ ] Serverworks LE/HE support [*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) 3dfx Banshee/Voodoo3+ 3dlabs GMX 2000 ATI Rage 128 ATI Radeon Intel I810 Matrox g200/g400 # 如果可以編為模組﹐就編進模組。 # 如果確定不會用到特別型號的顯示卡﹐那就不用選擇。 PCMCIA character devices ---> PCMCIA serial device support # 模組嘛~~ Multimedia devices ---> Video For Linux # 有影/音擷取卡嗎﹖不妨試試。 Video For Linux ---> [*] V4L information in proc filesystem (NEW) I2C on parallel port (NEW) --- Video Adapters BT848 Video For Linux (NEW) Mediavision Pro Movie Studio Video For Linux (NEW) Quickcam BW Video For Linux (NEW) CPiA Video For Linux (NEW) CPiA Parallel Port Lowlevel Support (NEW)