码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 启动流程及制作光盘镜像

时间:2018-10-06 20:32:57      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:配置信息   bug   init   wap   背景图片   菜单   额外   kickstart   分区   

  • 1、 简述linux操作系统启动流程

  • 技术分享图片

    • POST (加电自检):自检主要硬件设备如:CPU、内存、硬盘是否正常,以及输入输出设备是否存在问题等。
      BootSequence(BIOS):BIOS(基本的输入输出系统)装载在硬件芯片CMOS之上,自检时会启动这个程序,并根据CMOS上的配置信息去读取其他的硬件信息,检测正常之后进行硬件设备的初始化。

    • Bootloader(MBR):引导加载程序,在MBR(主引导记录)中,主要功能是识别,加载系统的核心文件,并提交到内存中运行来启动对应的系统。

    • Kernel(ramdisk):Kernel会自身初始化,探测可识别的硬件设备,Kernel是存在硬盘之中的,但是在内核启动时还没有加载硬盘,为了解决这个问题Kernel内核通过ramdisk(虚拟文件系统)来加载硬件程序,为防止根文件系统加载时出现bug等问题无法挽回的情况,以只读方式来挂载根文件系统,来完成跟文件系统的初始化。

    • rootfs (switch_root):启动真正的根文件系统,然后虚拟的根文件系统与真正的根文件系统进行交换。

    • /sbin/init(/etc/inittab, /etc/init/*.conf, /usr/lib/system/system/):
      在内核、硬件及驱动信息加载完毕后,内核会运行用户空间的第一个应用程序:/sbin/init.包括系统的主机名、网络管理、文件系统格式等其他服务。

    • 默认运行级别、系统初始化、关闭及启动服务、启动终端(图形终端):
      这里我将这4步归纳在一起,默认运行级别根据系统的设定来启动系统要进入的运行级别,默认的运行级别有7种;系统初始化时运行的脚本在/etc/rc.d/rc.sysinit配置文件中;关闭及启动服务意味着启动或关闭/etc/rc.d/rc#.d/目录下的服务脚本所控制的服务,最后就是启动终端(图形终端)了.

    运行级别:为了系统的运行或维护等目的而设定的机制;
    0-6:7个级别;
    0、关机, shutdown
    1、单用户模式(single user),root用户,无须认证;维护模式;
    2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;
    3、多用户模式(mutli user),完全功能模式;文本界面;
    4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;
    5、多用户模式(multi user), 完全功能模式,图形界面;
    6、重启,reboot

    默认级别:3, 5

    级别切换:init #

    级别查看:
    who -r
    runlevel

    系统初始化脚本:/etc/rc.d/rc.sysinit
    (1) 设置主机名;
    (2) 设置欢迎信息;
    (3) 激活udev和selinux;
    (4) 挂载/etc/fstab文件中定义的所有文件系统;
    (5) 检测根文件系统,并以读写方式重新挂载根文件系统;
    (6) 设置系统时钟;
    (7) 根据/etc/sysctl.conf文件来设置内核参数;
    (8) 激活lvm及软raid设备;
    (9) 激活swap设备;
    (10) 加载额外设备的驱动程序;
    (11) 清理操作;

    • 2、简述grub启动引导程序配置及命令行接口详解

      grub的版本分为grub 0.X(grub legacy)、grub 1.X(grub 2),目前centos 5 和centos 6使用的是grub legacy版本,centos 7使用的是grub 2版本的启动引导程序。
      其中grub legacy中有三个阶段;
      stage1: bootloader(MBR);
      stage2:MBR之后的扇区,让stage1的bootloader能识别stage2所在的分区上的文件系统;
      stage3:磁盘分区(/boot/grub/)

    • grub配置文件:/boot/grub/grub.conf
      [root@localhost ~]# cat /boot/grub/grub.conf 
      # grub.conf generated by anaconda
      #
      # Note that you do not have to rerun grub after making changes to this file
      # NOTICE:  You have a /boot partition.  This means that
      #          all kernel and initrd paths are relative to /boot/, eg.
      #          root (hd0,0)
      #          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
      #          initrd /initrd-[generic-]version.img
      #boot=/dev/sda
      default=0
      timeout=5
      splashimage=(hd0,0)/grub/splash.xpm.gz
      hiddenmenu
      title CentOS (2.6.32-431.el6.x86_64)
      root (hd0,0)
      kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
      initrd /initramfs-2.6.32-431.el6.x86_64.img

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

    grub的界面支持命令行接口,在界面中输入c进入命令行模式

    技术分享图片

    技术分享图片

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

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

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

    为防止他人随意进入grub对系统造成破坏,因此可以加入密码来防止
    用grub-md5-crypt命令来生成加密的密码

    [root@localhost ~]# grub-md5-crypt 
    Password: 
    Retype password: 
    $1$cIGK30$KFB088vQiBOJMCKsb48IU/

    技术分享图片

    • 3、实现kickstart文件制作与光盘镜像制作

      定制kickstart 文件
      首先:

      [root@localhost ~]#  yum install  system-config-kickstart

      检查语法错误:

      [root@localhost ~]# ksvalidator anaconda-ks.cfg

      准备目录,复制光盘内容到该目录中:

      [root@localhost ~]# mkdir /tmp/cdrom
      [root@localhost ~]# mkdir /media/cdrom
      [root@localhost ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom
      [root@localhost ~]# cp -r /media/cdrom/ /tmp/cdrom/
      [root@localhost ~]# cd /tmp/cdrom/
      [root@localhost cdrom]# cd cdrom/
      [root@localhost ~]# chmod u+w isolinux/*

      将ks.cfg文件拷贝到/tmp/cdrom中

      [root@localhost cdrom]# cp /root/ks.cfg /tmp/cdrom

      创建iso镜像

      [root@localhost cdrom]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o  /root/boot.iso   cdrom/

      查看iso 镜像

      [root@localhost ~]# ls
      anaconda-ks.cfg  boot.iso  install.log  install.log.syslog  myboot

      利用xftp工具将boot.iso传到自己物理机上
      技术分享图片
      之后通过虚拟机自动引导安装

    Linux 启动流程及制作光盘镜像

    标签:配置信息   bug   init   wap   背景图片   菜单   额外   kickstart   分区   

    原文地址:http://blog.51cto.com/13929964/2294128

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!