admin 管理员组

文章数量: 887021


2024年3月5日发(作者:php源码 房产中介)

局域网电脑用Freenas搭建网启服务器重装操作系统

关键词:freenas,pxe,ipxe,ghost,wim,winpe,系统重装

运行硬件环境:有线局域网,服务器一台,支持pxe启动的电脑客户端。

解决方案:使用freenas搭建网启服务器,客户端通过pxe,ipxe启动winpe系统,还原以前保存在freenas上的操作系统备份,完成系统重新安装。

优点:稳定快捷方便,有网络即可以完成系统重装。

缺点:需要电脑硬件支持,部分旧电脑不支持pxe,多台同时安装,速度降低,占用网络带宽。

单位旧电脑安装windows系统,使用一段时间,用户不善于自己维护电脑,程序安装的多,不清理导致开机运行速度降低,经常为电脑重装操作系统,有时忘记拿安装盘,电脑里又没有备份,用网络启动,从服务器下载备份安装操作系统,使用百兆网络传输几个G文件速度慢,今年网络升级改造成千兆网络,于是重新搭建网启服务器。用freenas搭建因为它比较稳定,停电后能重新启动,不用手工干预。Ipxe还支持http协议传输winpe镜像文件,

freenas上面正好有http服务,同时他本身是存储服务器,将不同型号的电脑备份镜像以及维修工具软件存在上面。捣鼓了一周时间才弄好。

一、下面是启动过程截图:

1. 电脑开机,从网卡启动。

2. 从dhcp服务器上获取ip地址,引导文件linux0引导调入默认菜单default。

3.默认引导ipxe。

4. 启动winpe,ipxe可以通过http协议下载winpe的镜像文件,这样速度比较快,新机器几十秒。

5.启动带网络驱动winpe系统,直接将网络中的镜像恢复到本机。

二、简单的搭建过程:

1.安装freenas系统。

找一个服务器,我是在esxi5上建的一个虚拟机,安装网上教程一步一步安装,设置ip地址,开启tftp,smb共享。

2. 配置ipxe。

原来是用小小强的pxe启动winpe系统。Pxe使用tftp协议下载镜像速度不快,搜索到ipxe可以使用http,ftp协议这样下载个几个G的文件也用不了几分钟。主板bios中没有刷ipxe,都是pxe,每台电脑都刷太麻烦。所以选择了网上的文章中的办法:

Chainloading iPXE

可以把iPXE当作固件刷进计算机网卡的ROM里替换掉自带的PXE,但更为常见的是通过chainloading的方式进入iPXE。

通常我们会接触到两种iPXE:iPXE firmware()和iPXE kernel image()。两者都可以用来作为bootloader引导OS安装程序,iPXE支持的命令和脚本都能在firmware和kernel中使用。 kernel相当于一个linux系统,功能更加完善,比如支持命令行操作,支持initrd等,而firmware更多是作为bootloader来使用。 在bare metal

provision的过程中,一般仅利用iPXE的bootloader功能,所以firmware和kernel都能用来加载操作系统安装程序。

下面介绍一下如何进入iPXE方法:

BIOS (burned-in PXE) => PXELINUX => iPXE Kernel ()

当计算机从网络启动时,先从TFTP下载PXELINUX作为bootloader,然后引导进入iPXE kernel。

这样可以自动引导默认default菜单,调入ipxe。PXELINUX会根据下的配置文件进行相应的引导工作。默认情况下PXELINUX按以下规则选择匹配的配置文件,根据计算机网卡的MAC地址查找配置文件,文件名的格式为以中划线-分割的16进制MAC地址。比如拥有MAC地址为88:99:AA:BB:CC:DD以太网卡(ARP类型为1)的计算机会匹配文件名为01-88-99-aa-bb-cc-dd的配置文件

如果步骤1失败,则会尝试以计算机的IP地址(大写的16进制格式)查找配置文件,比如192.0.2.91对应C000025B配置文件。如果查找失败,会移除最后一位值尝试查找C000025文件,直至查找文件名为C的文件失败。最后会选择名为default(小写)的配置文件。

这样原则上可以为每一台机器制作一个引导菜单。Pxelinux文件使用的小小强pe工具里面的pxelinux.0引导文件。Default引导菜单内容:

default menu.c32

prompt 0

menu title PXE Boot Menu

timeout 50

f1

f2

label ipxe-boot

menu label Using via iPXE booting (iPXE booting)

kernel

append initrd=

label boot-else

menu label Bypass iPXE (exit)

localboot 1

还需要几个文件,引导菜单需要设置菜单模块(通常是“menu.c32”或“vesamenu.c32”),ipxe的内核文件(从网下载的),ipxe引导菜单文件,(从网上下载的WinPE_5.1_32&64_里面找到)内容:

#!ipxe

set menu-timeout 10000

iseq ${platform} efi && set menu-default win864 || set menu-default win832

set xieyi:string http

set next-server 172.17.120.15

isset ${ip} || dhcp

:start

