您的位置:首页 > 运维架构 > Linux

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

2014-08-05 16:29 896 查看
配置前提
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 ,虽然内核是同一个,但是后续的配置却各不相同PXEPXE是一种引导方式,可以通过网络来系统系统安装过程,但要想通过网络安装意味着在操作系统安装之前都必须具备一个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 -hFilesystem 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 67udp 0 0 0.0.0.0:67 0.0.0.0:* 1880/dhcpd 安装tftptftpd是依赖于超级守护进程工作的,所以安装tfpt后需要开启xinetd服务才可以正常工作[root@test ~]# yum install syslinux tftptftp-server -y [root@test ~]# chkconfig tftp on[root@test ~]# /etc/init.d/xinetd restartStopping xinetd: [FAILED]Starting xinetd: [ OK ][root@test ~]# netstat -lntup | grep 69udp 0 0 0.0.0.0:69 0.0.0.0:* 1994/xinetd
准备pxelinux.0Pxelinux.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.61tftp> get pxelinux.0tftp> 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载入文件

选择安装方法

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

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

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

保存命名

于是还需要对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万事俱备,重启任意一台空虚拟机 可以看到如下界面 证明已生效

END,感谢各位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 服务器 ip地址