配置前提
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
[[email protected] ~]# mkdir /var/ftp/pub/centos-6 -p
[[email protected] ~]# mount -r /dev/cdrom/var/ftp/pub/centos-6/
[[email protected] ~]# 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服务
[[email protected] test ~]# yum install dhcp -y
[[email protected] test ~]# cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[[email protected] 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
[[email protected] dhcp]# /etc/init.d/dhcpd restart
[[email protected] dhcp]# netstat -lntup | grep 67
udp 0 0 0.0.0.0:67 0.0.0.0:* 1880/dhcpd
安装tftp
tftpd是依赖于超级守护进程工作的,所以安装tfpt后需要开启xinetd服务才可以正常工作
[[email protected] ~]# yum install syslinux tftptftp-server -y
[[email protected] ~]# chkconfig tftp on
[[email protected] ~]# /etc/init.d/xinetd restart
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
[[email protected] ~]# 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/ 目录下
[[email protected] ~]# file/usr/share/syslinux/pxelinux.0
/usr/share/syslinux/pxelinux.0: data
由于我们安装的时候需要对其指定tftp路径,所以要将pxelinux.0复制到tftp的server_args对应的目录中去,也就是说其访问的根目录
[[email protected] ~]# cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
测试tftp能否下载使用
[[email protected] ~]# cd /tmp/
[[email protected] tmp]# tftp 10.0.10.61
tftp> get pxelinux.0
tftp> quit
[[email protected] tmp]# ls pxe*
pxelinux.0
确保tftp可用之后接下来将引导文件selinux.bin拷贝至tftp目录,而这些文件都在光盘里
[[email protected] tmp]# cp/var/ftp/pub/centos-6/isolinux/{boot.msg,splash.jpg,vesamenu.c32}/var/lib/tftpboot/
[[email protected] tmp]# cp/var/ftp/pub/centos-6/images/pxeboot/* /var/lib/tftpboot/
[[email protected] 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目录下
[[email protected] tftpboot]# cd /var/lib/tftpboot/
[[email protected] tftpboot]# mkdir pxelinux.cfg
[[email protected] tftpboot]# cdpxelinux.cfg/
在其目录下创建默认配置文件,而默认配置文件则就是isolinux.cfg
[[email protected] pxelinux.cfg]# cp/var/ftp/pub/centos-6/isolinux/isolinux.cfg ./default
我们需要对default做一些简单的修改,改之前先授权写权限
[[email protected] tftpboot]# chmod +w default
[[email protected] 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
但是我们现在还没有这个路径,所以先来创建路径
[[email protected]]# mkdir -p/var/ftp/pub/kickstart/
启动kickstart
[[email protected] ~]# system-config-kickstart
根据我们自定义来培训ks文件
但是我们现在还没有这个路径,所以先来创建路径
[[email protected] pxelinux.cfg]#mkdir -p /var/ftp/pub/kickstart/
启动kickstart
[[email protected] pxelinux.cfg]#system-config-kickstart
载入文件
选择安装方法
选择分区
使用默认分区,刚建立的系统如果没有进行分区的话可能还要重新初始化其标签的
其他默认,如果需要自定义安装包则可以在package选项中自定义,这里则不选
定义安装后的脚本
一系列都根据自定义即可 最后保存退出
保存命名
于是还需要对centos6.cfg 这个文件做一些修改
[[email protected]]# 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目录中
[[email protected] pxelinux.cfg]# cp centos6.cfg /var/ftp/pub/kickstart/
启动ftp
[[email protected]]# /etc/init.d/vsftpd start
万事俱备,重启任意一台空虚拟机 可以看到如下界面 证明已生效
END,感谢各位
Kickstart+PXE实现无人值守自动安装