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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 启动流程及制作光盘镜像相关的知识,希望对你有一定的参考价值。

  • 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
    [[email protected] ~]# 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命令来生成加密的密码

[[email protected] ~]# grub-md5-crypt 
Password: 
Retype password: 
$1$cIGK30$KFB088vQiBOJMCKsb48IU/

技术分享图片

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

    定制kickstart 文件
    首先:

    [[email protected] ~]#  yum install  system-config-kickstart

    检查语法错误:

    [[email protected] ~]# ksvalidator anaconda-ks.cfg

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

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

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

    [[email protected] cdrom]# cp /root/ks.cfg /tmp/cdrom

    创建iso镜像

    [[email protected] 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 镜像

    [[email protected] ~]# ls
    anaconda-ks.cfg  boot.iso  install.log  install.log.syslog  myboot

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

以上是关于Linux 启动流程及制作光盘镜像的主要内容,如果未能解决你的问题,请参考以下文章

linux操作系统启动流程,实现kickstart文件制作与光盘镜像制作

linux操作系统启动流程和光盘镜像制作

中标麒麟系统安装教程及常见错误处理

红帽系Linux系统安装流程及自动化安装

红帽系Linux系统安装流程及自动化安装

制作iso镜像U盘自动化安装linux系统