亲爱的网友们,大家好,相信很多人对升级Linux操作系统内核奋斗记和arm开发板升级glibc的方法都不是特别了解,因此今天我来为大家分享一些关于升级Linux操作系统内核奋斗记和arm开发板升级glibc的方法的知识,希望能够帮助大家解决一些困惑。

本文目录一览

升级Linux操作系统内核奋斗记

升级linux内核奋斗记我的piiidell机运行着内核2.4.的redhat,自从linux内核2.6发布以来一直想把该系统升级到内核2.6。经过一番艰辛万苦,终于成功了。为了体验一下在linux下编写多线程程序的步骤,又更新gcc和c语言库。在此愿和各位朋友共享这段经历,共享这段成果。(可能有记录错误,仅供参考)。具体步骤包括以下内容:1,升级内核的具体步骤2,更新gcc3,使用glibc2.3.54,使用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/srcbzcatlinux-2.6.3.tar.bz2|tarxvf–cdlinux-2.6.3阅读readme及changes文件,确认必须的工具软件。因为不是笔记本电脑和笔记本电脑有关的软件可以忽略。发现module-init-tools需要更新。2,下载module-init-tools-0.9.13.tar.bz2bzcatmodule-init-tools-0.9.13.tar.bz2|tarxvf–cdmodule-init-tools-0.9.13./configure--prefix=/usr/local/module-initmakemakemoveoldmakeinstall/usr/local/module-init/in/generate-modpobe.conf>/etc/modprobe.conf成功。3,编译linux内核cd/usr/src/linux-2.6.3makemenuconfig一看太麻烦了,而且许多选项不知所云。退出该程序。执行makeoldconfig,对kernel2.6新增的不熟悉的选项作不选或为缺省。makebzimagemakemodulesmodules_installpwd/usr/src/linux-2.6.3mvarch/i386/boot/bzimage/boot/bzimage2.6.3mvsystem.map/boot/system.map-2.6.3cd/bootmvsystem.mapoldsystem.mapln–ssystem.map-2.6.3system.map4,建立sys目录mkdir/sys5,修改相关文件,增加对sys的支持在/etc/rc.d/rc.sysinit文件增加对sys的支持。1)找到mount–f/proc的行,在其下面,增加mount–f/sys2)找到action$“mountingprocfilesystem:”mount–n–tproc/proc/proc在其下面,增加action$“mountingsysfsfilesystem:”mount–n–tsysfs/sys/sys.3)把文件中的ksyms改成kallsyms在/etc/fstab文件中,增加一行:none/syssysfsdefaults00在/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.3label=linux2.6.3read-onlyroot=/dev/hda3(由自己的pc设置决定)成功。二,更新gcc(因为gcc2.95.3无法编译glibc-2.3.5)下载gcc-3.4.4.tar.bz2bzcatgcc-3.4.4.tar.bz2|tarxvf–cdgcc-3.4.4./configure–prefix=/usr/local/gcc344–enable-shared–enable-threads–enable-threads=posix–enable-languages=c,c++,f77makebootstrap(因为使用cflags选项时,出错了,所以省略)makeinstallln–s/usr/local/gcc344/bin/gcc/usr/bin/gcc三,使用glibc-2.3.51)、通过调查发现要编译glibc-2.3.5,要求binutils在2.13以上。所以必须安inutils-2.14下载binutils-2.14.tar.gztarzxpvfbinutils-2.14.tar.gzmkdirbinutils-buildcdbinutils-build../binutils-2.14/configure–prefix=/usr–enable-sharedmaketooldir=/usrmakecheckmaketooldir=/usrinstallcp../binutils-2.14/include/libiberty.h/usr/include2)安装glibc-2.3.5下载glibc-2.3.5.tar.gz和glibc-2.3.5-fix_test-1.patchtarzxpvfglibc-2.3.5.tar.gzpatch–np1–i../glibc-2.3.5-fix_test-1.pathmkdirglibc-buildcdglibc-build../glibc-2.3.5/configure–prefix=/usr/local/glibc235–enable-add-ons=linuxthreads–enable-kernel=2.6.0(若安装在/usr目录下,很危险,可能会损坏你的系统)makemakecheck(必须执行的一步)makelocaledata/install-locales(对应各国文字)mkdir/usr/man/man3(man的安装路径)make–c../glibc-2.3.5/linuxthreads/maninstall上面的安装完成以后,最好把/usr/local/glibc235/lib和/usr/local/glibc235/include加入到系统的路径中,这样在编译程序时,就不必指定库和header文件的路径了。四、使用nptl进行线程编程#include#include#include#includevoidthread_fun(void*arg);charmessage[]=“iamcreatedthread”;intmain(){intrnt;pthread_tnew_thread;void*thread_result;rnt=pthread_create(&new_thread,null,thread_fun,(void*)message);if(rnt!=0){perrer(“threadcreationfailed”);exit(exit_failure);}printf(“waitingforotherthreadtofinish…”);rnt=pthread_join(new_thread,&thread_result);if(rnt!=0){perrer(“threadjoinfailed”);exit(exit_failure);}printf(“threadjoin,itreturned%s”,(char*)thread_result);printf(“messagenow%s”,message);exit(exit_success);}void*thread_fun(void*arg){printf(“thenewthreadisrunning.argumentwas%s”,(char*)arg);sleep(3);strcpy(message,“bye”);pthread_exit(“thankyouforthetest”);}编译gcc-d_reentranttest_thread.c-otest_thread-lpthread./test_thread成功了。

返回目录

arm开发板升级glibc的方法

ld和libc库必须同时升级,否则这两者不匹配会引起各种执行程序报错
一、先把新版本的ld-2.xx.so、libc-2.xx.so一起放入/lib目录,并注意赋予执行权限
二、删掉指向旧版本的软链接rmld-linux-aarch64.so.1libc.so.6
三、这时所有的命令都是不能用的。同时恢复ld-linux、libc的软链接指向新版本
LD_PRELOAD="/lib/libc-2.26.so/lib/ld-2.26.so"/bin/ln-s/lib/ld-2.26.so/lib/ld-linux-aarch64.so.1
LD_PRELOAD="/lib/libc-2.26.so/lib/ld-2.26.so"/bin/ln-s/lib/libc-2.26.so/lib/libc.so.6
这时候,虽然大部分busybox命令都可以执行了,但是像dropbear、dmesg这些部分功能还是不正常的,因为还有libnss_dns、libnss_file、libpthread、libresolv、libdl、libanl、libcrypt、libm、libnsl、librt、libutil这些库需要跟libc库同步升级

返回目录

总结:以上就是本站针对你的问题搜集整理的答案,希望对你有所帮助。如果您想更深入地了解相关内容,可以查看文章下方的相关链接。