简述grub启动引导程序和制作kickstart文件

1、简述linux操作系统启动流程
2、简述grub启动引导程序配置及命令行接口详解
3、实现kickstart文件制作与光盘镜像制作

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

  • 启动流程:
  • BIOS上电自检(POST)
  • 引导加载程序bootloader(MBR)
  • 内核初始化(ramdisk技术)
  • 根切换
  • 启动系统第一个进程

在按下电源键后电脑开始执行BIOS(基本输入输出系统)的POST(上电自检)过程,它将找到设备的引导扇区,并包含有效记录的第一个引导扇区(MBR)装载入内存,并且控制权也将转移到此段代码。根据MBR中的信息找到磁盘上的kernel文件和initrd文件,如果bootloader是grub2那将继续加载随后扇区中的1.5阶段代码其主要功能是执行存放阶段2文件的/boot文件系统的驱动程序,并将加载相关的驱动程序。阶段2的grub文件都存放于/boot/grub2目录下,在这个时候内核已经被加载到内存中,如果是ramdisk则展开一个伪根文件系统,借助这个来加载相关的模块。然后把真正的根挂载上来,将系统控制权移交给内核,并做根切换,然后内核启动第一个进程init或者systemd。
是所有进程的父进程,它将设定默认的运行级别,运行系统初始化脚本,并关闭或启动系统对应级别下的服务,启动终端。

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

grub的三个阶段

stage 1: 用于启动Boot loader 来加载stage2的内容至内存中
stage 1_5:用于识别和加载内核和stage2所在分区的文件系统的相关驱动程序,引导stage2
stage 2: 读取 grub.conf 配置文件,并真正开始引导程序

grub的配置文件

grub程序在引导启动时会按照文件的配置参数去引导启动系统


简述grub启动引导程序和制作kickstart文件
CentOs6的grub配置文件位置

文件的内容如下:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$CUmM50$x8G4awdSAPT4SZjvWSE0/0
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_centos6-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_centos6/lv_swap crashkernel=auto LANG=zh_CN.UTF-8
rd_LVM_LV=vg_centos6/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.el6.x86_64.img

default=0:表示默认选择第一个选项进行配置
timeout: 表示选择菜单的时间,如果过了这个时间没有选择则表示使用默认选项
splashimage: 指定引导菜单中的背景图片的路径
titile: 指定选项的名称
root: 表示kernel和initrd文件所在的分区路径,而不是”根分区”;其格式为:

root (hd0,0) 第一个数字表示第几块硬盘,第二个数字表示硬盘上的第几个分区,都是从零开始

kernel:指定要运行的内核文件路径,后面可以加参数,根挂载的目录,以何种方式去挂载,lvm等的**,语言的设置,键盘等外设的设置
initrd:为内核运行指定的ramdisk文件,版本必须与内核保持一致

grub的命令行接口

在菜单页面按c即可进入命令行接口,我们可以配置相关的grub设置,等同于在配置文件中做出的设置常用的指令有:

help:查看命令帮助;
root ():指定ramdisk和内核文件所在的分区,如root(hd0,0)。
find (hd0,0) /path/to/file:用于查找对应分区下的文件kernel /path/to/kernel_file:用于指定要运行的kernel文件。
initrd /path/to/ramdisk_file:指定ramdisk文件;
boot:以当前配置好的grub配置启动系统;

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

Kickstart简介

kickstart利用anaconda工具实现自动化安装,通过生成的的配置文件,服务器可以实现安装的全自动化不需要人机交互,该文件里包含anconda在安装系统以及安装后的一些必要的配置信息。

kickstart文件的位置:

ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard Drive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTP Server: ks=http://server
FTP Server: ks=http://server
HTTPS Server: ks=http://server

如果时使用光盘安装,则则需要将配置文件isolinux/isolinux.cfg的apped后面添加ks=cdrom:/ks.cfg(需要将ks文件放在光盘的根目录下)

label linux
  menu label ^Install CentOS 7 thsi is mytest
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 ks=cdrom://ks.cfg                                                                                   

kickstart文件的格式

install
cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 192.168.31.200 --netmask 255.255.255.0 --gateway 192.168.31.1 --noipv6 --nameserver 114.114.114.114 --hostname Centos6.8
rootpw  --iscrypted $6$xU9mWzHlFMaLyxbw$30awESpjiQF0Gg/qtYAa8eOpOJicBDD2noR1uS92lb.hSnuir3bqAObiy2OSnJ0tevlzZxvjVLY8mU1P3fgNV/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@base
@chinese-support
@workstation-policy
@x11
mtools
pax
python-dmidecode
libXmu
%end

1、命令段:

命令段:
指定各种安装前配置选项,如键盘类型等;
必备命令
可选命令

2、程序包段:

指明要安装程序包,以及包组,也包括不安装的程序包;
%packages
@group_name:需要安装的包组
package:需要安装的包
-package:不需要安装的包
%end

3、脚本段:

默认文件里并没有这一段
%pre:安装前脚本
运行环境:运行安装介质上的微型Linux系统环境;

%post:安装后脚本
运行环境:安装完成的系统;

使用system-config-kickstart工具创建ks文件

简述grub启动引导程序和制作kickstart文件
image.png

也可以通过文件打开一个模板,模板位于/root/anaconda.cfg
配置完成后用ksvalidator命令检查kickstart文件是否有语法错误:
~]# ksvalidator ks.cfg
如无报错信息,至此kickstart文件制作完成。

制作光盘镜像

我们自己制作的光盘镜像可以不加不需要的软件包只将isolinux目录以及我们刚刚制作的ks文件也复制过去同时复制过来的文件要添加写权限,修改isolinux.cfg文件指明ks文件的位置,这里我们修改下标签以便更直观得看到实验得效果:


简述grub启动引导程序和制作kickstart文件
image.png

创建镜像文件:

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 /tmp/mycdrom.iso /mnt/mycdromiso


简述grub启动引导程序和制作kickstart文件
image.png

然后测试其效果我们将它传给windows然后用vmware创建一台虚拟机用我们自己建得镜像文件来安装系统

简述grub启动引导程序和制作kickstart文件
image.png
简述grub启动引导程序和制作kickstart文件
image.png

到此一个kicksart文件就制作完成啦,需要注意得是mkisofs命令制作镜像文件得格式很重要,如果制作错了后面得实验就都无法进行了。