歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

Linux Kernel 2.6 核心線程嘗鮮

  (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) 等其他人來補充~~~





Copyright © Linux教程網 All Rights Reserved