【linux操作系统内核创始人】升级Linux操作系统内核奋斗记
【shitiku.jxxyjl.com--Linux交流指导】
升级linux内核奋斗记 我的piii dell机运行着内核2.4.的redhat,自从linux内核2.6发布以来一直想把该系统升级到内核2.6。经过一番艰辛万苦,终于成功了。为了体验一下在linux下编写多线程程序的步骤,又更新gcc和c语言库。在此愿和各位朋友共享这段经历,共享这段成果。(可能有记录错误,仅供参考)。 具体步骤包括以下内容: 1,升级内核的具体步骤 2,更新gcc 3,使用glibc2.3.5 4,使用nptl线程进行编程 在此之前,先简要地介绍一下linux内核2.6所做的改进及新增功能。linux2.6主要在以下的10个方面作了很大的改进,简单概括如下,有关详细情况,请参阅相关资料。 1)通过改善并行处理能力和采用posix线程等,提高了系统的处理能力,从而linux真正具备大型信息系统所要求性能。 2)通过改善文件系统的输出/输入能力和提高对大容量内存的利用效率,使得linux能够更胜任大型信息系统中的数据处理。 3)加强了对数据库应用程序的支持。 4)提高了抗系统高负荷时能力。 5)提高了系统的可用性,包括对不停机时备份和不停机时更换硬件功能的支持。 6)强化了对网络的支持,增加了对ipv6, sctp, ipsec,等的支持。 7)通过增加访问控制和内核暗号化技术,提高了系统的安全性。 8)强化了对电源的管理。 9)强化了对嵌入式cpu和系统的支持。 10)添加了更多的硬件驱动程序。 一.升级内核 1, 下载linux-2.6.3.tar.bz2(可以是更新的版本)到/usr/src bzcat linux-2.6.3.tar.bz2 | tar xvf – cd linux-2.6.3 阅读readme及changes 文件,确认必须的工具软件。因为不是笔记本电脑和笔记本电脑有关的软件可以忽略。发现module-init-tools需要更新。 2,下载module-init-tools-0.9.13.tar.bz2 bzcat module-init-tools-0.9.13.tar.bz2 | tar xvf – cd module-init-tools-0.9.13 ./configure --prefix=/usr/local/module-init make make moveold make install /usr/local/module-init/sbin/generate-modpobe.conf > /etc/modprobe.conf 成功。 3, 编译linux内核 cd /usr/src/linux-2.6.3 make menuconfig 一看太麻烦了,而且许多选项不知所云。退出该程序。 执行make oldconfig,对kernel2.6新增的不熟悉的选项作不选或为缺省。 make bzimage make modules modules_install pwd /usr/src/linux-2.6.3 mv arch/i386/boot/bzimage /boot/bzimage2.6.3 mv system.map /boot/system.map-2.6.3 cd /boot mv system.map oldsystem.map ln –s system.map-2.6.3 system.map 4,建立sys目录 mkdir /sys 5, 修改相关文件,增加对sys的支持 在/etc/rc.d/rc.sysinit文件增加对sys的支持。 1) 找到mount –f /proc的行,在其下面,增加 mount –f /sys 2) 找到 action $ “mounting proc filesystem:” mount –n –t proc /proc /proc 在其下面,增加action $ “mounting sysfs filesystem:” mount –n –t sysfs /sys /sys. 3) 把文件中的 ksyms 改成 kallsyms 在/etc/fstab文件中,增加一行: none /sys sysfs defaults 0 0 在/etc/rc.d/init.d/halt中,增加对sys的支持,把 awk ‘$2 ~/^/$ | ^/proc | ^/dev / {next} 变为: awk ‘$2 ~/^/$ | ^/proc | ^/sys | ^/dev / {next} 6,启动 修改/etc/lilo.conf, 增加下面的设置 … image=/boot/bzimange2.6.3 label=linux2.6.3 read-only root=/dev/hda3(由自己的pc设置决定) 成功。 二,更新gcc (因为gcc2.95.3无法编译glibc-2.3.5) 下载gcc-3.4.4.tar.bz2 bzcat gcc-3.4.4.tar.bz2 | tar xvf – cd gcc-3.4.4 ./configure –prefix=/usr/local/gcc344 –enable-shared –enable-threads –enable-threads=posix –enable-languages=c,c++,f77 make bootstrap (因为使用cflags选项时,出错了,所以省略) make install ln –s /usr/local/gcc344/bin/gcc /usr/bin/gcc 三,使用glibc-2.3.5 1)、通过调查发现要编译glibc-2.3.5,要求binutils在2.13以上。所以必须安装binutils-2.14 下载binutils-2.14.tar.gz tar zxpvf binutils-2.14.tar.gz mkdir binutils-build cd binutils-build ../binutils-2.14/configure –prefix=/usr –enable-shared make tooldir=/usr make check make tooldir=/usr install cp ../binutils-2.14/include/libiberty.h /usr/include 2) 安装glibc-2.3.5 下载 glibc-2.3.5.tar.gz 和 glibc-2.3.5-fix_test-1.patch tar zxpvf glibc-2.3.5.tar.gz patch –np1 –i ../glibc-2.3.5-fix_test-1.path mkdir glibc-build cd glibc-build ../glibc-2.3.5/configure –prefix=/usr/local/glibc235 –enable-add-ons=linuxthreads –enable-kernel=2.6.0 (若安装在/usr目录下,很危险,可能会损坏你的系统) make make check (必须执行的一步) make localedata /install-locales (对应各国文字) mkdir /usr/man/man3(man的安装路径) make –c ../glibc-2.3.5/linuxthreads/man install 上面的安装完成以后,最好把/usr/local/glibc235/lib和/usr/local/glibc235/include加入到系统的路径中,这样在编译程序时,就不必指定库和header文件的路径了。 四、使用nptl进行线程编程 #include #include #include #include void thread_fun(void * arg); char message[] = “i am created thread”; int main() { int rnt; pthread_t new_thread; void *thread_result; rnt=pthread_create(&new_thread,null, thread_fun, (void*) message); if (rnt != 0) { perrer (“thread creation failed”); exit(exit_failure); } printf(“waiting for other thread to finish…”); rnt = pthread_join(new_thread, &thread_result); if (rnt != 0) { perrer (“thread join failed”); exit(exit_failure); } printf(“thread join, it returned %s ”, (char*) thread_result); printf(“message now %s”, message); exit(exit_success); } void *thread_fun (void * arg) { printf(“the new thread is running. argument was %s”,(char*)arg); sleep(3); strcpy(message, “bye”); pthread_exit(“thank you for the test”); } 编译 gcc -d_reentrant test_thread.c -o test_thread -lpthread ./test_thread 成功了。本文来源:https://shitiku.jxxyjl.com/linuxjiaoliuzhidao/6764.html
相关试题
- 四川麻将实战经验分享一|认证实战经验分享:一个新手RHCE的酸甜苦辣
- [linux系统内核参数配置优化]Linux系统配置与优化经验谈
- 【德州高手的心得】高手攻关心得:RHCE实战详细经验
- linux是什么操作系统|绝对好用Linux操作系统的8个经典技巧
- [ubuntulinux操作系统与实验教程]学习UbuntuLinux操作系统过程和经验
- 【linux安全基线配置】浅谈Linux优化及安全配置个人体会总结
- [linux 网络安全]Linux网络安全之经验谈(3)
- linux学习路线图_LINUX学习高手经验之谈
- linux系统就业方向|关于Linux系统学习的方向以及方法浅谈
- 【linux 网络安全】Linux网络安全之经验谈(2)
-
[linux 网络安全]Linux网络安全之经验谈(3)详细阅读
关于su命令 如果你不想任何人能够su为root的话,你应该编辑 etc pam d su文件,加下面几行: auth sufficient lib- security pam_rootok- so debug auth required lib- secur...
-
linux学习路线图_LINUX学习高手经验之谈详细阅读
现在好多的人开始接触电脑的时候,见到的应该是windows98说实话,98 已经是一个很人性化,封装的很好的一个系统了一个对电脑一窍不通的人都能很快的使用它。这样很多人对 电脑的印象和那些和我一样一开始接触的是dos人是绝然不同的。在dos时代,如果你对电脑的基础知识不懂的...
-
linux系统就业方向|关于Linux系统学习的方向以及方法浅谈详细阅读
学习方向: 一、桌面系统 就是系统安装好后的视窗系统,在windows下叫windows,在linux下叫 x windows,其实只是名字不一样而已(看看红旗做的桌面,真是跟windows要做象有多象,这样虽然有助于linux桌面的使用,但对于linux系统的推广真是没什么...
-
【linux 网络安全】Linux网络安全之经验谈(2)详细阅读
关于telnet 如果你希望用户用telnet远程登录到你的服务器时不要显示操作系统和版本信息(可以避免有针对性的漏洞攻击),你应该改写 etc inetd conf中的一行象下面这样: telnet stream tcp nowait root usr sbin tcpd...
-
linux 网络安全_Linux网络安全之经验谈(4)详细阅读
关于用户资源 对你的系统上所有的用户设置资源限制可以防止dos类型攻击,如最大进程数,内存数量等。例如,对所有用户的限制, 编辑 etc security limits con加入以下几行: * hard core 0 * hard rss 5000 * hard npr...
-
【linux查看服务器硬盘】优化Linux服务器硬盘性能的七个实用技巧详细阅读
所有的文件系统随着时间的推移都趋向于碎片化。linux文件系统减少了碎片化,但是并没有消除。由于它不经常出现,所以对于一个单用户的工作站来说,可能根本不是问题。然而在繁忙的服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能只有从硬盘读出或写入数据时才能注意到。下面是优化li...
-
[linux 网络安全]Linux网络安全之经验谈(5)详细阅读
关于日志 所有的日志都在 var log下(仅对linux系统而言),默认情况下linux的日志就已经很强大了,但除ftp外。因此我们可以通过修改 etc ftpaccess 或者 etc inetd conf,来保证每一个ftp连接日志都能够纪录下来。下面是一个修改inetd ...
-
【linux传文件到linux】Linux认证--Linux文件权限的设置技巧详细阅读
windows系统其实和linux系统有相似的地方,windows系统文件、目录的属性有只读、隐藏,而linux也一样。 linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。 所谓...
-
【linux实训心得】技巧心得:Linux技巧小总结详细阅读
1、处理特殊的文件名 假设linux系统中有一个文件名叫-aaa,如果我们想对它进行操作,例如现在要删除它,如果我们按照一般的删除方法在命令行中输入rm -aaa命令,界面将会提示我们是无效选项(invalid option),原来由于文件名的第一个字符为 - ,linux把文件名当作选项了,我...
-
初学linux用什么系统_Linux系统初学之学习方向和方法浅谈详细阅读
学习方向: 一、桌面系统就是系统安装好后的视窗系统,在windows下叫windows,在linux下叫 x windows,其实只是名字不一样而已(看看红旗做的桌面,真是跟windows要做象有多象,真 晕,这样虽然有助于linux桌面的使用,但对于linux系统的推广真是没什么...