配置前提

kickstart

在启动引导内核的时候只有传递给其vmlinuz即可,前提是必须让其内核访问的到我们的ks的位置,比如http 、 ftp、nfs 等,也可以放在本地的路径下可以通过cdrom进行对外告知

 

如果要通过网络服务器访问,有个前提就是必须将其配置好网络地址才可以;但还需要考虑一个问题,当anaconda启动的时候 它还会读取kickstart配置文件的

但kickstart中也可以配置网络参数的,如果kickstart分配的地址与vmlinuz所获取的不一样的话,则以后续的为准

 

所以我们可能需要两种不同的方式去获得ip的(ickstart中也完全可以指定ip地址)

 

如果我们使用了boot引导盘或安装引导盘,其boot提示符可能会输入 linux ks=xxxxx  等

因为boot本身所显示的提示符相当于grub,能够引导介质上的bootloader,当出现boot提示符的时候,需告知它读取哪个内核

这里boot提示符下的linux是标签的意思,这个标签是定义了去加载了哪个内核或哪个initrd ,虽然内核是同一个,但是后续的配置却各不相同

PXE

PXE是一种引导方式,可以通过网络来系统系统安装过程,但要想通过网络安装意味着在操作系统安装之前都必须具备一个ip地址,很显然如果系统启动之前是没有内核的

所以这一定是支持pxe功能的网卡,网卡可以通过dhcp协议到网络上申请获得ip地址

很显然如果使用pxe首先必须具备dhcp功能

 

获得完ip之后要启动引导界面必须加载boot.cat ioslinux.bin等文件

问题是pxe必须知道去哪里下载才可以

 

既然是通过pxe所引导,毫无疑问必须是在同一网络中才可以

所以这些网络通常是比较可靠的,因此需要通过一文件服务器来获得这样的文件

其是通过tftp进行获取文件的,它是一很小并且很简单的ftp工具基于udp协议进行工作,监听在udp的69端口并提供服务

通过这个服务获得pxe的配置文件 pxelinux.0

这个文件被加载到主机之后一旦启动了,通过这个文件的配置并可以去获得其他的配置文件

 

但是主机如何知道tftp服务器是谁

需要在dhcp服务器上告知tftp服务器地址,以及要加载的文件名

当这个文件记载完成,通过自己的配置,其类似于isolinux.bin 通过其调用isolinux.bin并且显示菜单

 

不管是那种方式启动引导过程,如果想让安装过程自动化则需要依赖于kickstar文件

还必须要保障获取的到kickstart文件和安装源

而安装源通常也是在网络上获得 ftp,nfs,http

 

因此要配置一个服务器端,需要以下步骤

·dhcp服务

·安装tftp服务

·配置kickstart文件

·配置安装源



