自从去了一次网吧,就对网吧的无盘启动念念不忘,想在家里实现无盘启动以节省我的固态硬盘。

准备无盘启动的电脑是一台老旧的Lenovo G460电脑,因为硬盘是机械,运行非常卡顿,但家里又没有可以代换的固态硬盘。于是我打算通过共享服务器上的iSCSI磁盘来加速其运行

0.可能存在的一些坑

0.注意事项

本教程仅供参考,有些地方需要自己会随机应变,比如你的电脑比较新,那么就无需ipxe.pxe文件启动,可采用链式启动;你的网卡不是小螃蟹的,就不需要处理小螃蟹驱动的问题

虽然教程看起来比较简单,但是暗藏的坑还是比较多的,本人折腾了整整两天才成功

1.iPXE卡在iPXE initialising devices

这可能是由于网卡/BIOS过于老旧,导致无法通过链式启动undionly.kpxe文件,可以尝试换用其他方式启动,如通过更换ipxe.pxe或ipxe.iso等文件启动

2.Windows安装报错驱动无法安装(Windows installation cannot continue because a required driver could not be installed)

这是由于驱动原因导致大于Windows 10 1607的版本都无法兼容网启(好像会缺少正确的驱动,可能是机器网卡的问题),目前我的机器仅能启动Windows 10 1607的英文版本(中文版本无法启动,安装会报错,强制写入也蓝屏)。目前推荐使用Windows 10 2016 LTSB英文版

3.使用WinNTSetup强制写入后出现蓝屏并报错inaccessible boot device

详见0.2

4.启动时报错rt640x64.sys驱动程序签名错误

不知为何,Windows 10 LSTB/Windows 10 1607中自带的rt640x64.sys驱动签名全部为无效,手动在WindowsPE中替换可以正常启动

1.准备需要的环境和文件

需要的环境:

DiskStation(群晖)
关闭内网DHCP服务

需要的文件:

