N28: 启动流程、grub、kickstart

第七周

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

 

  • POST加电自检: CPU自举,加载固定地址空间中的固定指令,起动BIOS完成硬件探测
  • Boot Sequence:按启动顺序找出第一个有bootloader设备,为此次启动的设备
    • bootloader
      • Windows: ntloader
      • Linux:
        • LILO: linux loader,多用于手机
        • GRUB:
          • grub1: 0.x: CentOS 5,6
          • grub2: 1.x: CentOS 7: 完全重写
    • 功能:提供可选菜单
    • 用户选择内核后,bootloader将内核和ramdisk加载到内存中
  • 内核空间:自解压展开,获得控制权,并初始化
    • 看看朕的花花世界
    • 控制权,利用驱动。ro加载根
    • 派遣一个使者:init,替朕去管理这个世界
  • 用户空间:使者init进程
    • centos5: init,进程串行启动;/sbin/init
    • centos6: upstart, Ubuntu实现,dbus通信并行创建进程 /sbin/init
    • centos7: systemd,redhat程序员参考mac启动逻辑,一个进程完成启动系统 /sbin/systemd
    • 根据/etc/inittab文件可知
      • 设定默认运行级别
      • 初始化
        • 设定主机名
        • 打印欢迎信息
        • 激活selinuxudev
        • 挂载/etc/fstab中定义的文件系统
        • 检测 根 文件系统,ro挂载 rootfs
        • 设置系统时钟
        • 根据/etc/sysctl.conf设定内核参数
        • 激活lvmraid
        • 激活swap设备
        • 加载额外驱动程序
        • 清理初始化过程中的生成临时文件的程序所生成的临时文件
      • 给rc脚本传递级别参数,停止要停止的服务,启动要启动的服务
      • 设置登陆终端,打印登陆提示符

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

grub工作阶段:

  • 1st: mbr, bootloader加载到mbr
  • 1.5st: 驱动,mbr之后的扇区,提供stage2在的分区的文件系统驱动;
  • 2st: boot目录所在分区

功能:

1. 显示菜单

