实现Pxe自动化机房安装

当客户端向服务器发送请求,为了避免交互式,我们做了的ks.cfg文件会告诉它怎么装,就可以了,这时服务器端tftp服务器向客户端返回一个ip地址,并且会告诉客户机tftp服务器的ip地址,客户端现在已经有ip了,可以访问tftp服务器了,就会得到引导文件、内核、驱动通过ks.cfg 文件得到这些东西,就可以实现网络的安装了。

总结:要实现这个功能得需要哪些东西类?

第一:server服务器、安装文件、NFSFTPHTTP服务;还要有tftp-server (具备引导文件、内核、驱动)

下面开始做这个实验:

先挂载光驱,安装vfstpd-rpm包、dhcp服务。

查看一下tftp服务的安装是否?安装的目录:

Pxe实现linux自动化安装---无人值守_第1张图片

对该文件做一个编辑。

[root@localhost ~]# vim /etc/xinetd.d/tftp

Pxe实现linux自动化安装---无人值守_第2张图片

改过之后我们需要重启一下超级守护进程。

[root@localhost ~]# service xinetd restart

查看一下日志是不是有错误.

[root@localhost ~]# tail -f /var/log/messages

然后到/tftpboot/目录下,拷贝这个文件到该文件命令如下:

[root@localhost tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/initrd.img  ./

[root@localhost tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/vmlinuz  ./

光有这两个,一个内核。一个驱动文件是不足够的,还要有引导文件。

[root@localhost tftpboot]# cp /usr/lib/syslinux/pxelinux.0 ./

引导文件需要一些配置:

创建一个新文件,放配置文件:

[root@localhost tftpboot]# mkdir pxelinux.cfg

拷贝配置文件:

[root@localhost tftpboot]# vim /mnt/cdrom/isolinux/isolinux.cfg

[root@localhost tftpboot]# cp /mnt/cdrom/isolinux/isolinux.cfg  pxelinux.cfg/default

现在所需要的文件都具备了:

[root@localhost tftpboot]# ll

total 8572

-r--r--r-- 1 root root 6855881 Aug  9 20:21 initrd.img

drwxr-xr-x 4 root root    4096 Aug  7 05:12 linux-install

-rw-r--r-- 1 root root   13148 Aug  9 20:26 pxelinux.0

drwxr-xr-x 2 root root    4096 Aug  9 20:32 pxelinux.cfg

-r--r--r-- 1 root root 1855956 Aug  9 20:23 vmlinuz

修改那个拷贝过来的default文件

首先我们得清楚ks.cfg没有光驱了放在哪?很明显我们知道应该放在ftp服务器上。

Pxe实现linux自动化安装---无人值守_第3张图片

服务器怎样告诉客户机自己ipdhcp向客户机发送dhcp广播的方法

我们再来修改dhcpd.conf文件。

Pxe实现linux自动化安装---无人值守_第4张图片

还有一个小问题,可能我们都没想到,如果安装100台机器或更多是,那么主机ip会自动获取,但是主机名怎么获得类。要想获得各台主机的主机名我们该怎么做类,有人该说编写脚本执行,这是对的,但是该怎么来执行这个脚本哪?


首先我们分析一下:这台机器启动时会获取ip

我们在这来模拟一下启动,

[root@localhost ~]# ifconfig eth0 |grep -i inet

1inet addr:192.168.226.129  Bcast:192.168.226.255  Mask:255.255.255.0

2inet6 addr: fe80::20c:29ff:fead:6205/64 Scope:Link

这时我只想看第一行内容,忽略第二行。应该做一下词尾锚定。

[root@localhost ~]# ifconfig eth0 |grep -i "inet\>"

         inet addr:192.168.226.129  Bcast:192.168.226.255  Mask:255.255.255.0

 机器一定是其与ip地址来获取主机名,现在只读取address192.168.226.129 。我们改怎么做哪?

[root@localhost ~]# ifconfig eth0 |grep -i "inet\>" |awk '{print $2}'

addr:192.168.226.129

注释:awk 命令是筛选以空格数来确定选取的内容,

再来提取最后ip地址的那个数字:

现在我们用脚本来实现:

先创建一个实现该想法的脚本

[root@localhost ~]# vim f1.sh   (脚本内容如下:)

#!/bin/bash

ADDRESS=`/sbin/ifconfig  eth0 |grep -i "inet\>" |awk '{print $2}'`

NUM=${ADDRESS##*.}

接下来怎么改变主机的名称哪?要针对哪个文件来实现类

我们来看一下这个文件:

[root@localhost ~]# vim /etc/sysconfig/network

我们不能用vi编辑器来改,这就会交互,所以我们用sed编辑器来改。

[root@localhost ~]# sed -e "/HOSTNAME/c HOSTNAME=station$NUM.a.com" /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=station129.a.com

这里的引用必须用双一号强引用,否则不会执行

[root@localhost ~]# vim  /etc/sysconfig/network-scripts/ifcfg-eth0 我们看一下这个文件。

Pxe实现linux自动化安装---无人值守_第5张图片

由于机器会自动获取ip地址,修改配置文件使用静态ip

sed 无交互编辑修改该配置文件,我们做一下演示:

[root@localhost ~]# sed -e "/BOOTPROTO/c BOOTPROTO=static\nIPADDRESS=192.168.226.$NUM\nNETMASK=255.255.255.0"  /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

DEVICE=eth0

BOOTPROTO=static

IPADDRESS=192.168.226.129

NETMASK=255.255.255.0

HWADDR=00:0C:29:AD:62:05

ONBOOT=yes

注释:这只是演示怎么改,要是想彻底改动,sed后加参数-i

这时我们写到脚本中vim f1.sh

Pxe实现linux自动化安装---无人值守_第6张图片

我们现在运行一下该脚本:

[root@localhost ~]# bash f1.sh

[root@localhost ~]# vim /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=station 129 .a.com

这时我们的脚本做完了:安装文件也拷贝完了,ftpdhcptftp服务器都安装配置完了,就是还缺少一个ks.cfg文件。我们得修改yum的配置。

Pxe实现linux自动化安装---无人值守_第7张图片

接下来我们得运行这个工具:system-config-kickstart  必须在图形界面下完成。

如果x-manager注册了也可以在x-shell 里打开,我在虚拟机里打开。

[root@localhost var]# system-config-kickstart  会出现这样的图形界面。

Pxe实现linux自动化安装---无人值守_第8张图片

包括依次是基本配置、安装方法、boot loader 选项、磁盘配值信息、网络配置、防火墙设置、显示配置、安装包选择(如果yum没安装配置是不显示存储、集群等安装包的)、域安装脚本等。

先是基本配置:如下:

Pxe实现linux自动化安装---无人值守_第9张图片

下面3个第一个打钩,第二个打钩,(默认在图形界面下安装,一般我们都用字符界面就行了)第三个交互操作,不需要勾。

安装方法选择如下:

Pxe实现linux自动化安装---无人值守_第10张图片

Boot Loader 选项设置如下:

Pxe实现linux自动化安装---无人值守_第11张图片

磁盘配置:

Pxe实现linux自动化安装---无人值守_第12张图片

网络配置:

然后是一些服务,要装哪个我们就选哪个!

Pxe实现linux自动化安装---无人值守_第13张图片


Pxe实现linux自动化安装---无人值守_第14张图片

Pxe实现linux自动化安装---无人值守_第15张图片

这里我们所写的脚本也填写到里面了。

Pxe实现linux自动化安装---无人值守_第16张图片

这时配置完毕,产生ks.cfg文件,保存文件配置到默认/root目录下。

Pxe实现linux自动化安装---无人值守_第17张图片

那么这个ks.cfg文件我们放在那里呐?

我们查看一个文件的内容:

[root@localhost tftpboot]# cd pxelinux.cfg/

[root@localhost pxelinux.cfg]# ll

total 8

-r-xr-xr-x 1 root root 396 Aug  9 20:40 default

[root@localhost pxelinux.cfg]# vim default

Pxe实现linux自动化安装---无人值守_第18张图片

我们得把这个ks.cfg 拷贝到ftp文件夹下。

[root@localhost ~]# cp ks.cfg  /var/ftp/

现在ftp目录下都有了现在,我们重启一下ftpdhcp服务:

[root@localhost ftp]# service  vsftpd restart                    

[root@localhost ftp]# service  dhcpd restart

现在是已经做完了,开始测试:

测试过程就不多介绍了:新建虚拟机网卡设置成host-only:然后开启次虚拟机:

出现dhcp自动获取ip的界面:

然后会出现安装界面:

Pxe实现linux自动化安装---无人值守_第19张图片

接下来等待可能会时间有点长。

然后看到这个安装过程:应该安装不会出现多大的问题了。

Pxe实现linux自动化安装---无人值守_第20张图片

然后正式进入安装界面:

Pxe实现linux自动化安装---无人值守_第21张图片

接下来是我们所选的那些软件包安装:

Pxe实现linux自动化安装---无人值守_第22张图片

这时我们就可以去忙别的事情去了,全部自动化安装。
我们的pxe安装完成了。

以后会继续更新光盘自动化安装。