CentOS6启动和内核管理

文章目录

  • Linux组成kernel+rootfs
    • kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安
    • rootfs: 程序和glibc
    • 内核设计流派:
      • 单内核(monolithic kernel) :Linux
      • 微内核(micro kernel) :Windows, Solaris
    • Linux 内核特点:
      • 支持模块化:.ko (内核对象)
      • 组成部分:
  • CentOS6启动流程
    • POST :Power-On-Self-Test ,加电自检
    • ROM :BIOS ,Basic Input and Output System
    • RAM :CMOS 互补金属 氧化物半导体
    • bootloader: 引导加载器,引导程序
      • windows: ntloader ,仅是启动OS
      • Linux :功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
    • LILO :LInux LOader
    • MBR:
    • GRUB: GRand Unified Bootloader 多重操作系统启动管理器。用来引导不同系统,如windows,linux。
    • kernel: :
    • ramdisk
    • 系统初始化
  • ramdisk 管理
  • init 程序的类型:
    • SysV: init, CentOS 5 之前
    • Upstart: init,CentOS 6
    • Systemd :systemd, CentOS 7
  • 运行级别:为系统运行或维护等目的而设定;0-6 :7 个级别
  • init 初始化
  • CentOS 5 的inittab 文件
  • CentOS 6 /etc/inittab
    • 示例:
  • /etc/rc.d/rc.sysinit: 系统初始化脚本
    • /var/lock/subsys/ 运行中的服务会在次目录生成对应的文件,作为服务是否启动试的判据
    • 务在所有级别的启动或关闭设定情形:
    • 添加:
    • 删除:
    • 修改指定的链接类型
    • ntsysv
  • xinetd 管理的服务
    • service 命令:手动管理服务
    • service 服务 start|stop|restart
    • service --status-all
    • 瞬态(Transient )服务被xinetd 进程所管理
    • 用chkconfig 控制的服务:
    • 总结:
  • grub legacy
    • CentOS 6 启动流程:
    • grub: GRand Unified Bootloader
    • 配置文件:/boot/grub/grub.conf <-- /etc/grub.conf
      • stage2 及内核等通常放置于一个基本磁盘分区
      • 功用:
        • (1) 提供启动菜单、并提供交互式接口
        • (2) 加载用户选择的内核或操作系统
    • grub 的命令行接口
      • cat /proc/cmdline 内核参数
      • 内核参数文档:/usr/share/doc/kernel-doc-
    • 识别硬盘设备
    • 手动在grub 命令行接口启动系统
    • grub legacy 配置文件
      • 配置文件:/boot/grub/grub.conf
    • grub加密
      • 破解root 口令:
      • 进入单用户模式 :
    • grub安装
  • 实例

Linux组成kernel+rootfs

kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安

全功能

rootfs: 程序和glibc

  • 库:函数集合, function, 调用接口(头文件负责描述)
  • 过程调用:procedure ,无返回值
  • 函数调用:function
  • 程序:二进制执行文件

内核设计流派:

单内核(monolithic kernel) :Linux

把所有功能集成于同一个程序

微内核(micro kernel) :Windows, Solaris

每种功能使用一个单独子系统实现
# 内核

Linux 内核特点:

支持模块化:.ko (内核对象)

如:文件系统,硬件驱动,网络协议等
支持内核模块的动态装载和卸载

组成部分:

  • 核心文件:/boot/vmlinuz- VERSION -release
  • ramdisk :辅助的伪根系统
  • CentOS 5: /boot/initrd- VERSION -release.img
  • CentOS 6,7: /boot/initramfs- VERSION -release.img
  • 模块文件:/lib/modules/ VERSION -release

CentOS6启动流程

