FreeBSD kernel compile....



贊助商連結


wangcm
2013-03-31, 10:59 AM
最近因為工作須要在一台DL380G8上裝FreeBSD 9.1 32bit版,可是9.1內建的dev/bge對DL380G8上的BCM5719有點水土不服(一直link up/link down:|||:),所以網路根本不能用,網路上是有找到應該可以解決問題的kernel source,可是compile時卻發生讓鵝啼笑皆非的狀況了,因為FreeBSD預設會把沒有static link進去的部份全部compile成module,所以鵝要compile時一直被卡在dev/aha(應該是指超古老的AHA1542系列吧,包括原版的kernel source配上GENERIC也會發生一樣的狀況:|||:),請問一下有沒有網友知道怎麼讓FreeBSD的GCC忽略掉warning而不要當成error直接abort掉,或是如何改config直接忽略掉用不到的module啊(因為鵝在FreeBSD 9.1 X86-64版上是可以compile成功的,可是user的AP指定要在32bit上就是了:|||::|||:)....

贊助商連結


wangcm
2013-03-31, 10:44 PM
鵝後來無意中發現,只要開了PAE就compile不起來(應該說是開PAE時,ISA相關的部份就會出問題,可是鵝試著把EISA/ISA相關部份全部mark掉還是會compile成module,所以一樣compile不起來:|||:),不開PAE就沒事(X86-64版不會出問題應該就是直接排除所有ISA相關部份所致:p),才發現鵝實在是耍寶,/sys/i386/conf下就有PAE的範例了,花了兩天終於搞清楚FreeBSD和Linux compile kernel有啥不同:p....

1:Linux有UI,而且會順便幫user搞定相依性的問題,FreeBSD要靠user自己step by step搞定config file(不過這一點鵝早就知道了:p)....

2:Linux除非user有明確指定或是因為相依性才會compile進kernel(wether static link or module),不然是不會主動compile的(i.e.正面表列),FreeBSD的話除非user明確指定不要compile,不然是會compile成module的(i.e.負面表列)....

3:FreeBSD的kernel要開PAE的話就只能compile成static link(i.e. module是不work的),所以除非把所有用不到的部份一一負面表列上去,不然就會得到一個很肥的kernel,而且一旦compile成static link,就不太容易控制kernel存取某些resource時的先後次序了:|||:....

以上幾點大家參考參考吧:p:p....

algolee
2013-04-02, 02:26 PM
感謝分享心得

這樣的心得文好像越來越少了

XD