Linux学习31-运维自动化之自制启动程序

系统安装过程

安装程序

1. CentOS系统安装

  • 名称解释
    anaconda: CentOS图形界面安装向导程序
    1. gui:图形窗口
    2. tui: 基于图形库curses的文本窗口

1.1 安装程序启动过程

  • 启动界面选择
    默认启动GUI接口
    若是显式指定使用TUI接口:向内核传递text参数即可

    1. 按tab键,在后面增加text
      例如vmlinuz initrd=initrd.img text
    2. 按ESC键:boot: linux text
  • 系统安装引导设备
    启动安装过程一般位于引导设备;后续的anaconda及其安装用到的程序包等可来自下面几种方式:

    1. 本地光盘
    2. 本地硬盘
    3. NFS
    4. URL:
      4.1 ftp server: yum repository
      4.2 http server: yum repostory
  • 光盘中系统启动文件

    [root@hai7 ~]$cd   /mnt/cdrom/isolinux/
    [root@hai7 isolinux]$ ls
    boot.cat  boot.msg  grub.conf  initrd.img  isolinux.bin  isolinux.cfg  memtest  splash.png  TRANS.TBL  		vesamenu.c32  vmlinuz
    
    1. MBR:对应文件 isolinux/boot.cat
    2. stage2: grub第二阶段对应文件isolinux/isolinux.bin
    3. 配置文件:启动菜单对应文件isolinux/isolinux.cfg,其定义的是如下画面
      在这里插入图片描述
[root@hai7 ~]$cat /mnt/cdrom/isolinux/isolinux.cfg
label linux                     <==安装升级
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz           <==加载内核,下同
  append initrd=initrd.img         <==向内核传递参数initrd.img,下同
