Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15172053
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2008-04-07 21:01:17

Matthew < matthew # cnfug.org >

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方式安装。

# 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";
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来获取启动文件,按照下面的步骤操作:

# cd /usr/src/sys/boot
# vi i386/libi386/pxe.c

将第339行
pxe_setnfshandle(rootpath);

注释掉或者删除,这样可以避免pxeboot尝试使用NFS而带来的超时等待。
# setenv LOADER_TFTP_SUPPORT
# make clean && make

接下来把pxeboot放到/home/pxe中
# mkdir -p /home/pxe/boot
# cp /usr/src/sys/boot/i386/pxeldr/pxeboot /home/pxe/boot/

现在/home/pxe/boot目录中有了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

修改 /home/pxe/boot/loader.conf 为

bootfile="/kernel" acpi_load="YES" acpi_name="/acpi.ko" mfsroot_load="YES" mfsroot_type="mfs_root" mfsroot_name="/mfsrot"
3、设置自动安装

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
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

# umount /mnt/fd # mdconfig -d -u0 # gzip mfsroot
4、开启相关服务

(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

(2) TFTP服务
我们设置/home/pxe为TFTP服务的根目录(即PXE启动环境的根目录),编辑/etc/inetd.conf,找到tftp那行,修改为:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /home/pxe

现在可以启动tftp服务了
# /usr/sbin/inetd

(3) FTP服务
我们设置了安装程序使用FTP的方式获取安装文件,所以我们需要在这台服务器上开启FTP服务。
首先增加系统用户ftp及ftp组,并设置它的home目录为/mnt/cd,因为我们所有的安装程序都在光盘上,加上先前我们已经将光盘加载到/mnt/cd目录中,所以这里设置ftp帐号的home目录为/mnt/cd,就是设置了Anonymous FTP服务的根目录为/mnt/cd,当PXE客户端安装程序启动时,安装程序会从这里取得安装需要的文件

# pw groupadd ftp -g 21
# pw useradd ftp -u 21 -g ftp -s /usr/sbin/nologin -d /mnt/cd -w no

最后一步,启动FTP服务
# /usr/libexec/ftpd -DA4

现在一切准备已经完成,找到台支持PXE的机器,以PXE方式引导,你就可以看到FreeBSD在它上面自动完成整个安装过程了。

阅读(343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~