centos 6.5 make?centos7下载地址
大家好,感谢邀请,今天来为大家分享一下centos 6.5 make的问题,以及和centos7下载地址的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
CentOS6.5基本操作常用命令详解
在你准备使用Linux系统作为网站服务器系统之前,我建议大家先学习一些基本的Linux系统的操作命令,这些命令都是在日常操作中和配置Linux服务器网络环境时要用到的,了解和掌握这些命令,将有助于你更好的使用Linux服务器。本文将以CentOS 6.5为例简单讲解一下Linux系统下常用的基本操作命令。
首先大家可以使用virtualbox安装一个CENTOS6.5系统,或者直接购买一个安装了centos系统的云主机,国内推荐阿里云,橙云主机其实也不错,不过我个人在使用过程中感觉速度不是很理想,特别是磁盘性能方面。国外的大家根据实际情况选择吧,我这里就不推荐了,免得被说是广告。
登录服务器实现远程控制
windows用户推荐使用Xshell(下载地址)
mac用户可以使用系统终端工具
登录服务器之后就可以开始命令行操作了
查看你当前所在的位置 pwd( print working directory)
pwd
会显示当前的位置,例如:
/root
改变你所在的目录位置 cd( change directory)
cd/home
会让你进入到根目录下面的 home这个目录里面,/表示根目录,如果用 pwd查看一下会返回:
/home
另外cd/root= cd~
列出目录里的东西 ls
ls
ls命令应该是 list的简称,列出的意思,这个命令可以配合一些参数,例如:
ls-la
这样会使用更详细的形式列出文件与目录,并且会包含目录里面隐藏的文件,l表示 long,a表示 all。在命令的后面你可以指定具体要列出的目录,例如:
ls-la/usr/local
这会列出在系统根目录下面的 usr目录下面的 local这个目录里的所有的东西。如果想查看命令详细的使用说明,可以加上 help参数:
ls--help
现在,你已经学会了一个简单的 ls命令去列出目录里的东西,在使用其它命令的时候,你也可以这样来用,你知道命令的后面可以添加一些参数,去做更具体的事情,想得到命令的使用说明,就去在命令后面添加一个 help参数,命令的后面也可以添加更具体的信息,比如一个目录的位置,一个文件的名称等等。
创建目录 mkdir( make directory)
mkdir
下面,我们可以在你当前所在的位置去创建一个新的目录,记得使用 pwd命令确定一下你的位置:
mkdir www
上面这行命令会在当前位置上去创建一个叫 www的目录。使用 ls命令,可以查看一下当前目录里面的东西。在安装WDCP时,我们要在根目录下创建一个WWW目录来挂载数据盘,使用的命令应该是
mkdir/www
删除目录或文件 rm( remove)
rm
在命令的后面,加上你想要删除的东西,可能是一个目录的名称,或者一个文件的名称。注意想要删除目录的时候,你需要添加两个参数:-r-f,可以将两个参数系在一起,如-rf
rm-rf www
这里,r参数可以让 rm命令递归删除目录及其内容,f参数是 force,表示强制删除。合起来这行命令的意思是,递归的强制删除 www这个目录,以及这个目录里面的所有的东西。
编辑文件 vi:
vi hello.txt
上面的命令会去编辑当前目录下面的 hello.txt这个文件,如果这个文件不存在,会打开一个空白的文件,这样你在保存并退出以后,就可以创建一个叫做 hello.txt的文件。vi工具的使用需要配合一些按键,比如打开文件以后,你想编辑这个文件,可以进入到编辑模式,按一下键盘上的 i键或者insert键,然后用上下左右按键去浏览到文件的某个位置上。编辑好以后,要按一下 esc键,退出编辑模式,然后输入:(冒号),再输入 wq,表示保存并退出。如果你不想保存所做的修改,可以输入: q。有的时候,在编辑一些只读文件,你需要再添加一个!,比如:wq!,或者 q!。
i,输入编辑模式。
esc,退出模式。
:wq,保存文件并退出。
:wq!,强制保存并退出。
:q,直接退出不保存修改。
/,可以进行搜索,在/后面加上要搜索的文字,然后回车。
n,可以查找下一处。
N,可以查找上一处。
ctrl+f,向后翻页。
ctrl+b,向前翻页。
详细的使用说明,可以查看 vi命令的帮助,vi help。
移动/重命名目录或文件 mv( move)
移动或重命名目录或者文件,使用的是同一个命令:
mv要移动的目录/文件移动之后的目录/文件
在这个后面先指一定想要移动的目录或者文件的位置,一个空格,后面再加上移动以后的目录和文件所在的位置。这里我们得先理解一下几个路径的意思:
/
表示系统的根目录。
~
表示当前所登录的用户的主目录。
.
一个点表示当前的目录。
../
两个点加一个斜线,表示上一级目录。
../../
表示上两级目录。知道了这些,我们就可以去移动目录或文件了。
mv www www1
上面这行命令的意思是,把当前目录里面的 www这个目录重命名为 www1。
mv www1../
这样会把 www1这个目录移动到当前目录的上一级目录下面,你可以进入到当前目录的上一级目录:
cd../
然后列出目录里面的东西:
ls
看到 www1目录了吗?删除它可以使用 rm命令加上 rf参数:
rm-rf www1
再用 ls看一下,是不是 www1已经不在了。
*号表示所有的文件或目录,比如你想把某个目录下面的所有的目录或文件移动到某个地方,可以这样:
mv/home/www/web1/*/home/www/gb1982
上面命令会把/home/www/web1里面的东西全部都移动到/home/www/gb1982这个目录里面。
复制目录或文件 cp( copy)
cp要复制的东西要复制到哪里
比如你当前目录下面有一个 hello.txt文件,你想复制一份,复制以后的文件叫 hello.bak,可以这样:
cp hello.txt hello.bak
你想把 hello.bak复制到某个目录的下面:
cp hello.bak/home/bak
这样会把 hello.bak这个文件复制到/home/bak里面,注意,bak这个目录必须已经存在了。
复制目录,你需要添加一个-R的参数,它会递归的去复制目录以及目录里面的所有的东西。比如要把 www这个目录复制一份,复制以后的目录名是 www1:
cp-R www www1
centos6.5安装wps提示缺libc.so.6(GLIBC_2.15)(64bit),怎办
1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的:
[ghui@StuOS bin]$ pwd
/var/VMdisks/cross/mingw32/bin
[ghui@StuOS bin]$ ls
lrelease QtCore4.dll QtNetwork4.dll QtSql4.dll QtXml4.dll
moc QtDeclarative4.dll QtOpenGL4.dll QtSvg4.dll rcc
phonon4.dll QtGui4.dll QtScript4.dll QtTest4.dll uic
qmake QtMultimedia4.dll QtScriptTools4.dll QtWebKit4.dll
[ghui@StuOS bin]$./qmake
./qmake:/lib64/libc.so.6: version `GLIBC_2.14' not found(required by./qmake)
2.查看系统glibc支持的版本:
[ghui@StuOS bin]$ strings/lib64/libc.so.6|grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
[ghui@StuOS bin]$ rpm-qa|grep glibc
glibc-static-2.12-1.80.el6_3.6.x86_64
glibc-headers-2.12-1.80.el6_3.6.x86_64
glibc-common-2.12-1.80.el6_3.6.x86_64
glibc-devel-2.12-1.80.el6_3.6.x86_64
glibc-static-2.12-1.80.el6_3.6.i686
glibc-devel-2.12-1.80.el6_3.6.i686
glibc-2.12-1.80.el6_3.6.i686
glibc-2.12-1.80.el6_3.6.x86_64
3.可以看到最高只支持2.12版本,所以考虑编译解决这个问题:
a.到下载最新版本,我这里下载了glibc-2.14.tar.xz这个版本,解压到任意目录准备编译
b.这里解压到/var/VMdisks/glibc-2.14/
[ghui@StuOS bin]$ cd/var/VMdisks/glibc-2.14/
[ghui@StuOS glibc-2.14]$ pwd
/var/VMdisks/glibc-2.14
[ghui@StuOS glibc-2.14]$ ls
abilist config.h.in intl README.libm
abi-tags config.log io resolv
aclocal.m4 config.make.in libc-abis resource
aout configure libidn rt
argp configure.in libio Rules
assert conform LICENSES scripts
autom4te.cache CONFORMANCE locale setjmp
bits COPYING localedata shadow
BUGS COPYING.LIB login shlib-versions
build cppflags-iterator.mk mach signal
CANCEL-FCT-WAIVE crypt Makeconfig socket
CANCEL-FILE-WAIVE csu Makefile soft-fp
catgets ctype Makefile.in stdio-common
ChangeLog debug Makerules stdlib
ChangeLog.1 dirent malloc streams
ChangeLog.10 dlfcn manual string
ChangeLog.11 elf math sunrpc
ChangeLog.12 extra-lib.mk misc sysdeps
ChangeLog.13 extra-modules.mk NAMESPACE sysvipc
ChangeLog.14 FAQ NEWS termios
ChangeLog.15 FAQ.in nis test-skeleton.c
ChangeLog.16 gmon NOTES time
ChangeLog.17 gnulib nptl timezone
ChangeLog.2 grp nptl_db tls.make.c
ChangeLog.3 gshadow nscd version.h
ChangeLog.4 hesiod nss Versions.def
ChangeLog.5 hurd o-iterator.mk wcsmbs
ChangeLog.6 iconv po wctype
ChangeLog.7 iconvdata posix WUR-REPORT
ChangeLog.8 include PROJECTS
ChangeLog.9 inet pwd
conf INSTALL README
c.在glibc源码目录建立构建目录,并cd进入构建目录
[ghui@StuOS glibc-2.14]$ mkdir build
[ghui@StuOS glibc-2.14]$ cd build
d.运行configure配置,make&& sudo make install
[ghui@StuOS build]$../configure--prefix=/opt/glibc-2.14
[ghui@StuOS build]$ make-j4
[ghui@StuOS build]$ sudo make install
[sudo] password for ghui:
4.临时修改环境变量
[ghui@StuOS bin]$ export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
[ghui@StuOS glibc-2.14]$ cd/var/VMdisks/cross/mingw32/bin/
[ghui@StuOS bin]$./qmake
Usage:./qmake [mode] [options] [files]
QMake has two modes, one mode for generating project files based on
some heuristics, and the other for generating makefiles. Normally you
shouldn't need to specify a mode, as makefile generation is the default
mode for qmake, but you may use this to test qmake on an existing project
...
centos 6.6怎么升级内核
1.准备工作
确认内核及版本信息
[root@hostname~]# uname-r
2.6.32-220.el6.x86_64
[root@hostname~]# cat/etc/centos-release
CentOS release 6.5(Final)
安装软件
编译安装新内核,依赖于开发环境和开发库
# yum grouplist//查看已经安装的和未安装的软件包组,来判断我们是否安装了相应的开发环境和开发库;
# yum groupinstall"Development Tools"//一般是安装这两个软件包组,这样做会确定你拥有编译时所需的一切工具
# yum install ncurses-devel//你必须这样才能让 make*config这个指令正确地执行
# yum install qt-devel//如果你没有 X环境,这一条可以不用
# yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel//创建 CentOS-6内核时需要它们
如果当初安装系统是选择了Software workstation,上面的安装包几乎都已包含。
2.编译内核
获取并解压内核源码,配置编译项
Linux内核版本有两种:稳定版和开发版,Linux内核版本号由3个数字组成:r.x.y
r:主版本号
x:次版本号,偶数表示稳定版本;奇数表示开发中版本。
y:修订版本号,表示修改的次数
去 首页,可以看到有stable, longterm等版本,longterm是比stable更稳定的版本,会长时间更新,因此我选择 3.10.58。
[root@sean~]#wget
[root@sean~]# tar-xf linux-3.10.58.tar.xz-C/usr/src/
[root@sean~]# cd/usr/src/linux-3.10.58/
[root@sean linux-3.10.58]# cp/boot/config-2.6.32-220.el6.x86_64.config
我们在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份到当前目录下,命名为.config。接下来继续配置:
[root@sean linux-3.10.58]# sh-c'yes""| make oldconfig'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf--oldconfig Kconfig
.config:555:warning: symbol value'm' invalid for PCCARD_NONSTATIC
.config:2567:warning: symbol value'm' invalid for MFD_WM8400
.config:2568:warning: symbol value'm' invalid for MFD_WM831X
.config:2569:warning: symbol value'm' invalid for MFD_WM8350
.config:2582:warning: symbol value'm' invalid for MFD_WM8350_I2C
.config:2584:warning: symbol value'm' invalid for AB3100_CORE
.config:3502:warning: symbol value'm' invalid for MMC_RICOH_MMC
*
* Restart config...
*
*
* General setup
*
......
XZ decompressor tester(XZ_DEC_TEST) [N/m/y/?](NEW)
Averaging functions(AVERAGE) [Y/?](NEW) y
CORDIC algorithm(CORDIC) [N/m/y/?](NEW)
JEDEC DDR data(DDR) [N/y/?](NEW)
#
# configuration written to.config
make oldconfig会读取当前目录下的.config文件,在.config文件里没有找到的选项则提示用户填写,然后备份.config文件为.config.old,并生成新的.config文件,参考
有的文档里介绍使用make memuconfig,它便是根据需要定制模块,类似界面如下:(在此不需要)
开始编译
[root@sean linux-3.10.58]# make-j4 bzImage//生成内核文件
[root@sean linux-3.10.58]# make-j4 modules//编译模块
[root@sean linux-3.10.58]# make-j4 modules_install//编译安装模块
-j后面的数字是线程数,用于加快编译速度,一般的经验是,逻辑CPU,就填写那个数字,例如有8核,则为-j8。(modules部分耗时30多分钟)
安装
[root@sean linux-3.10.58]# make install
实际运行到这一步时,出现ERROR: modinfo: could not find module vmware_balloon,但是不影响内核安装,是由于vsphere需要的模块没有编译,要避免这个问题,需要在make之前时修改.config文件,加入
HYPERVISOR_GUEST=yCONFIG_VMWARE_BALLOON=m
(这一部分比较容易出问题,参考下文异常部分)
修改grub引导,重启
安装完成后,需要修改Grub引导顺序,让新安装的内核作为默认内核。
编辑 grub.conf文件,
vi/etc/grub.conf
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS(3.10.58)
root(hd0,0)
...
数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0。
重启reboot:
boot-with-new-kernel
确认当内核版本
[root@sean~]# uname-r
3.10.58
升级内核成功!
3.异常
编译失败(如缺少依赖包)
可以先清除,再重新编译:
# make mrproper#完成或者安装过程出错,可以清理上次编译的现场
# make clean
在vmware虚拟机上编译,出现类似下面的错误
[root@sean linux-3.10.58]# make install
sh/usr/src/linux-3.10.58/arch/x86/boot/install.sh 3.10.58 arch/x86/boot/bzImage\
System.map"/boot"
ERROR: modinfo: could not find module vmware_balloon
可以忽略,如果你有强迫症的话,尝试以下办法:
要在vmware上需要安装VMWARE_BALLOON,可直接修改.config文件,但如果vi直接加入CONFIG_VMWARE_BALLOON=m依然是没有效果的,因为它依赖于HYPERVISOR_GUEST=y。如果你不知道这层依赖关系,通过make menuconfig后,Device Drivers-> MISC devices下是找不到VMware Balloon Driver的。(手动vi.config修改HYPERVISOR_GUEST后,便可以找到这一项),另外,无论是通过make menuconfig或直接vi.config,最后都要运行sh-c'yes""| make oldconfig'一次得到最终的编译配置选项。
然后,考虑到vmware_balloon可能在这个版本里已更名为vmw_balloon,通过下面的方法保险起见:
# cd/lib/modules/3.10.58/kernel/drivers/misc/
# ln-s vmw_balloon.ko vmware_balloon.ko#建立软连接
其实,针对安装docker的内核编译环境,最明智的选择是使用sciurus帮我们配置好的.config文件。
也建议在make bzImage之前,运行脚本check-config.sh检查当前内核运行docker所缺失的模块。
当提示缺少其他module时如NF_NAT_IPV4时,也可以通过上面的方法解决,然后重新编译。
4.几个重要的Linux内核文件介绍
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls–l。编译过RedHat Linux内核的人对其中的System.map、vmlinuz、initrd-2.4.7-10.img印象可能比较深刻,因为编译内核过程中涉及到这些文件的建立等操作。那么这几个文件是怎么产生的?又有什么作用呢?
(1)vmlinuz
vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。
vmlinuz的建立有两种方式。
一是编译内核时通过“make zImage”创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。
二是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage/boot/vmlinuz”产生。
bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。
zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip或 gzip–dc解包vmlinuz。
内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。
vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。
(2) initrd-x.x.x.img
initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。initrd-2.4.7-10.img是用gzip压缩的文件,下面来看一看这个文件的内容。
initrd实现加载一些模块和安装文件系统等。
initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd
下面的命令创建initrd映象文件:
(3) System.map
System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。
内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map。像下面这样:
nm/boot/vmlinux-2.4.7-10> System.map
下面几行来自/usr/src/linux-2.4/Makefile:
nm vmlinux| grep-v'(compiled)|(.o
)|([aUw])|(..ng
)|(LASH[RL]DI)'| sort> System.map
然后复制到/boot:
cp/usr/src/linux/System.map/boot/System.map-2.4.7-10
在进行程序设计时,会命名一些变量名或函数名之类的符号。Linux内核是一个很复杂的代码块,有许许多多的全局符号。
Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用size_t BytesRead这样的符号,而是像c0343f20这样引用这个变量。
对于使用计算机的人来说,更喜欢使用那些像size_t BytesRead这样的名字,而不喜欢像c0343f20这样的名字。内核主要是用c写的,所以编译器/连接器允许我们编码时使用符号名,当内核运行时使用地址。
然而,在有的情况下,我们需要知道符号的地址,或者需要知道地址对应的符号。这由符号表来完成,符号表是所有符号连同它们的地址的列表。Linux符号表使用到2个文件:/proc/ksyms和System.map。
/proc/ksyms是一个“proc file”,在内核引导时创建。实际上,它并不真正的是一个文件,它只不过是内核数据的表示,却给人们是一个磁盘文件的假象,这从它的文件大小是0可以看出来。然而,System.map是存在于你的文件系统上的实际文件。当你编译一个新内核时,各个符号名的地址要发生变化,你的老的System.map具有的是错误的符号信息。每次内核编译时产生一个新的System.map,你应当用新的System.map来取代老的System.map。
虽然内核本身并不真正使用System.map,但其它程序比如klogd, lsof和ps等软件需要一个正确的System.map。如果你使用错误的或没有System.map,klogd的输出将是不可靠的,这对于排除程序故障会带来困难。没有System.map,你可能会面临一些令人烦恼的提示信息。
另外少数驱动需要System.map来解析符号,没有为你当前运行的特定内核创建的System.map它们就不能正常工作。
Linux的内核日志守护进程klogd为了执行名称-地址解析,klogd需要使用System.map。System.map应当放在使用它的软件能够找到它的地方。执行:man klogd可知,如果没有将System.map作为一个变量的位置给klogd,那么它将按照下面的顺序,在三个地方查找System.map:
/boot/System.map
/System.map
/usr/src/linux/System.map
System.map也有版本信息,klogd能够智能地查找正确的映象(map)文件。