menu iPXE Boot Menu --${platform}--${ip}

item --gap -- --------------------------------- PE --------------------------------

item

item win832 Win8.1 Update PE x86

item

item win864 Win8.1 Update PE x64

item

item --gap -- -------------------------------- TOOL --------------------------------

item

item mem Windows Memmory Diagnostic

item test ${xieyi} ---- select change

item

item --gap -- ---------------------------- Advanced options -----------------------

item --key c config Configure settings --

c

item shell Drop to iPXE shell

item reboot Reboot computer

item --key x exit Exit iPXE and continue BIOS boot -- x

choose --timeout ${menu-timeout} --default ${menu-default} selected

goto ${selected}

:shell

echo Type 'exit' to get the back to the menu

shell

goto start

:reboot

reboot

:exit

exit

:config

config

goto start

:test

iseq ${xieyi} tftp && set xieyi http && goto start ||

iseq ${xieyi} http && set xieyi tftp && goto start ||

:mem

kernel ${xieyi}://${next-server}/boot/wimboot || goto retry

initrd ${xieyi}://${next-server}/boot/ || goto retry

initrd ${xieyi}://${next-server}/boot/bme BCD || goto retry

initrd ${xieyi}://${next-server}/boot/Fonts/segmono_ segmono_ || goto

retry

initrd ${xieyi}://${next-server}/boot/Fonts/wgl4_ wgl4_ || goto retry

initrd ${xieyi}://${next-server}/boot/ || goto retry

boot || goto retry

goto start

:win832

set pefile

goto bootpe

:win864

set pefile

goto bootpe

:winefi

initrd ${xieyi}://${next-server}/EFI/Boot/ || goto retry

initrd ${xieyi}://${next-server}/boot/bcd || goto retry

initrd ${xieyi}://${next-server}/boot/ || goto retry

boot || goto retry

goto start

:bootpe

kernel ${xieyi}://${next-server}/boot/wimboot gui || goto retry

initrd ${xieyi}://${next-server}/boot/ || goto retry

iseq ${platform} pcbios || goto winefi

initrd ${xieyi}://${next-server}/boot/ || goto retry

initrd ${xieyi}://${next-server}/boot/bxe bcd || goto retry

initrd ${xieyi}://${next-server}/boot/${pefile} || goto retry

boot || goto retry

goto start

:retry

imgfree

prompt Error! press any key to retry

goto start

成功引导ipxe后出现菜单内容,启动winpe使用wimboot来引导WinPE的.wim镜像

wimboot提供了一下几个优点:

1.

高速 wimboot支持通过http下载WinPE镜像,而不受限于TFTP。以一个千兆网卡为例,典型200MBWinPE镜像耗时不超过两秒。

2.

高效 wimboot支持Windows复用被RAM盘占用的内存资源,这样就不会造成内存浪费。

3.

易用 wimboot能直接加载.wim镜像文件,不用打包成ISO或FAT文件系统的镜像。

Winboot引导winpe镜像需要的几个文件,

wimboot

bxe

(winpe的镜像文件)

以上的文件目录结构:

Tftp根目录 pxelinux.0 menu.c32

Tftp根目录syslinuxcfg default

tftp根目录boot bcd bxe wimboot

3. 使用ssh登陆freenas ,将tftpboot链接到httpboot上,这样可以使用http,tftp两种协议下载镜像文件。

4. 修改镜像文件,开机自动建立网络磁盘映射,将电脑系统备份镜像所在的目录映射到本地磁盘驱动器。

使用g工具修改

关键词定义:

PXE

PXE是Preboot eXecution Environment的简称,又称为预执行环境, 通过PXE我们可以通过网络给计算机安装操作系统。 PXE协议大致上结合了DHCP和TFTP。当计算机通过PXE启动时,通过DHCP查找合适的启动服务器,然后通过TFTP下载初始引导程序和附加文件。 现在的网卡一般都烧了PXE的固件,以支持PXE启动

gPXE

gPXE是PXE的一个开源实现(更早的实现是Etherboot)。通过gPXE能让网卡直接支持网络启动,而不依赖于网卡自带的PXE固件。同时相比PXE,gPXE支持更多的协议。 传统的PXE只能通过TFTP进行传输,而gPXE支持HTTP,iSCSI和ATA over Ethernet(AoE),甚至支持wifi链接。

iPXE

iPXE表示

it doesn't PXE。iPXE是gPXE的原班人马写的(他们从Etherboot开始),作为官方的gPXE的替代品。 gPXE扩展的功能在iPXE中都得到支持。 之所以不再使用gPXE是由于存在版权纠纷,iPXE从2010年4月开始,基于同一个代码库开始开发。

PXELINUX

Syslinux是一个优秀的系统启动加载器(bootloader),可引导自硬盘、光盘、和通过PXE的网络启动。 PXELINUX派生自Syslinux,用来使支持PXE的网卡从网络引导启动Linux。PXELINUX程序不是烧在网卡里,而是存储在TFTP服务器上。


本文标签: 引导 支持 网络 启动