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)文件。

阅读剩余
THE END