zoukankan      html  css  js  c++  java
  • 系统启动与引导修复

    一、系统运行级别

    1、linux系统共有七个运行级别

    • linux中可以使用runlevel来查看运行级别
    [root@centos ~]# runlevel 
    N                    3
    上一个运行级别        当前运行级别 
    
    • 手动更改运行级别
    [root@centos ~]# init 5 
    [root@centos ~]# runlevel 
    3 5
    
    
    2、系统默认运行级别

    系统默认运行级别,依赖于 /etc/inittab 文件

    # inittab is only used by upstart for the default runlevel.
    #
    # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    # inittab is only used by upstart for the default runlevel.
    #
    # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # System initialization is started by /etc/init/rcS.conf
    # 系统会先调用 /etc/init/rcS.conf
    # Individual runlevels are started by /etc/init/rc.conf
    # 再调用 /etc/init/rc.conf ,在不同的运行级别启动不同的服务
    # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
    # 通过这个配置文件判断 Ctrl+Alt+Delete 热启动键是否可用
    # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
    # with configuration in /etc/sysconfig/init.
    # 判断系统可以启动的本地终端数量,及终端的基本设置(如颜色)
    # For information on how to write upstart event handlers, or how
    # upstart works, see init(5), init(8), and initctl(8).
    #
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    id:3:initdefault:
    # 这就是系统的默认运行级别,也就是系统开机后直接进入哪个运行级别,注意这里的默认运行级别只能写 3 或 5,其他的级别要不就是关机重启,要不就是保留或单用户, 都不能作为系统默认运行级别的。
    
    3、 /etc/rc.d/rc.local
    • 这个配置文件会在用户登陆之前读取,这个文件中写入什么命令,在每次系统启动时都会执行一次。也就是说,我如果有任何需要在系统启动就运行的工作,只需要写入/etc/rc.d/rc.local 这个配置文件即可。
    [root@centos ~]# ll  /etc/rc.local 
    lrwxrwxrwx. 1 root root 13 Dec  2 23:15 /etc/rc.local -> rc.d/rc.local  #该文件是 rc.d/rc.local 的软连接
    
    #我们可以在文件中写下如下命令:
    /etc/rc.d/init.d/httpd start # 如果写入 RPM 包安装的 apache 的启动命令, apache 服务就会开机时自动启动了。
    

    二、启动引导程序

    早期的 Lilo 引导程序已经不是很常见了,grub 相比来讲有很多优势。如下:

    • 支持更多的文件系统
    • grub 的主程序可以直接在文件系统中查找内核文件;
    • 在系统启动时,可以利用 grub 的交互界面编辑和修改启动选项
    • 可以动态的修改 grub 的配置文件,这样在修改配置文件之后不需要重新安装 grub,而只需要重新启动就可以生效了
    1 /boot/grub 目录

    grub 的作用有以下几个:

    • 第一是加载操作系统的内核;
    • 第二是拥有一个可以让用户选择的菜单, 来选择到底启动哪个系统
    • 第三还可以调用其他的启动引导程序,来实现多系统引导
    [root@centos grub]# ll
    total 274
    #grub 中硬盘的设备文件名与系统的设备文件名的对应文件
    -rw-r--r--. 1 root root     63 Dec  2 23:19 device.map
    #ext2/ext3 文件系统的 stage 1.5 文件
    -rw-r--r--. 1 root root  13428 Dec  2 23:19 e2fs_stage1_5
    #FAT 文件系统的 stage 1.5 文件
    -rw-r--r--. 1 root root  12636 Dec  2 23:19 fat_stage1_5
    #FFS 文件系统的 stage 1.5 文件
    -rw-r--r--. 1 root root  11780 Dec  2 23:19 ffs_stage1_5
    grub 的配置文件
    -rw-------. 1 root root    835 Dec  2 23:19 grub.conf
     #iso9660 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  11772 Dec  2 23:19 iso9660_stage1_5
    jfs 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  13284 Dec  2 23:19 jfs_stage1_5
    #grub 的配置文件。和 grub.conf 是软链接,所以两个文件修改哪个都可以
    lrwxrwxrwx. 1 root root     11 Dec  2 23:19 menu.lst -> ./grub.conf
    #minix 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  11972 Dec  2 23:19 minix_stage1_5
    #reiserfs 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  14428 Dec  2 23:19 reiserfs_stage1_5
    # 系统启动时, grub 程序的背景图像
    -rw-r--r--. 1 root root   1341 Nov 15  2010 splash.xpm.gz
    # 安装到引导扇区中的 stage1 的备份文件
    -rw-r--r--. 1 root root    512 Dec  2 23:19 stage1
    #stage2 的备份文件
    -rw-r--r--. 1 root root 126148 Dec  2 23:19 stage2
    #UFS 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  12040 Dec  2 23:19 ufs2_stage1_5
    #vstafs 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  11380 Dec  2 23:19 vstafs_stage1_5
    #xfs 文件系统的 Stage 1.5 文件
    -rw-r--r--. 1 root root  13980 Dec  2 23:19 xfs_stage1_5
    
    2、grub 的配置文件
    [root@centos grub]# vim /boot/grub/grub.conf 
    
    default=0
    timeout=5
    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_centos-lv_root nomodeset rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_centos/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_centos/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
            initrd /initramfs-2.6.32-642.el6.x86_64.img
    
    • default=0
      默认启动第一个系统。也就是如果在等待时间结束后,用户没有选择进入哪一个系统,那么 系统会默认进入第一个系统。如果有多系统并存,那么每个系统都会有自己的 title 字段,如果想要 默认进入第二个系统,这里就可以设为 default=1。
    • timeout=5
      等待时间,默认是 5 秒。也就是进入系统时,如果 5 秒内用户没有按下任意键,那么系统会 进入 default 字段定义的系统。当然可以手工修改这个等待时间,如果 timeout=0 则不会等待直接进入系统,timeout=-1 则是一直等待用户输入,而不会自动进入系统。
    • splashimage=(hd0,0)/grub/splash.xpm.gz
      这里是指定 grub 启动时的背景图像文件的保存位置的。已经说过了 hd(0,0)代表第一个硬盘的第一个分区,而一般的系统安装时/boot 分区就是第一个分区,所以这个背景图像的实际位置就是/boot/grub/splash.xpm.gz。
    • hiddenmenu 隐藏菜单。
      启动时默认只能看到读秒,而不能看到菜单,如果想要看到菜单需要按任意键。 如果注释了这句话,那么启动时就能直接看到菜单了。

    以上就是 grub 的整体设置,下面我们介绍 CentOS 系统的启动设置:

    title CentOS 6 (2.6.32-642.el6.x86_64) 
    #title 就是标题的意思,也就是说在 title 后面写入的是什么,那么系统启动时在 grub 的启动菜单中看到的就是什么。
    root (hd0,0)
    #是指启动程序的保存分区。在系统中,/boot 分区是独立划分的,而且设备文件名为/dev/sda1,所以在 grub 中,就被描述为 hd(0,0)
    kernel /vmlinuz-2.6.32-642.el6.x86_64  #指定了内核文件的位置,这里的/是指/boot 分区
    ro # 启动时以只读方式挂载根文件系统,这是为了不让启动过程影响磁盘内的文件系统
    root=/dev/mapper/vg_centos-lv_root  # 指定根文件系统的所在位置
    rd_NO_LUKS  # 禁用 LUKS,LUKS 用于给磁盘加密。
    LANG=en_US.UTF-8  #指定语言
    rd_NO_MD #禁用软 RAID
    KEYBOARDTYPE=pc KEYTABLE=us  #键盘类型
    rd_NO_DM #禁用硬 RAID
    rhgb #用图片来代替启动过程中的文字信息。启动完成 之后可以使用 dmesg 命令来查看这些文字信息。  
    quiet #隐藏启动信息,只显示重要信息。 
    
    3、grub 加密

    我们使用命令生成加密密码字串,这个字串是采用 md5 加密的,就是你的密码经 md5 编码之后的。 我们会利用这个加密密码字串来加密 grub 配置文件。

    [root@centos grub]# grub-md5-crypt 
    Password: 
    Retype password: 
    $1$OhHNh0$KGd1RTlTKKj7nEPeL6azJ1
    

    grub 菜单整体加密,整体加密后,如果想进入 grub 编辑界面必须输入正确的密码,操作如下

    [root@centos grub]# vim /boot/grub/grub.conf
    default=0
    timeout=5
    password --md5 $1$OhHNh0$KGd1RTlTKKj7nEPeL6azJ1
    

    三、系统修复模式

    1、单用户模式

    Linux 的单用户模式有些类似 Windows 的安全模式, 只启动最少的程序用于系统修复。在单用户模式(运行级别为 1)中,Linux 引导进入根 shell,网络被禁用,只有少数进程运行。单用户模式可以用来修改文件系统损坏、还原配置文件、移动用户数据等。
    1)进入单用户模式
    按 e 进入grup菜单,选择第二项,再按 e ,输入 1 回车 再按 b 启动


    2、单用户模式常见的错误修复
    • 遗忘 root 密码 这是管理员最容易犯的错误,那么应该如何修复呢?当然是使用单用户模式进行修复了,进入单用户模式最大的特点就是不需要输入用户名和密码就能登录。既然已经登录了单用户模式,那么直接 给 root 用户设定新密码即可。
      命令如下:
      [root@centos /]# passwd root
    • 修改系统默认运行级别 如果我们把系统的默认运行级别修改错误,比如改为了 0 或 6,系统就不能正常启动了。这时也可以利用单用户模式进行修复,只要直接修改默认运行级别配置文件/etc/inittab,把系统默认运行 级别修改回来即可。
      命令如下:
      [root@centos /]# vim /etc/inittab id:3:initdefault:
      把默认运行级别修改为 3 或 5 。注意系统的默认运行级别只能使用 3 或 5 绝大多数系统错误都可以通过单用户模式进行修复,理论上是只要能够进入单用户模式,那么系统错误就可以被单用户模式修复。
    3、光盘修复模式

    1)进入光盘修复模式
    如何进入光盘修复模式呢首先你需要有系统光盘,或系统修复光盘。我们这里只需要把 CentOS 6.x 的第一张光盘放入光驱,然后重启系统。修改 BIOS 的启动顺序,让系统从光盘启动。下面的针对的是虚拟机。



    2)、 光盘修复模式常见的错误修复
    我们在光盘修复模式中主要可以修复什么错误呢?其实能在单用户模式中修复的错误,都能在光盘修复模式中修复。当然还可以修复一些在单用户模式下无法修复的错误.

    • 重要系统文件丢失,导致系统无法启动 如果系统中的重要系统文件丢失,当然会导致系统无法正常启动。这时也可以利用光盘修复模式修复。我们假设把/etc/inittab 文件丢失了,我们通过系统启动过程知道这个文件是定义系统默认运行级别的,如果丢失了这个文件,系统当然不能正常启动,这时就需要进入光盘修复模式中了,然后需要利用 chroot 命令的作用是“change root directory”改变系统根目录的意思。也就是可以把根目录暂时移动到某个目录当中。我们是通过光盘启动的光盘修复模式,所以我们现在所在的根目录不是真正的系统根目录,而是光盘的模拟根目录。系统根目录被当成外来设备放在了/mnt/sysimage/目录中。 这时就需要 chroot 命令把我们现在的所在目录移动成真正的系统根目录。
    bash-4.1# chroot /mnt/sysimage # 改变主目录,发现有的时候已经是正常的根目录,就无需切换。
    sh-4.1# cd /root # 进入 root 目录。因为默认进入的是 / 目录,如果不进入 root ,一会提取的 inittab 文件会报错 
    sh-4.1# rpm -qf /etc/inittab initscripts-9.03.31-2.el6.centos.i686 # 查询下 /etc/inittab 文件属于哪个包,如果文件丢失,可以通过其他命令查询。或者上网查询。
    sh-4.1# mkdir /mnt/cdrom # 建立挂载点 
    sh-4.1# mount /dev/sr0 /mnt/cdrom # 挂载光盘 
    sh-4.1# rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.31-2.el6.centos.i686.rpm |cpio -iduv ./etc/inittab # 提取 inittab 文件到当前目录 
    sh-4.1# cp etc/inittab /etc/inittab  #复制 inittab 文件到指定位置
    
  • 相关阅读:
    iframe的使用小贴士
    jquery M97-datepicker日历控件
    CSS z-index 属性的使用方法和层级树的概念
    常用的js代码
    图片水平垂直居中
    server端和前端的区别
    nodejs模块化标准
    nodejs介绍
    小程序缓存Storage的基本用法
    小程序数据绑定的拓展用法
  • 原文地址:https://www.cnblogs.com/hjnzs/p/12005058.html
Copyright © 2011-2022 走看看