Linux启动和内核管理

                                    Linux启动和内核管理

本章内容:

centos5centos6的启动流程

服务管理

grub管理

自制Linux

启动排错

编译安装内核

 

Linux的组成:

Linuxkernel+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用户登录系统。

      

ramdiskinitramfs-2.6.32-642.el6.x86_64.img

内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问。

ramdisk——>ramfs提高速度

centos5initrd,工具程序:mkinitrd

centos6initramfs,工具程序: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  #

    查看当前系统运行级别:runlevelwho   -r

 

init读取/etc/inittab配置文件

   初始化运行级别runlevelid: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:设置系统初始化的操作脚本。

      waitinit进程将等待该行配置所对应的脚本操作完成后,在继续执行其他操作。

      ctrlaltdel:设置当用户按下ctrl+alt+delete组合键后的操作。

      powerfail:设置当系统收到断电信号时采取何种动作。

      powerokwait:设置当系统收到回复供电信号时采取何种动作。

      respawn:一旦该行配置所对应的进程被终止,则重新启动该进程。

 

系统初始化脚本:/etc/rc.d/rc.sysinit脚本定义的功能:

       1)设置主机名

       2)设置欢迎词

       3)激活udevselinux

       4)挂载/etc/fstab文件中定义的文件系统

       5)检测根文件系统,并以读写方式重新挂载根文件系统

       6)设置系统时钟

       7)激活swap设置

       8)根据/etc/sysctl.conf文件设置内核参数

       9)激活lvmsoftware raid设备

       10)加载额外设备的启动程序

       11)清理操作  

 

/etc/rc.d/rcX.d脚本:

        rcX.dX根据id:5:initdefault:执行相对应的脚本。

        /etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d

        /etc/rc.d/rcX.d目录中的链接文件具有共同的规律:文件名以KS开头,中间是数字序号,最后是系统中的服务脚本名。如:K95firstbootS10network等,所链接的原始服务脚本位于/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/localrc.local脚本通常有rc脚本在最后进行加载,其作用主要是为管理员自行设置启动命令提供一种途径,需要在开机后自动执行的一些命令操作都可以添加到该文件中。

     注:rc.local脚本要写命令的绝对路径。

 

centos56设置系统服务在不同运行级别中的状态:

      需要调整各种服务在不同运行级别中的自启动状态时,可以使用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]#

 

破解centos56root密码:

      通过单用户模式破解root密码

      1)重启主机之后,在出现grub菜单时按任意键取消倒计时,并定位到title行,按e键进入编辑模式。

      2)定位到以kernel开头的行并按e键,在行尾添加“single”或“S”或“s”或数字“1”,都可以进入到单用户模式。

      3)回车后,按b键将系统引导进入当用户模式,进入shell环境。

      4)在单用户模式shell环境中,直接执行“passwd root”重新设置root用户密码。

 

grubGrand  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启动三个阶段:

   stage1mbr扇区前446个字节。

  stage1.5mbr之后的扇区,让stage1中的bootloader能识别stage2所在分区的文件系统。

   stage2:磁盘分区/boot/grub

 

grub配置文件:

/etc/grub/grub.conf ———–>软链接/etc/grub.conf

一般stage2放置在/boot/grub目录下,内核文件放置在/boot目录下。

      1grub提供启动菜单,并提供交互式接口。

          选项:

             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查找stage2kernel      //文件所在设备分区,为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修复命令:

1grub-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 mbr446个字节),光盘急救模式下修复。

    1)破坏stage1 mbr446个字节)

         [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)禁用内核参数;

    

实验测试:

实验环境:

 破坏mbr446个字节;

 破坏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)创建一个目录挂载根分区;

   2cd切换到根分区中重建/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

(0)
zhengyibozhengyibo
上一篇 2016-09-21
下一篇 2016-09-21

相关推荐

  • 关于 LVM 逻辑卷管理

                  逻辑卷管理 (LVM)    允许对卷进行方便操作的抽象层,包括从新设定文件系统的大小   允许在多个设备间重新组织文件系统将设备指定为物理卷用一个或者多个物理卷来创建一个卷组物理卷是用固定大小的物理区…

    系统运维 2016-09-02
  • 携程全站瘫痪引发的思考

       为今年5月冠上多事之夏的名头已是无可厚非的一件事,自支付宝光纤被挖断后,携程又暴出全站瘫痪的风波,从5/28 11:00开始,直到晚上11:29分才全面恢复.互联网也是谣言四起,纷纷猜测百度腾讯谁会是下一个灾难的受害者。暂切抛开这些玩笑言论,就携程本次事情引发的思考太多,前车之鉴后事之师,如果携程的事情发生到我们身上,我们该怎么办,…

    Linux干货 2015-06-03
  • MariaDB数据类型总结

        数据类型是数据的一种属性,它决定了数据的存储格式、有效范围及其它相应的限制。MariaDB的数据类型包括:字符型、整型、浮点值、日期时间型、布尔型及内建类型。 一、字符型     1、CHAR和VARCHAR类型     &nbsp…

    Linux干货 2015-06-30
  • 网络互联参考模型(详解)

    网络互联参考模型 1. 什么是协议 为了使数据可以在网络上从源传递到目的地,网络上所有设备需要“讲”相同的“语言” 描述网络通信中“语言”规范的一组规则就是协议 例如:两个人交谈,必须使用相同的语言,如果你说汉语,他说阿拉伯语…… 数据通信协议的定义 决定数据的格式和传输的一组规则或者一组惯例 2. 协议分层 网络通信的过程很复杂: 数据以电子信号的形式穿越…

    Linux干货 2015-05-07
  • samba

    Samba 简介:      Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。…

    系统运维 2016-11-01
  • 详解Ntbackup的五种备份方式(下)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/145644 继续上文。   四、差异备份(Differental Backup)     差异备份是…

    Linux干货 2015-03-26