作者:diege
时间:2012-05-02
最经准备整理运维自动化相关的技术,发现FreeBSD的PXE安装忘的七七八八了,所以先整理一下,仍到博客上来。
通过FreeBSD Server PXE安装FreeBSD操作系统
操作系统版本:FreeBSD 8.2-RELEASE
Ip:192.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测试,注意关闭VM的dhcp服务吧,不然有可能影响PXE引导
2、NFS别忘记启动RPCBIND
参考:http://wiki.freebsdchina.org/howto/p/pxeinstall