RHCE4.docx
《RHCE4.docx》由会员分享,可在线阅读,更多相关《RHCE4.docx(24页珍藏版)》请在冰豆网上搜索。
RHCE4
系统管理第一部分:
RPM包安装及管理
RPM:
红帽子包管理器(RedHatPackageManager)
今天我们主要就学习这种包管理方式
安装与卸除常用参数:
-i,-u,-F,-e
rpm-i:
在该rpm包与该包的旧版本未被安装过的情况下,安装该rpm包。
rpm-U:
无论系统是否有安装过某rpm包或其旧版本,安装或更新指定的rpm包。
rpm-F:
仅在系统已安装某rpm包的旧版本rpm包时,更新rpm包。
否则不安装。
卸除:
rpm–e包名(注:
去掉.rpm或I386.rmp结尾)
在安装的时候要显示进度,就需要加vh参数
所以一般安装包就是这样:
rpm-ivh包名字
大家先把光盘放入虚拟机的光驱.
然后我们到/misc/cd目录:
cd/misc/cd
5.4版本进入Server目录RHEL6.0版本进Packages目录
大家把vsftpd安装了吧,记住用TAB补全
这里提示我的机器这个包已经安装了。
然后大家在选个其他包安装下试试哈~
由于rpm安装依耐关系太郁闷,所以我们要学习yum安装.
RPM常用的命令
可能会用到的补充参数
输出用:
-v,-h
预设条件:
--nodeps,--force
重定位:
--root参数,允许将一个RPM包安装到mount在当前系统上的另一个Linux系统,或者另一个特定的目录上。
当升级内核的时候用这个命令:
rpm-Uvh--force 内核文件包
还有就是删除已经安装的包:
rpm-e包名,注意,包名不能写全,去掉后面的.rpm
记住删除和查看都用包名字,不需要版本号
详细选项:
-h(or--hash)安装时输出hash记号(``#'')
--test只对安装进行测试,并不实际安装。
--percent以百分比的形式输出安装的进度。
--excludedocs不安装软件包中的文档文件
--includedocs安装文档
--replacepkgs强制重新安装已经安装的软件包
--replacefiles替换属于其它软件包的文件
--force忽略软件包及文件的冲突
--noscripts不运行预安装和后安装脚本
--prefix将软件包安装到由指定的路径下
--ignorearch不校验软件包的结构
--ignoreos不检查软件包运行的操作系统
--nodeps不检查依赖性关系
--ftpproxy用作为FTP代理
--ftpport指定FTP的端口号为
--oldpackage给已经安装了最高版本的RPM降级
大家看看这些参数,有点印象就好了,要用的时候在查
RPM包的查询:
rpm-q:
查询某一个RPM包是否已安装 rpm-qa|grep-i包名---建议用这条去查询
rpm-qi:
查询某一个RPM包的详细信息
rpm-ql:
列出某RPM包中所包含的文件
rpm-qf:
查询某文件属于哪一个RPM包
rpm-qa:
列出当前系统所有已安装的包
大家先用rpm-qa查询所有
然后找个包,用rpm-ql 查看里面的文件
然后用rpm-qf 查看其中一个文件,得到这个文件是哪个包的
/var/log/rpmpkgs相当于rpm-qa输出的结果
对一个将要安装的RPM包,我们通常可以用rpm-qpi 或 rpm-qpl 来查询该包的相关信息与内含文件
RPM包的校验
rpm-V:
校验某个RPM包
rpm-Va:
校验所有已安装的RPM包
RPM包的检查
rpm-K:
检查RPM包的GPG签名
rpm-V可以让用户很方便地检查,与安装的时候相比,某RPM包中的文件是否发生了什么变化。
在使用rpm-V时,出错提示符号分别表示某部分未通过校验
S 文件大小
M 文件权限与类型
5 MD5求和
D 设备文件的主、从号码
L 符号连接文件找不到连接对象
U 文件的所属用户
G 文件的所属组
T 更改时间
•在使用rpm-K前,需要先从光盘中导入gpgkey
•rpm--import RPM-GPG-KEY-redhat-release(当将光盘放入光驱中,然后mount到/mnt/cdrom后)
YUM客户端及服务器的配置
yum,是YellowdogUpdaterModified的简称,起初是由yellowdog这一发行版的开发者TerraSoft研发,那时还叫做yup(yellowdogupdater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。
yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些header并加以分析,才能自动化地完成余下的任务
yum有以下特点:
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf)
自动解决增加或删除rpm包时遇到的依赖性问题
使用方便
保持与RPM数据库的一致性
RHEL6.0版本的yum仓库的配置。
首先看单机版的配置,也就是说只有一台服务器,我们快速配置yum5.4版本的单机版客户端也是这样配置
1、挂载光驱。
Mount/dev/cdrom/mnt意思是将光盘挂载到/mnt目录上。
2.[root@xian2~]#cat/etc/yum.repos.d/server.repo注意必须以rpm结尾
[base]仓库的名称
name=base描述名称
baseurl=file:
///mnt/Server本地的路径
enabled=1是否开启仓库,1为开启,0为关闭。
gpgcheck=1是否gpg签名检查,1为检查,0为不检查
gpgkey=file:
///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release如果上面gpg签名为不检查,那么这里就省略,如果是检查,需要配置。
网络配置。
首先安装ftp服务
1、[root@xian2Packages]#rpm-ivhvsftpd-2.2.2-6.el6.i686.rpm
Preparing...###########################################[100%]
1:
vsftpd###########################################[100%]
2、挂载光驱。
Mount/dev/cdrom/mnt意思是将光盘挂载到/mnt目录上。
3、将/mnt目录下所有的文件cp到/var/ftp/pub/rhel6/目录里面cp-r/mnt/*/var/ftp/pub/rhel6注意,需要提前创建rhel6目录。
4、启动ftp服务/etc/init.d/vsftpdstart
5、关闭防火墙,/etc/init.d/iptablesstop等以后我们学习过防火墙之后,我们就可以配置下防火墙,不用直接关闭了。
6、然后客户端需要修改下配置
[root@xian2~]#cat/etc/yum.repos.d/server.repo注意必须以rpm结尾
[base]仓库的名称
name=base描述名称
baseurl=ftp:
//IP/pub/rhel6/Server网络路径
enabled=1是否开启仓库,1为开启,0为关闭。
gpgcheck=1是否gpg签名检查,1为检查,0为不检查
gpgkey=file:
///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release如果上面gpg签名为不检查,那么这里就省略,如果是检查,需要配置。
2、下面我们开始配置RHEL5.4版本的服务器。
(1)挂载CD-ROM并安装VSFTPD。
(前提是讲RHEL的带RPM包的安装盘放进虚拟CD-ROM)
(2)安装成功以后,把光盘里Server目录拷贝到/var/ftp/pub目录里
将RPM-GPG-KEY-redhat-release文件拷贝到/var/ftp/pub/Server目录
完成之后,
(3)安装createrepo工具,然后用这个工具生成YUM通用数据库,记住使用TAB补全路径和命令。
然后生成yum数据库createrepo/var/ftp/pub/Server
(4)完成之后,重新启动ftp服务servicevsftpdrestart或者/etc/init.d/vsftpdrestart
客户端还是跟rhel6.0版本一样,只是替换了baseurl后面的本地路径成网络路径。
到此基本大功告成,下面我们进行测试:
安装
yuminstallpackage安装指定的安装包package1
更新和升级
yumupdate更新所有程序包
yumupdatepackage更新指定程序包package
yumcheck-update检查可更新的程序包
查找和显示
yuminfo显示安装包信息
yumlist显示所有已经安装和可以安装的程序包
yumlist显示指定程序包安装情况
yumsearch查找软件包
删除程序
yumremove|erasepackage1删除程序包
yumcleanheaders 清除header
yumcleanpackages 清除下载的rpm包
yumcleanall 清除header与rpm包
YUM故障排除:
1、检查网卡是否启动,检查是否有IP地址,PING自己的IP是否可以接通,是否可以PING通YUM服务器
2、检查客户端配置文件是否正确
3、检查VSFTPD服务是否开启
Linux系统启动流程以及修复系统
下面的内容是相当重要的。
只要你看懂了系统的启动流程,排错就基本没有多大问题了。
计算机启动,上电自检检查BIOS就不说了,所有系统都那样。
下面就是LINUX的启动流程:
1、硬件读取引导扇区
2、加载LILO或者Grub(一般我们使用的是GRUB,这个是重点)
3、加载内核(以只读方式挂载)
4、挂载根文件系统
5、启动init,一切进程的“父亲”
6、读取/etc/inittab文件 主要是定义启动的级别,3是字符界面,5是图形化界面。
7、读取rc.sysinit文件 ---系统定义的一些服务。
8、运行rcX.d下的文件(文件都是init.d下的符号链接)
其中有一个xinetd的超级进程,调用/etc/xinetd.conf配置文件,从配置文件中知道读/etc/xinetd.d文件,结束后调用Miggetty
9、读取/etc/rc.d/rc.local文件
具体步骤在启动的时候大家都能看见
BIOS初始化
检查外围设备
检查启动设备
读区MBR
启动引导工具引导并运行核心,分为两个独立的阶段:
第一阶段:
存放在启动扇区
第二阶段;/boot目录下的文件
第一阶段即BIOS从启动扇区中读入IPL(初始化程序引导工具)这一过程。
因为MBR的空间太小,所以启动引导工具往往还需要从其他地方进一步读入数据,即所谓第二阶段。
这通常是一个可以做选择的交互界面。
在Linux中常用的启动引导工具:
grub和lilo
在某些时候,WINDOWS支持多系统就需要安装GRUB哈
GRUB:
GrandUnifiedBootloader
被广泛地用于替代lilo
支持在启动时使用命令行模式
支持md5加密保护
可以从ext2/ext3、ReiseFS、JFS、FAT、minix及FFS文件系统上启动
其配置文件为/boot/grub/grub.conf,更改grub.conf即可立时生效
如果硬盘上的MBR被更动过,可以用/sbin/grub-install/dev/hda来重安装grub
现在我们打开/boot/grub/grub.conf查看一下哈:
vim/boot/grub/grub.conf
我们分析一下这个文件哈:
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:
Youhavea/bootpartition. Thismeansthat
# allkernelandinitrdpathsarerelativeto/boot/,eg.
# root(hd0,0)
# kernel/vmlinuz-versionroroot=/dev/sda2
# initrd/initrd-version.img
#boot=/dev/sda
default=0
#default=0表示默认启动第一个系统,如果系统有两个系统是用什么做为分隔符的呢?
title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。
timeout=5
#timout=5,就是默认在启动选择界面停留的时间,单位是秒。
等待5秒自动进入默认操作系统
splashimage=(hd0,0)/grub/splash.xpm.gz
#splashimage是grub启动背景画面,如果是自己写grub.conf文件,这个可以不用写。
hiddenmenu
titleRedHatEnterpriseLinuxServer(2.6.18-53.el5)
#title后面就是系统在启动时候显示的名字
root(hd0,0)
#root启动文件所在位置
kernel/vmlinuz-2.6.18-53.el5roroot=LABEL=/rhgbquiet
#kernel内核所在位置和名字
initrd/initrd-2.6.18-53.el5.img
#initrd内核镜象的名字
大家记一下自己的系统哈,下面我们做个实验,特别是系统版本不一样的更要记住。
把后面三行删掉后保存退出。
保存退出,然后重启机器
我们重启后系统停在这里了
出现刚才的图是正常的,因为我们修改了grub.conf文件,GRUB找不到启动文件了,所以我们就要手动敲进去
第一步:
运行root(hd0,0) (这是/boot所在的分区)
第二步:
执行kernel/boot/vmlinuz-2.6.18-164.el5roroot=LABEL=/rhgbquiet(用来指定linux内核)
第三步:
执行initrd/boot/initrd-2.6.18-164.el5.img(用来指定initrd文件)
第四步:
执行boot
看见红色的redhat,就证明你的内核加载成功了
好了,启动正常。
下面我们来点狠的,这次我们就要把grub.conf删除掉。
然后我们重新启动我们的系统
好了,和刚才一样的,小问题,大家自己动手,主要想强迫你们记忆下grub.conf的内容
注意:
运行root或者find/vmlinuz-2.6.18-53el5(可以使用TAB补全),可以搜索vmlinuz所在分区,也就是/boot所在分区
第一步:
运行root(hd0,0) (这是/boot所在的分区,其中括号内的信息,就是上面命令的回显.)
第二步:
执行kernel/boot/vmlinuz-2.6.18-164.el5roroot=LABEL=/rhgbquiet(用来指定linux内核)
第三步:
执行initrd/boot/initrd-2.6.18-164.el5.img(用来指定initrd文件)
第四步:
执行boot
看到红色的redhat证明我们成功了。
OK,启动正常。
通过刚才2次小试牛刀,这次我们来点更狠的,我们对自己狠点。
来狠滴,我们把/boot分区里的文件全部删除了掉哦,一个也不剩(不删boot分区,只删除里面文件)rm-rf/boot/*
又跑这来了
好吧,现在我们把RHEL5的ISO镜像放进去,然后设置从光驱启动,我们要进救援模式了。
第一步:
将RHEL5安装放入光驱并设置从光驱启动系统
第二步:
输入linuxrescue
第三步:
这里选择语言哈
这里选择美式键盘
这里我们不启用网络接口
第四步:
这步注意,要让系统帮你自动挂载以前的系统,也就是硬盘里的系统
好了,现在就正式进入救援模式了。
下面我们使用#chroot切换到硬盘的系统
具体命令#chroot/mnt/sysimage/
然后我们去boot查看缺少了什么文件哈:
#cd/boot&& ls
查看故障原因,我们发现/boot目录下一个文件也没有了
由于boot下面主要是内核和GRUB,所以我们安装这两个东西
安装就要先挂载cd,mount就是挂载,这个以后会讲
mkdir/mnt/cd
然后就是安装kernel,在安装内核时会自动生成initrd
cd/mnt/cd/Server/
rpm-Uvh--forcekernel-2.6.18-164.el5.i686.rpm
安装好内核后,我们去/boot目录看看
内核和initrd已经有了,然后我们需要安装GRUB
然而刚安装的GRUB是没有配置文件的,我们可以自己写一个哈,如果你boot分区的grub目录里的grub.conf配置文件丢失或者错误,回出现什么情况呢?
系统启动会进入GRUB模式。
但是这个不严重,我们只需要给系统提供系统启动的参数就能正常进入系统。
我们去看看是不是没有这个文件。
那我们就自己写一个哈~
cd/boot/grub/
touchgrub.conf
vimgrub.conf
启动后就进入这个界面了,这就是因为没有我们刚才说的那个环境图片那个文件的原因。
注意哈:
kernel/vmlinuz-2.6.18-164.el5roroot=LABEL=/rhgbquiet
rhgb:
表示redhatgraphicsboot,就是会看到图片来代替启动过程中显示的文本信息,这些信息在启动后用dmesg也可以看到
quiet:
表示在启动过程中只有重要信息显示,类似硬件自检的消息不回显示
OK了,我们去看看grub.conf的配置文件是不是刚才我写的是这样的吧
内核模型
单片型内核
单片型内核将各种硬件支持、网络协议与文件系统管理都编译入一个单一的文件中。
模块型内核:
模块型内核则允许计算机在使用到某一项功能的时候自动加载,防止了核心臃肿,是大部分情况下的标准构建。
默认核心存放路径:
/boot
核心版本命名规则:
主版本号、次版本号、补丁级数RedHat附加参数:
发布号
显示当前系统的内核信息#uname–r
核心RPM包
kernel-..rpm
预编译核心及模块
kernel-source-..rpm
核心源代码,需要人工编译出核心并安装
kernel-.src.rpm
[url]www.kernel.org[/url]上发布的原始核心源代码包,需要build出arch包再使用
vmlinuz
是可引导的、压缩的内核。
“vm”代表“VirtualMemory“,Linux支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。
Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。
vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。
vmlinuz的建立有两种方式:
(1)编译内核时通过“makezImage”创建,zImage适用于小内核的情况,它的存在是为了向后的兼容性。
(2)内核编译时通过命令makebzImage创建(单独编译内核映像,不编译驱动模块,生成内核映像bzImage)
Initrd
initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。
比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。
为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。
initrd映象文件是使用mkinitrd创建的。
mkinitrd实用程序能够创建initrd映象文件。
这个命令是RedHat专有的。
其它Linux发行版或许有相应的命令。
这是个很方便的实用程序。
#mkinitrd initrd-版本号.img 版本号
核心启动流程:
检测硬件设备
设备驱动初始化
将根分区以只读方式挂载
载入初始进程(一般是init)
init从/etc/inittab中读取数据并初始化
init运行级别:
系统启动脚本
执行运行级别对应目录下的脚本
设置热键
定义UPS设备脚本
在虚拟控制台上循环开启getty进程
定义runlevel5时的X显示管理器
init定义了0~6这7个运行级别,运行级别可以被指定于:
系统启动时作为核心加载参数被指定
未被指定的情况下,系统启动时从/etc/inittab中读取
在系统运行中,root用户键入init[0-6]来指定。
用户可以用/sbin/runlevel来查看当前的运行级别
系统的运行级别默认情况下为:
•0:
关机
•1/S/emergency:
单用户模式,通常用于维护系统
•2:
多用户模式但无网络
•3:
多用户模式(字符界面)
•4:
用户定义,未定义情况下与3相同
•5:
X11(包括网络)
•6:
系统重启
/etc/rc.d/rc.sysinit是系统启动用的脚本,从/etc/sysctl.conf中读取核心参数:
设置系统时钟
载入keymap
激活swap分区
设置主机名
检查根文件系统并挂载
加载Raid设备
激活磁盘限额
检查并挂载其他文件系统
清除失效锁及PID文