freebsd安装linux网卡驱动,Linux下TFTP+NFS+PXE安装FreeBSD操作系统

在已有一台运行FreeBSD的计算机(我们称其为S)的情况下,使用PXE在一台计算机(我们称其为D)安装FreeBSD。

S必须拥有一块FreeBSD可以正常使用的网卡。D必须可以支持PXE引导,并且其网卡要可以在FreeBSD里面正常使用。一条用于双机直连的网线。

tftpd,已经包含在FreeBSD发行版的base中。nfsserver,已经包含在FreeBSD中。isc-dhcp3-server

3.0.5,通过ports安装。FreeBSD发行版DISC1的ISO镜像(我使用的镜像是FreeBSD 8-CURRENT今年一月的快照,8.0-CURRENT-200801-amd64-disc1.iso)。

S上使用的FreeBSD是7.0-BETA2-i386。

假设S的IP地址为192.168.0.1,子网掩码为255.255.255.0。

允许tftpd运行

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

配置nfsserver

echo "/mnt -ro -alldirs" > /etc/exports

安装isc-dhcp3-server

cd /usr/ports/net/isc-dhcp3-server && make BATCH=yes install

配置isc-dhcp3-server

编辑/usr/local/etc/dhcpd.conf

default-lease-time        7200;

max-lease-time   7200;

ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {

range 192.168.0.2 192.168.0.254;

server-identifier 192.168.0.1;

next-server               192.168.0.1;

filename         "/pxeboot";

option   root-path        "/mnt";

}

这里是整个PXE安装最重要的部分之一,能否正常进行PXE安装关键就在这里。这里面最关键的几个选项是next-server,filename和root-path。要理解这些选项的作用,首先要理解PXE工作的流程。按照FreeBSD PXE引导的过程,我们将其分成三个阶段。

第一阶段主要是D上PXE的firmware和S上dhcpd协商的过程。在这里,要商定D的IP地址,并且确定下一步PXE要加载的文件,及其位置。第二阶段是D加载上一阶段商定好的文件。对于FreeBSD来说,主要就是pxeboot(8),一个PXE的bootloader。第三阶段是根据pxeboot(8)的指示加载loader(8)和kernel。在这里,我们可以看到D要从网络加载两次文件,一次是pxeboot(8),另外一次是loader(8)和kernel。这两次加载文件的位置就是由上面的三个选项来确定的。下面我们逐一分析这几个语句的作用。

next-server语句主要控制了整个PXE引导中两次加载的文件所在的服务器的地址。pxeboot(8)是通过tftp从S传递到D的,所以next-server第一个作用就是指定一个tftp server的地址。在第三阶段,要加载loader(8)和kernel,这个加载过程是通过nfs完成的。next-server同时也指定了nfs server的地址。值得注意的是,有一些文档说第一阶段确定的PXE在下一阶段要加载的文件(也就是pxeboot(8))所在的服务器地址是通过server-identifier给定的,但是对于isc-dhcp3-server来说,这一点并不成立,而恰恰是next-server决定了pxeboot(8)所在的服务器的地址(在dhcpd.conf(5)里面已经明确指出了这一点)。

filename指定的是pxeboot(8)在tftp传输过程中的名字。由于tftpd将在inetd中来使用,根据inetd.conf中给tftpd传递的选项,tftpd启动的时候会进行chroot,于是filename的地址是要相对于其chroot之后的根路径来说的。默认情况下,tftpd会chroot到/tftpboot,我们要在/tftpboot中放入pxeboot(8)这个文件。由于相对/tftpboot作为根路径来说,pxeboot(8)的位置是/pxeboot,所以我们直接填入/pxeboot便可。

root-path这个选项指定的是第三阶段加载loader(8)和kernel在nfs的根路径的位置(也就是包含了boot目录的位置)。因为我们导出的是/mnt,所以这里填/mnt。

1、为了避免S上的dhcpd影响网络中其他机器,也为了避免D受到网络上其他机器的影响,用直连网线将S和D连接起来。

2、挂载准备好的ISO镜像。使用mdconfig将FreeBSD的ISO文件连接成为一个vnode类型的内存盘:

mdconfig -atvnode -f 8.0-CURRENT-200801-amd64-disc1.iso

挂载这个md节点(假设为/dev/md0)到/mnt:

mount_cd9660 /dev/md0 /mnt

3、把pxeboot(8)放到/tftpboot:

cp /mnt/boot/pxeboot /tftpboot

4、在S上启动tftpd, dhcpd和nfsd:

/etc/rc.d/inetd forcestart

/etc/rc.d/nfsd forcestart

/usr/local/etc/rc.d/isc-dhcpd forcestart

5、由于我们已经使用直连网线将S和D连接,假设S上没有配置BIND服务,也没有额外的到Internet的网络连接,那么需要禁止S上的DNS解析。可以修改/etc/resolv.conf,将其中所有以nameserver开头的行注释掉。否则mountd(因为nfsd依赖这个daemon,所以mountd也会随nfsd启动而启动)会去查DNS,而有可能导致最终PXE启动连不上nfs,不能加载kernel而超时失败。

6、在D的BIOS中设置为PXE引导,重新启动计算机。

7、D此时已经启动,并通过PXE,加载了loader。此时需要选择loader启动选项的第6项,进入loader prompt。输入以下两条命令:

set vfs.root.mountfrom="ufs:/dev/md0"(回车)

boot(再回车)

第一行保证我们可以启动到正确的安装程序,第二行提示系统继续执行启动的各个步骤。

8、此时应该正常进入安装程序。到选择安装介质之前都按照一般的安装步骤。在选择安装介质时选择nfs,然后输入S的IP地址,以及导出的路径,例如192.168.0.1:/mnt。确认后,系统提示要设置网卡,在这里按照系统提示,使用dhcp,保证D与S在同一个网络中。主机名和域名随意,DNS以及网关可以暂时不填。后续步骤与从光盘安装一致。

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

10、安装全部完成,可以开始享用FreeBSD了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值