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)
上一篇 2016-09-21 21:13
下一篇 2016-09-21 21:18

相关推荐

  • 进程管理

    Process Manager 工作管理  jobs ctrl+z,& bg,fg nohup 进程,资源管理  查看:pstree,ps,top,vmstat,pmap 查询:pgrep,pidof,fuser,lsof 管理:kill,nice,renice 管理软件or命令  htop glances dstat …

    Linux干货 2016-04-11
  • 关于 shell脚本编程第一篇

                                                   shell脚本编程(1) …

    系统运维 2016-08-15
  • Linux源程序包相关概念整理

    一、      Linux源程序包介绍 1)    linux源程序包基础 1.         遵循常用开源协议:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系统运维 2015-09-22
  • rsync+inotify 实现数据实时同步

        Rsync (Rmote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀。但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如…

    Linux干货 2015-07-24
  • php 设计模式-数据映射模式(应用程序与数据库交互模式)

    前面提到的设计模式大大提高了代码的可读性与可维护性。然而,在WEB应用设计与开发中一个基本的需求与挑战:数据库应用,这些设计模式都没有涉及到。数据映射模式使您能更好的组织你的应用程序与数据库进行交互。 下面我将用实际代码说明,如果一个表发生变动。我们要修改客户端代码就可以了。特别是游戏项目,需求经常可能会经常变动。修改表结构,可能引起大片代码的改动。 首先我…

    Linux干货 2015-04-07
  • Linux进程管理

    一、程序与进程           1、程序         程序是为了达到特定的目的,可以被计算机运行并且由命令代码组成的语句序列。       &…

    Linux干货 2015-05-14