升级Centos6.5安装光盘中的内核
- 格式:docx
- 大小:123.60 KB
- 文档页数:9
CentOS 6.5系统安装文件(提供BT种子下载)#################################################################163网站提供的开源镜像站点/centos/6.5/isos/搜狐网站提供的开源镜像站/centos/6.5/isos/Centos 官方网站提供的开源镜像站点/6.5/163开源镜像:/搜狐开源镜像站点下载/####################################################################下载centos 6.5 iso文件,一共有如下几种类型的iso版本,简单介绍一下:BinDVD版:普通安装版,需安装到计算机硬盘才能用,bin一般都比较大,而且包含大量的常用软件,安装时无需再在线下载(大部分情况)32位:/centos/6.5/isos/i386/CentOS-6.5-i386-bin-DVD1to2.torrent64位:/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1to2.torrent32位:/centos/6.5/isos/i386/CentOS-6.5-i386-bin-DVD1.iso (系统安装光盘) -- 一般只需要安装DVD1,等安装好系统后,再自行安装软件/centos/6.5/isos/i386/CentOS-6.5-i386-bin-DVD2.iso (自带软件光盘)这个可以不安装64位:/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso (系统安装光盘)-- 一般只需要安装DVD1,等安装好系统后,再自行安装软件/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD2.iso (自带软件光盘)这个可以不安装LiveDVD版:就是一个光盘CentOS系统,可通过光盘启动电脑,启动出CentOS系统,也有图形界面,也有终端。
CentOS 6.5 升级openssh 7.1p2本人linux小白一只,最近花了一周在修补漏洞,已经在虚机上测试,亲测可用,吐血分享。
废话少说,直接贴代码。
1、准备工作,相应的包自己到官方下载,另外需要下载依赖包openssl以及zlib包。
openssh下载地址:/portable.html#httpopenssl下载地址:/source/zlib下载地址:/zlib-1.2.8.tar.gz2.1、卸载系统自带的openssh,卸载之前先停止sshd服务.[root@CentOS tmp]# service sshd stop2.2 安装gcc[root@]# rpm –ivh mpfr-2.4.1-6.el6.x86_64.rpm[root@]# rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm[root@]# rpm -ivh kernel-headers-2.6.32-431.el6.x86_64.rpm[root@]# rpm -ivh glibc-headers-2.12-1.132.el6.x86_64.rpm[root@]# rpm -ivh glib2-devel-2.26.1-3.el6.x86_64.rpm[root@]# rpm -ivh libgomp-4.4.7-4.el6.x86_64.rpm[root@]# rpm –ivh ppl-0.10.2-11.el6.x86_64[root@]# rpm –ivh cloog-ppl-0.15.7-1.2.el6.x86_64[root@]# rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm3、安装zlib[root@CentOS ]# tar -xvf zlib-1.2.8.tar.gz[root@CentOS ]# cd zlib-1.2.8[root@CentOS zlib-1.2.8]#build static libraries.../zlib-1.2.8]# ./configure –prefix=/usr/local/zlib.../zlib-1.2.8]# make test.../zlib-1.2.8]# make installbuild shared libraries.../zlib-1.2.8]# make clean.../zlib-1.2.8]# ./configure --shared.../zlib-1.2.8]# make test.../zlib-1.2.8]# make install.../zlib-1.2.8]# cp zutil.h /usr/local/include.../zlib-1.2.8]# cp zutil.c /usr/local/include/usr/local/lib should now contain...libz.alibz.so -> libz.so.1.2.8libz.so.1 -> libz.so.1.2.8libz.so.1.2.8.../zlib-1.2.8]#cp /usr/local/lib/libz.so.1.2.8/ usr/lib64.../zlib-1.2.8]#cp /usr/local/lib/libz.a /usr/lib64.../zlib-1.2.8]#cd /usr/lib64.../zlib-1.2.8]#ln –s libz.so.1.2.8 libz.so.1.../zlib-1.2.8]#ln –s libz.so.1.2.8 libz.so/usr/local/include should now contain...zconf.hzlib.hzutil.h.../zlib-1.2.8]#错误导致不能开机,此步骤不要做。
CentOS6.5下Oracle11g安装完整步骤一、硬件要求本部分内容命令,均以root用户执行。
1、内存建议内存应大于2G以上,1G可以运行,但比较吃力。
内存查看命令:[root@tsp-rls-dbserver /]# cat /proc/meminfo或[root@tsp-rls-dbserver /]# free -mtotal used free shared buffers cachedMem: 32062 1301 30760 0 40 552-/+ buffers/cache: 708 31354Swap: 16095 0 160952、交换分区交换分区大小,通常设为内存的1.5倍以上,也可以根据实际情况进行调整。
交换分区查看命令:[root@tsp-rls-dbserver /]# grep SwapTotal /proc/meminfoSwapTotal: 67682296 kB3、硬盘空间建议数据使用独立的挂载分区,本文中采用/data作为数据分区。
要求/tmp目录空间不小于400M。
磁盘空间查看命令:[root@tsp-rls-dbserver /]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_tsprlsdbserver-lv_root 50G 4.3G 43G 10% /tmpfs 16G 348K 16G 1% /dev/shm/dev/sda1 485M 39M 421M 9% /boot/dev/mapper/vg_tsprlsdbserver-lv_home 210G 190M 199G 1% /home/dev/sdb1 1.1T 4.5G 1.1T 1% /data目录空间大小查看命令:[root@tsp-rls-dbserver tmp]# du -ch /tmp二、软件要求1、安装依赖包建议安装系统时,选择开发库。
CentOS 6.5 安装说明书CenOS 6.5系统安装1.系统版本:CentOS release 6.5 (Final) 64位2.选择“Install system with basic video driver”,点击Enter。
如图:3.选择“Skip”,跳过检查。
按“Tab”键,可以在“Ok”“Skip”之间切换。
点击Enter。
如图4.点击“next”。
如图:5.选择简体中文,点击“Next”。
如图:6.选择“美国英语”,点击“下一步”。
如图:7.选择“基础存储设备”,点击“下一步”。
如图:8.选择“是忽略所有数据”,点击“下一步”,如图:9.输入主机名,例如“Hadoop1”,点击“下一步”,如图注意:在大数据集群中,要把其中一台主机名命名为master,其他机器主机名命名为slave1、slave2、、、10.选择时区,点击“下一步”,如图11.输入根账号密码,点击“下一步”,如图12.如出现下图,请根据提示选择,如图13.选择“创建自定义布局”,点击“下一步”,如图。
14.以下是创建分区。
sda为硬盘名称。
如果系统自动对硬盘进行了分区、布局,请先删除,然后按照以下流程重新创建。
创建/boot分区,大小为200M。
创建swap分区,配置为2048M即可。
创建/分区,把系统磁盘剩余空间全部分给/ 分区。
15.分完区之后点击下一步:会有下面提示,点击格式化,然后点击下一步。
点击“将修改写入磁盘”,格式化完成后点击“下一步”。
16.请确保“引导装载程序”安装在正确的硬盘上。
点击“更换设备”可以选择“引导装载程序”的安装位置。
如下图:图表 1修改步骤:点击“更换设备”后,刚开始看到的或许是这样,请选择“主引导记录(MBR)”:进入“BIOS驱动器顺序”,第一BIOS驱动器选择硬盘这时“主引导记录MBR”变成了下面:点击确定“更换设备”完成。
17.选择“现在自定义”,点击“下一步”。
18.左栏里有“Web服务”,“可扩展文件系统支持”,“基本系统”,“应用程序”,“开发”,“弹性存储”,“数据库”,“服务器”,“桌面”,“系统管理”,“虚拟化”,“语言支持”,“负载平衡器”,“高可用性”14个选项,请按照以下进行选择:(1)“Web服务”,“可扩展文件系统支持”,“基本系统”,“应用程序”,“开发”,“弹性存储”,“服务器”,“桌面”,“系统管理”,“虚拟化”,“负载平衡器”,“高可用性”这几项,分别在其对应的右栏里面的每一项右键点击“选择所有的可选软件包”。
Pxe网络引导安装CentOS-6.5与CentOS-7操作系统关于CentOS-6.5的网络安装,互联网上有很多详细介绍的文章,但对于CentOS-7的网络引导安装却是寥寥无几,即便是有,也几乎没有完整的成功的案例!笔者由于工作需要,计划pxe网络安装这两种操作系统,虽然CentOS-6.5已经有很多人介绍了,但笔者还是决定将它再重复叙述一遍。
当然,本文最有价值的内容是pxe网络安装CentOS-7,且可以启动并使用。
本文的很多截图都是笔者在安装两种操作系统的过程中用手机拍下来的,画面并不是特别清晰(还是可以看的),请读者见谅。
由于工作原因,需要在一台服务器上给所有用户提供Linux操作系统的网络安装服务,即pxe网络安装。
因为物理服务器资源紧张,所以我就使用了Dell OPTIOLEX台式机来提供这种服务,该台式机的配置如下:实际使用时,我给台式机添加了一块网卡(详见我的另外一篇总结《CentOS-6.5 添加第二块网卡》),该台式机运行 CentOS-6.5 的 Workstation 版本,SELinux 与 iptables 均关闭,IP地址参数如下所示:因为办公网络已经有一个DHCP服务器,为避免冲突,使用端口 p4p1 做为 DHCP 服务的监听端口,即需要安装操作系统的终端机必须与端口 p4p1 同属于一个网段,而这个网段原则上要与办公网络互相隔离,端口 em1 连入正常使用的办公网络。
下面我们就开始安装各种服务了哈:1. 安装下面的服务:dhcp、tftp-server、vsftpd、xinetd、syslinux 与 httpd。
Dell台式机用 dhcp 服务给各个终端分配IP地址(通过端口 p4p1 分配),tftp-server 提供 tftp下载服务,vsftpd 提供 Security 的 ftp下载服务,httpd 提供 http下载服务。
执行的命令是:yum -y install dhcp tftp-server vsftpd xinetd syslinux httpd。
1、硬盘分区2、安装过程略3、安装完成,进入win7系统,使用easybcd软件建立centos6.5引导,选择NEOGrub并建立4、重启电脑,选择新建的centos6.5系统,并进入grub,配置centos6.5加载内核问题5、启动,出现错误6、此处/root=/dev/sdc4 应该是root=/dev/sdc4修改后,还有问题,提示路径错误,但分析后路径并没有问题7、解决此处问题,第4步骤应该可以顺利进行,但centos6.5并没有成功运行,在网上查阅centos系列安装双系统资料以上步骤并无问题,现在转回win7进入easybcd,添加linux/BSD 项,并将其设置称自动引导8、进入grub菜单,编辑——将root (hd1,2)改为root(hd0,3)成功进入centos6.5分析easybcd自动添加的引导命令发现它使用UUID,查阅UUID:Linux UUID的作用及意义原因1:它是真正的唯一标志符UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的。
如果你在系统中添加了新的存储设备如硬盘,很可能会造成一些麻烦,比如说启动的时候因为找不到设备而失败,而使用UUID则不会有这样的问题。
原因2:设备名并非总是不变的自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。
如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。
使用UUID对于挂载移动设备也非常有好处──例如我有一个24合一的读卡器,它支持各种各样的卡,而使用UUID总可以使同一块卡挂载在同一个地方。
此处可能是电脑重启之后,启动顺序改变,U盘和硬盘的盘符改变,导致命令不可用,。
Linux Centos6.5利用iso镜像做本地yum源一、用本地文件创建本地yum源1. 创建iso存放目录和挂载目录mkdir /mnt/isomkdir /mnt/cdrom2. 将iso镜像文件上传到/mnt/iso文件夹下3. 将/mnt/iso/下的iso文件挂载到/mnt/cdrom目录mount -o loop /mnt/iso/CentOS-6.5-x86_64-bin-DVD1.iso /mnt/cdrom查看是否挂载成功:df -h二、配置本地yum源准备工作CentOS需要将/etc/yum.rpos. d/目录下的CentOS-Base.repo CentOS-Debuginfo.repo文件进行改名,这样就可以绕过网络进行本地源的安装。
具体命令如下:1 cd /etc/yum.repos.d/2 mv CentOS-Base.repo CentOS-Base.repo1233 mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo1234 mv CentOS-Media.repo CentOS-Media.repo123如果不需要以光盘为源进行软件安装时,只需要将/etc/yum.repos.d目录下的CentOS-Base.repo123和CentOS-Debuginfo.repo123文件改回原来的名字就可以了。
三、配置本地yumcd /etc/yum.repos.d/ #进入yum配置目录vi CentOS-Media.repo #编辑配置文件,添加以下内容[c5-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/file:///mnt/cdrom/file:///media/cdrecorder/gpgcheck=0 #检查GPG-KEY,0为不检查,1为检查enabled=1 #检查GPG-KEY,0为不检查,1为检查gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5四、清除yum缓存,使用yum install自动安装软件1 yum clean all #清除yum缓存2 yum list #显示yum安装包列表。
Centos6.5中安装docker的步骤(简洁版)
Docker 是⼀个开源的应⽤容器引擎,让开发者可以打包他们的应⽤以及依赖包到⼀个可移植的容器中,然后发布到任何流⾏的 Linux 机器上,也可以实现虚拟化。
容器是完全使⽤沙箱机制,相互之间不会有任何接⼝(类似 iPhone 的 app)。
⼏乎没有性能开销,可以很容易地在机器和数据中⼼中运⾏。
最重要的是,他们不依赖于任何语⾔、框架包括系统。
⼀、安装epel源
复制代码代码如下:
wget /epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum clean all
⼆、安装Docker
yum -y install docker-io
三、启动Docker
service docker start
docker -d
四、在Centos 6.5中会提⽰升级内核,除此之外,还有⼀个报错
执⾏ yum upgrade device-mapper-libs 来进⾏升级
docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference。
目录一、硬件要求二、软件三、系统安装注意四、安装Oracle前的系统准备工作五、安装Oracle,并进行相关设置一、硬件要求1、内存& swapMinimum: 1 GB of RAMRecommended: 2 GB of RAM or more检查内存情况# grep MemTotal /proc/meminfo# grep SwapTotal /proc/meminfo2、硬盘由于CentOS安装后差不多有4~5G,再加上Oracle等等的安装,所以请准备至少10G的硬盘空间。
检查磁盘情况# df -h二、软件系统平台:CentOS 6.5(x86_64) 【可以安装中文界面】CentOS-6.5-x86_64-bin-DVD1.isoOracle版本:Oracle 11gp1*******_112040_Linux-x86-64_1of7.zip、p1*******_112040_Linux-x86-64_2of7.zip 三、系统安装注意系统安装时一定要安装桌面模式,否则无法安装oracle,另外请勿开启SELinux,oracle官方不建议使用SELinux,防火墙也请暂时关闭,减少安装时的困扰。
为防止Oracle安装过程中出现乱码,建议使用英文作为系统语言,进行Oracle的安装工作。
本文中所描述的系统命令,未经特殊标示,均为“#”代表root权限,“$”代表oracle权限。
四、安装Oracle前的系统准备工作首先,请先以root账号登入作一些前置设定作业。
1、关闭防火墙2、安装依赖包以下RPM包拷贝到/opt目录下,进行opt目录,执行以下命令。
# rpm -ivh libstdc++-devel-4.4.7-4.el6.x86_64.rpm# rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm# rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm# rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm# rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm# rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm# rpm -ivh gcc-c++-4.4.7-4.el6.x86_64.rpm# rpm -ivh compat-libcap1-1.10-1.x86_64.rpm# rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm# rpm -ivh libaio-devel-0.3.107-10.el6.x86_64.rpm# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm# rpm -ivh elfutils-libelf-devel-0.152-1.el6.x86_64.rpm3、创建Oracle用户与组在这里只讨论单主机环境,不考虑RAC环境的配置。
Centos 6.5 yum快速升级、修复OpenSSL heartbleed漏洞这两天OpenSSL Heart Bleed?漏洞搞得人心惶惶,请看这篇文章:分析、诊断OpenSSL Heartbleed Bug,目前可知的能够利用此漏洞的版本是:OpenSSL 1.0.1 through 1.0.1f (inclusive) are vulnerableOpenSSL 1.0.1g is NOT vulnerableOpenSSL 1.0.0 branch is NOT vulnerableOpenSSL 0.9.8 branch is NOT vulnerable到自己管理的服务器上执行一下命令:?123[root@server ~]# openssl version?OpenSSL1.0.1e-fips 11Feb2013?很明显,我的服务器上存在漏洞,于是,到网上下载了一个脚本:Python脚本检测OpenSSL Heart Bleed (心脏流血)漏洞,测试一下:?123liang@liang:~/golang$ python ssltest.pyEnter a host: Testing ... vulnerable.?代表此网站存在漏洞可被利用。
幸好,Centos 已提供升级包,解决此问题:?12345678910[root@server ~]# yum -y install openssl[root@server ~]# openssl version -aOpenSSL1.0.1e-fips 11Feb2013built on:TueApr802:39:29 UTC 2014platform: linux-x86_64options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall-O2 -g -pipe -Wall-Wp,-D_FORTIFY_SOURCE=2-fexceptions -fstack-protector --param=ssp-buffer-size=4-m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASMOPENSSLDIR:"/etc/pki/tls"engines: dynamic[root@server ~]# reboot先安装yum -y install openssl,然后输出openssl版本和built日期,如果built日期是Apr 8, 2014之前的,都存在问题,上面显示已经更新了openssl版本,不会存在heartbleed 漏洞。
说明:截止目前CentOS 6.x最新版本为CentOS 6.5,下面介绍CentOS 6.5的具体安装配置过程服务器相关设置如下:操作系统:CentOS 6.5 64位备注:CentOS 6.5系统镜像有32位和64位两个版本,这里必须装64位的。
附:CentOS 6.5下载地址64位:/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1to2.torrent1、CentOS 6.5系统镜像有两个,安装系统只用到第一个镜,即CentOS-6.5-i386-bin-DVD1.iso(32位)或者CentOS-6.5-x86_64-bin-DVD1.iso(64位),第二个镜像是系统自带软件安装包;2、安装CentOS 6.5系统的计算机内存必须等于或者大于628M(最小内存628M),才能启用图形安装模式;3、CentOS 6.5文本安装模式不支持自定义分区,建议使用图形安装模式安装;4、CentOS 6.5的系统安装方式分为:图形安装模式和文本安装模式;5、CentOS 6.5的系统运行方式分为:带图形界面、可以用鼠标操作的图形化方式和不带图形界面、直接用命令行操作的文本方式(具体的系统运行方式,可以在系统安装的过程中自定义选择);一、安装CentOS 6.5用光盘成功引导系统,会出现下面的界面jquery1388215341812="142">界面说明:Install or upgrade an existing system 安装或升级现有的系统install system with basic video driver 安装过程中采用基本的显卡驱动Rescue installed system 进入系统修复模式Boot from local drive 退出安装从硬盘启动Memory test 内存检测这里选择第一项,安装或升级现有的系统,回车。
CentOS 6.5安全加固及性能优化经常玩Linux系统的朋友多多少少也知道些系统参数优化和怎样增强系统安全性,系统默认的一些参数都是比较保守的,所以我们可以通过调整系统参数来提高系统内存、CP U、内核资源的占用,通过禁用不必要的服务、端口,来提高系统的安全性,更好的发挥系统的可用性。
通过自己对Linux了解,对系统调优做了如下小结:操作系统:CentOS 6.5_x64最小化安装1、主机名设置1.[root@localhost~]# vi /etc/sysconfig/network2.HOSTNAME=3.[root@localhost~]# hostname #临时生效2、关闭SELinux1.[root@localhost~]# vi /etc/selinux/config2.SELINUX=disabled3.[root@localhost~]# setenforce #临时生效4.[root@localhost~]# getenforce #查看selinux状态3、清空防火墙并设置规则1.[root@localhost~]# iptables -F #清楚防火墙规则2.[root@localhost~]# iptables -L #查看防火墙规则3.[root@localhost~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT4.[root@localhost~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT5.[root@localhost~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT6.[root@localhost~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT7.[root@localhost~]# iptables -A INPUT -p udp --dport 123 -j ACCEPT8.[root@localhost~]# iptables -A INPUT -p icmp -j ACCEPT9.[root@localhost~]# iptables -P INPUT DROP10.[root@localhost~]# /etc/init.d/iptables save#根据需求开启相应端口4、添加普通用户并进行sudo授权管理1.[root@localhost~]# useradd user2.[root@localhost~]# echo "123456" | passwd --stdin user #设置密码3.[root@localhost~]# vi /etc/sudoers #或visudo打开,添加user用户所有权限4.root ALL=(ALL) ALLer ALL=(ALL) ALL5、禁用root远程登录1.[root@localhost~]# vi /etc/ssh/sshd_config2.PermitRootLoginno3.PermitEmptyPasswords no #禁止空密码登录eDNSno #关闭DNS查询6、关闭不必要开机自启动服务7、删除不必要的系统用户8、关闭重启ctl-alt-delete组合键1.[root@localhost ~]# vi /etc/init/control-alt-delete.conf2.#exec /sbin/shutdown -r now "Control-Alt-Deletepressed" #注释掉9、调整文件描述符大小1.[root@localhost ~]# ulimit –n #默认是10242.10243.[root@localhost ~]# echo "ulimit -SHn 102400">> /etc/rc.local #设置开机自动生效10、去除系统相关信息1.[root@localhost ~]# echo "Welcome to Server" >/etc/issue2.[root@localhost ~]# echo "Welcome to Server" >/etc/redhat-release11、修改history记录1.[root@localhost ~]# vi /etc/profile #修改记录10个2.HISTSIZE=1012、同步系统时间1.[root@localhost ~]# cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime#设置Shanghai时区2.[root@localhost ~]# ntpdate ;hwclock–w #同步时间并写入blos硬件时间3.[root@localhost ~]# crontab –e #设置任务计划每天零点同步一次4.0 * * * * /usr/sbin/ntpdate ; hwclock -w13、内核参数优化1.[root@localhost ~]# vi /etc/sysctl.conf #末尾添加如下参数.ipv4.tcp_syncookies = 1 #1是开启SYN Cookies,当出现SYN等待队列溢出时,启用Cookies来处,理,可防范少量SYN攻击,默认是0关闭.ipv4.tcp_tw_reuse = 1 #1是开启重用,允许讲TIME_AIT sockets重新用于新的TCP连接,默认是0关闭.ipv4.tcp_tw_recycle = 1 #TCP失败重传次数,默认是15,减少次数可释放内核资源.ipv4.ip_local_port_range = 4096 65000 #应用程序可使用的端口范围.ipv4.tcp_max_tw_buckets = 5000 #系统同时保持TIME_WAIT套接字的最大数量,如果超出这个数字,TIME_WATI套接字将立刻被清除并打印警告信息,默认180 000.ipv4.tcp_max_syn_backlog = 4096 #进入SYN宝的最大请求队列,默认是1024dev_max_backlog = 10240 #允许送到队列的数据包最大设备队列,默认300.core.somaxconn = 2048 #listen挂起请求的最大数量,默认128.core.wmem_default = 8388608 #发送缓存区大小的缺省值.core.rmem_default = 8388608 #接受套接字缓冲区大小的缺省值(以字节为单位).core.rmem_max = 16777216 #最大接收缓冲区大小的最大值.core.wmem_max = 16777216 #发送缓冲区大小的最大值.ipv4.tcp_synack_retries = 2 #SYN-ACK握手状态重试次数,默认5.ipv4.tcp_syn_retries = 2 #向外SYN握手重试次数,默认4.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME_WAIT sockets的快速回收,默认是0关闭.ipv4.tcp_max_orphans = 3276800 #系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上,如果超出这个数字,孤儿连接将立即复位并打印警告信息.ipv4.tcp_mem = 94500000 915000000 927000000.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力;.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段;.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。
一、安装增强包1、启动CentOS6.5 虚拟机,点击设备 安装增强功能。
则“光盘”VBOXADDITIONS已经挂载到CentOS 5.5 的桌面上了.此时双击光盘—>双击VboxLinuxAdditions.run即可完成安装通常情况下我们直接运行挂载到系统中的VirtualBox 客户端增强功能的组件即可。
2、报错解决:笔者安装时出现报错Bulding the VirtualBox Guest Additions Kernel modules [failed]Your system does not seem to be set up to build kernel modules.Look at /var/log/vboxadd-install.log to find out what went worg. Once you have corrected it,you run/etc/init.d/vboxadd setup to build them显然内核不支持缺少编译内核的相关组件,解决方法安装内核组件即可。
[root@localhost ~]# yum install kernel kernel-develLoaded plugins: fastestmirror, refresh-packagekit, securityRepository c6-media is listed more than once in the configurationLoading mirror speeds from cached hostfile* base: * extras: * updates: .hkSetting up Install ProcessResolving Dependencies--> Running transaction check---> Package kernel.x86_64 0:2.6.32-642.1.1.el6 will be installed--> Processing Dependency: kernel-firmware >= 2.6.32-642.1.1.el6 for package: kernel-2.6.32-642.1.1.el6.x86_64--> Processing Dependency: dracut-kernel >= 004-388.el6 for package:kernel-2.6.32-642.1.1.el6.x86_64---> Package kernel-devel.x86_64 0:2.6.32-642.1.1.el6 will be installed--> Running transaction check---> Package dracut-kernel.noarch 0:004-335.el6 will be updated---> Package dracut-kernel.noarch 0:004-409.el6_8.2 will be an update--> Processing Dependency: dracut = 004-409.el6_8.2 for package:dracut-kernel-004-409.el6_8.2.noarch---> Package kernel-firmware.noarch 0:2.6.32-431.el6 will be updated---> Package kernel-firmware.noarch 0:2.6.32-642.1.1.el6 will be an update--> Running transaction check---> Package dracut.noarch 0:004-335.el6 will be updated---> Package dracut.noarch 0:004-409.el6_8.2 will be an update--> Finished Dependency ResolutionDependencies Resolved===================================================================== =================================================================== Package Arch Version Repository Size===================================================================== =================================================================== Installing:kernel x86_642.6.32-642.1.1.el6 updates 32 Mkernel-devel x86_642.6.32-642.1.1.el6 updates 11 MUpdating for dependencies:dracut noarch004-409.el6_8.2 updates 127 kdracut-kernel noarch004-409.el6_8.2 updates 28 kkernel-firmware noarch2.6.32-642.1.1.el6 updates 28 MTransaction Summary===================================================================== =================================================================== Install 2 Package(s)Upgrade 3 Package(s)Total download size: 71 MIs this ok [y/N]: yDownloading Packages:(1/5): dracut-004-409.el6_8.2.noarch.rpm| 127 kB 00:01(2/5): dracut-kernel-004-409.el6_8.2.noarch.rpm| 28 kB 00:00(3/5): kernel-2.6.32-642.1.1.el6.x86_64.rpm| 32 MB 05:21(4/5): kernel-devel-2.6.32-642.1.1.el6.x86_64.rpm| 11 MB 01:46(5/5): kernel-firmware-2.6.32-642.1.1.el6.noarch.rpm| 28 MB 04:51----------------------------------------------------------------------------------------------------------------------------------------Total100 kB/s | 71 MB 12:02Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionUpdating : dracut-004-409.el6_8.2.noarch1/8Updating : dracut-kernel-004-409.el6_8.2.noarch2/8Updating : kernel-firmware-2.6.32-642.1.1.el6.noarch 3/8Installing : kernel-2.6.32-642.1.1.el6.x86_644/8Installing : kernel-devel-2.6.32-642.1.1.el6.x86_645/8Cleanup : dracut-kernel-004-335.el6.noarch6/8Cleanup : dracut-004-335.el6.noarch7/8Cleanup : kernel-firmware-2.6.32-431.el6.noarch8/8Verifying : kernel-firmware-2.6.32-642.1.1.el6.noarch 1/8Verifying : dracut-004-409.el6_8.2.noarch2/8Verifying : dracut-kernel-004-409.el6_8.2.noarch3/8Verifying : kernel-2.6.32-642.1.1.el6.x86_644/8Verifying : kernel-devel-2.6.32-642.1.1.el6.x86_645/8Verifying : kernel-firmware-2.6.32-431.el6.noarch6/8Verifying : dracut-kernel-004-335.el6.noarch7/8Verifying : dracut-004-335.el6.noarch8/8Installed:kernel.x86_64 0:2.6.32-642.1.1.el6kernel-devel.x86_64 0:2.6.32-642.1.1.el6Dependency Updated:dracut.noarch 0:004-409.el6_8.2 dracut-kernel.noarch 0:004-409.el6_8.2 kernel-firmware.noarch 0:2.6.32-642.1.1.el6Complete![root@localhost ~]# yum install gccLoaded plugins: fastestmirror, refresh-packagekit, securityRepository c6-media is listed more than once in the configurationLoading mirror speeds from cached hostfile* base: * extras: * updates: .hkSetting up Install ProcessNo package gcc++ available.Resolving Dependencies--> Running transaction check---> Package gcc.x86_64 0:4.4.7-17.el6 will be installed--> Processing Dependency: libgomp = 4.4.7-17.el6 for package:gcc-4.4.7-17.el6.x86_64--> Processing Dependency: cpp = 4.4.7-17.el6 for package: gcc-4.4.7-17.el6.x86_64 --> Processing Dependency: libgcc >= 4.4.7-17.el6 for package:gcc-4.4.7-17.el6.x86_64--> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-17.el6.x86_64 --> Running transaction check---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be installed--> Processing Dependency: libppl_c.so.2()(64bit) for package:cloog-ppl-0.15.7-1.2.el6.x86_64--> Processing Dependency: libppl.so.7()(64bit) for package:cloog-ppl-0.15.7-1.2.el6.x86_64---> Package cpp.x86_64 0:4.4.7-17.el6 will be installed--> Processing Dependency: libmpfr.so.1()(64bit) for package:cpp-4.4.7-17.el6.x86_64---> Package libgcc.x86_64 0:4.4.7-4.el6 will be updated---> Package libgcc.x86_64 0:4.4.7-17.el6 will be an update---> Package libgomp.x86_64 0:4.4.7-4.el6 will be updated---> Package libgomp.x86_64 0:4.4.7-17.el6 will be an update--> Running transaction check---> Package mpfr.x86_64 0:2.4.1-6.el6 will be installed---> Package ppl.x86_64 0:0.10.2-11.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved===================================================================== =================================================================== Package ArchVersion Repository Size ===================================================================== =================================================================== Installing:gcc x86_644.4.7-17.el6 base 10 M Installing for dependencies:cloog-ppl x86_640.15.7-1.2.el6 base 93 k cpp x86_644.4.7-17.el6 base 3.7 M mpfr x86_642.4.1-6.el6 base 157 k ppl x86_640.10.2-11.el6 base 1.3 M Updating for dependencies:libgcc x86_644.4.7-17.el6 base 103 k libgomp x86_644.4.7-17.el6 base 134 kTransaction Summary===================================================================== =================================================================== Install 5 Package(s)Upgrade 2 Package(s)Total download size: 16 MIs this ok [y/N]: yDownloading Packages:(1/7): cloog-ppl-0.15.7-1.2.el6.x86_64.rpm| 93 kB 00:00(2/7): cpp-4.4.7-17.el6.x86_64.rpm| 3.7 MB 00:32(3/7): gcc-4.4.7-17.el6.x86_64.rpm| 10 MB 01:30(4/7): libgcc-4.4.7-17.el6.x86_64.rpm| 103 kB 00:00(5/7): libgomp-4.4.7-17.el6.x86_64.rpm| 134 kB 00:00(6/7): mpfr-2.4.1-6.el6.x86_64.rpm| 157 kB 00:01(7/7): ppl-0.10.2-11.el6.x86_64.rpm| 1.3 MB 00:11----------------------------------------------------------------------------------------------------------------------------------------Total114 kB/s | 16 MB 02:19Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionUpdating : libgcc-4.4.7-17.el6.x86_641/9Installing : ppl-0.10.2-11.el6.x86_642/9Installing : cloog-ppl-0.15.7-1.2.el6.x86_643/9Updating : libgomp-4.4.7-17.el6.x86_644/9Installing : mpfr-2.4.1-6.el6.x86_645/9Installing : cpp-4.4.7-17.el6.x86_646/9Installing : gcc-4.4.7-17.el6.x86_647/9Cleanup : libgomp-4.4.7-4.el6.x86_648/9Cleanup : libgcc-4.4.7-4.el6.x86_649/9Verifying : libgcc-4.4.7-17.el6.x86_641/9Verifying : ppl-0.10.2-11.el6.x86_642/9Verifying : mpfr-2.4.1-6.el6.x86_643/9Verifying : gcc-4.4.7-17.el6.x86_644/9Verifying : libgomp-4.4.7-17.el6.x86_645/9Verifying : cpp-4.4.7-17.el6.x86_646/9Verifying : cloog-ppl-0.15.7-1.2.el6.x86_647/9Verifying : libgomp-4.4.7-4.el6.x86_648/9Verifying : libgcc-4.4.7-4.el6.x86_649/9Installed:gcc.x86_64 0:4.4.7-17.el6Dependency Installed:cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-17.el6 mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6Dependency Updated:libgcc.x86_64 0:4.4.7-17.el6libgomp.x86_64 0:4.4.7-17.el6Complete![root@localhost ~]# yum install -y gcc gcc-c++ make kernel-develLoaded plugins: fastestmirror, refresh-packagekit, securityRepository c6-media is listed more than once in the configurationLoading mirror speeds from cached hostfile* base: * extras: * updates: .hkSetting up Install ProcessPackage gcc-4.4.7-17.el6.x86_64 already installed and latest versionPackage 1:make-3.81-23.el6.x86_64 already installed and latest versionPackage kernel-devel-2.6.32-642.1.1.el6.x86_64 already installed and latest version Resolving Dependencies--> Running transaction check---> Package gcc-c++.x86_64 0:4.4.7-17.el6 will be installed--> Processing Dependency: libstdc++-devel = 4.4.7-17.el6 for package:gcc-c++-4.4.7-17.el6.x86_64--> Processing Dependency: libstdc++ = 4.4.7-17.el6 for package:gcc-c++-4.4.7-17.el6.x86_64--> Running transaction check---> Package libstdc++.x86_64 0:4.4.7-4.el6 will be updated---> Package libstdc++.x86_64 0:4.4.7-17.el6 will be an update---> Package libstdc++-devel.x86_64 0:4.4.7-17.el6 will be installed--> Finished Dependency ResolutionDependencies Resolved===================================================================== =================================================================== Package ArchVersion Repository Size===================================================================== =================================================================== Installing:gcc-c++ x86_644.4.7-17.el6 base 4.7 M Installing for dependencies:libstdc++-devel x86_644.4.7-17.el6 base 1.6 M Updating for dependencies:libstdc++ x86_644.4.7-17.el6 base 295 kTransaction Summary===================================================================== =================================================================== Install 2 Package(s)Upgrade 1 Package(s)Total download size: 6.6 MDownloading Packages:(1/3): gcc-c++-4.4.7-17.el6.x86_64.rpm| 4.7 MB 01:10(2/3): libstdc++-4.4.7-17.el6.x86_64.rpm| 295 kB 00:03(3/3): libstdc++-devel-4.4.7-17.el6.x86_64.rpm| 1.6 MB 00:26----------------------------------------------------------------------------------------------------------------------------------------Total67 kB/s | 6.6 MB 01:41Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning TransactionUpdating : libstdc++-4.4.7-17.el6.x86_641/4Installing : libstdc++-devel-4.4.7-17.el6.x86_642/4Installing : gcc-c++-4.4.7-17.el6.x86_643/4Cleanup : libstdc++-4.4.7-4.el6.x86_644/4Verifying : gcc-c++-4.4.7-17.el6.x86_641/4Verifying : libstdc++-4.4.7-17.el6.x86_642/4Verifying : libstdc++-devel-4.4.7-17.el6.x86_643/4Verifying : libstdc++-4.4.7-4.el6.x86_644/4Installed:gcc-c++.x86_64 0:4.4.7-17.el6Dependency Installed:libstdc++-devel.x86_64 0:4.4.7-17.el6Dependency Updated:libstdc++.x86_64 0:4.4.7-17.el6Complete![root@localhost ~]# shutdown -r now安装好相关内核组件,重启centos6.5并再次安装增强包即可顺利安装。
linux清除旧内核,手动安装内核、修复误删内核linux清除旧内核,手动安装内核、修复误删内核清除旧内核:安装linux时,一般给/boot分100M单独挂载。
但内核更新后,旧内核自动保留,这样/boot可能出现空间不足不能更新的情况。
可以手动清除不用的旧内核。
首先用uname -a 命令查看一下当前使用的内核版本,避免误删。
dpkg --get-selections|grep linux 命令,查看当前安装了什么内核(install表示安装了的,deinstall表示卸载了的),将你觉得不要的内核删掉(再次提醒,别误删了当前使用的)。
generic表示x86通用版,pae表示此内核可使32位系统支持超过4G内存,最大可达64G内存,很多Linux版本都默认使用启用了PAE的内核。
删除内核的命令与平时删除软件的命令一样,例如:sudo apt-get remove linux-headers-3.2.0-23-genericsudo apt-get remove linux-image-3.2.0-23-generic(注意,headers和image都删)之后用以下两条命令清除一下垃圾:sudo apt-get autoremovesudo apt-get autoclean手动安装内核:注意,image和headers均要安装,先装image,后装headers。
例如:sudo apt-get install linux-image-3.5.0-26-genericsudo apt-get install linux-headers-3.5.0-26-generic修复误删内核:若清除内核时将所有内核都清除了,开机启动进入grub后看不到linux的启动项,可按以下方法修复。
首先找到该系统版本的安装镜像(例如ubuntu_12.04.iso),打开这个镜像,将里面casper文件夹中vmlinuz和initrd.lz复制出来,然后复制到/boot 下(注意,这个/boot 是单独挂载的分区,里面还有grub文件夹,不是/ 下的boot文件夹)。
U盘安装CentOs_6.5图文教程目录1. 制作CentOS 安装盘 (1)2. 安装CentOS 6.5 (5)1.制作CentOS安装盘所需工具:一、UltraISO(用来制作U盘启动)二、CentOS 6.5 _64位系统镜像可到内部服务器\\192.168.3.251\public\各类操作系统\各类操作系统ISO镜像\Linux\Linux-CentOS下获取三、U盘一只要求:U盘容量大于4G(因为CentOS 6.5 系统镜像文件需要3.55G的空间)四、vesamenu.c32文件(用来替换CentOS 6.5默认文件)U盘安装rhel6.5需要替换vesamenu.c32文件.zip双击打开↑安装步骤:一、制作U盘启动引导盘1、电脑插上U盘,打开UltraISO软件,文件---打开,选择你下载好的CentOS-6.5-x86_64-bin-DVD1.iso文件,点启动光盘--写入硬盘镜像,在硬盘驱动器里面选择你的U盘(看清楚,千万别选错),写入方式默认为:USB-HDD+,然后点格式化。
2、等待大约5-10分钟后消息框中显示刻录成功!则说明成功完成U盘刻录3、打开U盘根目录下面的syslinux文件夹,用我们下载的文件vesamenu.c32替换里面原有的文件。
原因:U盘根目录下面的syslinux\syslinux.cfg文件里面第一行引用到了vesamenu.c32这个文件,而在CentOS 6.5系统里面,这个文件是有问题的,或者说是有bug吧,所以要用CentOS 6.0系统的这个文件来替换。
至此,U盘启动盘制作完成,然后退出U盘,这个U盘现在已经可以用来安装CentOS 6.5了。
2.安装CentOS 6.5系统开机设置U盘第一启动,重启之后会出来安装界面:*******************下面是上图所示引导菜单选项如下:******************安装或升级现有系统(Install or upgrade an existing system):这个选项是默认的。
如何升级 Linux 内核版本Linux 是一种非常强大的操作系统,它为用户提供了众多的选择和自由度。
其中最基本的就是内核。
内核是 Linux 系统的核心部分,它控制着整个系统的运行。
为了让 Linux 系统性能更好,我们可以通过升级内核来提高系统的运行速度和稳定性。
本文将介绍如何升级 Linux 内核版本。
一、为什么要升级 Linux 内核版本在使用 Linux 系统时,你会发现不同版本的内核会对系统性能产生很大的影响。
升级一个更高版本的内核,可以使系统运行更流畅、网络连接更稳定、设备驱动更完善、安全性更好,还可以提高系统稳定性和性能。
二、如何查找当前内核版本号在升级 Linux 内核版本之前,我们需要先查看当前内核的版本号。
可以运行以下命令:uname -a该命令将会显示当前的内核名称、版本号和日期等信息。
三、升级 Linux 内核版本的具体步骤1. 下载新版本内核源代码可以从官方网站或者其他网站获取最新版本的内核。
下载完成后,将其解压缩到任意的目录下。
2. 配置新内核进入到新内核的目录下,执行以下命令:make menuconfig该命令将会进入到新内核的配置界面。
在界面中,您可以根据自己的需要选择所需要的模块、设备驱动、选项等。
完成后,保存配置并退出。
3. 编译新内核执行以下命令,开始编译新内核:make该命令将会花费一些时间来编译新内核。
建议在命令后面添加一个-j参数,以加快编译速度:make -j44. 安装新内核在完成新内核的编译后,执行以下命令安装新内核:make modules_install install5. 重启系统在完成新内核的安装后,您需要重启系统以使其生效:reboot6. 检查新内核系统重新启动后,您可以通过以下命令检查新内核是否已经生效:uname -a如果新内核的版本和您刚刚安装的版本相同,则说明新内核已经生效。
四、如何降级内核版本在升级内核版本前,建议备份当前的内核版本。
U盘安装CentOS 6.51)准备工作,电脑安装好UltraISO软件,下载好CentOS6.5镜像文件,镜像下载地址,复制以下地址用迅雷新建任务下载速度会快些/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DV D1.iso2)用UltraISO打开下载好的镜像文件CentOS-6.5-x86_64-bin-DVD1.iso3)插入U盘,在UltraISO中选择4)写入硬盘映像写入方式选择USB-HDD+ v2(据说兼容性更好),点击写入写入完成后启动U盘就已经做好了,以后就可以凭这个U盘来装ContOS 6.5,值得注意的是以后就单独用来装系统用,不要往里面放其他数据,不然可能会引起冲突,导致后面重装系统会出错,切记!!!下面开始装系统5)重启电脑,开机选择U盘启动,进入Contos 安装界面,按Enter 确认进入Install or upgrade an existing system 安装或升级现有的系统install system with basic video driver 安装过程中采用基本的显卡驱动Rescue installed system 进入系统修复模式Boot from local drive 退出安装从硬盘启动Memory test 内存检测注:用联想E49安装时选择第一项安装时会出现屏幕显示异常的问题,后改用第二项安装时即可正常选择安装语音,(注意:选择英文English,中文容易引起故障)6)选择键盘(US)7)选择安装文件的位置,此处注意选择(Hard drive)8)选择分区,注意请选择U盘分区sdb4(注U盘默认是sdb4)9)只要分区选择正确,就会出现下面的步骤10)选择设备,默认即可11)如果不是第一次安装,可能会出现下面的选项(重新安装还是升级现有系统),选择Fresh Installation重新安装12)主机名和网络配置13)时区选择Asia/Shanghai即可,System clock uses UTC这个钩要去掉14)密码,如果你的密码过于简单,则会弹出这个框,选择Use Anyway即可15)选择硬盘的使用方式,选择Use All Space,且勾选左下角的Review andmodify partitioning layout16)如果有多个硬盘会有下面的选择将要安装系统的硬盘选择到右侧,并勾选Boot Loader,这块硬盘会被格式化17)分区页面,可以手动修改,这里保持默认就可以了18)改动写入硬盘19)boot loader 选项(这里默认即可)20)选择要安装的版本,选择Basic Server版本,其他选择Customize later21)开始安装22)安装完成Reboot 重启即可CentOS镜像下载地址163开源镜像站(速度较快)/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.isomd5值:83221db52687c7b857e65bfe60787838官方下载站/plus/download.php?open=2&id=2195&uhash=3e6ebca41901ee1da55352cb。
CentOS 6安装使用及DHCP服务配置教程金湖广电培训专用教程南京润灿信息科技有限公司版权所有序言Linux是一种自由和开放源代码的类UNIX操作系统。
该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。
在加上用户空间的应用程序之后,成为Linux操作系统。
Linux也是自由软件和开放源代码软件发展中最著名的例子。
只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
大多数Linux 系统还包括了像提供GUI界面的X Window之类的程序。
除了一部分专家之外,大多数人都是直接使用Linux发布版,而不是自己选择每一样组件或自行设置。
严格来讲,术语Linux只表示操作系统内核本身,但通常采用Linux内核来表达该意思。
Linux 则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。
由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将该组合系统命名为GNU/Linux,但Linux不属于GNU计划。
Linux最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统。
目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。
Linux是一个领先的操作系统,可以运行在服务器和其他大型平台之上,如大型主机和超级计算机。
世界上500个最快的超级计算机90%以上运行Linux发行版或变种,包括最快的前10名超级电脑运行的都是基于Linux内核的操作系统。
Linux也广泛应用在嵌入式系统上,如手机,平板电脑,路由器,电视和电子游戏机等。
在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上。
通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux 发布版,包括Debian(及其派生版本Ubuntu,Linux Mint),Fedora(及其相关版本Red Hat Enterprise Linux,CentOS)和openSUSE等。
升级CentOS6.5安装镜像中的Linux内核版本前言因为之前笔者所在公司的一款虚拟化平台产品在数据中心服务器上部署时出现不兼容现象,怀疑是安装介质中我们所定制的Linux内核与新服务器硬件不兼容导致,于是就牵涉到升级安装介质中Linux内核的工作。
由于这款虚拟化平台产品是在CentOS6.5的基础上定制得到,所以本质上相当于直接更新CentOS6安装介质中Linux内核。
关于如何定制一张Linux发行版光盘,以及如何在一个完整现有的Linux系统上升级内核,网上各种文章铺天盖地几乎已成大路货。
然而直接升级发行版介质中的内核却少有提及,为此我将整个工作过程记录下来,所用方式方法不一定最优,但意在抛砖引玉。
在我进行这项工作的时候,发现上的内核最新版本已悄然变为4.8.6,这是一个stable版本,于是乎决定就用它了。
安装光盘目录结构分析CentOS6.5安装介质目录结构如下图所示:图1 CentOS发行版ISO目录树(1)EFI目录主要用于64位的基于EFI的系统引导。
其中的BOOT目录下的BOOTX64.conf为grub的配置文件,用于显示引导菜单。
(2) images目录:包含有各种引导镜像。
最重要的是引导第二阶段安装程序需要用到的镜像文件install.img(CentOS7安装盘中该文件名称是squashfs.img),该镜像文件内部文件系统类型是squashfs,未经压缩,可以直接挂载(只读),anaconda程序就在这个镜像文件中。
该目录中还包含一个pxeboot目录,主要用于制作PXE安装方式引导介质。
(3) isolinux目录:有开机引导系统安装的内核(vmlinuz)及临时文件系统(initrd.img),在引导系统时会载入内存。
(4) Packages目录:包含安装所需的所有二进制RPM包。
(5) repodata目录:一个位于光盘介质上的yum源,内部包含了软件仓库所有的配置文件。
(6) TRANS.TBL文件:记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了支持长文件名称。
(7) .discinfo文件是安装介质的识别信息。
.treeinfo文件记录不同安装方式安装程序所在的目录结构,如PXE方式时,内核kernel=images/pxeboot/vmlinuz,根文件系统initrd=images/pxeboot/initrd.img。
CentOS安装光盘是一张引导盘,启动时,引导程序会分别将vmlinuz和initrd.img载入内存,待内核初始化完成后,会执行initrd中的/sbin/init,/sbin/init 加载/sbin/loader,最终加载运行install.img中的anaconda安装程序。
anaconda会根据配置和用户操作分别安装Packages文件夹下的rpm包,操作系统内核也以rpm包的形式存在其中。
因此,需要更新的文件主要是光盘中isolinux、image/pxeboot下的vmlinuz和initrd.img文件,Packages目录下的内核RPM包。
编译内核及模块第一步,从https:///上下载新版本的内核源码,linux内核版本号中的第二位(即次版本号)为偶数的版本为稳定版,为奇数的版本是处于开发中的非稳定版,本文考虑到更新后的安装程序需要用于生产环境,因此,选择的版本号为4.8.6,即稳定版。
下载后直接用tar将源码解压到/usr/src/kernels路径下。
第二步,配置和编译内核。
在配置和编译内核前,需先准备好相关工具环境,先执行yum –y install gccncurses-developensslcreaterepo,在源码目录下分别执行下述命令即可生成内核二进制文件:# make menuconfig //启动一个图形化内核配置界面,该配置工具会将当前系统内核配置作为默认配置,配置好后选择<save>按钮,会再内核源码目录中生成一个.config文件保存配置。
# make bzImage //编译内核源码,得到内核压缩文件vmlinuz# make modules //编译内核模块# make modules_install //安装内核模块# make install //安装内核另外,还可能用到的make目标有:# make clean //清除构建过程中生成的中间文件和目标文件,但保留内核配置及构建版本号# make mrproper //清除构建过程中的中间文件和目标文件,同时,清除内核配置及构建版本号生成内核RPM包执行:# make rpm-pkg可以生成内核RPM包,该命令生成的内核RPM包可在现有完整系统上直接安装,执行:# rpm –ivh kernel-4.8.6-1.el6.x86_64.rpm < --force >< --nodeps>但是,如果将新生成的内核RPM包替换掉Packages目录中原有的内核RPM 包,则系统在安装后启动时可能会抛出Kernel Panic,原因是内核RPM包在执行过程中需要依赖其它一些第三方工具来最终完成安装流程,这些依赖关系需要配置到RPM包中,使得在安装内核前,先安装这些被依赖的工具包,否则就会导致安装不完整。
下图是原有2.6版本内核RPM包和新生成的4.8.6版本的RPM 包依赖关系对比图:图2 2.6.32版本内核包默认依赖图3 4.8.6版本内核包默认依赖从上述两张图中可以看出明显的差别,完成内核安装需执行module-init-tools、initscripts、grubby、dracut等几个包中的脚本,因此这几个包必须先于内核安装。
为了实现这一目的,我所采用的办法是修改/usr/src/kernels/linux-4.8.6/scripts/package下的mkspec脚本,这是因为在make rpm-pkg时,会调用到该脚本来生成内核RPM的SPEC文件。
最终在mkspec文件中增加如下内容:echo "PreReq: fileutils, module-init-tools, initscripts, grubby >= 7.0.4-1, dracut-kernel, \/sbin/new-kernel-pkg, device-mapper-event-libs, device-mapper-libs, \device-mapper-multipath, device-mapper-multipath-libs, NetworkManager, \NetworkManager-glib, crypto-utils, cryptsetup-luks, cryptsetup-luks-libs, lvm2, \dmraid, dmraid-events, dracut, file, python, python-cryptsetup, sysvinit-tools"其中,“PreReq”表示依赖类型为install前。
保存mkspec文件并重新make rpm-pkg,之后生成的RPM就可以直接放入到Packages目录中用于系统全新安装了,检查新生成的内核RPM可以看到如下景象:图4 新生成的kernel-4.8.6 RPM依赖项图4中的这些依赖项是我初步整理之后的一个结果,可能有个别依赖不是必要的,但由于编译构建内核花费时间较长,为了减少失败次数,保险起见将其加到PreReq中了。
具体依赖关系还有待进一步深入分析。
更新initrd.imgCentOS6.5安装镜像中的initrd.img文件是一个CPIO包,采用LZMA压缩算法进行了压缩,可以直接用lzma和cpio进行解压解包后得到一个完整的目录树。
这个文件本质上是一个ramfs,它的地位和作用与系统中/boot/initramfs-<version>.<EL>.<arch>.img文件是一致的,即:为安装程序内核提供了一个带有驱动模块的临时内存文件系统,同时initrd.img中还包含了安装程序第一阶段所需要的初始化程序/init、/sbin/loader。
更新initrd就是要将新编译出来的模块文件添加到它内部/modules中,但是,我将更新后的操作系统/lib/modules/下的内容直接添加进去却失败了,内核启动时同样出现panic,而且这种方式也导致initrd.img文件尺寸暴增,后来我又将编译后生成的initramfs文件中的modules添加进去,也失败了,内核启动时识别不了网络设备,因为initramfs中的modules不完整。
看来,只能通过dracut重新生成一份带完整驱动模块的initramfs文件,并从该文件中得到modules。
#dracut -f -v --hostonly -k "/lib/modules/4.8.6/" /boot/initramfs-4.8.6.img 4.8.6 上述命令利用dracut生成一份用于本地使用的initramfs文件,该文件包含了当前宿主机上已经被加载的模块文件。
如果想将生成的initramfs文件放到别的主机上使用,则去掉“--hostonly”即可,执行:#dracut -f -v -k "/lib/modules/4.8.6/" /boot/initramfs-4.8.6.img 4.8.6这样可以让initramfs内的驱动模块相对完整一些。
但CentOS安装镜像需要在不同硬件环境下使用,因此需要将尽可能多的驱动模块包含进去,dracut提供了一种配置机制让我们可以定制模块或驱动。
在/etc/dracut.conf中可以看到如下内容:图5 dracut.conf文件可以将需要添加和滤除的模块驱动追加到上述“dracutmodules”、“omit_dracutmodules”、“add_dracutmodules”、“add_drivers”等变量中,关于这些变量的具体含义在其上方都有注释说明。
不难看出,为了实现将尽可能完整的驱动模块打包进initramfs文件这一目的,只需要将所有待定制的驱动模块文件的文件名(包含路径且不含后缀)添加到dracutmodules这个变量中,在进行具体操作前,还有两件事情需要完成:第一,dracut.conf是老版本dracut所使用的配置文件,根据要求新版本的配置文件须放入到/etc/dracut.conf.d/目录下,文件名可自定义,但后缀必须是conf,因此,事先将dracut.conf拷贝一份进dracut.conf.d并重命名为mydracut.conf。