Kickstart+PXE实现无人值守自动安装

  1. 云栖社区>
  2. 博客>
  3. 正文

Kickstart+PXE实现无人值守自动安装

科技小能手 2017-11-13 03:17:00 浏览857
展开阅读全文

配置前提

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文件

·配置安装源

 

准备安装源

当前节点配置成ftp或http服务器并且将光盘文件都进行复制

这里我们将光驱挂载到ftp目录

安装vsftpd

[root@test ~]# mkdir /var/ftp/pub/centos-6 -p

[root@test ~]# mount -r /dev/cdrom/var/ftp/pub/centos-6/

[root@test ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3             6.3G  5.1G 891M  86% /

tmpfs                 498M     0 498M   0% /dev/shm

/dev/sda1             194M   28M 156M  16% /boot

/dev/mapper/myvg-mydata

                      3.0G   99M 2.8G   4% /mydata

/dev/sr0              4.1G  4.1G    0 100% /var/ftp/pub/centos-6

 

准备DHCP服务

[root@ test ~]# yum install dhcp -y

[root@ test ~]# cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf 

[root@test dhcp]# vim dhcpd.conf

修改以下参数

option domain-name "example.org";

option domain-name-servers 10.0.10.61;

 

default-lease-time 43200;

max-lease-time 86400;

 

subnet 10.0.10.0 netmask 255.255.255.0 {       #设置ip段以及子网掩码

  range10.0.10.70 10.0.10.80;                 #设置ip池有多少ip

 option routers 10.0.10.61;                   #设置网关为本地ip

}

   

#指定pxe的server地址以及文件名称

next-server 10.0.10.61;

filename="pxelinux.0";

启动dhcp

[root@test dhcp]# /etc/init.d/dhcpd restart

[root@test dhcp]# netstat -lntup | grep 67

udp       0      0 0.0.0.0:67                  0.0.0.0:*                               1880/dhcpd 

 

安装tftp

tftpd是依赖于超级守护进程工作的,所以安装tfpt后需要开启xinetd服务才可以正常工作

[root@test ~]# yum install syslinux tftptftp-server -y

[root@test ~]# chkconfig tftp on

[root@test ~]#  /etc/init.d/xinetd restart

Stopping xinetd:                                          [FAILED]

Starting xinetd:                                          [  OK  ]

[root@test ~]#  netstat -lntup | grep 69

udp       0      0 0.0.0.0:69                  0.0.0.0:*                               1994/xinetd  

 

准备pxelinux.0

Pxelinux.0位于/usr/share/syslinux/ 目录下

[root@test ~]# file/usr/share/syslinux/pxelinux.0

/usr/share/syslinux/pxelinux.0: data

由于我们安装的时候需要对其指定tftp路径,所以要将pxelinux.0复制到tftp的server_args对应的目录中去,也就是说其访问的根目录

[root@test ~]# cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

测试tftp能否下载使用

[root@test ~]# cd /tmp/

[root@test tmp]# tftp 10.0.10.61

tftp> get pxelinux.0

tftp> quit

[root@test tmp]# ls pxe*

pxelinux.0

确保tftp可用之后接下来将引导文件selinux.bin拷贝至tftp目录,而这些文件都在光盘里

[root@test tmp]#  cp/var/ftp/pub/centos-6/isolinux/{boot.msg,splash.jpg,vesamenu.c32}/var/lib/tftpboot/          

[root@test tmp]# cp/var/ftp/pub/centos-6/images/pxeboot/* /var/lib/tftpboot/

 [root@test tmp]#  ls /var/lib/tftpboot/

boot.msg  initrd.img pxelinux.0  splash.jpg  TRANS.TBL vesamenu.c32  vmlinuz

启动引导文件复制完成

 

配置pxe

在引导vesamenu.c32的时候需要引导pxe配置文件,pxe一般放在pxelinux.cfg目录下

[root@test tftpboot]# cd /var/lib/tftpboot/

[root@test tftpboot]#  mkdir pxelinux.cfg

[root@test tftpboot]# cdpxelinux.cfg/

在其目录下创建默认配置文件,而默认配置文件则就是isolinux.cfg

[root@test pxelinux.cfg]# cp/var/ftp/pub/centos-6/isolinux/isolinux.cfg ./default

我们需要对default做一些简单的修改,改之前先授权写权限

[root@test tftpboot]#  chmod +w default

[root@test tftpboot]# vimdefault

修改参数如下

label linux

  menu label ^Install or upgrade an existingsystem

  menu default

  kernel vmlinuz

  append initrd=initrd.img  ks=ftp://10.0.10.61/pub/kickstart/centos6.cfg

但是我们现在还没有这个路径,所以先来创建路径

[root@testpxelinux.cfg]#  mkdir -p/var/ftp/pub/kickstart/

启动kickstart

[root@test ~]# system-config-kickstart

根据我们自定义来培训ks文件

但是我们现在还没有这个路径,所以先来创建路径

[root@test pxelinux.cfg]#mkdir -p /var/ftp/pub/kickstart/

启动kickstart

[root@test pxelinux.cfg]#system-config-kickstart

载入文件 

wKiom1PgXFjhlTLLAALkv_EGlSg232.jpg

 

 

 

选择安装方法

wKioL1PgXYbBCZZzAAJY2u_tLXI253.jpg

选择分区

使用默认分区,刚建立的系统如果没有进行分区的话可能还要重新初始化其标签的

wKioL1PgXZuQrh0hAAGICZDUjv4860.jpg

其他默认,如果需要自定义安装包则可以在package选项中自定义,这里则不选

 

定义安装后的脚本

wKioL1PgXcmBjLOVAAItQjWQWvM191.jpg

 

一系列都根据自定义即可 最后保存退出

wKioL1PgXdvwDyXwAAJAXue48eU063.jpg

保存命名

wKiom1PgXNLwTNSdAACu57ze910507.jpg

 

于是还需要对centos6.cfg 这个文件做一些修改

[root@testpxelinux.cfg]# vim centos6.cfg 

将repo开头的行注释

#repo--name="CentOS" --baseurl=cdrom:sr0 --cost=100

加入分区信息,但是centos6.cfg里没有其信息,所以我们将anaconda-ks.cfg 内的部分信息复制到centos6.cfg,复制内容如下:

在clearpart参数下面开始复制

part /boot--fstype=ext4 --size=300
part swap --size=512
part / --fstype=ext4 --grow --size=200

再将其粘贴到clearpart --all--initlabel 参数下面

将配置文件拷贝到kickstart目录中

[root@test pxelinux.cfg]# cp centos6.cfg /var/ftp/pub/kickstart/

启动ftp

[root@testpxelinux.cfg]# /etc/init.d/vsftpd start

万事俱备,重启任意一台空虚拟机 可以看到如下界面 证明已生效

wKioL1PgXf2yAxNQAAM_5Ejxp6U844.jpg

 

END,感谢各位

 

 

 

 本文转自zuzhou 51CTO博客,原文链接:http://blog.51cto.com/yijiu/1535897



网友评论

登录后评论
0/500
评论
科技小能手
+ 关注