目录
准备工作
安装linux系统
重置root管理员密码
源代码编译
RPM
YUM软件仓库
配置本地YUM仓库
初始化及启动进程
参考资料
准备工作
电脑:我的配置是24G内存+i7+512G SSD+1060显卡 (注意:内存一定要8G以上,SSD硬盘)
CPU需要支持VT(Virtualization Technology,虚拟化技术):VT,指的是让单台计算机能够分割出多个独立资源区,并让每个资源区按照需要模拟出系统的一项技术,其本质就是通过中间层实现计算机资源的管理和再分配,让系统资源的利用率最大化。
软件:VMware WorkStation Pro 12 (老刘推荐的,RHCE 7.0考试环境用的VM12)
安装虚拟机:略,网上教程很多
镜像或工具校验:保证软件包的安全与完整性 (linux的镜像可以去阿里云或网易去下载)
安装linux系统
1.虚拟机设置
新建虚拟机
步骤:创建新的虚拟机--新建虚拟机向导--稍后安装操作系统--操作系统“Linux”,版本为“Red Hat Enterprise Linux 7 64位—填写虚拟机名称和安装路径--“最大磁盘大小”设置为20.0GB(默认即可)
虚拟机设置
步骤:虚拟机设置--硬件--内存(最低1G)--处理器(开启虚拟化功能,核心保持与物理机一致可以提高性能)--光驱(使用IOS镜像)--网络适配器(仅主机模式)--显示器(自动检测)
图2-1 处理器,光驱设置
图2-2 网卡,显示器设置
桥接模式:相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
NAT模式:让VM虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件模拟的主机可以通过物理主机访问外网,在真机中NAT虚拟机网卡对应的物理网卡是VMnet8。
仅主机模式:仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅主机模式模拟网卡对应的物理网卡是VMnet1。
注意:把USB控制器、声卡、打印机设备等不需要的设备统统移除掉。移掉声卡后可以避免在输入错误后发出提示声音,确保自己在今后实验中思绪不被打扰。
2.安装linux系统
进入安装界面,选择Install Red Hat Enterprise Linux 7.0选项来直接安装Linux系统。
步骤:安装向导的初始化--选择系统的安装语言--安装系统界面--选择系统软件类型--配置网络和主机名--系统安装媒介的选择-- RHEL 7系统的安装界面--设置root管理员的密码--创建本地的普通用户--系统安装完成,重启—启用Kdump服务--系统的欢迎界面
图2-3 安装界面选择
图2-4 安装界面,选择系统软件
图2-5 网络,主机名,硬盘设置
图2-6 系统安装过程,root密码设置
图2-7 启用Kdump服务
图2-8 系统的欢迎界面
重置root管理员密码
1.查看当前系统版本
[root@redhat7 桌面]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
2.重置root管理员密码(redhat7.0)
步骤:引导界面通过按键e进入内核编辑界面--在linux16这一行最后插入 rd.break (注意,rd.break前面要加个 \)--ctrl+x重启进入紧急救援模式--依次输入一下命令:
mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot
图2-9 引导界面
图2-10 内核编辑界面
图2-11 紧急救援模式界面
图2-12 密码重置,旧密码已失效
3.重置root管理员密码(redhat6.4)
重启系统,按E或ESC进入GRUB启动菜单
按E进入编辑界面,修改启动参数
编辑内核启动参数;可以在行尾添加single 或 1,表示进入单用户模式;按enter键确认后按b键进入boot模式
修改系统密码;完成后输入重启命令
重新登陆系统
源代码编译
优点:获得最新的软件版本,及时修复bug;根据用户需要,灵活定制软件功能
应用场合
安装较新版本的应用程序时;自由软件的最新版本大都以源码的形式最先发布
当前安装的程序无法满足需要时;编译安装可由用户自行修改、定制功能
需要为应用程序添加新的功能时;用户可以重新配置、自由修改源代码,加入新的功能
1.编译安装源代码包
完整性校验:md5sum校验工具;计算MD5校验和,并与官方提供的值相比较,判断是否一致;对于下载回来的软件包文件,如果MD5校验和与官方提供的不一致,则说明该软件包在网络传输过程中可能被非法改动过
对于校验和不一致的软件包,应尽量不要使用,以免带来病毒、木马等不安全因素
2.编译安装的基本过程
环境:需安装支持C/C++程序语言的编译器,如:gcc-4.4.7-4.el6、gcc-c++-4.4.7-4.el6 ;make-3.81-20.el6.……
步骤1.解包:习惯上将软件包释放到/usr/src/ 目录;解包后的源代码文件位置: /usr/src/软件名-版本号/
步骤2. 配置:使用源码目录中的configure 脚本;执行“./configure --help” 可以查看帮助;典型的配置选项: --prefix=软件安装目录。在linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,如:(/configure—prefix=/usr/local/apache)中。
步骤3. 编译:执行make 命令
步骤4. 安装:执行make install 命令
图2-13 源代码安装步骤
在linux中编译源代码需要使用gcc. Make编译环境;从源代码安装应用程序的基本过程包括解包. 配置. 编译. 安装这四个步骤。
3.configure脚本的通用功能
configure一般都会接受以下几个编译选项:
--prefix= :指定安装的路径
--sysconfdir= :指定配置文件目录
--enable-feature :启用某个特性
--disable-fecture :禁用特性
--with-function :启用某功能
--without-function :禁用某功能
不同的程序,其configure选项不尽相同,应使用"./configure --help"获取具体的信息。
4.源码编译安装须知
4.1.上面的每一个步骤都不能出错,否则后一步都不能正常进行。
4.2.上面的步骤每一步如果出现警告或错误,如果步骤未停止而是继续,则属于可忽略错误或警告,不影响安装。但是进行的步骤停止了出现警告或错误,则根据步骤考虑对策。可以使用“$?”命令查看上一个命令是否正确执行,如果是返回0则是正确,其他的则是错误。
4.3.卸载时,只需删除安装目录即可。
因此,若要便于删除,最好将源码程序安装在/usr/local/对应的目录下。例如apache2安装在/usr/local/apache2下。
4.4.通过源码编译的软件,需要做一些后续操作,虽非必须,但是都是个性化定制,方便以后的操作。个性化定制大致包括以下几项:
4.4.1.将安装路径下的命令路径加入到环境变量。
shell> echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/apache.sh
shell> chmod +x /etc/profile.d/apache.sh
shell> source /etc/profile.d/apache.sh
4.4.2.按需求定制服务启动脚本,并考虑是否加入开机启动项。
4.4.3.输出头文件和库文件。头文件库文件很多时候只是为其他程序提供的,所以可能不输出它们的路径也不会影响该程序的运行。
# 输出头文件 shell> ln -s /usr/local/apache/include /usr/include/apache
# 输出库文件
shell> echo "/usr/local/apache/lib" >/etc/ld.so.conf.d/apache.conf
shell> ldconfig
4.4.4.导出man路径 shell> echo "MANPATH /usr/local/apache/man" >> /etc/man.conf
RPM(红帽软件包管理器)
rpm=源代码+安装规则-->降低软件安装难度(通过将程序源代码与安装规则打包到一起,无需用户手动设置)
命名格式:软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm
图2-14 RPM命名格式
1.查询 RPM 软件包信息
1.1.查询已安装的rpm软件信息
语法:rpm -q[子选项] [软件名]
用法:结合不同的子选项完成不同查询
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息(--info)
-ql:查询指定软件包所安装的目录、文件列表(--list)
1.2.查询文件或目录属于哪个RPM 软件
语法:rpm - qf文件或目录名
1.3.查询未安装的RPM 包文件
语法:rpm - qp[子选项] RPM包文件
用法: -qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
注意:使用rpm命令只能查询通过 RPM方式安装的软件包信息用其他途径安装到系统中的软件包,rpm命令将无法获取相关信息
2. 安装、升级、卸载 RPM 软件包
2.1.安装或升级RPM软件
语法:rpm [选项] RPM包文件...
用法:-i:安装一个新的rpm 软件包
-U:升级某个rpm 软件,若原本未装,则进行安装
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
2.2.卸载指定的RPM软件
语法:rpm -e 软件名
--nodeps:删除软件包,即使有依赖关系的软件包任然安装在系统上
--test:不执行任何动作,只打印输出
3. 维护RPM数据库
linux中保留了当前安装软件的数据库,该数据库位于/var/lin/rpm/目录中。使用file /var/lib/rpm/*命令查看目录内容,可以看到都是二进制形式的散列数据库文件。
查看数字签名
4.解决软件包依赖关系
安装有依赖关系的多个软件时:被依赖的软件包需要先安装;可同时指定多个.rpm 包文件进行安装
卸载有依赖关系的多个软件时:依赖其他程序的软件包需要先卸载;可同时指定多个软件名进行卸载
忽略依赖关系:结合“--nodeps”选项,但可能导致软件异常
扩展:RPM相关注意事项
RPM软件包的先决条件可以运用命令行选项—requires和—provides直接查看
安装vsftpd的先决条件: 命令rpm -q -requires vsftpd
显示软件包显性提供内容:命令rpm -q -provides vsftpd
显示vsftpd的安装脚本: 命令rpm -q --scripts vsftpd
按时间顺序显示系统上安装的RPM包:命令rpm -qa –last
解决RPM的些常见问题(访问数据库)
Killall-9 rpm 命令杀死所有当前挂起的rpm进程
将RPM数据库目录(/var/lib/rpm/)中所有以 _db. 开头的文件删除
注意:RPM安装方式在实际生产环境中并不常用(依赖关系太多,不如yum方便),一般常用的安装方式为源码,yum及脚本安装。
YUM软件仓库
Yum(全称为 Yellow dog Updater, Modified)是Linux系统中的前端软件包管理器。基于包管理,能够从指定的服务器(YUM软件仓库)自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
简单来说就是:进一步降低软件的安装难度。(通过将大量的、常用的RPM软件包存放到一起,根据用户的需求而进行自动安装)。
图2-15 Yum软件仓库技术拓扑
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
语法: yum (选项) (参数)
选项: -y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
参数: install: 安装rpm软件包;
update: 更新rpm软件包;
check-update: 检查是否有可用的更新rpm软件包;
remove/erase: 删除指定的rpm软件包;
list: 显示软件包的信息;
search: 检查软件包的信息;
info: 显示指定的rpm软件包的描述信息和概要信息;
clean: 清理yum过期的缓存;
resolvedep: 显示rpm软件包的依赖关系;
localupdate: 显示本地rpm软件包进行更新;
deplist: 显示rpm软件包的所有依赖关系。
实例,部分常用的命令包括:
自动搜索最快镜像插件:yum install yum-fastestmirror
安装yum图形窗口插件:yum install yumex
查看可能批量安装的列表:yum grouplist
yum groupinsall group1 #安装程序组group1
yum check-update #检查可更新的程序
yum upgrade package1 #升级指定程序包package1
yum groupinfo group1 #显示程序组group1信息
yum search string #根据关键字string查找安装包
配置本地YUM仓库(基于iOS镜像)
/etc/yum.conf是yum的默认文件,里面配置的也是全局默认项。
[root@server2 ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever <==缓存目录
keepcache=0 <==是否保留缓存,设置为1时,安装包时所下载的包将不会被删除
debuglevel=2 <==调试信息的级别
logfile=/var/log/yum.log <==日志文件位置
exactarch=1 <==设置为1将只会安装和系统架构完全匹配的包
obsoletes=1 <==是否允许更新旧的包
gpgcheck=1 <==是否要进行gpg check
plugins=1 <==是否允许使用yum插件
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release <==指定基准包,yum会根据这个包判断发行版本
1.软件仓库的提供方式 :FTP服务:ftp://...... ;HTTP服务:http://...... ;本地目录:file:///.......
2.RPM软件包的来源 :Red Hat发布的RPM包集合 ;第三方组织发布的RPM包集合 ;用户自定义的RPM包集合
3.构建RHEL 6软件仓库(本地源):RPM包来自RHEL 6 DVD光盘,通过FTP、HTTP
或本地目录提供给客户机
3.1.创建文件夹/cdrom,将光盘文件复制到/cdrom
[root@RedHat6 桌面]# mkdir /cdrom
[root@RedHat6 桌面]# cp -rf /media/RHEL_6.4\ x86_64\ Disc\ 1/* /cdrom/
3.2.进入/etc/yum.reposd/目录删除原有文件
[root@RedHat6 桌面]# cd /etc/yum.repos.d/
[root@RedHat6 yum.repos.d]# rm -rf *
3.3.编辑配置文件local.reop
[root@RedHat6 yum.repos.d]# cat local.repo
[cdrom] <==仓库类别
name=cdrom <==仓库名称(说明)
baseurl=file:///cdrom <==URL访问路径
enabled=1 <==启用此软件仓库
gpgcheck=0 <==验证软件包的签名(1是,0否)
3.4.获取yum列表:验证yum配置是否成功
[root@RedHat6 yum.repos.d]# yum clean all <==清空缓存
[root@RedHat6 yum.repos.d]# yum makecache <==生成元数据缓存
[root@RedHat6 yum.repos.d]# yum list <==查询软软件包列表
YUM缓存目录:存放下载的软件包、仓库信息等数据,位于/var/cache/yum/$basearch/$releasever
初始化及启动过程
Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。
图2-13 linux6.0 初始化过程
1.详细步骤:( centos6)
1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机
2.CentOS7与6版本的不同之处:
6 : grub0.9和upstart
7 : grub2和systemd
3.详细步骤:( centos7)
1.UEFi或BIOS初始化,运行POST开机自检
2.选择启动设备
3.引导装载程序:grub2
4.加载装载程序的配置文件:/boot/grub2/grub.cfg
5.加载initramfs驱动模块:/boot/initramfs-3.10.0-693.el7.x86_64.img
6.加载内核:/boot/vmlinuz-3.10.0-693.el7.x86_64
7.内核初始化:systemd
8.执行initrd.target所有单元,包括挂载/etc/fstab
9.从initramfs根文件系统切换到磁盘根目录
10.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
11.systemd执行sysinit.target初始化系统及basic.target准备操作系统
12.systemd启动multi-user.target下的本机与服务器服务
13.systemd执行multi-user.target下的/etc/rc.d/rc.local
14.Systemd执行multi-user.target下的getty.target及登录服务
15.如果启动图形界面systemd执行graphical需要的服务
4. centOS 6 与 centOS 7的区别
System V init运行级别 | systemd目标名称 | 作用 |
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别3 |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急Shell |
表1-1 systemd与System V init的区别和作用
System V init命令(RHEL 6系统) | systemctl命令(RHEL 7系统) | 作用 |
service foo start | systemctl start foo.service | 启动服务 |
service foo restart | systemctl restart foo.service | 重启服务 |
service foo stop | systemctl stop foo.service | 停止服务 |
service foo reload | systemctl reload foo.service | 重新加载配置文件(不终止服务) |
service foo status | systemctl status foo.service | 查看服务状态 |
表1-2 systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
System V init命令(RHEL 6系统) | systemctl命令(RHEL 7系统) | 作用 |
chkconfig foo on | systemctl enable foo.service | 开机自动启动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为开机自动启动 |
chkconfig --list | systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用情况 |
表1-3 systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
5.centos7相比centos6做了哪些改进?
5.1.systemd取代了init,成为系统的第一个进程,并且init是串行启动,而systemd是并行启动
5.2.内核版本的升级,系统安全补丁得到增强。
5.3.文件系统由ext4升级到xfs,XFS比EXT4更适合大文件处理,但消耗的CPU资源是EXT4的两倍
5.4.防火墙firewalld代替了iptables
6. RHEL 7修改默认级别方法(老刘书上只有一条命令,不是很清楚)
6.1.打开inittab,发现熟悉的inittab中没有了修改默认运行级别,中间没有了熟悉的 id:5:initdefault 。
图2-14 inittabp默认配置
6.2.RHEL7 使用systemd创建符号链接指向默认运行级别
步骤:
1.首先删除已经存在的符号链接 rm /etc/systemd/system/default.target
2.默认级别转换为3(文本模式) ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或者默认级别转换为5(图形模式) ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
3.重启 reboot
图2-15 默认级别转换测试
这里晒下读书笔记
参考资料
刘瑞 Linux就该怎么学
Linux公社