Setting Up A PXE Install Server For Multiple Linux Distributions and WinPE On Debian Lenny

本文详细介绍了如何在Debian GNU/Linux 5.0服务器上搭建PXE服务器,实现Linux、Windows等多种操作系统的网络安装。包括安装TFTP和DHCP服务器、配置启动文件、优化文件结构等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本指南将一步步说明怎么在linux服务器上架设PXE功能,并提供不同版本LinuxWindows的安装以及WinPE的启动。服务器系统是Debian GNU/Linux 5.0

PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 PXE可以引导多种操作系统,如:Windows 95/98/2000/xp/2003/vista/2008,linux等。

简单来说,PXE服务器就是DHCP服务器+TFTP服务器,现在开始:

一、Linux 软件的安装

1.        安装tftp

首先升级系统:

$sudo aptitude update

我们需要安装如下包netkit-inetd, tftpd-hpa, dhcp3-server, and lftp,于是我们运行:

$sudo aptitude install netkit-inetd tftpd-hpa dhcp3-server lftp

然后,我们运行

$sudo netstat -uap | grep tftp

看看有没有以下信息:

server1:~# netstat -uap | grep tftp

udp        0      0 *:tftp              *:*          2242/inetd

server1:~#

如果你没有看到tftp,请打开/etc/inetd.conf,看配置是否如下:

$sudo vi /etc/inetd.conf

 

[...]

#:BOOT: TFTP service is provided primarily for booting.  Most sites

#       run this only on machines acting as "boot servers."

tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /srv/tftpboot

[...]

然后重新启动

$sudo /etc/init.d/openbsd-inetd restart

然后在检查一下,应该没有问题了。

$sudo netstat -uap | grep tftp

2.        配置DHCP服务器

编辑/etc/dhcp3/dhcpd.conf:

$sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig

$sudo cat /dev/null > /etc/dhcp3/dhcpd.conf

 

$sudo vi /etc/dhcp3/dhcpd.conf

 

ddns-update-style none;

option domain-name "gmshi.org";

option domain-name-servers 192.168.1.6;

default-lease-time 1200;

max-lease-time 18000;

authoritative;

 

log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {

        option routers 192.168.1.1;

        option broadcast-address 192.168.1.255;

        range 192.168.1.43 192.168.1.199;

 

        # for install debian & windows xp with PXE

        filename "pxelinux.0";

 

        host data {

                hardware ethernet 00:30:18:C0:68:80;

                fixed-address 192.168.1.6;

        }

}

重新启动DHCP服务。

3.        Set Up Debian Lenny Netboot (i386)

ftp://debian.ustc.edu.cn/debian/dists/lenny/main/installer-i386/current/images/netboot/里面能找到网络启动的最基本文件。我们将它下载下来放到PXE服务器的文件夹/srv/tftp下面。

$cd /tmp

$sudo lftp -c "open ftp://debian.ustc.edu.cn/debian/dists/lenny/main/installer-i386/current/images; mirror netboot/"

