(1)安裝redhat9.0,如果你能夠把glibc更新到2.3,其他老版本的rh也可以.
(2)到kernel.org下載最新的kernel 2.6.0-test4
(3)編譯內核,2.6內核編譯命令變化不大,只是不用make dep了,而且屏幕顯示也簡捷了好多:
# make menUConfig
# make
# make modules_install
# make install
這樣就可以了
然後運行lilo
(4)2.6內核的module改變很大,所以要安裝更新過的modutils,否則lsmod/modprobe都不能用了
地址: FTP://ftp.kernel.org/pub/Linux/kernel/peo.../rusty/modules/
我是拉了個src rpm,
#rpmbuild --rebuild modutils-xxx-.src.rpm
然後到/usr/src/redhat/RPMS/i386下面去找哪個rpm文件升級就可以.
(5)重新起動~~,選擇新的內核 開始祈禱~~念 "剝落菠蘿密" 100遍就夠了.
(6)看看起動的時候有什麼錯誤,因地制宜的解決之~~~一般多是模塊問題,我為了偷懶,重要的模塊都編譯到核心了.
(7)現在你的rpm可能用不來了,沒關系,在運行rpm之前
eXPort LD_ASSUME_KERNEL=2.2.5
就可以了.也可以加入/etc/profile,一勞永逸.
(8)接下來轉換/etc/modules.conf文件了
generate-modprobe.conf /etc/modprobe.conf (基本沒用,如果你都編譯到核心了的話)
(9)創建Sysfs,抄襲自老外的,基本也是可有可無,因為偶還不知道Sysfs是什麼di干活~~~.
Sysfs file system
Step 1:
Create Directory /sys.
Step 2:
Where it says:
mount -f /proc
in /etc/rc.sysinit, add:
mount -f /sys
on the next line.
Step 3:
Where it says:
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
in /etc/rc.sysinit, add:
action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
on the next line.
Step 4:
Add:
none /sys sysfs defaults 0 0
to /etc/fstab.
Step 5:
In function halt_get_remaining in file /etc/init.d/halt, change
awk '$2 ~ /^\/$^\/proc^\/dev/{next}
into
awk '$2 ~ /^\/$^\/proc^\/sys^\/dev/{next}
(10)tmd辛辛苦苦做這麼多干什麼?用kernel2.6的核心線程支持功能!!
趕快寫個程序測試一把~~
[myPHP]
#include <stdio.h>
#include <pthread.h>
void task(void* p){
// ?while(true){
int i;
for(i = 0;i <100;i ++){
?sleep(2);
?printf("Thread running!\n");
?}
}
int main(){
#define THREAD_COUNT 100
?pthread_t thread[THREAD_COUNT];
?int i;
?for(i = 0;i < THREAD_COUNT;i++){
? ?if(pthread_create(&thread[i],NULL,task,NULL) != 0){
? ? ?fprintf(stderr,"Thread[%d] create failed!\n",i);
? ?}
?}
?for(i=0;i<THREAD_COUNT;i++){
? ?if(pthread_join(thread[i],NULL)!=0)
? ? ?fprintf(stderr,"Thread[%d] Join Error\n", i);
? ?else{
? ? ?fprintf(stdout,"Thread[%d] exited ok!\n",i);
? ?}
?}
?return 0;
}
[/myphp]
編譯: gcc testThread.c -lpthread -Wall -o testThread
運行: ./testThread
測試: ps aux grep testThread 應該只有一個process
ps -Am 應該顯示一大堆thread!!!!
現在總算可疑用上真正的核心線程喽~~~~
趕快編譯apache,用worker模塊好爽啊~~~~
(10.5) 如果你要編譯其他的程序,記得改動/usr/include/linux
# cd /usr/include
# mv linux linux.orig
# ln -s /usr/src/linux/include/linux linux
否則apache什麼的編譯了,運行會出錯
(11)順便說一下,用2.6核心跑xwindow順暢多了,為什麼??kernel2.6支持競爭式的進程調度規則了!!就是說,有點象windows了.
這個功能可以在編譯內核的時候選擇的.
(12) 等其他人來補充~~~