Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477349
  • 博文数量: 174
  • 博客积分: 4377
  • 博客等级: 上校
  • 技术积分: 1933
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-31 22:40
文章分类

全部博文(174)

文章存档

2013年(15)

2012年(25)

2011年(40)

2010年(94)

分类: BSD

2013-01-05 10:06:25

----------------------------------------------------
6.10  -  怎样使用PXE引导启动?(i386,amd64)
----------------------------------------------------
Preboot Execution Environment,或者叫做PXE,是一种除了从硬盘,软盘或者光驱之外,从网络

启动计算机的技术。这种技术是Intel开发的,现在已经被绝大多数的网卡和计算机制造商支持。

需要注意的是,事实上存在多个不同的协议用于网络启动,PXE是最近才出现的。传统实现上,PXE

引导是使用网卡或者主板上的ROM来实现的,还有各种不同的渠道可以获取支持PXE引导的软盘。许

多老的网卡上的ROM支持网络启动,但是却不支持PXE;OpenBSD在i386或者adm64的版本不能从这些

老网卡上启动。

PXE是怎样工作的?
---------------------
首先,我们应该了解OpenBSD在i386和amd64平台上是怎样启动的。在开始启动之前,支持PXE的网

卡发出DHCP请求。DHCP服务器给它分配一个IP地址,并返回一个文件名,用于在tftp服务器上检索

并执行。这个文件用于指挥剩余的启动过程。对于OpenBSD来说,这个文件是pxeboot,这个文件取

代了标准的boot文件。然后pxeboot就可以从tftp服务器上加载并执行系统的核心(比如bsd或者

bsd.rd)。


我该怎样做?
----------------------
首先第一步是我们需要有一台可以执行PXE引导的计算机或者网卡。许多的文档提到现在所有的网

卡和计算机都支持PXE引导,但是很明显这是不确切的--许多廉价系统不包括PXE ROM或者使用了老

的网络引导协议。你另外还需要一个正确配置的DHCP、TFTP服务器。

设想一台OpenBSD计算机存放着引导文件(虽然这并不是必须的),你的DHCP服务器的dhcp.conf文

件将需要有如下的配置内容:

filename "pxeboot";

这样DHCP服务器就可以把这个文件发送给引导中的计算机。例如:

shared-network LOCAL-NET{
option domain-name "example.com";
option domain-name-servers 192.168.1.3,192.168.1.5;
subnet 192.168.1.0 netmask 255.255.255.0{
option routers 192.168.1.1;
filename "pxeboot";
range 192.168.1.32  192.168.1.127;
default-lease-time 86400;
max-lease-time 90000;
}
}

另外需要激活tftpd服务。这需要通过inetd(8)来实现。如果你使用的是标准的OpenBSD安装过程,

那么在inetd.conf中有一行相关的配置:

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

只需要简单的删除‘#’,并给inetd(8)发送一个-HUP信号,使其重新加载/etc/inetd.conf。

tftp(8)从一个指定的目录访问相关的文件,在这行实例配置中,目录是/tftpboot。显而易见的是

,这个目录需要被创建并放置好相关文件。对于PXE引导,典型的情况只需要不多的几个文件:

.pxeboot,PXE引导加载器(和基于磁盘的系统引导器作用相同)。
.bsd.rd,安装所需核心文件,或者用bsd文件,一个定制过的系统核心。
./etc/boot.conf,一个引导配置文件。

注意只有当你需要引导的核心文件名字不是bsd,或者其它的pxe引导默认值不是你想要的值(例如

,你希望使用串口来工作),这时候才需要使用/etc/boot.conf文件。你可以使用tftp(1)客户端来

测试tftpd(8)服务器,以确保可以获取所需的文件。

当你的DHCP和TFTP服务都运行起来后,你就可以开始了。你需要在你的系统中做好PXE引导相关的

设置;这需要参考你的系统文档。一旦这些都设置好,你应该会看到下面这些熟悉的内容:

    Intel UNDI, PXE-2.0 (build 067)
    Copyright (C) 1997,1998 Intel Corporation
    For Realtek RTL 8139(X) PCI Fast Ethernet Controller v1.00 
(990420)
    DHCP MAC ADDR: 00 E0 C5 C8 CF E1
    CLIENT IP: 192.168.1.76  MASK: 255.255.255.0  DHCP IP: 
192.168.1.252
    GATEWAY IP: 192.168.1.1
    probing: pc0 com0 com1 apm pxe![2.1] mem[540k 28m a20=on]
    disk: hd0*
    net: mac 00:e0:c5:c8:cf:e1, ip 192.168.1.76, server 192.168.1.252
    >> OpenBSD/i386 PXEBOOT 2.03
    boot>

在这一点上,将会出现标准的OpenBSD引导提示符。如果你简单的敲入"bsd.rd"并回车,你将会从

tftp服务器上获取bsd.rd文件。

    >> OpenBSD/i386 PXEBOOT 2.03
    boot> bsd.rd
    booting tftp:bsd.rd: 4375152+733120 [58+122112+105468]=0x516d04
    entry point at 0x100120
    Copyright (c) 1982, 1986, 1989, 1991, 1993
            The Regents of the University of California.  All rights 
reserved.
    Copyright (c) 1995-2010 OpenBSD.  All rights reserved.  http://
    OpenBSD 4.8 (RAMDISK_CD) #89: Mon Aug 16 09:24:20 MDT 2010
      ...

安装过程需要的bsd.rd核心文件现在可以启动了。


能够使用PXE引导bsd.rd之外的其它系统核心么?
----------------------

当然可以,虽然这些OpenbSD中的这些工具是为了安装OpenBSD准备的。
阅读(1800) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~