$sudo mv netboot/* /srv/tftpboot

$sudo rm -fr netboot

PXE启动文件名就是pxelinux.0,最重要配置文件是pxelinux.cfg/default。有了这两个文件,就能启动起PXE服务。

现在我们来看看配置文件:

$sudo cat /srv/tftpboot/pxelinux.cfg/default

 

# D-I config version 1.0

include debian-installer/i386/boot-screens/menu.cfg

default debian-installer/i386/boot-screens/vesamenu.c32

prompt 0

timeout 0

4.        测试一下

我们任意启动一台电脑,在BIOS里面开启支持LAN启动。然后开机按F12,看到如下图片,表示基本的PXE系统安装成功。

 

5.        优化

下载下来的内容比较乱,需要做一些修改。

这个是服务器最后安排出来的文件夹结构。

/srvcd /tftpboot

                |

                +boot-scrern

                +debian-i386

                +fedora

                +pxelinux.cfg

                +tidvevm

                +winpe_boot

                +winxp-en

cat /srv/tftpboot/pxelinux.cfg/default

应该配置成如下形式:

menu hshift 8

menu width 59

 

menu title Installer boot menu

include boot-screens/stdmenu.cfg

include mystartup.sh

default local

 

label local

        menu label ^Boot from local disk or CDROM.

        menu default

        localboot 0

 

label winxp-x86

        menu label Install ^Windows XP

        kernel winxp-en/bzImage

        append z_path=//192.168.1.6/install z_user=srvuser z_pass=SrvUser initrd=winxp-en/initrd.gz --

 

label debian-i386-gui

        menu label Install Debian ^i386 with GUI.

        kernel debian-i386/gtk-linux

        append video=vesa:ywrap,mtrr vga=788 initrd=debian-i386/gtk-initrd.gz --

 

label WinPE

        menu label Install Win^PE with 134MB

        kernel winpe_boot/startrom.0

 

label debian-amd64-gui

        menu label Install Debian ^amd64 with GUI.

        kernel debian-amd64/gtk-linux

        append video=vesa:ywrap,mtrr vga=788 initrd=debian-amd64/gtk-initrd.gz --

 

label debian-i386

        menu label Install Debian i^386.

        kernel debian-i386/linux

        append vga=normal initrd=debian-i386/initrd.gz --

 

label debian-amd64

        menu label Install Debian amd^64.

        kernel debian-amd64/linux

        append vga=normal initrd=debian-amd64/initrd.gz --

 

label Fedora9-x86

        menu label Install Fedora^9 i386.

        kernel fedora/vmlinuz

        append vga=normal initrd=fedora/initrd.img --

 

 

 

# this option can be added to the append line

# preseed/url=http://192.168.1.6:429/debian-lenny.cfg

 

default boot-screens/vesamenu.c32

 

prompt 0

timeout 300

按照如上配置重新分配文件夹和文件。

例如debian+i386

mv /srv/tftp/debian-installer/i386/linux /srv/tftp/debian-i386

mv /srv/tftp/debian-installer/i386/initrd.gz /srv/tftp/debian-i386

如此炮制能把各种版本的Linux安装最简包安装进来。

二、Linux版本的DVD版本安装

这里有两个问题。

1、XPWinPE怎么装?

这个后续会介绍,咱不急,咱慢慢来。

2、都是最简包,剩下的几百M东西全从网络下载?

答案是肯定的,这需要一定的带宽,没带宽的,请不要这么玩。

当然,这里介绍一下硬盘安装。我们一般下载一张FedoraDVD安装盘,然后再下载Grub4Dos就可以离线安装了,这样前期通过迅雷等多线程下载,后续安装会比较快。当然UbuntuDebian的安装改莫如此。

那么我们能不能用PXE代替Grub4Dos来进行DVD的安装呢?答案嘛,是模糊的。Fedora可以,剩下的UbuntuDebian不可以。

先介绍FedoraDVD安装方法:

/srv/tftpboot/fedora文件夹下面放入

vmlinuzinitrd.img

这两个文件来自于DVD安装包里面。

然后开机按F12启动后选择Fedora9-x86。在选择ISO文件地址,选择NFS dictory

然后选择

Enable IPV4 Support

NFS host name 192.168.1.6

Fedora directory:/mnt/fedora

这样就如同本机插入了光驱一样安装Fedora了。

问题在于,UbuntuDebian的启动界面里面没有选择NFS安装项。应该是安装版的内核没有加入对NFS的支持。这个以后有空再弄吧!

既然Fedora需要NFS支持,现在将NFS配置简单提一下。

/etc/init.d/目录下

新建mystartup.sh

添加

mount -o loop -t iso9660 /srv/install/os/linux-cd/Fedora-9-i386-DVD.iso /mnt/fedora9/

echo "Fedora9 ISO has been mount into /mnt/fedora9!"

然后将mystartup.sh加入开机自启动项,这样每次开机,Fedora的安装盘就装载进了/mnt/fedora9目录下。

顺便提一下Debian system cann't be mounted more than 8 iso image files as loop device,because there is only loop0-7 under /dev

这点需要修改内核模块才能将loop文件增加,据说能增加到64个。

/etc/exports中添加

/mnt/fedora9    *(rw,sync,no_subtree_check)

/srv/tftpboot/pxelinux.cfg/default中添加(之前已经提过,再次赘述一下。)

label Fedora9-x86

        menu label Install Fedora^9 i386

        kernel fedora/vmlinuz

        append vga=normal initrd=fedora/initrd.img –

/srv/tftpboot/目录下

#mkdir fedora

复制Fedora-9-i386-DVD.iso光盘中的initrd.img vmlinuz到目录下

三、WinPE的安装

1.        通过PXE启动PE需要这么几个文件:

1)        startrom.0这个文件从Windows 2003 SP1/SP2 光盘中startrom.n12改名而来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过 pxelinuxkernel命令来运行。在Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。

2)        ntldr:这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PEsetupldr.bin,但两者并不相同,但它决不是我们平常所使用的ntldr。这个文件必须放到TFTP服务器的根目录。

3)        ntdetect.com:这个就是XP2003所使用的c:/下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。

4)        winnt.sif:这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。这个文件也必须放到TFTP服务器的根 目录。通过pxe启动的PE支持3种映像文件格式,例如,ISOIMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加 了一个文件头。一般我们都使用ISOIMG格式,但这两种格式的启动选项是有所不同的,ISO格式要在启动选项中增加一个/rdexportascd SDI格式还要增加一个/rdoffset选项。下面是Winnt.sif的示例:

[SetupData]

BootDevice = "ramdisk(0)"

BootPath = "WXPE/SYSTEM32"

OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=/winpe_boot/WINPE.ISO"

PXE启动PE的过程大致是(可能也不是很严谨):startrom.0startrom.n12)获得执行后,在TFTP服务器根目录下寻找 ntldrsetupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据 winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中会用到ntdetect.com来收集硬件信息。

这个过程我们需要比较了解,才能对我们以后的工作进行指导。

1、startrom.0怎么获得执行的?

这个比较显而易见。在pxelinux.cfg/default配置中,指定了内核的路径。如果用户在PXE界面中选择了WinPE,则startrom.0获得执行命令。

2、为什么startrom.0会自动到TFTP服务器根目录下寻找ntldr

这个没有由我们的配置文件指定。在startrom.n12里面指定了内核调用的临时文件系统的名字是ntldr,如果你需要修改ntldr的名字,请记得修改startrom.n12里面的ntldr名字。

3、为什么ntldr会自动在TFTP服务器的根目录下查找winnt.sif

这个同样没有配置文件指定。在ntldr里面指定了PE的启动配置文件名字是winnt.sif。如果你需要修改winnt.sif的名字,请记得修改ntldr里面的winnt.sif名字。

2.多WinPE启动

这样我们就可以明确地肯定,我们能由PXE启动多个不同的WinPE镜像了。先由pxelinux.cfg/default指定不同路径下的WinPE内核镜像,然后由不同内核镜像指定不同名字的文件系统,再由不同的文件系统启动不同的*.sif配置文件,最后由配置文件启动不同的WinPE ISO文件。

在修改内核镜像与文件系统文件时,需要使用16进制编辑器,并保证指定的新文件名字与旧文件名字长度相同。

winnt.sif文件中还要注意的就是BootPath选项,默认它指向"/I386/SYSTEM32"目录,但老毛桃的PEI386目录修改成了 WXPE,那么这里要作对应的修改,同时还要修改ntldr文件,将其中所有的I386替换为WXPE。只是修改winnt.sif是没有用的。

3.几点注意事项

1)        NTLDR

大写,不然报错:TFTP failed

2)        ntdetect.com

小写,不然报错:NTDETECT failed

3)        winnt.sif

小写,不让报错:winnt.sif missingls

4)        ISO文件的来源

比如说老毛桃的WinPE,里面的ISO直接放到TFTP服务器的文件夹下面加载,会报错TXTSETUP.SIF missing。其实需要将老矛头ISO里面的/MINIPE/WINPE.IS_取出来(通过UltraISO),然后解压(WinRAR),得到新的WINPE.ISO,这个才是可以加载的ISO。当然这个ISO只有最基本的功能,你可以自己将需要的功能添加进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值