PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置)

时间:2022-11-20 12:51:32

PXE 自动安装物理机 (DHCP服务由路由提供, 不能再配置)

关于 PXE 自动安装物理机的方案, 网上有很多, 但是几乎都是通过配置 DHCP 服务器, 使得待安装的机器能够找到 tftp 提供的安装源.

我目前的环境中, DHCP 是由路由器提供的, 也就不能像网上的教程那样通过 DHCP 服务来配置 tftp 的信息了.

下面重点记录如何不改变现有的 DHCP 服务, 而是通过 proxy-dhcp 来实现的.

实验的系统是 CentOS6.6 x86_64

需要的软件

需要的软件和网上大部分是一样的, (只是不需要 dhcp 服务相关package, 多了一个 proxy-dhcp 的安装)

  • nfs 服务相关 package
  • tftp 服务相关 package
  • proxy-dhcp

nfs 和 tftp 的安装通过 apt-get 或者 rpm 都行, 这里就不详细介绍了.

主要介绍下 proxy-dhcp 的安装

svn co http://svn.coderepos.org/share/lang/c/pxe-pdhcp
cd pxe-pdhcp
make

如果 make 的时候出现数组越界的错误的话, 在出错的位置修改 (大概在 pxe-pdhcp.c 的 330行)

ifr.ifr_name[IFNAMSIZ] = '\0';
修改为:
ifr.ifr_name[IFNAMSIZ-1] = '\0';

启动 proxy dhcp 服务

make之后, 生成了 pxe-pdhcp 可执行文件.

pxe-pdhcp -l 0.0.0.0 -b 255.255.255.0 -t 192.168.1.2 -d pxelinux.0

其中 -t 选项是 tftp服务器的IP

nfs 服务和 tftp 服务的配置网上很多, 这里就不详细介绍了.

关键的几个配置文件

  1. tftp 服务默认是 disable的, 要修改.

    cat /etc/xinetd.d/tftp

    service tftp

    {

    socket_type = dgram

    protocol = udp

    wait = yes

    user = root

    server = /usr/sbin/in.tftpd

    server_args = -s /var/lib/tftpboot

    disable = no # <== 这里改成 no, 原先是 yes

    per_source = 11

    cps = 100 2

    flags = IPv4

    }

  2. tftp 中 pxe 的配置文件

没用 kickstart 方式, 引导成功后需要手动安装.

cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
TIMEOUT 100 LABEL centos6
KERNEL centos6/vmlinuz
APPEND initrd=centos6/initrd.img nfsroot=nfs:10.0.1.1:/srv/centos6 ip=dhcp console=tty0

用 kickstart 方式的话, 只要将其中的

nfsroot=nfs:10.0.1.1:/srv/centos6
改成
ks=nfs:10.0.1.1:/srv/centos6/centos6.ks 之类的就行

参考网址

http://frsyuki.hatenablog.com/entry/20080720/p2

http://d.hatena.ne.jp/dayflower/20090810/1249875581