分类: BSD
2008-04-07 21:23:43
当需要在多台计算机上安装FreeBSD操作系统时,我们可以使用PXE全自动安装方式,来减少重复工作量,这里以实例介绍PXE安装FreeBSD的实现过程。
整体思路是:
PXE客户端启动 -> 从PXE服务端获取IP地址和pxeboot ->
pxeboot开始运行,以TFTP方式获取/boot/loader.rc ->
按照loader.rc设置启动系统 -> 运行sysinstall,通过FTP获取安装文件,开始自动安装
接下来,让我们按照这个思路来一步步实现。
PXE启动主要是通过DHCP服务实现,所以我们首先需要安装DHCP服务,这里使用isc-dhcp,并使用ports方式安装。
# cd /usr/ports/net/isc-dhcp3-server # make install clean |
出现ports选项,使用默认值。
安装完成后,就是配置DHCP服务了,DHCP的默认配置文件是/usr/local/etc/dhcpd.conf,本例中的配置如下:
option domain-name "cnfug.org"; option domain-name-servers ns1.cnfug.org, ns2.cnfug.org; default-lease-time 600; max-lease-time 7200; authoritative; ddns-update-style none; log-facility local7;
server-name "PXE Server"; subnet 192.168.7.0 netmask 255.255.255.0 { |
我们将PXE环境所需要的文件全部放于/home/pxe目录下,首先要准备的就是pxeboot文件,pxeboot实际就是loader,只是它用于PXE环境。
标准的pxeboot默认使用NFS获取启动文件、内核等文件,但我们这里设计的是TFTP方式,所以我们需要重新编译pxeboot,让它使用TFTP来获取启动文件,按照下面的步骤操作:
# cd /usr/src/sys/boot # vi i386/libi386/pxe.c |
pxe_setnfshandle(rootpath); |
# setenv LOADER_TFTP_SUPPORT # make clean && make |
# mkdir -p /home/pxe/boot # cp /usr/src/sys/boot/i386/pxeldr/pxeboot /home/pxe/boot/ |
# mkdir -p /mnt/cd # mkdir -p /mnt/fd # mount -t cd9660 /dev/acd0 /mnt/cd # cp /mnt/cd/floppies/boot.flp /tmp # mdconfig -a -t vnode -u0 -f /tmp/boot.flp # mount /dev/md0 /mnt/fd # cp -RpP /mnt/fd/boot/* /home/pxe/boot/ # cp /boot/kernel/kernel /home/pxe/ # cp /mnt/fd/mfsroot.gz /home/pxe/ # umount /dev/md0 # mdconfig -d -u0 |
bootfile="/kernel" acpi_load="YES" acpi_name="/acpi.ko" mfsroot_load="YES" mfsroot_type="mfs_root" mfsroot_name="/mfsrot" |
sysinstall在执行安装操作前会检查/install.cfg文件是否存在,如果存在则按照文件中的设置,执行全自动安装。我们所使用的是标准安装程序,整个安装所需要的基本环境存放在 /home/pxe/mfsroot.gz 中,由于它没有设置自动安装,所以我们需要修改 mfsroot.tgz 为其增加 install.cfg 文件。
# cd /home/pxe # gzip -d mfsroot.gz # mdconfig -a -t vnode -u0 -f mfsroot # mount /dev/md0 /mnt/fd # vi /mnt/fd/install.cfg |
# 使用DHCP配置网络 tryDHCP=YES
hostname=pxe.cnfug.org # 设置安装方式为FTP和FTP服务器的地址 # 设置安装类型为最小安装,如果你需要全部内容,请改为 distSetDeveloper # 磁盘分区配置 # 设置disklabel # 为 / 分配 512MB 的空间 # 开始执行安装 |
现在重新压制mfsroot.gz
# umount /mnt/fd # mdconfig -d -u0 # gzip mfsroot |
(1) DHCP服务
首先要设置网卡IP为我们在dhcpd.conf中设置的IP 192.168.7.1,本文是在VMware中验证的,所以这里以lnc0为例
# ifconfig lnc0 192.168.7.1 # /usr/local/etc/rc.d/isc-dhcpd.sh start |
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /home/pxe |
# /usr/sbin/inetd |
# pw groupadd ftp -g 21 # pw useradd ftp -u 21 -g ftp -s /usr/sbin/nologin -d /mnt/cd -w no |
# /usr/libexec/ftpd -DA4 |