|
|
|
如题。此帖就是记录楼主耗时数月、最终成功地通过网卡 PXE 无盘引导进 WinPE 环境、识别 iSCSI target 目标盘、将 Windows 11 安装至 iSCSI target、并由该 iSCSI target 成功引导 Windows 11 的一篇教程 —— 暨制作工具提供、部分注意事项及个中有感等。
说起 iSCSI 无盘 Windows,我目前能查到的官方文档显示,它早前是 Windows Server 版特有的功能,可巨硬早在 WinServer2008 版后就停止了官方支持,并且还提到说必须通过支持 iSCSI 的 HBA 卡才能正确加载与识别 iBFT(iSCSI Boot Firmware Table) ,总之大概意思翻译过来就是“不支持”—— 这显然是“技术流”们(还是穷)所不齿的,挑战不可能才是乐趣所在。言归正传,先交待下我这次 iSCSI 无盘所用到的网络、服务器与客户端环境:
** 网络:
一台外网路由器,级联一台8口二层交换机,所有网络设备均接交换机。只有一条要求:务必确保服务器与客户端网络在同一个网段(VLAN)内、能互 ping 通;若纯是为了安装 Windows,那么上外网的路由器都不需要,仅一台能同时接服务器和客户端网线的傻瓜交换机即可。不过,不建议在无 Internet 外网的环境下操作,因为其中需要用到的 ADK 部署工具需要从官方网站下载(后面教程中提供了下载链接)。否则,请预先将所需要的 ADK + PE Addon 下载至本地,合计大约 3.5GB。
** 服务器端:
Windows Server 2022 DC 虚拟机一台,并配置以下各项服务:
* iSCSI target(亦可采用诸如群晖这类 NAS 自带的 iSCSI target 功能);
* DHCP Server (亦可采用路由器自带的,或 Linux 搭建等);
* WDS(部署服务)—— 它实际上就是 TFTP/BOOTP Server;
* 文件共享:存放 Windows 安装源文件。
明眼人应该看出来了,我的 iSCSI target 是 “套娃”,因为它是在 WinSvr2022 的虚拟磁盘空间上划出来的,即:虚拟磁盘中的虚拟磁盘,而实体机 ESXi6.7 U3 的存储建在一张 9260-8i 卡上为各虚拟机提供空间,采用机械盘 RAID5 + SSD RAID1 作 RWCache 加速,目前无盘 Windows 11 系统性能的瓶颈在于 1Gbps 的网速,换算下来就是可达到 100MB/s 读写,日常使用就和一块普通机械盘的感受差不多,对我而言完全够用了,今后若是升级 10Gbps LAN 的话就真切主题了。
** 客户端
NUC9祼机一台,干所有脏活累活的主角就是它板载的两张网卡:
NIC #1:Intel(R) I210 Gigabit Network Connection
NIC #2:Intel(R) Ethernet Connection (7) I219-LM
总结下来就是:整个安装过程除基本的网络环境和我的 NUC9 外,仅需一台配置好 WDS、DHCP Server、iSCSI target 和 文件共享 这 4 项服务的 Windows Server(虚拟机亦可)。尤其是,若各位已有 Windows Server 所提供的那 4 项服务的其它替代方案的话,则只须用我提供的批处理工具定制好 WinPE.wim、并用它来引导客户机进入预安装环境操作即可。在官方不支持且现成资料匮乏的情况下,能成功实属不易,这其中的注意事项和前提条件较多,对部分看官而言甚至会显得苛刻,再考虑到各位看官在这方面的技能水平可能参差不齐,若直接按教程操作,也许会不断地发问,所以,在进入正式教程之前,我会花大量的文字交待教程中各项操作的前因后果,在此提前给各位打个预防针:全文篇幅较长甚至显得啰嗦,但依旧建议各位看官耐心看完后再动手(双关 + 手动狗头),也许能少走一些弯路。看完后再操作遇到问题时,或许您将要遇到的那个问题已经在这里有相应的答案了。
不想看我啰嗦直接想看教程,并且对自己信心十足的,可移步 2 楼。目前已实测成功的 Windows 11 版本是刚出不久的 22H2。
01.Winver
为了这次的成功,这几个月下来我查找中外各种资料可谓是阅料无数,但真正有用的却只有 iPXE 开发者讨论帖中的这一篇:https://github.com/ipxe/ipxe/discussions/324,可当时我严格按大佬所说的操作后却并没有成功,否则早几个月前就有这篇了。现在回顾时才发现,当时的我离成功是多么的近,这个后面会讲到。
总而言之,这篇教程是基于我数月来无数次失败终成功的原创经历,包括提供给各位的批处理定制工具在内都是我逐字码出来、并经反复测试过的。此外,请不要问我为什么批处理中不用中文注释,因为它本就不是给所有人编辑用的,有需要编辑它的按理完全能读懂……虽然我平常用 Windows 习惯是中文版,但我自己写代码时从不用中文,这也是这么多年一直以来的习惯;可能又有人会反问:为何执行中又有中文提示?也纯粹是为了避免部分中文用户在执行时看到英文提示不知所措,或者换个思路:凡有这类问题的都应当庆兴我暂时还没有纯用英文来写教程的习惯
教程中所附的工具可定制 17 个语种版本,均用脚本逐一自动生成过至少两遍甚至数遍,不存在人为失误的因素,所以一旦有某看官说某语种的生成不了,那它一定不是下图中所列出的 17 种之一。若有人问为何是 17?因为算上命令执行时其它的提示信息,加上语种提示,刚好够一屏 Cmd 或 Terminal 默认的窗口高度/显示行数;若再有人问为嘛是这 17 种?来咬我啊!!
不瞒各位说,在此之前,我的 Win11 21H2 就是通过 iSCSI 无盘方式引导的,但当时是先将 21H2 安装在一张 SD 卡上配置完成后,再 Clone 克隆到 iSCSI target 上实现而非通过常规 PXE 网络引导并在 iSCSI target 上安装的,就是下图中这货,官方标称的读写数据还不错,但跑 Windows 实在要凭耐心,与现在 iSCSI 方式比简直天壤之别。它原是我行车记录仪的存储卡,此前为梦想献身,而今如愿从良,可谓皆大欢喜:
前面也说了,对我这样在技术层面有洁癖的(穷)人来讲,无法纯 iSCSI 这个事不干净(Dirty)。所以,这一次的成功,终于可以让 NUC9 完全摆脱一切外部存储的依赖了!如下图所示:
但为何标题要写纯无盘工作站/服务器呢,因为 ESXi 7/8 也是支持 iSCSI 安装和引导的,我之前试用iSCSI 安装 ESXi 7 是完全没问题的,并且进入后还可以继续添加 iSCSI target 作为 Datastore…… 这样一来,这台 NUC9 就可以完全不配置任何本机存储设备,使得 NAS 集中存储成为可能,只要各位的 NAS 支持 iSCSI target 功能,同时 NAS 的空间和网速都跟得上,今后想装什么或装多少个系统就一根网线解决、想换哪个系统随时切换,真正的 “Out-of-the-Box、Plug & Play”,可谓意义重大。此外,原先采用克隆 SD 卡系统这一方式还有另一个隐患:诸如 21H2 -> 22H2 这样的大版本更新,更新重启后在第二段更新过程中始终会报错,更新无法完成。
上面提到了我曾与成功擦肩而过,当时有点绝望的我准备放弃熟悉的 WDS 转向 iPXE,随后分别在实体机和虚拟机环境中采用了包括 TinyPXEServer + iPXE 在内的各种途径或工具均以失败告终。还是怪我曾经太天真,以为只要给 boot.wim 或 install.wim 添加正确的网卡驱动即可。总结此前无数次的失败,这次成功其最关键的一点就是:务必正确定制支持 iSCSI 的 WinPE 预安装环境!!!否则,要么是在安装过程中报不支持 iBFT 而找不到 iSCSI target 目标盘(开篇有提到这点),要么就是进入安装阶段出 NDIS.SYS 蓝脸(BSOD);即使勉强识别了 iSCSI target 再采用命令行 dism /Apply-Image 的手段完成第一阶段安装,在随后的重启过程必定绕不开 INACCESSIBLE_BOOT_DEVICE 这个著名的 BSOD(图就不再上了,看得我已经快吐了),因为 iSCSI NetAdapter 不通过 setup.exe 常规安装是无法被写入目标盘的 Offline DriverStore…… 关于这一点,可以参考安装日志,其默认是存在 \$WINDOWS.~BT\Sources\Panther\ 目录下的 iscsi_boot_net.log 和 setupact.log。
不过,正确的 WinPE 环境也仅仅是成功的首要条件、并非“充要条件”,因为,还有另外一个极不起眼的因素会让此前所做的一切均付诸东流,认识到这一点很关键,否则就一定会栽在如下图所示这个坑里跳不出来,这是我在经历了无数次失败、抓狂、近乎绝望后,偶然捕捉到log 中图中红框圈出来的相应信息而联想到的,早几个月前看看该多好…
这里我就将这成功的第二条免费赠送给各位看官:若是在定制 WinPE 时不添加与 Windows安装源相对应的语言包的,即:若定制的 WinPE 未额外安装任何语言包的,则 Windows 安装源请务必使用英文版,否则,上图那个报错就是例子…… 谨记 iSCSI 方式直接安装目前不受巨硬官方支持这一点,所以我查阅过的众多的官方文档从未提及这一条,而我偏偏又习惯使用简中安装源……对此我还能说啥呐,巨硬简直浪费我青春!!!我后来也试过,反之则没问题,即:WinPE加中文包来装英文版 Windows 是可行的。不过,Win10/11对多语言支持比 Win7 还是要好很多,即使采用英文版完成后进入 OS 再修改区域、安装语言包也与直接装中文版的没啥差别。以下就是我的 NUC9 在完成第一阶段安装重启后,iSCSI target 盘中的 Windows 首次系统引导画面。只有当一个人经历了几个月不计其数的失败后,才能真正体会到第一次看到这个画面那一刻的心情:
经过一段时间的试用后发现,目前通过 iSCSI 安装及引导的 Windows 有两个已知问题:
1. 关机菜单和注销是一个效果,无法完成关机。目前我能想到最好的方法就是将 “shutdown -s -f -t 0” 这条指令保存到一个唤作 Shutdown.cmd(或 .bat) 文件中,再拖一个快捷键放桌面,双击确定一下即可实现关机。若有高人找到更好解决方案的也请不吝赐教!
2. 全新安装的 Win11/10 在第一次启动时不想用 LiveID 登录的,此前有一个有效的方法就是 “拔网线” 绕过它来注册本机用户…… 但很遗憾,iSCSI 就是依赖网卡/线的,你拔下试下?!经我多次测试的结果来看,22H2 这一版也并没有完全去掉本地用户的功能,我每次新装后启动必然是遇到以下几个页面,然后点下图中的“重试”、“下一步”,反复地重复3~5次(若不行再5~10次)后,就会跳转到本地用户注册了,感觉就是换个方式恶心人罢了:
这篇安装教程有个大前提:仅适用于 NUC9/NUC6 这类能在 UEFI/BIOS 中直接配置与绑定 iSCSI target 的机器,不论是板载(On-board)或直立(Riser)网卡,如图:
而对于本身不支持这个特性的机器,如:网卡/主板不支持、VMware 虚拟机等,则需要借助 iPXE 这个支持配置 root-path、keep-san 等参数的引导工具,先正确地 sanhook ${root-path},随即利用其 chain 脚本命令通过 wimboot 直接引导 boot.wim 文件进入 PE 环境后,再进行 Windows安装。不过,我偏好 WDS 除它图形化管理方便外的另一个重要原因是,WDS 同时也是 tftp/bootp 服务器,我测试过可完美取代 iPXE 所需要的第三方 tftp 服务器(如 TinyPXEServer),将 wimboot 和 .ipxe 脚本放在 WDS 服务器中正确的位置即可实现 chain 方式引导。至于具体如何实现,在这个教程中就不展开了,确有看官感兴趣的我再另开个教程细说 —— 言下之意,这个教程全程都不会用到 iPXE。
另外一点,假如该 iSCSI target 需要提供给多台不同的机器使用的,那么在服务器端配置 iSCSI Initiator 时,请务必添加一个 “*”,这尤其对 VMware 这种天然无法配置 iqn-initiator 的最实用。可能有人会担心 iSCSI target 的 CHAP 问题,我也测试过了,启用或不启用都没问题,如下图中除 test-iscsi 这个 target 关闭了 CHAP 外,其余都是启用的。毕竟 NUC9 本身的配置是可以保存 CHAP 验证信息的,但这并不是说诸如 VMware 这类的就不行,因为 iPXE 是有相对应的 username 和 password 的 Login 参数的,此帖不展开。
已实测 NUC9 板载的两张网卡分别都能完成安装,但依旧建议类似有两张甚至多张网卡的,在安装阶段仅启用其中一张,有需要多张网卡分别安装多个系统的,也建议逐一按这个原则操作。同一张网卡同时绑定了多个 iSCSI target 的,请务必确保准备用来安装 Windows 的那个 target 的顺序排在首位,避免在安装过程中出现一些奇怪的问题,比如我遇到整盘全新分区时不正常的情况。这里又引出两个概念:iSCSI target 的排序,和开机的引导顺序(Boot Order/Priority)是不同的,这里讲的是前者,千万不要混淆。一旦安装完成后,就可以像本地盘一样,按各自喜好随便怎么调整了,即使两张甚至多张网卡同时接网线也完全没问题。因为,前面已讲了,引导都写入各自 iSCSI target 中的 Offline DriverStore 中了。
需要指出的是:仅有标记为 0 的 LUN 才能实现引导,所以,这里又有两个隐含信息:
1. 需要安装 OS 的 iSCSI target 的 LUN=0,而仅作存储用途的 LUN 不必为0;
2. 即使同一张网卡上绑定了多个 LUN=0 的 target,对该网卡而言也只有排在 “最前面” 那个才能列入 Boot Order,至少我这台 NUC9 是这样的。
以上限制对网卡多的来讲完全不是个事儿,若需要装 10 个 OS 而恰好有 10 张网卡的,就可将它们一对一绑到 10 张卡上按需切换,只要自己能分得清 Boot Order 中谁是谁。但独一张网卡的也不必担心,也可以将那 10 个 target 同时绑定,毕竟同一台机器切换 OS 必定要重启,进 UEFI/BIOS 调整一下 iSCSI target 排序也花不了多少时间。
比如我自己目前配置的默认情况就如下图所示,其中的“磁盘3”就是 NUC9 前面板的SD槽,而 Boot Order 实际上是可以进 UEFI 再调整的,另外一点,只有当通过 iSCSI 原生安装时,iSCSI target 盘才有机会如下图所示排在 SD 卡槽的前面,而从 SD 卡 Clone 过去的就不可能:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|