作者信息

作者:diege

时间:2012-05-02


前言

最经准备整理运维自动化相关的技术,发现FreeBSDPXE安装忘的七七八八了,所以先整理一下,仍到博客上来。

目标

通过FreeBSD Server PXE安装FreeBSD操作系统

Server信息

操作系统版本:FreeBSD 8.2-RELEASE

Ip192.168.1.200/24

使用软件:

tftpd,已经包含在 FreeBSD 发行版的 base 中。
nfsserver
,已经包含在 FreeBSD 中。
isc-dhcp42-server
,通过 ports 安装。
FreeBSD
发行版 DISC1 ISO 镜像FreeBSD-8.2-RELEASE-i386-disc1.iso

准备工作

1、              配置tftpd

默认情况下,inetd 里面的 tftpd 是不会运行的。在 inetd.conf 中找到 tftpd 所对应的一行,去掉行首的#,保存。注意,去除注释的这行应该是使用 udp 而不是 udp6

#vim /etc/inetd.conf

tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot 

# echo 'inetd_enable="YES"' >> /etc/rc.conf

 

2、              配置nfsserver

# echo "/data/pxeiso/ -ro -alldirs" > /etc/exports

/etc/rc.conf添加

rpcbind_enable="YES"

nfs_server_enable="YES"

mountd_flags="-r"

 

3、              安装配置dhcp-server

A、  安装

#cd /usr/ports/net/isc-dhcp41-server && make BATCH=yes install clean

# echo 'dhcpd_enable="YES"' >> /etc/rc.conf

B、  配置

# cp /usr/local/etc/dhcpd.conf /usr/local/etc/dhcpd.conf_bak_20120502

# vim /usr/local/etc/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {

  range 192.168.1.150 192.168.1.199;

  option domain-name-servers ns1.internal.example.com;

  option domain-name "internal.example.com";

  option routers 192.168.1.1;

  option broadcast-address 192.168.1.255;

  server-identifier     192.168.1.200;

  next-server         192.168.1.200;

  filename            "/pxeboot";

  option        root-path       "/data/pxeiso/"";

}

正式安装

1、  准备安装源

# mount /cdrom

# mkdir /data/pxeiso

# cp -aR /cdrom/ /data/pxeiso/

2、  准备pxeboot

#mkdir /tftpboot

# cp /cdrom/boot/pxeboot  /tftpboot/

3、  修改loader.conf文件:

编辑 /data/pxeiso/boot/loader.conf,添加以下两行:

vfs.root.mountfrom="ufs:/dev/md0"

vfs.root.mountfrom.options="rw"

4、  设置全自动安装:

因为这个mfsroot.gz其实是个最小基本环境,包括所有安装中需要的程序,解压后是一个软盘,大小为2.4M启动镜像,可以解压后使用mdconfig 挂载为一个内存盘,挂载到一个目录就可以修改其中的文件,里面有.snap,bin,boot,dev,etc,mnt,sbin,stand,var等一些目录及文件

mfsroot 里放一个install.cfg 就可以实现全自动安装

1)解压基本环境文件mfsroot.gz

#cd /data/pxeiso/boot/

#gzip -d mfsroot.gz

2)挂载mfsroot

#mdconfig -atvnode -f mfsroot

#mount /dev/md0 /mnt

3)在mfsroot文件中加入自动安装配置文件install.cfg

编辑 /mnt/install.cfg,以下是install.cfg配置范例:

# ee /mnt/install.cfg

# 启用debug模式

debug=YES

nonInteractive=YES

noConfirm=YES

noWarn=NO

# 选择磁盘并创建FreeBSD分区

disk=ad0

partition=all

bootManager=standard

diskPartitionEditor

# FreeBSD分区中划分label,以下是在虚拟机测试

# / 730MB, swap 256MB, /var 2048MB,  /tmp 512MB,/usr remaining

ad0s1-1=ufs  730126 /

ad0s1-2=swap 263255 none

ad0s1-3=ufs 2103854 /var

ad0s1-4=ufs 526510 /tmp

ad0s1-5=ufs 0 /usr 1

diskLabelEditor

# 主机全局配置,Host specific configuration:

tryDHCP=YES

netDev=em1

hostname=BSD01

domainname=example.com

# 选择安装的版本

distSetKernDeveloper

# 选择安装方法

netDev=em1

tryDHCP=YES

nfs=192.168.1.200:/data/pxeiso

mediaSetNFS

# 配置完成,提交!

installCommit

4、卸载mfsroot并重新打包mfsroot

#umount /dev/md0

#mdconfig -d -u0

#gzip mfsroot

 

5、  启动各个服务

# /etc/rc.d/inetd start

# /etc/rc.d/rpcbind start

# /etc/rc.d/nfsserver start

# /usr/local/etc/rc.d/isc-dhcpd start

6、  从第二个网卡引导启动安装

7、  最终退出安装程序,重新启动系统。并修改BIOS 设置,禁止网络启动。

 

常见故障总结

1、如使VM测试,注意关闭VMdhcp服务吧,不然有可能影响PXE引导

2NFS别忘记启动RPCBIND

参考:http://wiki.freebsdchina.org/howto/p/pxeinstall