POST加电自检->MBR引导->GRUB->加载内核->启动init进程->读取/etc/inittab文件,/etc/init/*.conf文件
执行/etc/rc.d/rc.sysyinit初始化脚本->执行/etc/rc.d/rc脚本->加载/etc/rc#.d/下所有脚本(#为启动级别,这里是开机要启动的各种服务)->执行/etc/rc.d/rc.local脚本(所有服务启动后执行此脚本)->执行/bin/login 程序,进入登录状态

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控制主机

注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d的一个服务脚本,而是指向了
/etc/rc.d/rc.local脚本

若不想把服务脚本放置于/etc/rc.d/init.d/目录
且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中/etc/rc.d/rc.local在指定运行级别脚本后运行

可以根据情况进行自定义修改

POST :Power-On-Self-Test ,加电自检

是BIOS 功能的一个主要部分 。负责 完成对CPU 、主板、内存 、硬盘 子系统、显示 子系统、 串并行接
口、键盘、CD-ROM 光驱 等 硬件情况 的 检测 。

ROM :BIOS ,Basic Input and Output System

保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 开机加电 自检程序和系统启动自举程序等。

RAM :CMOS 互补金属 氧化物半导体

保存各项 参数的设定按次序查找引导设备,第一个有引导程序的设备为本次启动设备

bootloader: 引导加载器,引导程序

windows: ntloader ,仅是启动OS

Linux :功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

LILO :LInux LOader

MBR:

446: bootloader, 64: 分区表, 2: 55AA

GRUB: GRand Unified Bootloader 多重操作系统启动管理器。用来引导不同系统,如windows,linux。

GRUB 0.X: GRUB Legacy, , GRUB2

primary boot loader : 1st stage ,1.5 stage
secondary boot loader :2nd stage ,分区文件

kernel: :

  • 自身初始化:
  • 探测可识别到的所有硬件设备
  • 加载硬件驱动程序(借助于ramdisk 加载驱动)
  • 以只读方式挂载根文件系统
  • 运行用户空间的第一个应用程序:/sbin/init

ramdisk

内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件
访问,并加载相应的硬件驱动

  • ramdisk --> ramfs 提高速度
    CentOS 5: initrd
    工具程序:mkinitrd
  • CentOS 6 ,7: initramfs
    工具程序:mkinitrd, dracut

系统初始化

POST --> BootSequence (BIOS) -->
Bootloader(MBR) --> kernel(ramdisk) --> rootfs( 只读) --> init (systemd) )

  1. boot目录中的initramfs-3.10.0-327.el7.x86_64.img 文件被误删,如何恢复之?

ramdisk 管理

## ramdisk 文件的制作:

(1) mkinitrd 命令

为当前正在使用的内核重新制作ramdisk 文件
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
(2) dracut 命令

为当前正在使用的内核重新制作ramdisk 文件
dracut /boot/initramfs-$(uname -r).img $(uname -r)

init 程序的类型:

SysV: init, CentOS 5 之前

配置文件:/etc/inittab

Upstart: init,CentOS 6

配置文件:/etc/inittab, /etc/init/*.conf

Systemd :systemd, CentOS 7

配置文件:/usr/lib/systemd/system
/etc/systemd/system

/sbin/init CentOS6之前

运行级别:为系统运行或维护等目的而设定;0-6 :7 个级别

num complications
0 关机
1 单用户模式(root 自动登录), single, 维护模式
2 多用户模式,启动网络功能,但不会启动NFS ;维护模式
3 多用户模式,正常模式;文本界面
4 预留级别;可同3 级别
5 多用户模式,正常模式;图形界面
6 重启
默认级别: 3, 5
切换级别:init #
查看级别:runlevel ; who -r

runlevel
N 3
N为占位符,如果是从其他级别切换过来,则n显示的上次的运行级别

init 初始化

init 读取其初始化文件:/etc/inittab
初始运行级别(RUN LEVEL)
系统初始化脚本
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS 电源终端/ 恢复脚本
在虚拟控制台生成getty
在运行级别5 初始化X

CentOS 5 的inittab 文件

配置文件:/etc/inittab
每一行定义一种action 以及与之对应的process

id:runlevel:action:process
action:
wait:  切换至此级别运行 一次
respawn :此process 终止,就重新启动之
initdefault :设定默认运行级别;process 省略
sysinit :设定系统初始化方式,此处一般为指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now #ctrl+alt+del在字符界面重启

#设置f1-f6六个虚拟终端,可以增加
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
7:2345:respawn:/sbin/mingetty tty10 # 新增的
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon #设置5为图形界面

id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1...
l6:6:wait:/etc/rc.d/rc 6

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now(t3延时3秒)生产中最好注释此行,防止误操作重启(对图形界面无效)

CentOS 6 /etc/inittab

/etc/inittab
设置系统默认的运行级别

id:3:initdefault:

示例:

破解CentOS5 和6 的root 口令

  • /etc/init/control-alt-delete.conf(该文件中最好注释掉ctrl+alt+del重启功能,防止误操作重启)
  • /etc/init/tty.conf
  • /etc/init/start-ttys.conf
  • /etc/init/rc.conf
  • /etc/init/prefdm.conf # 定义图形界面的启动级别

/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) 清理操作
说明:rc N -->  意味着读取/etc/rc.d/rcN.d/
K*: K##* :## 运行次序;数字越小,越先运行;数字
越小的服务,通常为依赖到别的服务
S*: S##* :## 运行次序;数字越小,越先运行;数字
越小的服务,通常为被依赖到的服务
for srv in /etc/rc.d/rcN.d/K*; do
$srv stop
done
for srv in /etc/rc.d/rcN.d/S*; do
$srv start
done

/var/lock/subsys/ 运行中的服务会在次目录生成对应的文件,作为服务是否启动试的判据

# chkconfig命令

务在所有级别的启动或关闭设定情形:

chkconfig [–list] [name]

添加:

SysV 的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)
chkconfig --add name

#!/bin/bash
#LLLL  表示初始在哪个级别下启动,- 表示都不启动
# chkconfig: LLLL nn nn

删除:

chkconfig --del name

修改指定的链接类型

chkconfig [–level levels] name
–level LLLL: 指定要设置的级别;省略时表示2345

ntsysv

xinetd 管理的服务

service 命令:手动管理服务

service 服务 start|stop|restart

service --status-all

瞬态(Transient )服务被xinetd 进程所管理

进入的请求首先被xinetd 代理
配置文件:/etc/xinetd.conf 、/etc/xinetd.d/与libwrap.so 文件链接

用chkconfig 控制的服务:

chkconfig tftp on

 1:2345:respawn:/usr/sbin/mingetty tty1
2:2345:respawn:/usr/sbin/mingetty tty2
...
6:2345:respawn:/usr/sbin/mingetty tty6
mingetty 会自动调用login 程序
x:5:respawn:/etc/X11/prefdm -nodaemon

总结:

开机POST加电自检,检测cpu内存等硬件是否有问题,检测完成后在BISO里面查找引导计算机启动的设备的设置,该设置存储于CMOS,如果是硬盘引导启动会读取硬盘的MBR(446字节+64+2),此时进入stage1;接下来加载/boot/文件系统,由于446字节无法存储/boot文件系统,所有在446字节里面存储的是找到文件系统的指针,这个阶段叫1.5阶段;然后进入stage2读取/boot/grub/grub.conf,加载内核vmlinuz,为了挂载根先加载initramfs作为虚拟文件系统来识别根文件系统;根挂载完后访问下面第一个程序/sbin/init,此程序将读取操作系统配置/etc/inittab,读取运行级别设置,进行服务初始化/etc/rc.d/rc.sysinit,继而读取/etc/fstab挂载,根据相应的启动级别加载/etc/rc.d/rcn.d/下面的服务脚本,先执行k开头的(S25netfs会重读fatab挂载网络资源)最后执行/etc/rc.d/rc.local(s99local)脚本(非服务脚本),然后出现登录界面
CentOS6启动和内核管理_第1张图片

  • /sbin/init --> (/etc/inittab) --> 设置默认运行级别 -->运行系统初始脚本、完成系统初始化 --> ( 关闭对应下需要关闭的服务) 启动需要启动服务 --> 设置登录终端
  • CentOS 6 init 程序为: upstart, 其配置文件:
    /etc/inittab, /etc/init/*.conf法,配置文件的语法遵循upstart配置文件语法格式,和CentOS5不同

grub legacy

CentOS 6 启动流程:

POST --> Boot Sequence(BIOS) --> Boot Loader -->
Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init –

(/etc/inittab, /etc/init/*.conf) --> 别 设定默认运行级别 --> 系统
初始化脚本 rc.sysinit --> 务 关闭或启动对应级别的服务 --> 启动终端

grub: GRand Unified Bootloader

grub 0.97: grub legacy
grub 2.x: grub2
grub legacy:
stage1: mbr
stage1_5: mbr 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统
stage2 :磁盘分区(/boot/grub/)

配置文件:/boot/grub/grub.conf <-- /etc/grub.conf

stage2 及内核等通常放置于一个基本磁盘分区

功用:

(1) 提供启动菜单、并提供交互式接口

a :内核参数

e: 编辑模式,用于编辑菜单

c: 命令模式,交互式接口

(2) 加载用户选择的内核或操作系统

允许传递参数给内核
可隐藏启动菜单
#### (3) 为菜单提供了保护机制
为编辑启动菜单进行认证

为启用内核或操作系统进行认证

grub 的命令行接口

help:  获取帮助列表
help KEYWORD:  详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE: :
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE:  设定本次启动时用到的
内核文件;额外还可添加许多内核支持使用的cmdline 参数
例如:max_loop=100 selinux=0 init=/path/to/init
initrd /PATH/TO/INITRAMFS_FILE:  设定为选定的内核
提供额外文件的 的ramdisk
boot:  引导启动选定 的内核

cat /proc/cmdline 内核参数

内核参数文档:/usr/share/doc/kernel-doc-

2.6.32/Documentation/kernel-parameters.txt

识别硬盘设备

(hd#,#)

  • hd#: 磁盘编号,用数字表示;从0 开始编号
  • #: 分区编号,用数字表示; 从0 开始编号
  • (hd0,0) 第一块硬盘,第一个分区

手动在grub 命令行接口启动系统

grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro
root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot

grub legacy 配置文件

配置文件:/boot/grub/grub.conf

设定项 含义
default=# 设定默认启动的菜单项;落单项(title) 编号从0 开始
timeout=# 指定菜单项等待选项选择的时长
splashimage=(hd#,#)/PATH/XPM_FILE 菜单背景图片文件路径
hiddenmenu 隐藏菜单
password [–md5] STRING 启动菜单编辑认证
title TITLE 定义菜单项“标题”, 可出现多次
root (hd#,#) 查找stage2及kernel文件所在设备分区;为grub 的根
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS] 启动的内核
initrd /PATH/TO/INITRAMFS_FILE 内核匹配的ramfs 文件
password [–md5|–encrypted ] STRING 启动选定的内核或操作系统时进行认证

grub加密

### 生成grub 口令

  • grub-md5-crypt
  • grub-crypt
vim /etc/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --encrypted $6$6zfuNMferERFGffg/hf$JdwlfhK

破解root 口令:

启动系统时,设置其运行级别1

进入单用户模式 :

  • (1) 编辑grub 菜单( 选定要编辑的title ,而后使用e 命令)
  • (2) 在选定的kernel 后附加
    1, s, S 或single 都可以
  • (3) 在kernel 所在行,键入“b”

grub安装

  • (1) grub-install
安装grub stage1 和stage1_5 到/dev/DISK 磁盘上,并
复制GRUB到 相关文件到 DIR/boot 目录下
grub-install --root-directory=DIR /dev/DISK
  • (2) grub
grub> root (hd#,#)
grub> setup (hd#)

实例

  1. 破解root 口令,并为grub 设置保护功能
    开机enter 按a->1或s或S或single进入单用户模式,修改密码
  2. 制作启动菜单界面背景图
yum  install ImageMagick
onvert -resize 640x480 -colors 14 win.jpg win.xpm
head -n 10 win.xpm
cp win.xpm /boot/grub
/boot/grub
gzip win.xpm
  1. 删除vmlinuz 和initramfs 文件后无法启动, 两种方法恢复之
#initramfs文件
chroot /mnt/sysimage
df#可以看到原系统的磁盘设备
cd /boot
ls
#是initframs内核文件丢失导致,解决方案:
#修复initramfs文件
mkinitrd ./initramfs-`uname -r`.img `uname -r`
#如果是CenOS5 则执行
mkinitrd ./initrd-`uname -r`.img `uname -r`

若修复失败可重装内核
#查看当前系统使用的内核
uname -r
从光盘安装内核(注意要先切换根)
lsblk 可以看到光盘设备是sr0
挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
df
rpm -ivh kernel-2.6.e64.......rpm --force

启动后出现grub,则需要修复grub
chroot /mnt/sysimage
grub-install /dev/sda
exit
exit
reboot

#vmlinuz文件
光盘里面/images/preboot/vmlinuz和/isolinux/vmlinuz即为内核文件,可以直接cp过来
# vmlinuz的文件名可参考/boot/grub/grub.conf中的配置,亦可直接改配置中的文件名,两者保持一致即可
cp -av /mnt/cdeom/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
  1. /etc/inittab 设置默认6 恢复之
开机回车,a->1|s|signal进入单用户模式
或者
开机回车,a->3
然后将/etc/inittab改回来
  1. 某个服务无法启动,系统无法启动,解决之
cd /etc/init.d/
vim testsrv
输入以下内容
#!/bin/bash
#chkconfig:2345 99 00
#description:this service is used for test
case $1 in
start)
    echo 'the service is started'
    touch /root/testsrv
    ;;  
stop)
    echo 'the service is stopped'
    rm -f /boot/testsrv
    ;;  
status)
    [ -f /boot/testsrv ] && echo 'service testsrv is running...'||echo 'service testrv is stopped'
    ;;  
*)
    echo 'Usage start|stop|status'

注意#chkconfig:2345 99 00这里开机启动的序号不能大于99
#给执行权限
chmod +x testsrv 
chkconfig --add testsrv
chkconfig testsrv --level 1 on
修改启动时间
reboot
#!/bin/bash
#chkconfig:12345 00 00
#description:this service is used for test
case $1 in
start)
    echo 'the service is started'
    sleep 100000
    touch /root/testsrv
    ;;  

由于启动序号设置太小,网络服务还没起来,无法连接xshell,而单用户模式也设置了开机启动,所以需要按照如下方法修复
开机按回车进入内核选则项
按a 在quite后添加 init=/bin/bash(默认为/sbin/init)
此时开机进入bash以后根目录是以只读方式挂载的,需要重新挂载
mount -o remount,rw /
chkconfig --level  12345 testsrv off
exit 
reboot
  1. 破坏MBR446,恢复之

注意grub.conf文件会丢失,要提前备份

#备份mbr
dd if=/dev/sda of=/root/mbr bs=1 count=466

进入单用户模式
chroot /mnt/sysimage
grub-install /dev/sda 从“/dev/sda”中找到GRUB程序并进行修复
设备名参考
(hd#,#)
hd#:  磁盘编号,用数字表示;从0 开始编号
#:  分区编号,用数字表示;  从0 开始编号
(hd0,0)  第一块硬盘,第一个分区


  1. 破坏stage1.5

grub命令依赖于grub目录里面的文件

grub
grub> root (hd#,#)
grub> setup (hd#)

#备份分区表
dd if=/dev/sda of=/root/mbr count=446 bs=1 conv=notrunc
# 备份grub.conf
cp -av /boot/grub/grub.conf /root/
# 破坏mbr
dd if=/dev/zero of=/dev/sda bs=1 count=446 conv=notrunc

启动时会出现operating System not found的提示,说明没有mbr来引导操作系统
reboot

chroot /mnt/sysimage
df 查看boot和/是否挂载
grub
root (hd0,0) # (hd0,0)表示第一块硬盘的第一个分区,也就是sda的sda1
setup (hd0)


1.5阶段前512字节记录的是后面27个扇区具体要读取的内容,如果将后面的内容破坏掉,系统仍无法正常启动
#备份
 dd if=/dev/sda of=/root/mbr2 bs=1 count=2048 skip=512
#破坏
dd if=/dev/zero of=/dev/sda bs=1 count=2048 seek=512 conv=notrun
c
reboot
此时开机界面不会出现倒计时
进入救援模式
用grub或grub-install修复
chroot /mnt/sysimage
grub-install /dev/sda
sync
exit
exit
reboot


  1. 破坏stage2

#备份/boot/grub/grub.conf
#清空/boot/grub目录
rm -rf /boot/grub
reboot
# 进入救援模式
df 确保/boot已挂载
chroot /mnt/sysimage
df
grub-install /dev/sda
sync
exit
exit
reboot
此时由于没有/boot/grub/grub.conf文件,开机会进入grub命令行
输入ker(tab补全)  /v(tab)补全 root=/dev/vg0/root selinux=0 回车
ini(tab补全) /initra(tab补全)   回车
boot
(也可以在救援模式下手写grub文件)

8.为grub加口令

#生成md5口令
grub-md5-crypt
#grub-crypt (sha512)
[root@lee: /root]# grub-crypt
Password: 
Retype password: 
$6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn.

添加至配置文件
default=0
timeout=5
#sha512的加密方式需要指定--encrypted
password --encrypted $6$IwfTNtZWfvNHA2ec$RWiVdrt78Tbbw2fsvAA/icQWCfIgy3KGkoFJHRntceUBwK.Vnn9Mhmz1JfRt/yWdtEbbMaWeWFSTiYUuxTiPn.
  splashimage=(hd0,0)/grub/splash.xpm.gz
  hiddenmenu
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/mapper/vg_lee-lv_root rd_LVM_    LV=vg_lee/lv_root rd_NO_LUKS rd_LVM_LV=vg_lee/lv_swap rd_NO_MD crashkernel=128M LANG    =zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img
# 也可直接用明文
password $1$fYmOJ/$0n6c5b/WPxt0nDOJPsrJq0
 



  1. 删除/boot/ 所有内容,然后恢复
1)/boot/vmlinuz
cp /mnt/cdrom/isolinux/vmlinuz /boot/vmlinuz-`uname -r`
2)/boot/initramfs.img
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
rpm -ivh /mnt/cdrom/Packages/kernel.XXX.rpm 
3)grub/*
grub-install /dev/sda
4)grub/grub.conf
default=0
timeout=3
title 23M
kernel /vmlinuz-XXXX root=/dev/sda2
initrd /initramfs-XXXX.img
``
10. 在普通分区,删除/boot/ 所有内容及/etc/fstab,恢复

1)救援模式,先/etc/fastab恢复
df
blkid
mount /dev/sda1 /mnt/sda1
mount /dev/sda2 /mnt/sda2
mount /dev/sda3 /mnt/sda3
vim /etc/fstab
2)reboot,重新进入救援模式
df 确保挂载成功
3)修复grub
grub-install /dev/sda
4)修复kernel initramfs.img
mount /dev/sr0 /mnt/
rpm -ivh /mnt/Packages/kernel-XXX.rpm --force
5)vim /boot/grub/grub.conf

11. 使用逻辑卷,删除/boot/ 所有内容及/etc/fstab,恢复

1)救援模式,先/etc/fastab恢复
lsblk(失效)
df
blkid
fdisk -l
sda1带*为boot分区
mkdir /mnt/{sda1,sda2}
mount /dev/sda1 /mnt/sda1
mount /dev/mapper/vg_lee-lv_root /mnt/sda2
lvdisplay (可以看到NOT available)
vgchange -ay 激活卷组
lvdisplay

vim /mnt/sda2/fstab(r!blkid)
2)reboot,重新进入救援模式
df 确保挂载成功
3)修复grub
grub-install /dev/sda
4)修复kernel initramfs.img
mount /dev/sr0 /mnt/
rpm -ivh /mnt/Packages/kernel-XXX.rpm --force
5)vim /boot/grub/grub.conf

default=0 timeout=5
title=CentOs6.8
kernel /vmlinuz-2.6.32-642.el6.x86_6 root=/dev/mapper/vg_lee-lv_root selinux=0
initrd /initramfs-2.6.32-642.el6.x86_64.img



免责声明:
一切资料仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。资料来自网络,版权争议与本人无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我联系处理。

更=多=课程请加=v=信=== a518958666
基于SpringCloud 微服务架构 广告系统设计与实现
系统学习docker
docker前后端分离实战
Docker+Kubernetes(k8s)微服务容器化实战
Go语言实战抽奖系统
Go语言开发分布式任务调度 轻松搞定高性能Crontab
20小时快速入门go语言
Java从零到企业级电商项目实战
SSM主流框架入门与综合项目实战
Socket网络编程进阶与实战

  1. 基于Python玩转人工智能最火框架 TensorFlow应用实践
  2. webapp书城开发
  3. 组件方式开发 Web App全站
  4. 前端到后台ThinkPHP开发整站
  5. MySQL性能管理及架构设计
  6. 响应式开发一招致胜
  7. 掌握React Native技术转型随意切换
  8. Yii 2.0开发一个仿京东商城平台
  9. Python高效编程技巧实战
  10. 快速开发轻量级App
  11. 6小时 jQuery开发一个前端应用
  12. Android架构师之路 网络层架构设计与实战
  13. 程序猿的内功修炼,学好算法与数据结构
  14. Vue.js高仿饿了么外卖App 1.0到2.0版本完美升级
  15. Android 专项测试 Python篇
  16. 微信小程序入门与实战 常用组件API开发技巧项目实战
  17. Android 5.0+高级动画开发 矢量图动画 轨迹动画路径变换
  18. Android自动化测试实战 Java篇 主流工具 框架 脚本
  19. Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台
  20. 高性能可扩展MySQL数据库设计及架构优化 电商项目
  21. 带领新手快速开发Android App
  22. Angular JS 仿拉勾网 WebApp 开发移动端单页应用
  23. 组件化封装思想实战Android App
  24. React.js入门基础与案例开发
  25. Yii 2.0进阶版 高级组件 优化京东平台
  26. 双平台真实开发GitHub App React Native技术全面掌握
  27. 玩转算法面试 leetcode题库分门别类详细解析
  28. Thinkphp 5.0 仿百度糯米开发多商家电商平台
  29. ThinkPHP5.0正式版第二季:实战开发企业站【完结】
  30. 最容易上手的Vue 2.0入门实战教程
  31. 聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎
  32. Angular 4.0从入门到实战 打造股票管理网站
  33. Java Spring带前后端开发完整电商平台
  34. Node.js项目线上服务器部署与发布
  35. Java大牛 带你从0到上线开发企业级电商项目
  36. ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
  37. ES6零基础教学 解析彩票项目
  38. React高级实战 打造大众点评 WebApp
  39. BAT大咖助力 全面升级Android面试
  40. 全程MVP手把手 打造IM即时通讯Android APP
  41. 微信服务号+Yii 2.0构建商城系统全栈应用
  42. 机器学习入门 Scikit-learn实现经典小案例
  43. 腾讯大牛亲授 Web 前后端漏洞分析与防御技巧
  44. IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评 难度中级
  45. Vue 2.0 高级实战-开发移动端音乐 WebApp
  46. 全新升级 Kotlin系统入门与进阶
  47. 对接真实数据 从0开发前后端分离企业级上线项目
  48. Android应用发展趋势必备武器 热修复与插件化
  49. Laravel 快速开发简书
  50. 以慕课网日志分析为例 进入大数据 Spark SQL 的世界
  51. Get全栈技能点 Vue2.0/Node.js/MongoDB 打造商城系统
  52. Python操作三大主流数据库
  53. 前端JavaScript面试技巧
  54. Java SSM快速开发仿慕课网在线教育平台
  55. Android通用框架设计与完整电商APP开发
  56. Spring Boot企业微信点餐系统
  57. 开发微信全家桶项目 Vue/Node/MongoDB高级技术栈全覆盖
  58. Web自动化测试 Selenium基础到企业应用
  59. 高性能的 PHP API 接口开发
  60. 企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构
  61. Angular 打造企业级协作平台
  62. Python Flask 构建微电影视频网站
  63. Spring Boot带前后端 渐进式开发企业级博客系统
  64. 从零开发Android视频点播APP
  65. 前端跳槽面试必备技巧
  66. 10小时入门大数据
  67. 让你页面速度飞起来 Web前端性能优化
  68. Google面试官亲授 升级Java面试
  69. LoadRunner 工具使用 企业级性能测试实战
  70. 360大牛带你横扫PHP职场 全面解读PHP面试
  71. Python前后端分离开发Vue+Django REST framework实战
  72. Spring Security技术栈开发企业级认证与授权
  73. PHP开发高可用高安全App后端
  74. 看得见的算法 7个经典应用诠释算法精髓
  75. 全网最热Python3入门+进阶 更快上手实际开发
  76. Android互动直播APP开发
  77. JMeter 深入进阶性能测试体系 各领域企业实战
  78. Node.js入门到企业Web开发中的应用
  79. SSM到Spring Boot 从零开发校园商铺平台
  80. 深度学习之神经网络核心原理与算法
  81. BAT大厂APP架构演进实践与优化之路
  82. PHP秒杀系统 高并发高性能的极致挑战
  83. Java开发企业级权限管理系统
  84. Redux+React Router+Node.js全栈开发
  85. Redis从入门到高可用,分布式实践
  86. ES6+ 开发电商网站的账号体系 JS SDK
  87. Spark Streaming实时流处理项目实战
  88. 快速上手Linux 玩转典型应用
  89. Python接口测试框架实战与自动化进阶
  90. Python3数据科学入门与实战
  91. Android高级面试 10大开源框架源码解析
  92. 移动端App UI 设计入门与实战
  93. 精通高级RxJava 2响应式编程思想
  94. Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
  95. Webpack + React全栈工程架构项目实战精讲
  96. 快速上手Ionic3 多平台开发企业级问答社区
  97. 全面系统讲解CSS 工作应用+面试一步搞定
  98. 跨平台混编框架 MUI 仿豆瓣电影 APP
  99. Kotlin打造完整电商APP 模块化+MVP+主流框架
  100. BAT大牛亲授 基于ElasticSearch的搜房网实战
  101. Python3入门机器学习 经典算法与应用
  102. Java秒杀系统方案优化 高性能高并发实战
  103. 四大维度解锁 Webpack3.0 工具全技能
  104. 手工测试企业项目实践及面试提升
  105. 基于Storm构建实时热力分布项目实战
  106. Java深入微服务原理改造房产销售平台
  107. 全网稀缺Python自动化运维项目实战
  108. 前端成长必经之路-组件化思维与技巧
  109. 基于Python玩转人工智能最火框架 TensorFlow应用实践
  110. Koa2框架从0开始构建预告片网站
  111. React16+React-Router4 从零打造企业级电商后台管理系统
  112. Google资深工程师深度讲解Go语言
  113. 微信小游戏入门与实战 刷爆朋友圈
  114. Elastic Stack从入门到实践
  115. Python移动自动化测试面试
  116. Python3数据分析与挖掘建模实战
  117. Tomcat+Memcached/Redis集群 构建高可用解决方案
  118. 系统学习Docker 践行DevOps理念
  119. Spring Cloud微服务实战
  120. 揭秘一线互联网企业 前端JavaScript高级面试
  121. OpenCV+TensorFlow 入门人工智能图像处理
  122. 基于Golang协程实现流量统计系统
  123. 移动端自动化测试Appium 从入门到项目实战Python版
  124. UI动效设计从入门到实战 PC与移动界面设计必学
  125. Java并发编程与高并发解决方案
  126. Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
  127. 韩天峰力荐 Swoole入门到实战打造高性能赛事直播平台
  128. Docker+Kubernetes(k8s)微服务容器化实践
  129. Python Flask高级编程
  130. ZooKeeper分布式专题与Dubbo微服务入门
  131. App界面设计利器Sketch 精选案例合集
  132. Python高级编程和异步IO并发编程
  133. 新浪微博资深大牛全方位剖析 iOS 高级面试
  134. Vue2.5开发去哪儿网App 从零基础入门到实战项目
  135. 最全面的Java接口自动化测试实战
  136. HBase+SpringBoot实战分布式文件存储
  137. Gradle3.0自动化项目构建技术精讲+实战
  138. 玩转数据结构 从入门到进阶
  139. MyCAT+MySQL 搭建高可用企业级数据库集群
  140. 验证码图像识别,快速掌握TensorFlow模型构建与开发
  141. SpringBoot2.0不容错过的新特性 WebFlux响应式编程
  142. 响应式开发一招致胜
  143. jquery源码分析
  144. AngularJS全栈开发知乎
  145. 揭秘一线互联网企业 前端JavaScript高级面试
  146. JavaScript版 数据结构与算法
  147. Koa2 实现电影微信公众号前后端开发
  148. Koa2+Nodejs+MongoDb 入门实战视频教程
  149. Node.js 从零开发 web server博客项目 前端晋升全栈工程师必备
  150. Vue.js 源码全方位深入解析
  151. Vue核心技术 Vue+Vue-Router+Vuex+SSR实战精讲
  152. Vue全家桶+SSR+Koa2全栈开发美团网
  153. 飞速上手的跨平台App开发
  154. 前端JS基础面试技巧
  155. 前端跳槽面试必备技巧
  156. 让你页面速度飞起来 Web前端性能优化
  157. 微信小程序商城构建全栈应用
  158. 移动Web APP开发之实战美团外卖
  159. Thinkphp 5.0 仿百度糯米开发多商家电商平台
  160. ThinkPHP5.0正式版第二季:实战开发企业站
  161. ThinkPHP 5.0开发微信小程序商场打通全栈项目架构
  162. 前端到后台ThinkPHP开发整站
  163. PHP从基础语法到原生项目开发
  164. PHP高性能 高价值的PHP API
  165. 360大牛全面解读PHP面试
  166. PHP开发高可用高安全App后端
  167. PHP秒杀系统 高并发高性能的极致挑战
  168. Swoole入门到实战打造高性能赛事直播平台
  169. YII 2.0开发一个仿京东商城平台



更=多=课程请加=v=信=== a518958666

╭══════════════════════════════════════════╮ ║
 ║ 说明:教程版权归原作者所有,本人只是负责搜集整理,本人 ║
║ 不承担任何技术及版权问题。本人分享的任何教程仅提 ║
║ 供学习参考,不得用于商业用途,请在下载后在24小时 ║
║ 内删除。 ║
║ ║
║ 1.请遵守中华人民共和国相关法律、条例 ║
║ 2.本人提供的各类视频教程仅供研究学习,本人不承担观看 ║
║ 本教程后造成的一切后果 ║
║ 3.本人不保证提供的教程十分安全或是完全可用,请下载后 ║
║ 自行检查 ║
║ 4.本人提供的教程均为网上搜集,如果该程序涉及 ║
║ 或侵害到您的版权请立即写信通知我们。 ║
║ 5.如不同意以上声明,请立即删除,不要使用,谢谢合作 ║
║ ║
╰═════════════════════════════════════════╯

你可能感兴趣的:(centos,启动,内核)