Chinaunix
標(biāo)題: 《FreeBSD新手快速入門》第4篇__FreeBSD服務(wù)器之內(nèi)核編譯 [打印本頁(yè)]
作者: freemongolia 時(shí)間: 2007-11-25 14:04
標(biāo)題: 《FreeBSD新手快速入門》第4篇__FreeBSD服務(wù)器之內(nèi)核編譯
《FreeBSD新手快速入門》第4篇__FreeBSD服務(wù)器之內(nèi)核編譯
--------------------------------------------------------------------------------
FreeBSD6.2架設(shè)之內(nèi)核編譯
|
|
Index:
- 簡(jiǎn)介
- Requirements
- Step 1 查看當(dāng)前機(jī)器自檢信息.
- Step 2備份原內(nèi)核文件.
- Step 3 編輯新內(nèi)核描述文件.
- Step 4 啟用磁盤配額.
- Step 5 控制臺(tái)中禁用熱啟動(dòng)
- Step 6 內(nèi)核編譯前后對(duì)比.
- Step 2 編譯后的清理工作.
- F.A.Q.
- Links to other sources
為你自己定制專用的內(nèi)核,加入一些特定功能如QUOTA,禁止控制臺(tái)重啟,聲卡,防火墻等,總之可以自己做到很多適合自己機(jī)器的配置。
[ 本帖最后由 freemongolia 于 2007-11-25 14:29 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:05
Step 1 查看當(dāng)前機(jī)器的自檢信息.
|
|
內(nèi)核編譯最好本地操作,不要遠(yuǎn)程編譯。
要是你修改過(guò)/etc/make.conf文件,一定要還原此文件。
確保/etc/make.conf文件如下
Shell:
cat /etc/make.conf
# added by use.perl 2007-11-24 22:06:09
PERL_VER=5.8.8
PERL_VERSION=5.8.8 |
查看當(dāng)前機(jī)器的自檢信息,取得CPU 內(nèi)存 顯示卡 硬盤 網(wǎng)卡等信息
Shell:
查看/usr/src/Makefile文件,此文件說(shuō)明注意事項(xiàng)和具體操作步驟
Shell:
cd /usr/src/
less /usr/src/Makefile
# For individuals wanting to build from the sources currently on their
# system, the simple instructions are: # # 1.`cd /usr/src'
(or to the directory containing your source tree).
# 2.`make world' # # For individuals wanting to upgrade their sources (even if only a # delta of a few days): # # 1.`cd /usr/src' (or to the directory containing your source tree). # 2.`make buildworld' # 3.`make buildkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). # 4.`make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). # 5.`reboot' (in single user mode: boot -s from the loader prompt). # 6.`mergemaster -p' # 7.`make installworld' # 8.`make delete-old' # 9.`mergemaster' # 10.`reboot' # 11.`make delete-old-libs' (in case no 3rd party program uses them anymore) |
[ 本帖最后由 freemongolia 于 2007-11-25 14:52 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:06
Step 2 備份當(dāng)前內(nèi)核描述文件.
|
|
查看當(dāng)前機(jī)器內(nèi)核描述文件
Shell:
備份當(dāng)前機(jī)器內(nèi)核描述文件
復(fù)制/usr/src/sys/i386/conf/GENERIC文件到/etc/WOW (WOW表示你自定義的名稱)
Shell:
cp /usr/src/sys/i386/conf/GENERIC /etc/WOW |
創(chuàng)建一個(gè)鏈接到/usr/src/sys/i386/conf/GENERIC/目錄
Shell:
cd /usr/src/sys/i386/conf/
ln -s /etc/WOW /usr/src/sys/i386/conf/ |
[ 本帖最后由 freemongolia 于 2007-11-25 14:52 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:06
編輯內(nèi)核描述文件
添加磁盤配額、禁用控制臺(tái)中的熱啟動(dòng)、等功能
編輯內(nèi)核描述文件,vi /usr/src/sys/i386/conf/WOW
Shell:
vi /usr/src/sys/i386/conf/WOW |
Editor:
# 具體選項(xiàng)請(qǐng)參考http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/kernelconfig-config.html
ident WOW #內(nèi)核標(biāo)記名稱
增加以下內(nèi)容
options QUOTA #啟用磁盤配額
options SC_DISABLE_REBOOT #在控制臺(tái)禁用CTRL+ALT+DEL鍵
存盤退出
以下2項(xiàng)不要注銷
device scbus # SCSI bus (required for SCSI)
device da # Direct Access (disks)
|
[ 本帖最后由 freemongolia 于 2007-11-25 14:53 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:07
編譯內(nèi)核
根據(jù)/usr/src/Makefile文件方法,進(jìn)行編譯內(nèi)核
1、cd /usr/src (進(jìn)入編譯核心目錄)
Shell:
2、make buildworld(很漫長(zhǎng)的等待大約1小時(shí)左右,有沒(méi)有更漫長(zhǎng)的事情?有。Ports安裝Xorg和Gnome,3天3夜,3天3夜。嗯?好熟悉的旋律……..) (更新版本)
Shell:
3、make buildkernel KERNCONF=你的內(nèi)核描述文件名(default is GENERIC)(下面的WOW是我的內(nèi)核描述文件名稱)
(正式編譯核心大約用時(shí)20分鐘)
Shell:
make buildkernel KERNCONF=WOW |
4、make installkernel KERNCONF=你的內(nèi)核描述文件名(default is GENERIC) (安裝核心大約用時(shí)1分鐘)
Shell:
make installkernel KERNCONF=WOW |
5、reboot (重新啟動(dòng)進(jìn)入單人模式,重啟選擇4;具體操作可以查看第1章忘記root密碼怎么辦)
Shell:
以下幾步為在單人模式下操作mount -u (重新掛載,參數(shù)-u表示掛載后可讀寫)
Shell:
mount -a (掛載全部磁盤,參數(shù)-a表示全部磁盤)
Shell:
cd /usr/src (進(jìn)入編譯核心目錄)
Shell:
mergemaster -p (此命令用來(lái)檢驗(yàn)內(nèi)核描述文件正確性)
Shell:
單人模式#mergemaster -p
*** Comparison complete
Do you wish to delete what is left of /var/tmp/temproot?[no] |
make installworld(安裝所有新的系統(tǒng)源代碼,大約用時(shí)3分鐘)
Shell:
mergemaster
系統(tǒng)詢問(wèn)是否刪除/var/tmp/temproot目錄時(shí),按d鍵進(jìn)行刪除(用來(lái)更新或修改/etc的配置文件)
Shell:
單人模式#mergemaster
How should I deal with this? [Use the existing /var/tmp/temproot]d |
系統(tǒng)提示發(fā)現(xiàn)/etc/rc.d/jail文件與舊的對(duì)比有變化,按鍵盤q鍵退出查看。詢問(wèn)對(duì)新文件怎么處理?按i鍵安裝?還是按d鍵刪除?還是按m鍵?我們沒(méi)有編輯過(guò)的文件就選擇新的,所以按i鍵選擇安裝。
Shell:
*** Displaying differences between ./etc/rc.d/jail and installed version
--- /etc/rc.d/jail
Fri Jan 12 15:42:21 2007
q
How should I deal with this? [Leave it for later]i |
系統(tǒng)提示發(fā)現(xiàn)/etc/hosts文件與舊的對(duì)比有變化,按鍵盤q鍵退出查看。詢問(wèn)對(duì)新文件怎么處理?按i鍵安裝?還是按d鍵刪除?還是按m鍵?我們編輯過(guò)的文件就保留舊的配置,所以按d鍵選擇刪除新的。
Shell:
*** Displaying differences between ./etc/hosts and installed version
--- /etc/hosts
Sun Nov 25 05:21:04 2007
+++./etc/hosts Sun Nov 25 20:29:23 2007
q How should I deal with this? [Leave it for later]d |
系統(tǒng)提示發(fā)現(xiàn)/etc/mote文件與舊的對(duì)比有變化,按鍵盤q鍵退出查看。詢問(wèn)對(duì)新文件怎么處理?按i鍵安裝?還是按d鍵刪除?還是按m鍵?motd的作用就是你登入系統(tǒng)時(shí)出現(xiàn)的那個(gè)歡迎詞,我們看看新的歡迎詞有沒(méi)有變化,所以按i鍵選擇安裝新的。
Shell:
*** Displaying differences between ./etc/motd and installed version
--- /etc/motd
Sun Nov 24 21:22:58 2007
+++./etc/motd
Sun Nov 25 20:29:23 2007
q How should I deal with this? [Leave it for later]i |
要不要?jiǎng)h除/var/tmp/temproot目錄,直接回車就行。
Shell:
Do you wish to delete what is left of /var/tmp/temproot? [no] |
reboot(重啟服務(wù)器)
Shell:
[ 本帖最后由 freemongolia 于 2007-11-25 14:55 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:08
Step 5 內(nèi)核編譯前后對(duì)比.
|
|
激動(dòng)人心的時(shí)刻來(lái)臨了,等了好幾個(gè)小時(shí)后,我們現(xiàn)在要看看是否新內(nèi)核安裝成功了。
內(nèi)核文件大小對(duì)比
編譯后:
Shell:
du -h /boot/kernel
18M /boot/kernel
du -h /boot/kernel/kernel
2.7M /boot/kernel/kernel |
編譯前:
Shell:
du -h /boot/kernel.old/
23M /boot/kernel.old/
du -h /boot/kernel.old/kernel
6.8M /boot/kernel.old/kernel |
內(nèi)核配置文件名稱對(duì)比
編譯前:
Shell:
uname -a
FreeBSD ohaha.3322.org 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 10:40:27 UTC 2007
[email=root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC]root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC[/email] i386
|
編譯后:
Shell:
uname -a
FreeBSD ohaha.3322.org 6.2-RELEASE-p8 FreeBSD 6.2-RELEASE-p8 #0: Sun Nov 25 12:04:05 CST 2007
[email=root@WOW.ohaha.3322.org:/usr/obj/usr/src/sys/WOW i386]root@WOW.ohaha.3322.org:/usr/obj/usr/src/sys/WOW i386[/email]
|
內(nèi)核編譯前后SSH偵聽(tīng)端口協(xié)議對(duì)比
編譯后(去除IPV6支持):
Shell:
netstat -an
tcp4 0 0 *.22 *.* LISTEN |
編譯前:
Shell:
netstat -an
tcp4 0 0 *.22 *.* LISTEN
tcp6 0 0 *.22 *.* LISTEN |
登入時(shí)歡迎信息的對(duì)比
編譯后(顯示更人性化,居然會(huì)有一些操作技巧提示^_^):
Shell:
FreeBSD 6.2-RELEASE-p8 (WOW) #0: Sun Nov 25 12:04:05 CST 2007 Welcome to FreeBSD! Before seeking technical support, please use the following resources:
>.............
You may also use sysinstall( to re-enter the installation and
configuration utility.
Edit /etc/motd to change this login announcement. To obtain a neat PostScript rendering of a manual page, use ``-t'' switch
of the man(1) utility: ``man -t <topic>''.
For example: man -t grep > grep.ps
# Save the PostScript version to a file or
man -t printf | lp
# Send the PostScript directly to printer |
編譯前:
Shell:
Welcome to FreeBSD! Before seeking technical support, please use the following resources:
>……………… |
注:文中所說(shuō)大約XX時(shí)間,是根據(jù)不同的機(jī)器配置會(huì)有出入。主要是看你的CPU,CPU夠強(qiáng)勁,速度就夠快,時(shí)間也就會(huì)少。
編譯內(nèi)核時(shí)CPU和內(nèi)存占用
Shell:
top
CPU states: 92.9% user,0.0% nice,6.7% system,0.4% interrupt,0.0% idle
Mem: 26M Active, 721M Inact, 141M Wired, 200K Cache, 111M Buf, 107M Free
|
[ 本帖最后由 freemongolia 于 2007-11-25 14:49 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:09
內(nèi)核編譯完成后,需要進(jìn)行清理為下次編譯做準(zhǔn)備:
清理編譯內(nèi)核后的臨時(shí)文件
Shell:
cd /usr/obj/
chflags -R noschg *
rm -rf * |
至此內(nèi)核編譯安裝完成。
[ 本帖最后由 freemongolia 于 2007-11-25 14:28 編輯 ]
作者: freemongolia 時(shí)間: 2007-11-25 14:37
FreeBSD使用手冊(cè)
FreeBSD使用手冊(cè)_內(nèi)核配置
[ 本帖最后由 freemongolia 于 2007-11-25 14:50 編輯 ]
作者: pw東升 時(shí)間: 2007-11-25 15:47
內(nèi)核編譯最好本地操作,不要遠(yuǎn)程編譯。
如果機(jī)子已經(jīng)托管又不好到機(jī)房中升級(jí),也不能通過(guò)遠(yuǎn)程編譯嗎?
作者: bcpxqz 時(shí)間: 2007-11-25 19:50
太謝謝啦,這系列的教程講得很詳細(xì)哦,解答了我的很多疑惑,在這以前我都是通過(guò)搜索引擎和論壇一點(diǎn)點(diǎn)的搜索來(lái)解決學(xué)習(xí)中遇到的問(wèn)題。
我想既然是針對(duì)新手的,最好授之于魚不如授只于漁,我更想學(xué)好這個(gè)系統(tǒng)來(lái)滿足實(shí)際需要。
很可惜的是學(xué)校圖書館里FreeBSD方面的書籍太少,沒(méi)有入門的,想學(xué)習(xí)只有看大家的教程和手冊(cè),感覺(jué)沒(méi)有什么條理性(除了手冊(cè),畢竟我這樣的新手看手冊(cè)是有點(diǎn)吃力的),效率也很低,往往遇到一個(gè)問(wèn)題,要花上一個(gè)下午的時(shí)間去搜索問(wèn)題的解決方法。在douban里搜索FreeBSD方面的書籍似乎很少(圖書館里linux倒是很多)。
要是大俠們能說(shuō)說(shuō)自己學(xué)習(xí)的心得就好了,有沒(méi)有比較好的書籍推薦給我們,謝謝!
作者: tecer 時(shí)間: 2007-11-25 20:06
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: huzi1986 時(shí)間: 2007-11-26 14:48

作者: liwei6998 時(shí)間: 2007-11-26 17:08
太厲害了,十分感謝。!
作者: snow888 時(shí)間: 2007-11-26 17:23
已經(jīng)轉(zhuǎn)成 pdf 格式,請(qǐng)大家自己下載。
-
-
FreeBSD新手入門之內(nèi)核編譯篇.pdf
2007-11-26 17:23 上傳
點(diǎn)擊文件名下載附件
453.5 KB, 下載次數(shù): 533
作者: freemongolia 時(shí)間: 2007-11-26 21:43
原帖由 snow888 于 2007-11-26 17:23 發(fā)表 
已經(jīng)轉(zhuǎn)成 pdf 格式,請(qǐng)大家自己下載。
---------------------------------------------------------------
同學(xué)感謝您制作成PDF,可是為啥偶下載了打開(kāi)看。全是空白的呢?文字不全,版式也亂成一堆了呀。
上一張圖請(qǐng)您看看。能不能再給調(diào)一下呢?
-
pdf.JPG
(67.91 KB, 下載次數(shù): 106)
下載附件
2007-11-26 21:43 上傳
作者: snow888 時(shí)間: 2007-11-27 09:28
原帖由 freemongolia 于 2007-11-26 21:43 發(fā)表 
---------------------------------------------------------------
同學(xué)感謝您制作成PDF,可是為啥偶下載了打開(kāi)看。全是空白的呢?文字不全,版式也亂成一堆了呀。
上一張圖請(qǐng)您看看。能不能再給調(diào)一下呢?
暈!
我是在 Linux 下面做的,這個(gè)! 這個(gè)!
???????
Linux 下面能看到,Windows 下面看不見(jiàn)中文字符。
我好像是選的文鼎宋體 18030,是不是得改一下字庫(kù)。我再看看,不行我再制作一次。
作者: tt2nn 時(shí)間: 2007-11-28 08:05
我在ubuntu下也看不到,估計(jì)是字庫(kù)的問(wèn)題了。
作者: amude888 時(shí)間: 2007-12-02 18:04
如果按照這個(gè)方案編譯pcbsd可行不?pcbsd的make.conf和這個(gè)不一樣的.
[ 本帖最后由 amude888 于 2007-12-2 18:06 編輯 ]
作者: cnleon 時(shí)間: 2007-12-03 10:26
make buildworld LZ我一般是去掉這步的,直接運(yùn)行下面2步,請(qǐng)問(wèn)具體有點(diǎn)什么區(qū)別呢
make buildkernel KERNCONF=WOW
make installkernel KERNCONF=WOW
作者: bloodfoxs 時(shí)間: 2007-12-03 10:53
同上。。
make buildworld的作用是什么。。?
作者: 2599qiang 時(shí)間: 2007-12-03 21:52
頂了。。寫的不錯(cuò)。。。。有這個(gè)文章,學(xué)習(xí)起來(lái)很快。。半年多時(shí)間LINUX我才做到這一步的。。。。FREEBSD和LINUX看來(lái)沒(méi)什么區(qū)別。。但是更簡(jiǎn)單,就是內(nèi)核加SHELL。。
作者: cu_newuser 時(shí)間: 2007-12-07 09:31
謝謝樓主!我正需要這方面的資料。
請(qǐng)樓主把PDF文檔亂碼的問(wèn)題解決一下,謝謝!
作者: hjk857 時(shí)間: 2007-12-07 09:56
:wink: 請(qǐng)問(wèn)有沒(méi)有.PDF格式的文件下載呀?
作者: arbiter_2012 時(shí)間: 2007-12-07 17:16
謝謝樓主的辛苦奉獻(xiàn)
作者: powerv_cu 時(shí)間: 2007-12-08 03:51
沒(méi)什么好說(shuō)的了,一定要頂。
作者: 451763407 時(shí)間: 2007-12-26 18:45
這個(gè)不錯(cuò),按這不愁步驟基本完成了,
不過(guò)還是有不明白的,有些步驟地方?jīng)]有能執(zhí)行 比如說(shuō)MAKE INSTALLWORLD
作者: arust 時(shí)間: 2008-03-02 17:58
1、cd /usr/src (進(jìn)入編譯核心目錄)
2、make buildworld
3、make buildkernel KERNCONF=你的內(nèi)核描述文件名(default is GENERIC)
4、make installkernel KERNCONF=你的內(nèi)核描述文件名(default is GENERIC)
為什么操作手冊(cè)上只寫了這三步?
進(jìn)入 /usr/src 目錄:
# cd /usr/src
編譯內(nèi)核:
# make buildkernel KERNCONF=MYKERNEL
安裝新內(nèi)核:
# make installkernel KERNCONF=MYKERNEL
作者: 杜比環(huán)繞聲 時(shí)間: 2008-03-02 18:15
make buildworld 的作用是建立FreeBSD系統(tǒng)工具集,如果是定制內(nèi)核的話,不需要做make buildworld
作者: hy0kl 時(shí)間: 2008-05-21 14:53
Question:
參考手冊(cè),在同步了系統(tǒng)源碼之后,再重新編譯系統(tǒng)源碼安裝新系統(tǒng),然后再切到單用戶模式下運(yùn)行 mergemaster 命令來(lái)做新重構(gòu)系統(tǒng)后的一些更新后的工作.
如只是調(diào)整了當(dāng)前系統(tǒng)的內(nèi)核某些參數(shù),比較加上對(duì)聲卡的支持,去掉 IPV6,加磁盤配額,去掉多余的網(wǎng)卡驅(qū)動(dòng)等,也要切到單用戶模式下運(yùn)行 mergemaster 命令嗎?
我之前在虛擬機(jī)上編譯過(guò)系統(tǒng)內(nèi)核,并沒(méi)有運(yùn)行 mergemaster,但系統(tǒng)可以正常運(yùn)行;但從 6.2 升級(jí)到 6.3 時(shí)是完全參看手冊(cè)的,能夠順利的升級(jí).
作者: andrew_young 時(shí)間: 2008-06-06 15:27
頂,我跟著handbook編譯的內(nèi)核,看lz這里比handbook更多步驟。
作者: yuyinyuyin664 時(shí)間: 2008-06-13 10:29
標(biāo)題: 非常不錯(cuò)
對(duì)初學(xué)很有用哦~
收藏了~
作者: happy1123 時(shí)間: 2008-06-13 10:38
下沉很深的帖子都能頂起來(lái)
作者: ttleezhaoyu 時(shí)間: 2008-06-16 14:47

作者: ChestHair 時(shí)間: 2008-12-28 00:21
頂起來(lái)。。。。讓大家多看下
作者: ycxm 時(shí)間: 2009-02-25 15:08
!!!!
作者: wangbin 時(shí)間: 2009-03-02 00:19
樓主寫了很多廢話,如果不是跨版本沒(méi)有必要折騰。
作者: sev7eno 時(shí)間: 2009-04-14 12:51
非常感謝~很有用~
作者: xhw1910 時(shí)間: 2009-04-17 12:54
原帖由 wangbin 于 2009-3-2 00:19 發(fā)表 
樓主寫了很多廢話,如果不是跨版本沒(méi)有必要折騰。
看來(lái)閣下是位高手,也沒(méi)見(jiàn)有何貢獻(xiàn)。
我相信樓主之所以寫那么多你認(rèn)為的“廢話”,是因?yàn)橹牢覀冃率中枰裁础?hr noshade size="2" width="100%" color="#808080">
作者: linuxsun.cn 時(shí)間: 2009-04-18 14:15
呵,,,不錯(cuò)啊。
作者: freeman_super 時(shí)間: 2009-08-14 11:32
我電腦里面/etc目錄下沒(méi)有make.conf文件
這3個(gè)目錄下面有
/usr/share/examples/etc/make.conf
/usr/src/share/examples/etc/make.conf
/usr/ports/ports-mgmt/portmk/files/make.conf
作者: easybegin 時(shí)間: 2009-08-14 13:49
謝謝樓主,已經(jīng)收藏
歡迎光臨 Chinaunix (http://www.72891.cn/) |
Powered by Discuz! X3.2 |