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