自动化安装操作系统

光盘系统安装

    在光盘的根目录下有一个isolinux目录,此目录中有一个isolinux.cfg配置文件 格式如下

    grub.conf是硬盘启动操作系统的菜单,  isolinux.cfg 是启动光盘的菜单

    光盘启动和硬盘启动是有区别的

     ^  表示的是光标的定位符号

label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet

label check
menu label Test this ^media & install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

 

    光盘中 boot.iso  是一个只能用来启动系统不能用来安装系统的一个小的引导光盘

    可以在启动boot.iso后指定安装系统的yum源

          boot:  linux ip=172.20.0.28  netmask=255.255.0.0  inst.repo=http://172.20.0.1/centos/7

          boot: linux askmethod    表示安装的时候可以选择安装的方法 而不仅仅是默认的安装

   在安装操作系统的时候可以按ctrl+alt + (f1 or f2 or f3 or f4) 来查看安装中的详细执行信息

   光盘安装系统的步骤:

       首先用光盘加载一个简化版的linux系统,然后通过简化版的系统把操作系统的文件一个一个拷贝到磁盘上面,构建一个完整的linux系统 下次启动才是真正能使用的系统

       所以在安装操作系统的时候通过简化的linux是可以配置网络地址访问网络的

   系统光盘中isolinux目录列表 

      isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个 文件属于SYSLINUX项目

      isolinux.cfg:isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin) 会自动去找isolinux.cfg文件

      vesamenu.c32:是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单

      Memtest:内存检测,这是一个独立的程序

      splash.jgp:光盘启动界面的背景图

      vmlinuz      是内核映像

      initrd.img   是ramfs (先cpio,再gzip压缩) 

  

  kickstart介绍

       ks文件图形化生成工具                 yum install system-config-kickstart   

       在图形终端 执行命令                   system-config-kickstart

       centos7图形生成ks命令     使用Package Selection时候必须对yum中repo文件的[base]改成 [development]

 

  kickstart注意点

 

 把ks文件放到web服务器上的时候要注意ks文件权限的问题,否则web服务无法共享出ks文件    正常应该是644权限

 

kickstart语法格式

    1.命令段             指明各种安装前的配置   如分区,键盘类型,语言,时区,root密码

         必备命令(如果不指定安装操作系统的时候就会被阻塞住,直到手动指定完成.这样就无法实现自动化安装):    

              authconfig: 认证方式配置 authconfig --useshadow --passalgo=sha512

              bootloader:bootloader的安装位置及相关配置 bootloader --location=mbr --driveorder=sda – append="crashkernel=auto rhgb quiet"

              keyboard: 设定键盘类型

              lang: 语言类型

              part: 创建分区

             rootpw: 指明root的密码

             timezone: 时区

       可选命令:

            install OR upgrade 

            text: 文本安装界面 

            network 

            firewall 

            selinux 

            halt 

           poweroff 

           reboot 

           repo 

           user:安装完成后为系统创建新用户 

           url: 指明安装源 

           key –skip 跳过安装号码,适用于rhel版本    

    2.程序包段         指明需要安装的程序包或程序包组  也可指明不需要安装的程序包

    3.脚本段            分为安装前脚本和安装后脚本

       1.安装前脚本%pre          运行环境不是安装后的操作系统而是在安装介质上启动的简化版本的linux

       2.安装后脚本%post        运行环境是安装完成的操作系统,相当于平常写shell脚本

kickstart文件创建 

    创建kickstart文件的方式

          直接手动编辑  依据某模板修改

         可使用创建工具:system-config-kickstart   

         依据某模板修改并生成新配置   /root/anaconda-ks.cfg 

   检查ks文件的语法错误 ksvalidator         

         ksvalidator     /PATH/TO/KICKSTART_FILE

 

定制自己的启动光盘(不包含安装包)

    参考isolinux目录,把整个目录复制到自己的文件夹下

       1.cp   -r /misc/cd/isolinux/         /data/myiso

       2. mkdir    /data/myiso/ksdir

       3.cp  /var/www/html/ks6.cfg     /data/myiso/ksdir

       4.修改isolinux目录下的isolinux.cfg配置文件,结果如下图 给内核传递ks参数,使其在安装系统的时候自动应答

 5.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/myiso/   

    注意:以上相对路径都是相对于光盘的根,和工作目录(当前目录)无关     光盘的根是最后的参数 /data/myiso/

    /root/boot.iso 是绝对路径,表示最终需要生成的iso文件路径                  其它路径都是/data/myiso的相对路径       