安装过程:

              POST--> Bootloader (kernel+ramdisk) --> anaconda

 

              BootLoader界面:

                     GUI界面

                     text界面

                            boot:

 

              anaconda接口:

                     text接口

                     GUI接口

 

              安装过程分为两个阶段:

 

                     安装前的配置阶段:  (既可交互式进行,亦可直接读取配置文件自动完成)

                            键盘类型

                            安装过程中的语言

                            支持使用语言

                            时区

                            选择要使用磁盘设备

                            分区、格式化配置

                            选择要安装的包

                            管理员密码

                     安装阶段:

                            在目标磁盘创建分区、执行分区格式化

                            将选定的程序包安装至目标磁盘

                            安装bootloader

                     第一次启动配置:

                            iptables

                            selinux

                            corekdump

 

              kickstart文件:文本文件

 

              建议单独分区:

                     /

                     /home

                     /usr

                     /var

                     swap

              不能单独分区:

                     /proc,/sys, /etc, /bin, /sbin, /lib, /media, /mnt, /dev

 

              /boot:

                     单独分区与否,取决于rootfs所在设备的类型当root处于lvm时、

       Boot要单独分区

 

       boot:

              启动安装过程的引导参数

 

                     CentOS6:

                            text:文本安装界面

                            repo=服务器的路径

                                   http://server/path/to/repo/

                                   ftp://username:password@server/path/to/repo

                            网络配置:

                                   ip=ip

                                   netmask=mask

                                   gateway=网关

                                   dns=

                                   ifname=:指定此地址配置到地的网络接口

                            指定使用的kickstart文件及其位置

                                   ks=cdrom:/path/to/ksfile

                                   ks=http://server/path/to/ksfile

                                   ks=ftp://username:password@server/path/to/ksfile

 

                                   例如:http://172.16.0.1/centos6.x86_64.cfg

                            如果额外加载驱动程序:

                                   dd

 

                     CentOS7:

                            指定安装源:

                                   inst.repo=

 

                            指定额外需要加载驱动:

                                   inst.dd=

 

                            指定kickstart文件及其位置:

                                   inst.ks=

 

                            指定使用TUI界面:

                                   inst.text

                                   instNaNdline:必须与kickstart文件一同使用

 

                            网络功能选项:

                                   ip=method

                                          可用method: dhcp, dhcp6, auto6

                                   ip=interface:method

                                   ip=IP::GATEWAY:NETMASK:HOSTNAME:INTERFACE:none

                                   nameserver=kickstart文件:

              命令段

              软件包段

                     %packages安装包

                            pack_name安装包的名字

                            @group安装包组

                            -pack_name:不安装的包,但如果被依赖,也会被安装

              脚本段

                     %pre

                            安装前脚本

                     %post

                            安装后脚本

          %end  结束

              图形配置接口:

      先配置好自己的yum 下载kickstat

                     #yum install system-config-kickstart

 

              配置命令:开始配置

                     #system-config-kickstart

 

              配置完成后的语法检查命令:

                     #ksvalidator /path/to/ks_file 要检查的的文件

文件路径、path/to/file

 

 

       基于isolinux目录创建引导盘:

       #mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V"CentOS 6.5 x86_64 boot" -b isolinux/isolinux.bin -cisolinux/boot.cat -o /root/boot.iso myiso/

 -    V  卷标

-c 

-b 要把那个文件作为iso映像

-o 保存位置

回顾:Linux, C6,C7

       isolinux,anaconda, kickstart

       system-config-kickstart,ksvalidator

 

       批量部署:

              物理机:PXE

                     负载均衡

              虚拟机:映像文件模板

                     分布式文件系统

 

PXE + kickstart文件

 

       DHCPWEBtftp

 

 

       DHCP

 

              DHCPDynamic Host Configuration Protocol

                     ip/netmask

                     gateway

                     nameserver

 

              bootp

 

              dhcp是基于C/S架构:Server, Client

                     dhclient/dhcpd

 

                     Client:DHCP DISCOVER  请求dhcp一个ip

                     Server:DHCP OFFER  回复一个给clinent一个ip

                     Client:DHCP REQUEST 请求使用ip

                     Server:DHCP ACK 允许使用ip

 

                     Dhcp是以广播的形式来获取iP地址的:

                     有租约的形式:使用的期限

                     租约:

               当租约到自己使用ip的时间的一半时 会重新向server发送次ip的重新使用

 

 

                            例如:DHCP REQUEST

                                DHCP ACK

          当使用的ip时间是两个小时时:发送请求的时间

                            1hour--> 2hours

 

                            1hour--> 1.5hours --> 1.75hours --> 1.875hours

 

                     DHCPDISCOVER

 

              DHCPRelay: 中继

 

       安装:

 

       #yum install dhcp

 

       Centos6

              服务脚本:/etc/rc.d/init.d/

 

              监听端口

dhcpd, 67/udp

dhclient, 68/udp

 

          /var/lib/dhcpd/dhcpd.leases

 

              servicedhcpd configtest

                     配置文件语法测试

 

       保留地址:专用于某特定客户端的地址,不应该使用地址池中的地址;

              优先于地址池中的地址;

 

 

CentOS 7: 服务控制

 

              #systemctl is-enabled DAEMON.service

              #systemctl enable DAEMON.service

              #systemctl disable DAEMON.service

 

              #systemctl {start|stop|restart|status} DAEMON.service

 

 

