Linux启动和内核管理
本章内容:
centos5和centos6的启动流程
服务管理
grub管理
自制Linux
启动排错
编译安装内核
Linux的组成:
Linux:kernel+rootfs(根文件系统)
kernel:进程管理、内存管理、网络管理、驱动管理、文件系统、安全功能。
rootfs:程序和glibc
库:函数集合,function,调用接头,过程调用,函数调用。
程序:二进制执行文件。
内核设计流派:
单内核:Linux 把所有功能集成于同一个程序。
微内核:Windows 每种功能使用一个单独的子系统实现。
Linux内核特点:
支持模块化:.ko(内核对象)例如:文件系统、硬件驱动、网络协议等。
支持内核模块的动态装载和卸载。
内核组成部分:
核心文件:/boot/vmlinuz-VERSION-release
临时系统镜像文件:(伪根系统)
centos5 :/boot/inird-VERSION-release.img
centos7 :/boot/initramfs-VERSION-release.img
模块文件:/lib/modules/VERSION-release
centos6启动流程:
post加电自检—->MBR引导—->GRUB菜单—->加载内核—->运行init进程—->读取/etc/inittab配置文件—->执行/etc/rc.d/rc.sysinit脚本—->执行/etc/rc.d/rcX.d*—–>执行/etc/rc.d/rc.local脚本——>执行/bin/login程序,进入登录状态。
centos启动流程的三个阶段:
系统启动的stage 1为:MBR中的前446个字节。
系统启动的stage1.5为:mbr之后的扇区,让stage1中的bootloader能识别stage2所在分区的文件系统。
系统启动的stage 2 为:/boot/grub。
kernel: 通过/boot/grub/grub.conf配置文件中kernel行指定的内核路径去加载内核,根据initrd行指定的ramdisk伪根系统路径去加载系统根文件系统驱动,以只读方式挂载根文件系统,运行用户空间的第一个init进程。读取/etc/inittab和/etc/init/*.conf配置文件执行系统的登录运行级别(runlevel)执行/etc/rc.d/rc.sysinit初始化脚本,执行定义的登录模式执行/etc/rc.d/rcX.d脚本启动或终止那些服务服务,执行/etc/rc.d/rc.local脚本,最后运行终端程序/sbin/mingetty,终端程序会自动调用/etc/login用户登录系统。
ramdisk:initramfs-2.6.32-642.el6.x86_64.img
内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问。
ramdisk——>ramfs提高速度
centos5:initrd,工具程序:mkinitrd
centos6:initramfs,工具程序:mkinitrd dracut
实验测试:
光盘急救模式下修复误删除/boot下的伪根文件系统initramfs-2.6.32-642.el6.x86_64.img
1) 误删除centos6系统中的伪根系统
[root@centos6 boot]# rm -rf initramfs-2.6.32-642.el6.x86_64.img
[root@centos6 boot]# ls
config-2.6.32-642.el6.x86_64 efi grub vmlinuz-2.6.32-642.el6.x86_64
lost+found symvers-2.6.32-642.el6.x86_64.gz System.map-2.6.32-642.el6.x86_64
[root@centos6 boot]#
2)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
3)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
4)进入光盘引导界面,选择Rescue installed system 回车。
5)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到系统的根目录下。
bash-4.1# chroot /mnt/sysimage
sh-4.1# cd /boot
sh-4.1#mkinitrd initramfs-`uname -r`.img `uname -r`
6)执行两次exit,选择reboot重启。
init初始化:
runlevel系统的运行级别:
运行级别:为系统运行或维护等目的而设定:0-6级别。
各运行级别含义如下(runlevel):
0:关机,使用该级别会关闭主机。
1:单用户模式,不需要密码验证即可登录系统,多用于维护。
2:字符界面的多用户模式,启动网络功能,但不会启动nfs,多用于维护。
3:字符界面的完整多用户模式,大多数服务器运行在此级别。
4:未分配使用。
5:图形界面的多用户模式,提供了图形桌面操作环境。
6:重新启动,使用该级别将会重启主机。
默认级别:3 5
命令行切换级别:init #
查看当前系统运行级别:runlevel或 who -r
init读取/etc/inittab配置文件
初始化运行级别runlevel:id:5:initdefault:
系统初始化脚本:si::sysinit:/etc/rc.d/rc.sysinit
对应运行级别的脚本目录:l3:3:wait:/etc/rc.d/rc 3 (根据S*顺序启动服务)
定义关机快捷键:ca::ctrlaltdel:/sbin/shutdown -t3 -r now
定义UPS电源终端断电:pf::powerfail:/sbin/shutdown -f -h +2
定义UPS电源终端恢复供电:pr:12345:powerokwait:/sbin/shutdown -c
对应运行级别运行终端程序:3:2345:respawn:/sbin/mingetty tty3
在运行级别5中初始化X服务:x:5:respawn:/etc/X11/prefdm -nodaemon
action–动作类型:
initdefault:设置初始化系统后默认进入的运行级别。
sysinit:设置系统初始化的操作脚本。
wait:init进程将等待该行配置所对应的脚本操作完成后,在继续执行其他操作。
ctrlaltdel:设置当用户按下ctrl+alt+delete组合键后的操作。
powerfail:设置当系统收到断电信号时采取何种动作。
powerokwait:设置当系统收到回复供电信号时采取何种动作。
respawn:一旦该行配置所对应的进程被终止,则重新启动该进程。
系统初始化脚本:/etc/rc.d/rc.sysinit脚本定义的功能:
(1)设置主机名
(2)设置欢迎词
(3)激活udev和selinux
(4)挂载/etc/fstab文件中定义的文件系统
(5)检测根文件系统,并以读写方式重新挂载根文件系统
(6)设置系统时钟
(7)激活swap设置
(8)根据/etc/sysctl.conf文件设置内核参数
(9)激活lvm及software raid设备
(10)加载额外设备的启动程序
(11)清理操作
/etc/rc.d/rcX.d脚本:
rcX.d:X根据id:5:initdefault:执行相对应的脚本。
/etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d
/etc/rc.d/rcX.d目录中的链接文件具有共同的规律:文件名以K或S开头,中间是数字序号,最后是系统中的服务脚本名。如:K95firstboot、S10network等,所链接的原始服务脚本位于/etc/rc.d/init.d/目录中,其中以S开头的文件表示启动对应的服务,以K开头的表示终止对应的服务,中间的数字表示在启动时或终止服务时的执行顺序。
S*:S##运行次序,数字越小,越先运行,数字越小的服务,通常会被别的服务所依赖。
K*:K##运行次序,数字越小,越先运行,数字越小的服务,通常会依赖别的服务。
/etc/rc.d/rc.local脚本:
rc.local脚本是一个额外的启动控制文件,由/etc/rc.d/rcX.d/中的S99local链接至位于/etc/rc.d/rc/local。rc.local脚本通常有rc脚本在最后进行加载,其作用主要是为管理员自行设置启动命令提供一种途径,需要在开机后自动执行的一些命令操作都可以添加到该文件中。
注:rc.local脚本要写命令的绝对路径。
centos5、6设置系统服务在不同运行级别中的状态:
需要调整各种服务在不同运行级别中的自启动状态时,可以使用chkconfig或者ntsysv图形化命令工具。
使用ntsysv图形化配置工具,使用空格键启动或关闭服务。
[root@centos6 rc5.d]# ntsysv
使用chkconfig配置工具
将chkconfig命令与–list选项配合使用,可以查看特定服务在不同运行级别中的启动状态。
示例:
[root@centos6 rc5.d]# chkconfig –list network
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@centos6 rc5.d]#
查看系统中所有服务在个运行级别中的启动状态。
[root@centos6 rc5.d]# chkconfig –list
将chkconfig命令与–level选项配合使用,设置指定服务在指定运行级别中的启动状态
[root@centos6 rc5.d]# chkconfig –level 235 network off
[root@centos6 rc5.d]# chkconfig –level 235 network on
chkconfig也可以使用不带–level选项,设置服务的启动状态。
[root@centos6 rc5.d]# chkconfig network on
[root@centos6 rc5.d]# chkconfig –list network
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@centos6 rc5.d]#
破解centos5和6的root密码:
通过单用户模式破解root密码
(1)重启主机之后,在出现grub菜单时按任意键取消倒计时,并定位到title行,按e键进入编辑模式。
(2)定位到以kernel开头的行并按e键,在行尾添加“single”或“S”或“s”或数字“1”,都可以进入到单用户模式。
(3)回车后,按b键将系统引导进入当用户模式,进入shell环境。
(4)在单用户模式shell环境中,直接执行“passwd root”重新设置root用户密码。
grub:Grand Unified Bootloader
centos6:使用grub版本grub-0.97-94.el6_7.1.x86_64
centos7:使用grub版本grub2-2.02-0.16.el7.centos.x86_64
grub启动三个阶段:
stage1:mbr扇区前446个字节。
stage1.5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在分区的文件系统。
stage2:磁盘分区/boot/grub。
grub配置文件:
/etc/grub/grub.conf ———–>软链接/etc/grub.conf
一般stage2放置在/boot/grub目录下,内核文件放置在/boot目录下。
1) grub提供启动菜单,并提供交互式接口。
选项:
a:修改内核参数;
e:编辑模式,用于编辑菜单内容;
c:命令模式,提供交互式接口
2)加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏启动菜单
3)为grub菜单提供保护机制
为编辑启动菜单进行认证
为启用内核或操作系统进行认证
grub的命令行接口:
手动在grub命令行接口启动系统:
grub> root (hd0,0) //第一块硬盘的第一个分区,这里的root表示根。
grub>kernel /vmlinuz-3.10.0-229.el7.x86_64 ro root=/dev/sda5 //启动的内核
grub>initrd /initramfs-3.10.0-229.el7.x86_64.img //伪根系统
grub>boot //重新引导
注意:如果/boot分区和 / 分区都在一个分区里,那么上例中的kernel 和initrd 的路径都要在前面加上 /boot/vmlinuz-3.10.0-229.el7.x86_64 ro root=/dev/sda5 和 /initrd /boot/initramfs-3.10.0-229.el7.x86_64.img。
内核kernel参数:
max_loop=100 selinux=0 init=/bin/bash 等
内核参数文档:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt
查看内核参数:
cat /proc/cmdline
grub引导菜单配置文件:
[root@centos6 Desktop]# vim /boot/grub/grub.conf
default=0 //默认从#个内核启动;
timeout=5 //启动菜单项等待选择的时长,默认为5秒;
splashimage=(hd0,0)/grub/splash.xpm.gz //菜单背景图片路径;
hiddenmenu //隐藏菜单
title CentOS 6 (2.6.32-642.el6.x86_64) //定义菜单项标题;
root (hd0,0) grub查找stage2及kernel //文件所在设备分区,为grub根;
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5 rhgb quie//启动的内核
initrd /initramfs-2.6.32-642.el6.x86_64.img //伪根系统
grub引导菜单加密:
MD5 :密文加密命令:
grub-md5-crypt
openssl passwd -1
在grub.conf配置文件中,grub密码配置行若添加在第一个“title”行之前,则仅在需要变更grub引导参数的时候才需要提供密码;若添加在“root(hd0,0)”之前,则在进入该系统的时候即需要提供密码。
示例:需要编辑grub引导参数时提供的密码,例如:进单用户模式,添加内核参数等。
default=0
timeout=5
hiddenmenu
password –md5 $1$u/gGz$sK5b73aj6gQwFn6ATHzie0
title CentOS 6 (2.6.32-642.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5
initrd /initramfs-2.6.32-642.el6.x86_64.img
注:在vim末行模式下执行:r!grub-md5-crypt,敲击两次密码。
示例:进系统需要提供grub密码
default=0
timeout=5
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64)
password –md5 $1$u/gGz$sK5b73aj6gQwFn6ATHzie0
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5
initrd /initramfs-2.6.32-642.el6.x86_64.img
注:在vim末行模式下执行:r!grub-md5-crypt,敲击两次密码。
grub修复命令:
(1)grub-install:
可以修复stage 1 stage1.5 stage2,但是在stage2阶段中的grub.conf配置文件修复不了。
安装grub stage1 stage1.5到/dev/DISK磁盘上,并复制grub相关文件到DIR/boot目录。
grub-install –root-directory=DIR /dev/DISK
(2) grub:
grub>root (hd#,#)
grub>setup (hd#)
可以修复stage1 stage1.5,但修复时需要依赖/boot/grub目录下的文件。
示例:破坏centos6 stage1 (mbr前446个字节),光盘急救模式下修复。
1)破坏stage1 (mbr前446个字节)
[root@centos6 Desktop]# dd if=/dev/zero of=/dev/sda bs=446 count=1
2)使用hexdump命令查看确认是否破坏:
[root@centos6 Desktop]# hexdump -C -n 512 -v /dev/sda
3)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
4)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
5)进入光盘引导界面,选择Rescue installed system 回车。
6)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到系统的根目录下。
bash-4.1# chroot /mnt/sysimage
sh-4.1#grub-install /dev/sda
7)执行两次exit,选择reboot重启。
示例:破坏centos6 stage1.5 (mbr引导扇区之后的521个字节)光盘急救模式下修复。
1)破坏centos6 stage1.5 (mbr引导扇区之后的521个字节)
[root@centos6 boot]# dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
2)使用hexdump命令查看确认是否破坏:
[root@centos6 Desktop]# hexdump -C -n 1024 -v /dev/sda
000001d0 1f 3f 83 fe ff ff 00 a8 0f 00 00 80 38 01 00 fe |?……….8……|
000001e0 ff ff 82 fe ff ff 00 28 48 01 00 40 1f 00 00 fe |…….(H..@….|
000001f0 ff ff 05 fe ff ff 00 68 67 01 00 98 98 0d 55 aa |…….hg…..U.|
00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |……………….|
00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |………………..|
3)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
4)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
5)进入光盘引导界面,选择Rescue installed system 回车。
6)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到系统的根目录下。
bash-4.1# chroot /mnt/sysimage
sh-4.1#grub
grub>root (hd0,0)
grub>setup (hd0)
grub>quit
sh-4.1#
7)执行两次exit,选择reboot重启。
示例:破坏centos6 stage2 (删除/boot/grub目录)
1)删除/boot/grub目录
[root@centos6 boot]# rm -rf /boot/grub/
2)使用ls命令查看grub目录是否存在
[root@centos6 boot]# ls
config-2.6.32-642.el6.x86_64 symvers-2.6.32-642.el6.x86_64.gz
efi System.map-2.6.32-642.el6.x86_64
initramfs-2.6.32-642.el6.x86_64.img vmlinuz-2.6.32-642.el6.x86_64
lost+found
[root@centos6 boot]#
3)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
4)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
5)进入光盘引导界面,选择Rescue installed system 回车。
6)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到系统的根目录下。
bash-4.1# chroot /mnt/sysimage
sh-4.1#grub-install /dev/sda
sh-4.1#cd /boot/grub
sh-4.1#vim grub.conf
default=0
timeout=5
title=centos6.8
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5 rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img
sh-4.1#
7)执行两次exit,选择reboot重启。
误删除/sbin/init命令和/etc/inittab配置文件:
示例:删除/sbin/init命令和/etc/inittab配置文件
1)删除/sbin/init命令和/etc/inittab配置文件
[root@centos6 Desktop]# rm -rf /sbin/ini
[root@centos6 Desktop]# rm -rf /etc/inittab
2)检查/sbin/init和/etc/inittab是否存在
[root@centos6 etc]# ls | grep "inittab"
[root@centos6 etc]# ls /sbin | grep "\<init\>"
[root@centos6 etc]#
3)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
4)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
5)进入光盘引导界面,选择Rescue installed system 回车。
6)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到系统的根目录下。
bash-4.1# chroot /mnt/sysimage
sh-4.1#mount /dev/sr0 /mmt
sh-4.1#cd /mnt/Packages
sh-4.1#rm -qf /sbin/init
upstart-0.6.5-16.el6.x86_64
sh-4.1#rm -qf /etc/inittab
initscripts-9.03.53-1.el6.centos.x86_64
sh-4.1#rpm -ivh –force initscripts-9.03.53-1.el6.centos.x86_64.rpm
sh-4.1#rpm -ivh –force upstart-0.6.5-16.el6.x86_64.rpm
sh-4.1#
7)执行两次exit,选择reboot重启。
服务器启动故障:
当重启或开机时,有时会被一些服务卡住,半天过不去,如何解决?
1)这时我们需要记住被卡住的服务名;
2)重启主机进入单用户模式;
3)单用户模式中使用chkconfig命令先禁用被卡住的服务启动;
4)待主机启动起来之后在排查被卡服务故障原因;
5)如果还是不行可以在启动主机时,添加内核参数(selinux=0)禁用内核参数;
实验测试:
实验环境:
破坏mbr前446个字节;
破坏stage1_5阶段;
删除/boot目录,删除/etc/fstab文件,删除/etc/inittab文件,删除/etc/rc.d/rc.sysinit系统初始化脚本文件。
1) 开始破坏grub、删除目录及文件:
[root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.000372593 s, 1.2 MB/s
[root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
2+0 records in
2+0 records out
1024 bytes (1.0 kB) copied, 0.000450367 s, 2.3 MB/s
[root@centos6 ~]# rm -rf /boot/*
[root@centos6 ~]# rm -rf /etc/fstab
[root@centos6 ~]# rm -rf /etc/inittab
[root@centos6 ~]# rm -rf /etc/rc.d/rc.sysinit
[root@centos6 ~]#
2)检查是否破坏grub、删除目录及文件:
[root@centos6 ~]# hexdump -C -n 1024 -v /dev/sda
[root@centos6 ~]# ls /boot/
[root@centos6 ~]# ls /etc | grep "fstab"
[root@centos6 ~]# ls /etc | grep "inittab"
[root@centos6 ~]# ls /etc/rc.d | grep "rc.sysinit"
[root@centos6 ~]#
3)挂载光盘, 执行reboot重启系统
[root@centos6 boot]# reboot
4)启动时按ESC键,在弹出的Boot Menu中选择CD-ROM Drive回车。
5)进入光盘引导界面,选择Rescue installed system 回车。
6)进入到光盘急救模式后,执行fdisk -l查看一下磁盘分区情况。
bash-4.1#fdisk -l /dev/sda
Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 1339 10240000 83 Linux
/dev/sda3 1339 1467 1024000 82 Linux swap / Solaris
/dev/sda4 1467 15666 114052096 5 Extended
/dev/sda5 1467 15666 114051072 83 Linux
7)查看到/dev/sda磁盘的分区情况后,就要找系统根分区了,如果事先知道“/”在哪个分区上,就可以直接挂在根到指定的目录,如果不知道只能一个一个的挂载看。
修复/etc/fstab文件:
(1)创建一个目录挂载根分区;
(2)cd切换到根分区中重建/etc/fstab文件;
(3)执行exit退出,选择reboot重启,让系统重新自动挂载分区到指定目录;
bash-4.1#mkdir /bo
bash-4.1#mount /dev/sda5 /bo
bash-4.1#cd /bo
bash-4.1#vi etc/fstab
/dev/sda1 /boot ext4 defaults 1 1
/dev/sda5 / ext4 defaults 1 2
bash-4.1# exit
‚如果此处分区为逻辑卷:
bash-4.1#lvscan //此时看到的逻辑卷应该是inaction的,不活动的。
inaction ‘/dev/vg0/root’ [20GiB]
inaction ‘/dev/vg0/swap’ [2GiB]
inaction ‘/dev/vg0/usr’ [10GiB]
inaction ‘/dev/vg0/var’ [20GiB]
bash-4.1#vgscan //此时可以看到卷组,不活动的。
Found volume group “vg0”
bash-4.1#vgchange -ay /dev/vg0 //激活vg0卷组上所有逻辑卷。
bash-4.1#ls /dev/vg0/* //查看vg0卷组下所有的逻辑卷。
/dev/vg0/root /dev/vg0/swap /dev/vg0/usr /dev/vg0/var
bash-4.1#mkdir /bo //创建一个根目录bo。
bash-4.1# mount /dev/vg0/root /bo //挂载根分区到/bo目录下。
bash-4.1#vi /bo/etc/fstab //编辑/etc/fstab文件。
/dev/sda1 /boot ext4 defaults 1 1
/dev/vg0/root / ext4 defaults 1 2
/dev/vg0/usr /usr ext4 defaults 0 0
/dev/vg0/var /var ext4 defaults 0 0
bash-4.1#exit
注: 执行exit退出,选择reboot重启,让系统重新自动挂载分区到指定目录;
8)重新进入到急救模式shell环境时可以看到chroot /mnt/sysimage,表示/etc/fstab文件没有问题。
chroot /mnt/sysimage :表示系统目录已经挂载到光盘上的根目录下了。
9)进入到光盘急救模式后,执行 chroot /mnt/sysimage切换到待修复系统的根目录下。
(1)修复/boot目录下的文件,恢复内核文件。
bash-4.1#chroot /mnt/sysimage
sh-4.1#mount /dev/sr0 /mnt
sh-4.1#cd /mnt/Packages
sh-4.1#rpm -ivh -force kernel-2.6.32-642.el6.x86_64.rpm
sh-4.1#cd /boot
sh-4.1#grub-install /dev/sda
sh-4.1#vim /boot/grub/grub.conf
default=0
timeout=5
title=centos6.8
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda5
initrd /initramfs-2.6.32-642.el6.x86_64.img
sh-4.1#
10)修复/etc/inittab配置文件和/etc/rc.d/rc.sysinit系统初始化脚本:
sh-4.1# rpm -df /etc/inittab
initscripts-9.03.53-1.el6.centos.x86_64
sh-4.1#rpm -df /etc/rc.d/rc.sysinit
initscripts-9.03.53-1.el6.centos.x86_64
sh-4.1# cd /mnt/Packages
sh-4.1#rpm -ivh –force initscripts-9.03.53-1.el6.centos.x86_64.rpm
11)执行两次exit,选择reboot重启。
原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/48360