iPXE官方仓库:网页链接,将其克隆到本地
Windows10 2016 LTSB英文版镜像:请从MSDN下载(如果你的电脑比较新,可以试试稍微新一点的Windows版本
winboot:网页链接,用于启动WindowsPE(下方下载的脚本中已自带winboot)
WindowsPE:网页链接,可自行制作,本人此处不提供具体教程
启动脚本:网页链接,用于网启的脚本,可参考此自行编写

2.上传文件到群晖

将步骤1下载的启动脚本以及WindowsPE解压并上传到群晖。目录结构如下

1
2
3
4
5
6
7
8
9
10
11
12
www
-ipxe
-boot.ipxe
-boot.ipxe.cfg
-menu.ipxe
-script.ipxe
-winboot
-winpe
-x64
-....
-x86
-....

3.搭建Web服务器以动态返回启动脚本

在群晖中安装Web Station套件

点击网页服务门户->创建服务门户

然后选择虚拟主机,并选择基于端口8080,文档根目录选择刚才上传的www目录,然后点击新增

最后,尝试访问http://[你群晖的IP]:[你刚才输入的端口]/ipxe/boot.ipxe查看是否正常返回

4.编译iPXE

为编译的ubuntu系统安装以下依赖

1
2
sudo apt update
sudo apt install make gcc liblzma-dev isolinux

克隆仓库https://github.com/ipxe/ipxe,并进入目录ipxe/src

创建script.ipxe文件,并向其中写入

1
2
3
4
#!ipxe
dhcp
chain --autofree http://172.16.1.4:8080/ipxe/boot.ipxe
# 注意,此处URL替换为你刚刚创建的Web服务器地址

然后输入以下命令即可开始编译

1
make bin/ipxe.pxe EMBED=script.ipxe

编译成功后即可在ipxe/src/bin目录找到刚才编译的ipxe.pxe文件(当然你编译其他类型的启动文件也无所谓,比如undionly.kpxe等

5.开启群晖TFTP服务

在文件服务–>高级设置–>启用TFTP服务点击启用

6.配置DHCP服务器

当然,如果你的DHCP服务器支持设置next-server(比如iKuai),你也可以不使用群晖的DHCP,而使用你原来的DHCP,以免对网络结构造成影响

将你的DiskStation设置为固定IP,并关闭路由中的DHCP功能

在DiskStation中下载DHCP Server服务

打开DHCP Server套件,选中第一个局域网(就是你想开DHCP服务的局域网),点击编辑

在弹出的窗口中设置DNS后,点击新增子网

按照提示配置DHCP子网,DHCP选项无需改动

在PXE栏目选择你编译生成的ipxe文件,比如ipxe.pxe(需将此文件上传到tftp目录)

7.创建iSCSI磁盘

打开群晖中的SAN Manager插件

跳转到iSCSI栏目,选择新增target,名称可以随意,IQN只要符合IQN规则就可以了,勾选启用CHAP,设置账号密码(最好设置,否则这块虚拟盘可以被局域网的任何用户直接访问。有些博客说设置后无法启动Windows,但是本人测试并无问题,所以建议开启)

下一步选择创建新的LUN(当然你用旧的应该也没问题)

在设置LUN属性中选择存储、容量,并且推荐使用Thin Provisioning模式,方便为磁盘拍快照

8.修改启动脚本

在刚才上传的启动脚本ipxe/boot.ipxe.xfg文件中,修改iscsibase-url地址

1
2
3
4
5
#!ipxe
set iscsi-server 172.16.1.4 #修改为你的iSCSI服务器IP,也就是你群晖的IP
set base-url http://172.16.1.4:8080 #修改为你第3步搭建的Web服务器的地址
set menu-timeout 5000 #菜单延迟(单位为毫秒)
set menu-default windows #菜单默认进入的项

修改完成后保存

然后在ipxe/cfg文件夹下创建一个命名规则为mac-[客户机mac地址小写].ipxe.cfg的文件(示例:mac-1c758053da09.ipxe.cfg)

在其中配置你iSCSI的IQN和CHAP认证的账户名密码

1
2
3
4
#!ipxe
set username test #CHAP认证的账户名
set password ttttttttt123 #CHAP认证的密码
set iscsi-iqn iqn.2000-01.com.synology:DiskStation-3.Target-1.35355 #iSCSI的IQN

9.准备Windows安装文件

将下载的Windows镜像解压到U盘,网卡驱动也解压到U盘。备用

10.通过网络启动并安装系统

客户机插上网线,选择网卡引导

不出意外的话,应该会进入一个菜单页面

我们选择第三项,进入64位PE,出现以下图片表示引导成功

进入WindowsPE以后,我们发现这只有一个命令行(因为太懒,只用了Windows最基础的WindowsPE,其他什么都没改)不过不用慌,命令操作也很简单

插入步骤9创建的U盘,并使用dir命令从C:\依次往下测试,直到找到U盘,然后使用cd /d命令切换到U盘目录。然后切换到windows文件夹,运行setup.exe程序(K1)

进入到安装程序后,就按照常规流程安装即可。安装完成后会自动重启,重启到那个菜单页面后,我们再次选择WindowsPE,进入PE来替换驱动

进入PE后,用(K1)方法找到U盘和刚安装的系统盘,输入以下命令替换驱动

1
2
3
# X代表你的U盘、Y代表你的系统盘
move Y:\Windows\System32\drivers\rt640x64.sys X:\
copy X:\lan_realtek_10.021.0811.2017_w1064\rt640x64.sys Y:\Windows\System32\drivers\

替换完成后,重启,即可进入Windows

11.完成!

最后,成功安装Windows。且可以进行系统更新。

欢迎各位大佬在评论区指出错误或讨论!


广告
广告正在加载中...
暂不开放评论,如对本文有任何疑问,请联系i#mr-wu.top(#替换为@)