总结:Vim /etc/dhcp/dhcp.conf

       dhcpd.conf

              optiondomain-name 主机名 

              optiondomain-name-servers ip 和网关

              option routers  网关

 

              subnetNETWORK netmask MASK {

                     rangeSTART_IP END_IP;

 

                     hostHOSTID {

                            hardwareethernet 00:11:22:33:44:55;

                            fixed-addressIP;

                     }

              }

 

 

首先我们将根据此图说明PXE自动安装的过程:


    主机1开机以网卡方式启动,发现自己没有IP地址, 那么网卡rom中的dhcp客户端会发起discovery的广播请求,dhcp服务器发现请求后会给网卡分配一个ip地址告诉客户端TFTP服务器的地址及pxelinux.0所在的路径(相对路径)。于是客户端启动网络卡rom中的tftp客户端到TFTP服务器下载pxelinux.0及其配置文件pxelinux.cfg/default 和相关文件【此配置文件会告诉pxelinux.0如何及以何种方式引导界面】然后在内存中展开运行。显示如下图引导界面:

 wKioL1PaKlmAKFgtAALQ0EpTPnI396.jpg

然后开始加载kernel(vmlinuz)ramdisk(initrd.img),其中initrd.imgdefault中添加附加选项例如:ks配置文件的位置是否使用dhcp获取地址等。在内存展开后会运行会运行/init init会调用/bin/loader根据附加选项中提供的ks地址去下载ks配置文件 根据ks配置文件提供的信息去下载服务器主机提供的安装树上p_w_picpath/install.p_w_picpath 这个文件中包含anaconda应用程序 然后启动anaconda anaconda根据ks配置文件至此安装过程启动

上述的dhcp的安装配置

wKiom1PaKevApFYvAAGgH2pqVvI417.jpg

然后启用dhcp 

 service dhcpd start

wKioL1PaK3mRgxwSAAOeuSZviw0563.jpg

在启动一下dhcp

  server dhcpd restart

然后安装的包

yum install -y dhpd

   

二:tftp 配置:


tftp 小型文件传输协议:

    tftp使用UDP协议,工作在69号端口,也是基于C/S架构

    首先要安装tftp 和tftp-server服务器端包

    chkconfig查看发现瞬时守护进程都是关闭的

wKiom1PdscWT0hu1AADUbo3Lfkw057.jpg

打开的方法有二:

    1:chkconfig  SERVICE_NAME   on

         chkconfig  tftp on

    2:vim  /etc/xinetd.d/tftp

    该disnable=no

wKioL1PdsxvDnF-IAAC3mzM3eL8957.jpg

然后重启xinetd服务service xinetd restart

rpm -ql tftp-server的

三:开始配置pxe:


    系统安装需要的文件

    vesamenu.c32-->用来启动一个图形界面

    splash.jpg-->图形界面背景图片

    vmlinux-->系统内核

    initrd.img-->

    isolinux.cfg-->图形界面的菜单选项

wKioL1Pds2ni-_8gAAElr-PEWHM075.jpg

 service dhcpd force-reload加载dhcp服务器

    也可service  dhcpd restart重启

    此时我们就要开始往/var/lib/tftpboot/文件夹下存放需要从tftp服务器下载的文件

    首先是pxelinux.0文件,它存在于syslinux安装包,先安装syslinux

    rpm -ql syslinux|less查看pxelinux.0位置在:/usr/share/syslinux/pxelinux.0

    复制pxelinux.0到/var/lib/tftpboot/目录下

    cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/ 

    在/var/lib/tftpboot/目录下创建pxelinux.cfg文件目录

    mkdir  /var/lib/tftpboot/pxelinux.cfg

    复制vmlinuz和initrd.img内核文件到 /var/lib/tftpboot/下

    vmlinuz 和initrd.img在光盘镜像下的/p_w_picpaths/pxeboot/下

    为了让安装程序显示为图形界面需要复制光盘镜像中

    /isolinux/{vesamenu.c32,splash.jpg}/var/lib/ttftpboot/

    还要复制光盘镜像中/isolinux/isolinux.cfg/var/lib/tftpboot/default目录下

    为default,给用户图形界面的安装菜单

    此时我们新创建一个虚拟机,把网卡设为第一顺序启动,结果

wKiom1PdsqfhxZxiAAK1piS6g6Y806.jpg