6.创建U盘启动盘 (把boot.iso刻录到其它移动磁盘上)

      1. yum install syslinux      需要用到syslinux软件包下面的 isohybrid 转换工具

      2. /usr/bin/isohybrid      /root/boot.iso       必须要先进行格式转换,直接使用dd刻录后无法从u盘启动(只能转换比较小的iso文件)

          如果是比较大的boot.iso 需要下载到windows通过如(老毛桃)等工具把 iso 文件刻录到U盘

      3. dd   if=/root/boot.iso     of=/dev/sdb    

mkisofs选项说明 

   -o 指定映像文件的名称。

   -b 指定在制作可开机光盘时所需的开机映像文件。

   -c 制作可开机光盘时,会将开机映像文件中的 no-eltorito-catalog 全部内容 作成一个文件.

   -no-emul-boot 非模拟模式启动。

   -boot-load-size 4 设置载入部分的数量

   -boot-info-table 在启动的图像中现实信息

   -R 或 -rock    使用 Rock RidgeExtensions 

   -J 或 -joliet    使用 Joliet 格式的目录与文件名称

   -v 或 -verbose    执行时显示详细的信息

   -T 或 -translation-table    建立文件名的转换表,适用于不支持 Rock Ridge Extensions 的系统上 

 

定制自己的安装包(不仅包含启动还包括安装)

  1.把整个ISO文件拷贝到本机目录

      cp  -rv  /misc/cd/     /data/myiso         如果使用  cp -rv /misc/cd/*      将不会拷贝光盘中的隐藏文件

  2.需要重新生成repodata

     1.  cd    /run/media/yanxianghui/CentOS 7 x86_64/repodata

     

     2.  cp   38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml   /root

     3.  rm  -fr  *

     4.  cp /root/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml  .

     5.  cd ..     跳转到 repodata的上级目录

     6. createrepo   -g  repodata/38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml

     7.  find -name TRANS.TABL -exec rm {}  \;

     8. 修改ks应答文件  把网络url修改成cdrom

       

       

 3.修改isolinux/isolinux.cfg菜单项

 4.使用mkisofs命令把当前文件夹刻录成iso光盘

 

配置anaconda(系统安装程序)

    anaconda就是安装操作系统向导的程序名称,提供可视化窗口给用户点击下一步下一步的程序

    gui : 图形窗口

    tui : 基于图形库curses的文本窗口

    Anaconda安装系统分成三个阶段:

1、安装前配置阶段

    • 安装过程使用的语言
    • 键盘类型
    • 安装目标存储设备
    • 设定主机名
    • 配置网络接口
    • 时区
    • 管理员密码
    • 设定分区方式及MBR的安装位置
    • 创建一个普通用户
    • 选定要安装的程序包

2、安装阶段

    • 在目标磁盘创建分区,执行格式化操作等
    • 将选定的程序包安装至目标位置
    • 安装bootloader和initramfs

3、图形模式首次启动

    • iptables
    • selinux
    • core dump

 

DHCP服务

网络配置 

   静态指定 

   动态获取: bootp:boot protocol MAC与IP 一一  静态对应     

   dhcp:增强的bootp,动态

DHCP:(Dynamic Host Configuration Protocol)

动态主机配置协议 

       局域网协议

       UDP协议

主要用途:

      用于内部网络和网络服务供应商自动分配IP地址给用户

      用于内部网络管理员作为对所有电脑作集中管理的手段

使用场景

      自动化安装系统

      解决IPV4资源不足问题 

dhcp客户端续租 50% :

     租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST 请求.如果dhcp服务没有拒绝的理由,则回应DHCPACK信息

     当DHCP客户端 收到该应答信息后,就重新开始新的租用周期.

     87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求 

     在主机重启的时候dhcpclient客户端的ip会自动ping 网关,如果ping不通 客户端会认为当前机器已经切换到其它网络 会重新发送dhcp广播 获取新的IP地址

 Dhcp client (客户端)

     dhclient   默认是后台执行     执行dhclient命令  会通过dhcp服务器获取一个ip地址

     dhclient -d 前台执行dhclient服务    把dchcp客户端相关日志信息输出到前台

     dhcp客户端的详细获取信息: cd   /var/lib/dhclient   &&    vi dhclient.leases

 

DHCP服务端配置

   dhcp是基于广播机制和UDP协议来发送数据包      所以dhcp分配地址默认不能跨网段

   dhcp服务端监听的端口是67     客户端监听的端口是68       在企业内部启用dhcp要注意防火墙需要开放这两个端口

    

 

 

DHCP实现

      Linux DHCP协议的实现程序:dhcp,  dnsmasq(dhcp,dns) 

      在每个网段中各种服务器的IP地址一般是设置成静态的IP地址,所以在DHCP配置分配IP地址范围range的时候需要把这些静态IP排除掉

      DHCP服务除了分配IP地址,还可以设置其它网络参数

         1.DNS服务器    option    domain-name-servers ip1,ip2   

         2.网关地址        option    routes

         3.客户端可以获取域后缀      option domain-name  "aaa.org"

      

[root@centos7 ~]# yum install dhcp
Downloading packages:
updates/7/x86_64/prestodelta                                                         | 231 kB  00:00:01     
Delta RPMs reduced 590 k of updates to 300 k (49% saved)
(1/4): dhcp-common-4.2.5-58.el7.centos.3_4.2.5-68.el7.centos.1.x86_64.drpm           |  80 kB  00:00:01     
(2/4): dhclient-4.2.5-58.el7.centos.3_4.2.5-68.el7.centos.1.x86_64.drpm              | 129 kB  00:00:01     
(3/4): dhcp-libs-4.2.5-58.el7.centos.3_4.2.5-68.el7.centos.1.x86_64.drpm             |  92 kB  00:00:01     
(4/4): dhcp-4.2.5-68.el7.centos.1.x86_64.rpm                                         | 513 kB  00:00:02     
------------------------------------------------------------------------------------------------------------
Total                                                                       199 kB/s | 813 kB  00:00:04     

Installed:
  dhcp.x86_64 12:4.2.5-68.el7.centos.1                                                                      

Dependency Updated:
  dhclient.x86_64 12:4.2.5-68.el7.centos.1            dhcp-common.x86_64 12:4.2.5-68.el7.centos.1          
  dhcp-libs.x86_64 12:4.2.5-68.el7.centos.1          

Complete!
[root@centos7 ~]# rpm -ql dhcp
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/12-dhcpd
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/dhcp/scripts
/etc/dhcp/scripts/README.scripts
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.2.5
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
/usr/share/doc/dhcp-4.2.5/ldap
/usr/share/doc/dhcp-4.2.5/ldap/README.ldap
/usr/share/doc/dhcp-4.2.5/ldap/dhcp.schema
/usr/share/doc/dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8/dhcpd.8.gz
/usr/share/man/man8/dhcrelay.8.gz
/usr/share/systemtap/tapset/dhcpd.stp
/var/lib/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@centos7 ~]# systemctl start dhcpd.service
Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.
[root@centos7 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@centos7 ~]# 必须包含服务器所在的某个网段进行配置
subnet 10.152.187.0 netmask 255.255.255.0 {
}

# This is a very basic subnet declaration.

subnet 192.168.231.0 netmask 255.255.255.224 {
  range 192.168.231.10 192.168.231.20;
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
[root@centos7 ~]#systemctl start dhcpd.service
#客户端测试获取地址
[root@yxh6 ~]# dhclient -d

Listening on LPF/pan0/9a:14:57:92:82:53
Sending on   LPF/pan0/9a:14:57:92:82:53
Listening on LPF/eth0/00:0c:29:7e:95:ec
Sending on   LPF/eth0/00:0c:29:7e:95:ec
Sending on   Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x6db9b734)
DHCPDISCOVER on pan0 to 255.255.255.255 port 67 interval 5 (xid=0x43a182b8)
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x6db9b734)
DHCPDISCOVER on pan0 to 255.255.255.255 port 67 interval 7 (xid=0x43a182b8)
DHCPACK from 192.168.231.7 (xid=0x6db9b734)
bound to 192.168.231.12 -- renewal in 255 seconds.
DHCP服务端

 

      DHCP服务配置给单个MAC地址分配固定的IP地址 

        host 后面的名称(testclient )可以随意定义

host testclient {
   hadware   ethernet    mac;
   fix-address                ip;
   option routes            网关ip;
}

     在DHCP的配置文件中配置其它网段的subnet默认是不生效的,需要配合dhcp中继代理才能生效.

 

DHCP跨网段实现

     1.购买符合RFC 1542 Compliant Routers 标准的路由器,这种路由器默认会允许DHCP广播包通过

     2.dhcp中继代理

         1.在dhcp代理服务器上指定了dhcp服务器的IP地址

         2.dhcp代理服务器收集好本网段的dhcp广播数据包后会以单播的数据发送给dhcp服务器,dhcp服务器也会以单播的方式把数据返回给dhcp中继代理

         3.dhcp中继代理一般使用路由器来做 ( 路由器一般都有中继代理功能 )

 

DHCP配置自动安装操作系统

host testclient{
    hadware ethernet mac;
    fix-address ip;
   option routes 网关ip;
   #自动安装相关配置(可选)
   next-server      tftp serverip;
   filename         "pxelinux.0" (默认名称,有可能是其它名称,必须和tftp服务器上的工作目录下的文件名称一致)
}

自动安装相关配置配合tftp server
next-server 指定tftp server的ip地址
filename 指明引导文件名称(获取哪个文件来引导系统)
pxelinux.0 文件来自于 syslinux软件包

    

posted @ 2018-05-26 15:26  不懂123  阅读(1747)  评论(0编辑  收藏  举报