注意:此处无盘本人仅BIOS启动成功,UEFI无法安装系统,没有找到解决方案。如果有会手工添加网卡PNP的,本人愿闻其详。
先上测试视频
本人制作好了母盘,并且都配置好了文件。 通过虚拟机,启动两台模拟机测试。
无盘系统测试视频
===============================教程开始==================================
1.准备一台电脑或者虚拟机,安装好ubuntu或debian系统,其他系统也可以,主要是为了搭建服务器。 2.准备一台支持 从网卡启动的电脑(也可以用虚拟机测试。),并设置成BIOS启动,而不是uefi。 3.如果家里面的路由器是用的是openwrt路由器,那么可以直接使用它提供的服务,如果不是的话,需要自己搭建一个dhcp服务。 4.准备windows8镜像,此处已备好下载链接: ed2k://|file|cn_windows_8_1_x64_dvd_2707237.iso|4076017664|839CBE17F3CE8411E8206B92658A91FA|/ 安装密钥:XHQ8N-C3MCJ-RQXB6-WCHYG-C9WKB 使用KMS批量激活密钥:GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 5.本贴所需的部分文件下载地址:https://download.csdn.net/download/qq_21491871/15113489 ## 1.配置路由(DHCP) **openwrt路由:** 在 /etc/config/dhcp 配置文件里,`config dnsmasq 'dnsmasq'`节尾部添加以下内容
list dhcpmatch 'set:bios,option:client-arch,0'
list dhcpmatch 'set:EFI_x86-64,option:client-arch,9' #本行可以删除,如果想要引导UEFI,那么就需要 这一行。
list dhcpmatch 'set:EFI_64,option:client-arch,7' #本行可以删除,如果想要引导UEFI,那么就需要这一行。
#uefi引导需要在下面添加uefi的二进制文件
list dhcpmatch 'set:ipxes,option:user-class'
list dhcpboot 'tag:bios,ipxe.pxe' #【无盘引导文件】 文件需要自己在上面的文件找,
list dhcpboot 'tag:ipxes,load.ipxe'#【无盘引导文件】
在/etc/dnsmasq.conf里面,尾部插入
enable-tftp
tftp-root=/www/tftpboot #此处修改为你openwrt 本地目录,这个目录是储存【无盘引导文件】的。
然后重启服务/etc/init.d/dnsmasq restart
** 自建服务(debian或ubuntu系统) **
配置next-server【tftp服务器指定为 debian或ubuntu 的IP】
filename【引导文件】为ipxe.pxe
请参考下面两个网站所提供的配置教程
https://forum.ubuntu.org.cn/viewtopic.php?t=486871
.
注意上面的网址里面的【boot.ipxe】就是上面的load.ipxe,undionly.kpxe就是上面的ipxe.pxe.
https://www.pianshen.com/article/2344659053/
2.配置load.ipxe文件。
一会儿把iscsi服务搭建好了再说,现在先不急。
3.配置lvm
可以创建快照的东西,这样可以减少文件占用,在我提供的tgtool工具里面,所用到的就有lvm。
sudo apt-get -y install lvm2.
剩下的请参考我之前的文章
https://blog.csdn.net/qq_21491871/article/details/113646284?spm=1001.2014.3001.5501
4.搭建tgt服务(这一步必须要在debian或ubuntu系统下,如果动手能力强的,也可以在openwrt下。)
如果有机器实在安装不上的,直接去github上面克隆一个tgt仓库,然后自己编译一个最新版的。
如果编译报错,请修改gcc版本,上面压缩包提供的文件就是本人手动编译的tgt,从源码构建然后修改端口的。本人提供的tgt版本时V1.0.72版本,可以使用./tgt -version 查看
https://www.jianshu.com/p/f66eed3a3a25
#GCC版本切换教程
sudo apt install tgt #安装iscsi服务。
我提供的压缩包里面,也有tgt二进制文件,请与tgtool放在同一个目录,我提供的tgt二进制文件服务端口是3261,而默认的tgt服务端口是3260,如果是能看懂我的tgtool里面的源代码,那么可以不用配置tgt。
请参考下面的配置教程,注意,像指向/dev/sdan之类的文件,可以指向自己LVM的逻辑盘或者快照,
注意iqn命名,切记不能有大写,否则在windows下会出现bug(无法链接)!!!
http://www.voidcn.com/article/p-yujyxehg-cs.html
5.配置load.ipxe
load.ipxe内容
#!ipxe
set keep-san 1
set root-path iscsi:<服务器IP>::<iscsi服务端口>::<IQN名字>
prompt -k 0x197e -t 2000 Press F12 to install Windows... || exit
如果想要DIV一个带有选择菜单之类UI的可以参考下面的教程
https://blog.csdn.net/xinlan3618/article/details/104516260
6.启动客户机,无盘启动。
如果iscsi磁盘没有进行过操作的,那么在客户机中就可以通过ipxe 初始化操作之后,就可以直接通过光驱或者USB进行系统安装。本人在vmare虚拟机中测试通过,使用windows10镜像会在安装的初步阶段就蓝屏,貌似提示显卡驱动的问题,换过server 2012 ,server 2016 系统,但是UI不友好,win7兼容性差,所以就想到了win8,个人觉得win8有win10的“win10移动性”,win8除了开始菜单不太好以外,其他的还好。
“win10移动性”:就是说你装有win10的电脑硬盘换到其他主板上也一样可以使用,他会在你启动机器的时候自动安装驱动,而win7不行。
7.压缩包文件说明:
某些文件上面介绍过的就不介绍了。
tgtool:可以代替tgt的初始化文件,直接通过tgtool来控制tgt服务。
./tgtool start #启动服务
./tgtool stop #关闭服务
./tgtool load N #加载N个虚拟快照,用于创建多个独立的启动镜像文件。这里创建了,还需要你在load.ipxe 中分配个某台电脑。
./tgtool list #查看当前已经加载了多少快照,可以显示iqn名字,其中可以显示某个iqn下有哪些客户链接,
./tgtool delete #清理没由本脚本创建的快照。
./tgtool reload #重置已经加载的快照。
./tgtool target #用tgtadm 原始命令来列出tgt信息。
./tgtool orgin #加载母盘到tgt服务上面。请修改 tgtool中的orgin=【你的母盘位置,我指向的是LVM中iscsi池中的win8_BIOS_SYS 逻辑分区】
exit.exe
利用windows内核来达到闪电关机。对于快照来说,这种闪电关机并没有什么影响。
ModifyHostname.bat
设置主机名字的脚本,这样可以在电脑开机时强制修改主机名,但是不能更改电脑在网络中的名字
WindowsDefenderRemoveScript.zip
直接解压文件夹,不要一个文件解压。可以删除Defender。
BOOTICEx64.exe
pe中的工具,请自行百度
power.ps1
开机脚本
请自己去修改脚本,这个与ModifyHostname.bat 放在同一个命令,可以实现在windows 用户登陆之前进行的操作。
修改里面的start.php链接,变成自己的,那么可以在电脑启动完成后,拉取自己的powershell脚本执行。
shutdown.ps1
关机脚本
里面的stop.php也可以修改为自己的,当电脑执行关机时,执行一下这个脚本。
上面的开机脚本和关机脚本都需要自己在windows中【组策略】设置,
请参考下面的教程,注意是powershell脚本
https://www.pianshen.com/article/78081395830/
8.其他说明:
在DHCP配置load.ipxe文件的时候,可以指向一个网站的文件,比如
http://192.168.1.102/boot.php?mac=${net0/mac}
这样就可以通过机器的mac来动态分配iqn【虚拟磁盘了】。
如果不修改load.ipxe 让多台电脑启动同一个镜像的话,虽然对母盘没有影响,但是会出现数据错误,所以不建议。
像主机母盘制作好以后,在其他客户机上用快照启动win8,会显示你第一次安装windows的那个“有朋自远方来,不亦说乎”之类的UI,可以去母盘,从组策略中关闭。【计算机配置-管理模板-系统-登录-显示首次登录动画】改为已禁用。
[完]