不说那些没用的。

pxe安装其实不是一种安装方式,只是一种引导方式而已。他是网络安装的一个变种。


他通过三个软件来实现安装。

dhcp为自动获得ip地址的
tftp为引导文件的下载
httpd提供系统文件下载的



下面是过程:


安装三个软件:

[root@localhost ~]# yum install httpd tftp-server tftp dhcp -y

设置yum源就不介绍了吧。


设置dhcp:

[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  dhcpd.conf

vim的使用就不介绍了吧。

拷贝一个模板,
default-lease-time 3600;         # 默认租约
max-lease-time 7200;            #最长租约
log-facility local5;            #日志。 要在/etc/rsyslog.conf中添加local5日志设施。也可以默认不用修改。
subnet 192.168.40.0 netmask 255.255.255.0 {       #添加作用域。
        range 192.168.40.10 192.168.40.20;        #地址池
        filename "pxelinux.0";                    #客户端要去找的文件。
        next-server 192.168.40.100;               #客户端去×××filename的文件。
}



配置tftp:

复制文件,可能位置不一样,但差不多
pxelinux.0文件一定要对应好版本

pxelinux.0文件一般在/usr/lib/syslinux/目录下。

如果没有,需要安装一个syslinux软件包,这样就有了。


cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/                    #pxelinux.0就是syslinux生成的。
cp /mnt/cdrom/isolinux/{splash.jpg,vesamenu.c32} /var/lib/tftpboot/        #centos6光盘中的文件。用来生成引导窗口,并通过配置文件加载对应内核和传递参数。相当于是grub的第二阶段所需的文件。
cp /mnt/cdrom/p_w_picpaths/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/     #用于pxe引导的内核与initrd文件, 不过我这里用md5sum发现光盘里正常的内核与initrd文件与pxe目录里面的一样,centos7也是。
mkdir /var/lib/tftpboot/pxelinux.cfg/                                                    #这个里面就是要放vesamenu.c32的配置文件。
cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

tftpboot目录最终样子:
├── initrd.img        #虚拟文件系统
├── pxelinux.0        #对应好版本
├── pxelinux.cfg
│    └── default     #提供安装菜单
├── splash.jpg
├── vesamenu.c32
└── vmlinuz            #应该是内核吧



修改default文件,就是为了指定下载ks位置
这个文件是提供安装菜单,一般修改一个地方
label linux                           
  menu label ^Install CentOS6            #显示的菜单项
  menu default                                      #如果有多个label,默认选择这个
  kernel vmlinuz                                    #内核文件
  append initrd=initrd.img ks=http://192.168.40.100/ks.cfg      #传递给内核的参数

蓝色部分为指明使用ks的配置来安装系统。




hpptd设置:

httpd服务不用修改默认值
下载位置为/var/www/html/目录下的文件
测试就是在目录下建立一个index.html,远程访问以下这个ip地址即可

把ks.cfg和系统安装文件的packages放在html目录下即可

ks.cfg是自动化安装anaconda执行的脚本

packages是yum源。系统初始化安装后从这里下载所需要的软件包


ks.cfg文件三个地方注意一下,其他设置看ks.cfg,可以安装一个相同的机器,把/root/anaconda-ks.cfg拷贝过来修改使用

安装方式:
url --url="http://172.16.253.54/centos68/"
yum源码:
repo --name="CentOS"  --baseurl=http://172.16.253.54/centos68/  --cost=100
这两个地方都要指好网络位置,要不然不知道从哪里下载安装文件。。

再就是分区哪里,如果不指定,那么他会分一个sda1,剩下的就是逻辑卷。

这里一般的ks.cfg是注释掉的,如果环境相同,可以把这里启用,用grow选项把剩余空间都利用。

我这里是一个简单的分区方式,根据自己的环境设置分区即可

part /boot --fstype=ext4 --size=200
part swap --size=2000
part / --fstype=ext4 --grow --size=200
--grow:剩下的全部磁盘空间


剩下的就是软件包部分了,这个看情况安装。

%packages    #开始
@Base        #以@开头指明安装的包
%end         #结束




启动服务:

启动三个服务:dhcp、tftp、httpd。最后查看一下几个服务的状态
启动为:systemctl start dhcpd.service
查看为:systemctl status dhcpd.service
其他类似,只要状态为Active: active (running)即可


不同的系统可能启动命令不同,具体看自己的版本,上面介绍的命令是CentOS 7的命令



这样服务器的设置就完成了。测试可以找一个机器链接安装一下试试。

值得注意的是一个内网中dhcp服务器只能有一个,否则可能无法获得正确ip。

安装的机器需要设置为网卡安装。