command line:

  • > help 获取帮助
  • > find (hd#,#)/PATH/TO/SOMEFILE; 查看文件;第几个磁盘的第几个分区,都从0开始编号
  • > root (hd#,#) 指明stage1_5驱动指向的boot分区位置;grub将其当作根;grub安装的分区;
  • > kernel /PATH/TO/VMLINUZ_FILE: grub识别的根下的内核文件;本次启动所用的内核
    • kernel后可以接受一些参数,如下:
      • root=/dev/DEVICE kernel启动后挂载的根文件系统
      • init=/sbin/init 默认,内核启动用户空间的init程序
      • selinux=0;禁用selinux功能;
      • ro 只读
      • quiet 静默模式
  • > initrd /PATH/TO/INITRAMDISK_FILE;grub识别的根下的initramfs文件;提供本次挂载根文件系统的驱动
  • > boot 启动

2. 隐藏菜单
3. 保护机制

 

配置文件:

/boot/grub[2]/grub.conf

  • default=#: timeout时间内用户没有做出任何选择,默认启动的内核。title从上至下,从0开始编号。
  • timeout=#:等待用户选择的时长;
  • splashimage=(hd#,#)/PATH/TO/PIC_FILE.xpm.gz:菜单背景图片;
  • hiddenmenu: 隐藏菜单
  • password –md5 STRING: 菜单编辑认证:可省,表示不认证
  • title TITLE: 定义菜单标题,有空格时不用加引号;可出现多次,表示多个菜单;注意:其下必须缩进
    • root (hd#,#):指明grub的根,即stage1_5驱动指向的分区位置;stage2位置;
    • kernel /PATH/TO/VMLINUZ_FILE: grub识别的根下的内核文件;
    • initrd /PATH/TO/INITRAMDISK_FILE:grub识别的根下的initramfs文件;设定提供根文件系统驱动的路径;
    • password –md5 STRING: 启用内核或操作系统认证;可省,表示不认证

 

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

 

kickstart文件制作:

复制以下配置注意:

安装源的位置,需要修改;
url –url=”http://172.16.0.68/centos/7/x86_64″
分区大小

# vim /var/ftp/pub/centos7.cfg

#version=RHEL7
# System authorization information
auth –enableshadow –passalgo=sha512

# 安装源
url –url=”http://172.16.0.68/centos/7/x86_64″

# 安装过程是graphical还是文本
text

# Run the Setup Agent on first boot
firstboot –enable
ignoredisk –only-use=sda

# 键盘
keyboard –vckeymap=us –xlayouts=’us’

# 安装后语言
lang en_US.UTF-8

# 安装后操作
reboot

# 网络怎么配置
network –bootproto=dhcp

#root密码设定为什么

rootpw –iscrypted                                     $6$jnX/i6Ab$eT4cXMEFYrFLmPPT1CwymlAYbHfYK1ifH7DXLNdfMQV6Nu4T2E/8da8aSqIEHNakVQvCtAlEuVln4.wvUyF0z.

# 系统时区
timezone Asia/Shanghai

# X Window System configuration information
xconfig –startxonboot

# System bootloader configuration
bootloader –append=” crashkernel=auto” –location=mbr –boot-drive=sda

# Partition clearing information
clearpart –none –initlabel

# 清空mbr
zerombr

# 分区
part swap –fstype=”swap” –ondisk=sda –size=2048
part /boot –fstype=”xfs” –ondisk=sda –size=512

# 创建Pv
part pv.008002 –size=102400

# 创建vg
volgroup myvg –pesize=8192 pv.008002
logvol / –fstype=xfs –name=lv_root –vgname=myvg –size=40960
logvol /home –fstype=xfs –name=lv_home –vgname=myvg –size=4096
logvol /usr –fstype=xfs –name=lv_usr –vgname=myvg –size=20480
logvol /var –fstype=xfs –name=lv_var –vgname=myvg –size=20480

 

# 安装哪些程序包
%packages
@base
@core
wget
lftp
tree
screen
%end

# 安装后脚本
%post

# 以多用户模式为默认模式
systemctl set-default multi-user.target

 

#禁用防火墙
systemctl stop firewalld.service
systemctl mask firewalld.service

#将xshell的公钥导入

[ ! -d /root/.ssh ] && mkdir /root/.ssh && chmod go=— /root/.ssh
cat >> /root/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEA05mLktn19BzxlfpSmn2MRt6WD3Yr15rZwjKdC/bRy8fABkNIvh1NZDBFQodlvwUhlVvxdyFR90NxJ/Ykhbs/GxUlYyqY3JFqw/YUw2Ba8i4jSzwLi+6tkPQA4RYl2IED
EOF

#将主机名反解功能取消
echo “UseDNS no” >> /etc/ssh/sshd_config

#登陆提示符添加
echo -e “Mage Education Learning Services\nhttp://www.magedu.com\n” >> /etc/issue
%end

定制光盘

 # mkdir -v /root/myboot
 # cp -r /media/cdrom/isolinux /root/myboot
 ~]# vim /root/myboot/isolinux/isolinux.cfg
 label linux
 menu label ^Install CentOS 7 auto
 kernel vmlinuz
 append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet    inst.repo=http://172.16.0.9/centos/7/x86_64 ks=cdrom:/ks.cfg
 # cp /path/to/ks.cfg /root/myboot/ks.cfg
 # cd /root
 ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91125

(0)
逆神阳逆神阳
上一篇 2018-01-15 09:01
下一篇 2018-01-15 15:52

相关推荐

  • 第三周 磁盘文件系统进阶

    文件系统的使用:     首先要“挂载”:mount 命令和umount命令     根文件系统这完的其他文件系统要想能够访问, 都必须通过“关联”至根文件上的某个目录来实现,次关联操作即为“挂载”;此目录几位“挂载点”;     挂载点:mount-point,用于做为另一个文件系统的访问入口; …

    Linux干货 2016-11-22
  • 第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d' ' -f 1 |sort |uniq -c 2、取出最后登录到当前系统的用户的相关信息。 ~]# last | head -1 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]# cat…

    Linux干货 2016-12-14
  • 第四周作业

    正则表达式练习

    Linux干货 2017-12-25
  • 第五周博客作业

      感觉进入了年底,明显的时间不够,不管怎么说,还是要努力跟上学习的进度,不能给自己松懈找借口!  1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.co…

    Linux干货 2017-01-03
  • shell脚本3——循环语句

    流程控制:      顺序执行      选择执行      循环执行 循环执行:      将某代码段重复运行多次      重复运行多少次:  &…

    Linux干货 2016-08-18
  • mariadb基础应用

    mariadb基础应用 一、 前言 MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users …

    Linux干货 2016-12-16

评论列表(1条)

  • 马哥教育
    马哥教育 2018-01-15 23:21

    总结的蛮不错的,最后一题重在实战,如果能体现出遇到的问题及解决思路,会更好一点。加油~