文章转自: http://forum.cnfug.org/journal/systems/2006/000123.html
0、概述
当需要在多台计算机上安装FreeBSD操作系统时,我们可以使用PXE全自动安装方式,来减少重复工作量,这里以实例介绍PXE安装FreeBSD的实现过程。
整体思路是:
PXE客户端启动 -> 从PXE服务端获取IP地址和pxeboot ->
pxeboot开始运行,以TFTP方式获取/boot/loader.rc ->
按照loader.rc设置启动系统 -> 运行sysinstall,通过FTP获取安装文件,开始自动安装
接下来,让我们按照这个思路来一步步实现。
1、安装DHCP服务
PXE启动主要是通过DHCP服务实现,所以我们首先需要安装DHCP服务,这里使用isc-dhcp,并使用ports方式安装。
出现ports选项,使用默认值。
安装完成后,就是配置DHCP服务了,DHCP的默认配置文件是/usr/local/etc/dhcpd.conf,本例中的配置如下:
server-name "PXE Server";
server-identifier 192.168.7.1;
subnet 192.168.7.0 netmask 255.255.255.0 {
range 192.168.7.10 192.168.7.250;
option routers 192.168.7.1;
option broadcast-address 192.168.7.255;
filename "boot/pxeboot";
next-server 192.168.7.1;
}
2、准备PXE环境
我们将PXE环境所需要的文件全部放于/home/pxe目录下,首先要准备的就是pxeboot文件,pxeboot实际就是loader,只是它用于PXE环境。
标准的pxeboot默认使用NFS获取启动文件、内核等文件,但我们这里设计的是TFTP方式,所以我们需要重新编译pxeboot,让它使用TFTP来获取启动文件,按照下面的步骤操作:
# vi i386/libi386/pxe.c
将第339行
注释掉或者删除,这样可以避免pxeboot尝试使用NFS而带来的超时等待。
# make clean && make
接下来把pxeboot放到/home/pxe中
# cp /usr/src/sys/boot/i386/pxeldr/pxeboot /home/pxe/boot/
现在/home/pxe/boot目录中有了pxeboot文件,现在我们需要准备/home/pxe/boot目录中的其它文件,这里我们使用安装软盘中的文件。
修改 /home/pxe/boot/loader.conf 为
3、设置自动安装
sysinstall在执行安装操作前会检查/install.cfg文件是否存在,如果存在则按照文件中的设置,执行全自动安装。我们所使用的是 标准安装程序,整个安装所需要的基本环境存放在 /home/pxe/mfsroot.gz 中,由于它没有设置自动安装,所以我们需要修改 mfsroot.tgz 为其增加 install.cfg 文件。
hostname=pxe.cnfug.org
domainname=cnfug.org
# 设置安装方式为FTP和FTP服务器的地址
_ftpPath=ftp://192.168.7.1/
netDev=lnc0
mediaSetFTP
# 设置安装类型为最小安装,如果你需要全部内容,请改为 distSetDeveloper
distSetMinimum
# 磁盘分区配置
# 这里设置FreeBSD使用整个硬盘,并且安装bootmgr
disk=ad0
partition=all
bootManager=booteasy
diskPartitionEditor
# 设置disklabel
# 注意:所有的大小以512byte为单位
# 为 / 分配 512MB 的空间
ad0s1-1=ufs 1048576 /
# 512MB 交换区
ad0s1-2=swap 1048576 none
# 剩余的磁盘空间全部分配给/usr,并且开启Soft-Updates
ad0s1-3=ufs 0 /usr 1
diskLabelEditor
# 开始执行安装
installCommit
配置中已经简单的说明每个配置的作用,更详细的说明请参照sysinstall(8)
现在重新压制mfsroot.gz
4、开启相关服务
(1) DHCP服务
首先要设置网卡IP为我们在dhcpd.conf中设置的IP 192.168.7.1,本文是在VMware中验证的,所以这里以lnc0为例
# /usr/local/etc/rc.d/isc-dhcpd.sh start
(2) TFTP服务
我们设置/home/pxe为TFTP服务的根目录(即PXE启动环境的根目录),编辑/etc/inetd.conf,找到tftp那行,修改为:
现在可以启动tftp服务了
(3) FTP服务
我们设置了安装程序使用FTP的方式获取安装文件,所以我们需要在这台服务器上开启FTP服务。
首先增加系统用户ftp及ftp组,并设置它的home目录为/mnt/cd,因为我们所有的安装程序都在光盘上,加上先前我们已经将光盘加载到 /mnt/cd目录中,所以这里设置ftp帐号的home目录为/mnt/cd,就是设置了Anonymous FTP服务的根目录为/mnt/cd,当PXE客户端安装程序启动时,安装程序会从这里取得安装需要的文件
# pw useradd ftp -u 21 -g ftp -s /usr/sbin/nologin -d /mnt/cd -w no
最后一步,启动FTP服务
现在一切准备已经完成,找到台支持PXE的机器,以PXE方式引导,你就可以看到FreeBSD在它上面自动完成整个安装过程了。