label vesa       
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue                      <==救援模式
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local                       <==本地光盘启动
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86                    <==内存检测
  menu label ^Memory test
  kernel memtest
  append -
  • 进入菜单各选项的方法
    1. 在菜单栏上下键选择,回车确认选择。

    2. 如图箭头提示语句,上下键选择对应选项后,按 [tab】键,可以编辑选项,提示语句对应配置文件中的label
      例如:选择安装项,按[tab]键,出现下图所示画面
      在这里插入图片描述
      而选择救援模式 ,按[tab】键,显示下图界面
      在这里插入图片描述
      这两项只是句尾不同,救援模式多出单词rescue,所以编辑安装模式,在词尾加上rescue可以进入安全模式

    3. 菜单界面按[esc]键,出现如下画面,这里暂时称为[root:]界面,下面还要用到
      在这里插入图片描述
      直接输入isolinux/isolinux.cfg文件中对应label,进入对应项目,例如boot:rescue 就会进入救援模式

1.2 在[boot : ]界面引用其他参数安装系统

  • 调用仓库文件实现安装

    1. 找一个合适的yum源,这里使用另一台本地主机配置的远程http源
    [root@hai6  ~]$cd /var/www/html/
    [root@hai6  /var/www/html]$mkdir -pv centos/6
    [root@hai6 ~]$mount /dev/sr0 centos/6/   临时挂载,保存要写在文件/etc/fstab中
    [root@hai6 ~]$ss -ntl    确定http服务80端口是否启动
    
    1. 在需要安装系统的机器上操作,启动菜单按[esc]键,进入[boot:]界面,配置网络,指定yum仓库路径,回车
    root:linux ip=172.20.50.205  netmask=255.255.0.0 repo=http://172.20.129.251/centos/6
    
    1. 进入如下画面,要测试媒体,跳过
      在这里插入图片描述

    2. 进入安装画面后,选择语言,键盘布局,设备类型选择基础,然后弹出界面要格式化磁盘,选择yes
      在这里插入图片描述

    3. 指定主机名与网络,这里网络不需要配了,第2步时候已经默认指定,设置主机名后,next

    4. 选择时区,将左下角System clock uses UTC去掉,然后next

    5. 设置root口令,设置完成后,next

    6. 分区,根据情况选择,这里选择默认分区Replace Existing,点击左下角Review and modify partitioning layout可以查看默认分区结构,next

    7. 进入如下画面,安装GRUB,如果在箭头所示项打钩,可以设置grub密码,加密菜单项
      在这里插入图片描述

    8. 选择需要安装的程序,这里选择最小化安装
      在这里插入图片描述

    9. 安装重启后,如果需要安装图形界面,要安装工具包,首先配置yum源,在/etc/yum.repos.d/建一个以repo结尾的文件,配置本地yum路径,也就是光盘挂载点

    '仓库配置文件内容'
    [root@hai7 ~]$cat  /etc/yum.repos.d/v9.repo
    [v9]
    baseurl=file:///mnt/
    gpgcheck=0
    
    1. 安装桌面, 需要grouplist包组中的Desktop,安装成功后,切换到图形检测即可
    [root@localhost ~]$yum groupinstall desktop
    

1.3 在[boot : ]界面手动指定安装源

  • askmethod: 手动指定使用的安装方法

    1. 与网络相关的引导选项:
      1. ip=IPADDR
      2. netmask=MASK
      3. gateway=GW
      4. dns=DNS_SERVER_IP
      5. ifname=NAME:MAC_ADDR
    2. 与远程访问功能相关的引导选项:
      1. vnc
      2. vncpassword=‘PASSWORD’
  • 安装步骤

    1. 在菜单界面按下[esc]进入[boot:]界面输入boot: linux askmethod回车,选择语言,键盘布局,弹出界面如下所示
      在这里插入图片描述

    2. 选择URL安装,出现配置网络界面,这里选择DHCP自动获取,Manual configuration为手动配置,OK下一步
      在这里插入图片描述

    3. 在如图所示位置输入远程服务器地址,后续进入安装界面
      在这里插入图片描述

2. 半自动化安装

2.1 自动化安装支持的安装仓库路径

  • centos6
    1. DVD drive repo=cdrom :device
    2. Hard Drive repo=hd:device/path
    3. HTTP Server repo=http://host/path
    4. HTTPS Server repo=https://host/path
    5. FTP Server repo=ftp://username:password@ host/path <==支持用户密码验证
    6. NFS Server repo=nfs:server:/path
    7. ISO images on an NFS Server repo=nfsiso:server:/path
  • centos7
    1. Any CD/DVD drive inst.repo=cdrom
    2. Hard Drive inst.repo=hd:device:/path
    3. HTTP Server inst.repo=http://host/path
    4. HTTPS Server inst.repo=https://host/path
    5. FTP Server inst.repo=ftp://username:password@ host/path
    6. NFS Server inst.repo=nfs:[options:]server:/path

2.2 自动化安装需要的kickstart文件,也叫应答文件

  • 指明kickstart文件的位置: ks=

    1. DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
    2. Hard drive: ks=hd:device:/directory/KICKSTART_FILE
    3. HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
    4. FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
    5. HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
    6. NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
  • kickstart文件的格式

    1. 命令段:指明各种安装前配置,如键盘类型等
    2. 程序包段:在首尾中指明要安装的程序包组或程序包,不安装的程序包等
      1. %packages :程序包段首部,表示以下为添加项
      2. @group_name:@表示包组
      3. package:需要加入的包
      4. -package:’ - '表示卸载包
      5. %end:添加项结尾,与首部对应,成对出现
    3. 脚本段:添加用户自定义脚本,实现自动化定义环境
      1. %pre: 安装前脚本
        运行环境:运行于安装介质上的微型Linux环境
      2. %post: 安装后脚本头部
        运行环境:安装完成的系统,脚本在首尾中写入
      3. %end:添加项结尾,若与程序段同时使用,一个结尾即可
  • 命令段中的命令:
    1. 必备命令

    1. authconfig: 认证方式配置
      authconfig --useshadow --passalgo=sha512
    2. bootloader:bootloader的安装位置及相关配置
      bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"
    3. keyboard: 设定键盘类型
    4. lang: 语言类型
    5. part: 创建分区
    6. rootpw: 指明root的密码
    7. timezone: 时区
  1. 可选命令
    1. install OR upgrade
    2. text: 文本安装界面
    3. network
    4. firewall
    5. selinux
    6. halt
    7. poweroff
    8. reboot
    9. repo
    10. user:安装完成后为系统创建新用户
    11. url: 指明安装源
    12. key –skip 跳过安装号码,适用于rhel版本
  • 创建kickstart文件的方式
    1. 直接手动编辑
      依据某模板修改
    2. 可使用创建工具:system-config-kickstart
      依据某模板修改并生成新配置/root/anaconda-ks.cfg
    3. 检查ks文件的语法错误:ksvalidator
      ksvalidator /PATH/TO/KICKSTART_FILE

2.3 应答文件文本界面格式

  1. 参考操作系统安装后生成的anaconda-ks.cfg文件来制作应答文件
[root@localhost  ~]$ls  
anaconda-ks.cfg
'复制一份来制作应答文件,这里命名为centos.cfg'
[root@localhost  ~]$cp anaconda-ks.cfg   centos.cfg
  1. 制作一个配置文件,后续实验用
'拿第1步中复制过来的文件作为模板'
[root@localhost ~]$vi centos.cfg 
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
url --url=http://172.20.129.251/centos/6 
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 172.20.50.205 --netmask 255.255.0.0 --noipv6
rootpw  --iscrypted $6$vEJuwbiETLK/6l.A$gOvtK6T66QxCDEjcqFoX1fQJZzEQRku64PyerKlPotaampsfHdh7MN7w.Ccw55QGgocuTaRMh79mTTCLcOWo.0
firewall --disabled            				  <==禁用防火墙
authconfig --enableshadow --passalgo=sha512   <==验证方法,默认即可
selinux --disabled             				  <==禁用selinux
timezone Asia/Shanghai 						  <==时区
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"   <==boot安装项
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
zerombr                                       <==清空分区表
clearpart --linux --drives=sda                <==格式化磁盘                
     
part /boot --fstype=ext4 --size=1024          <==分区部分
part / --fstype=ext4 --size=50000
part /data --fstype=ext4 --size=30000

part swap --size=2048


#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1

repo --name="CentOS"  --baseurl=http://172.20.129.251/centos/6 --cost=100  <==安装获取源地址

%packages              <==程序包段首部
@core
@server-policy
@workstation-policy
autofs                 <==光盘自启动服务
vim-enhanced           <==vim工具

%post                  <==脚本首部
useradd v9             <==创建用户
echo 123456 | passwd --stdin v9 &> /dev/null   <==修改密码
mkdir  /etc/yum.repos.d/bak                    <==建立本地YUM源
mv /etc/yum.repos.d/*   /etc/yum.repos.d/bak
cat >/etc/yum.repos.d/v9.repo <<EOF
[V9]
name=v9
baseurl=file:///misc/cd
gpgceck=0
EOF

mkdir /root/.ssh                              <==基于key验证
cat > /root/.ssh/authorized_keys <<EOF        <==导入需要验证的主机key
ssh-rsa                          AAAAB3NzaC1yc2EAAAADAQABAAABAQDOFQkBK9AUEad/S8edx9+vUpIOvjUVoWBO60dN85YdN4R8HtQQROYGT0MKYsld9FiukDR8zZaHUZdmet2uG4VucOiII/vOEepikuw9XFexi1wWiblTdr8565EYIhm5GBLgYDesnTu/3vUBDy7A8+tdNB3I2Y8zWIdJ1bZh5NhIOYkrmjUYoGpPr1SzppT4xv0dAk/657TpLfSnZKTl3gz/tUJ44phUuqSvQjZp756/R8vpFg/uzDW2Ig8IiDug5vvRMaMR/86dbDJh6+POSg4Imbh7JvGDGRxdAwbC0b4PKaFaMx9DlAZhtT5E9/a2dhLE3Tss2I8X1jkKqphKXtGj root@hai7-7
EOF
chmod 600 /root/.ssh/authorized_keys          <==修改文件权限
chmod 700 /root/.ssh                          <==修改目录权限
%end                                          <==自编内容收尾
  1. 写好配置文件将其放在公共目录中,这里选择放在http远程源目录中
[root@localhost ~]$scp centos.cfg 172.20.129.251:/var/www/html/ks/
  1. 安装语法检查工具
[root@hai6  ~]$yum install system-config-kickstart
  1. 检查语法
[root@hai6  ~]$ksvalidator /var/www/html/ks/centos.cfg

2.4 在图形界面修改和编制应答文件

在图形界面输入命令system-config-kickstart弹出界面如下,可以将系统现有的应答文件点击左上角file读入修改,也可以手工填写

  1. Basic Configuration
    在这里插入图片描述
  2. Installation Metod,安装方法
    在这里插入图片描述
  3. Boot Loader Options
    选择install new boot loader。需要设置GRUB密码可以选填GRUB Options设置
  4. Partition information 分区信息
    在这里插入图片描述
  5. Network Configuration网络获取,可以手动指定
    在这里插入图片描述
  6. Authentication验证方法,默认就可以
  7. Firewall Configuration防火墙和SElinux选项,可以禁用或启用
  8. Display Configuration是否安装图形环境,不安装去掉对勾即可
  9. Package Selection选择需要安装的包,在CentOS7中有BUG需要将本机yum仓库配置文件名改为[development]
  10. Pre-installation Script安装前脚本
  11. Post-installation Script安装后脚本
    在这里插入图片描述
  12. 保存到指定目录即可。

2.5 半自动化安装

  1. 光盘引导时,在载入画面按[esc]进入光盘菜单,再按[esc]进入[boot:]界面。
    安装CentOS7需要用CentOS7光盘,CentOS6使用CentOS6光盘
    另外如果安装图形界面内存需要大于1G另外如果安装图形界面内存需要大于1G
  2. 利用应答文件安装系统在[boot : ]界面输入如下内容,回车,等待安装完成即可
boot:linux ks=http://172.20.129.251/ks/centos.cfg  ip=172.20.50.205 netmask=255.255.0.0

3. 自制启动程序

  • 系统光盘中isolinux目录列表

    1. solinux.bin
      光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
    2. isolinux.cfg
      isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
    3. vesamenu.c32
      是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单
    4. Memtest
      内存检测,这是一个独立的程序
    5. splash.jgp
      光盘启动界面的背景图
    6. vmlinuz
      内核映像
    7. initrd.img
      是ramfs (先cpio,再gzip压缩)
  • 创建引导光盘

    1. 建两个目录,一个放引导程序,一个放应答文件
    [root@hai6  /data]$mkdir /data/boot
    [root@hai6  /data/boot]$mkdir  /data/ksdir
    
    1. 将光盘中引导程序放到此目录中
    [root@hai6  /data/boot]$cp -r /misc/cd/isolinux/  .
    
    1. 将应答文件放入ksdir中
    [root@hai6  /data/boot]$mv centos.cfg ksdir/
    
    1. 定制安装菜单,修改isolinux.cfg文件
    label linux
    	 menu label ^Install or upgrade an existing system  <==修改前
    	 menu label ^Auto Install an  system                <==改为自动安装,不需要升级
    	 append initrd=initrd.img                               <==修改前
         append initrd=initrd.img   ks=cdrom:/ksdir/centos.cfg  <==修改后,指定应答文件目录
    

    也可以设置多个安装项目,例如一个最小化安装,一个带桌面安装,将本地启动设为默认选项,防止自动安装启动覆盖原系统,其中’ ^ '表示快捷键,如下所示,如果按M就会跳到mini行

    #prompt 1   
    timeout 600   <==等待时间为600的十分之一,60秒
    
    label mini
      menu  label  Auto Install an ^Mini system
      kernel vmlinuz
      append initrd=initrd.img    ks=cdrom:/ksdir/centos.cfg
    label desktop
      menu  label   Auto  Install  an  ^Desktop  system
      kernel vmlinuz
      append initrd=initrd.img    ks=cdrom:/ksdir/centos_desktop.cfg  
    label local
      menu default      <==设定为默认启动项
      menu label Boot from ^local drive
      localboot 0xffff
    
  1. 将以上内容刻录成光盘,输入以下命令,其中/data/boot/为绝对路径,其它路径都是相对于/data/boot/的相对路径

    [root@hai6  ~]$mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/boot/
    
  2. 将生成的镜像文件拷贝到windows中

    [root@hai6  ~]$sz boot.iso
    
  3. 在需要安装系统的主机上挂载此镜像文件,进入安装目录,选择对应项进行安装

  • 创建U盘启动盘

    1. 将生成的镜像文件,转换为U盘可以识别的格式
    [root@hai6  ~]$isohybrid boot.iso 
    
    1. 生成的镜像文件写入U盘中
    [root@hai6  ~]$dd if=boot.iso of=/dev/sdb
    dd if=/dev/sr0 of=/dev/sdb
    
  • mkisofs命令选项

    1. -o:指定映像文件的名称。
    2. -b:指定在制作可开机光盘时所需的开机映像文件。
    3. -c:制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容作成一个文件。
    4. -no-emul-boot:非模拟模式启动。
    5. -boot-load-size 4:设置载入部分的数量
    6. -boot-info-table:在启动的图像中现实信息
    7. -R 或 -rock:使用 Rock RidgeExtensions
    8. -J 或 -joliet:使用 Joliet 格式的目录与文件名称
    9. -v 或 -verbose:执行时显示详细的信息
    10. -T 或 -translation-table:建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上

官方文档:《Installation Guide》

猜你喜欢

转载自blog.csdn.net/free050463/article/details/82817607