今天抽時間折騰了一套無盤的 win10,簡單來講,使用 ipxe 網(wǎng)絡(luò)啟動,將 win10 安裝到網(wǎng)絡(luò)的 iscsi 硬盤(存在服務(wù)器上的單獨文件)中,然后正常啟動。這中間主要使用的幾個軟件工具及作用如下:
我用的 virtualbox 進行的測試,virtualbox 中創(chuàng)建了 openwrt,ubuntu, wins 三個虛擬機。并且在同一個內(nèi)網(wǎng)中。openwrt 用來做網(wǎng)關(guān)和提供 dhcp 服務(wù),因此需要雙網(wǎng)卡。ubutu 我為了主機訪問文件方便,也弄了個雙網(wǎng)卡。具體的使用和配置可以從網(wǎng)上搜索。wins 配置從網(wǎng)絡(luò)啟動,不添加硬盤,不從 uefi 啟動。
因為我的 openwrt 僅僅提供基本的網(wǎng)絡(luò)服務(wù),因此其他的服務(wù)都是在 ubuntu 這個系統(tǒng)中的,包括 tftpd 服務(wù),因此需要將 tftpd 的訪問信息攔截并轉(zhuǎn)發(fā)到 ubuntu 中。dnsmasq YYDS!!。在/etc/dnsmasq.conf 中添加下面的內(nèi)容
dhcp-option-force=211,60i #這個好像是設(shè)置超時的
dhcp-option=option:tftp-server,192.168.1.127 #這個設(shè)置真實的tftp服務(wù)器的,這個ip就是ubuntu系統(tǒng)在內(nèi)網(wǎng)中的服務(wù)器,不能跨網(wǎng)段,本文中調(diào)到的這個ip需要換成實際的
dhcp-boot=ipxe/netboot.xyz.kpxe,192.168.1.127,192.168.1.127 #這個是bios方式的ipx啟動文件,后面的是tftp服務(wù)對應(yīng)的域名和ip
dhcp-match=set:efi-x86_64,option:client-arch,7 #這兩行是efi啟動方式,我沒有測試過
dhcp-boot=tag:efi-x86_64,ipxe/netboot.xyz.efi,192.168.1.127
下面這些其實都可以扔到 openwrt 中,只是我沒有想著擴充 openwrt,好像硬盤只有 1G 還是多少的。ubuntu 系統(tǒng)安裝 docker, tgt。
apt-get -y remove docker docker-engine docker.io containerd runc
apt-get -y update
apt-get -y install ca-certificates curl gnupg lsb-release tgt
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update -y
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#普通用戶想要執(zhí)行docker命令可以在普通用戶權(quán)限下運行這個添加權(quán)限
#sudo usermod -aG docker $USER
ipxe 等服務(wù)的 docker 啟動配置
version: '3'
services:
tftp:
image: pghalliday/tftp
restart: always
volumes:
- ./buildout/buildout:/var/tftpboot:rw
ports:
- "69:69/udp"
- "69:69/tcp"
logging:
driver: "json-file"
samba:
image: andyzhangx/samba:win-fix
command: "-r -w WORKGROUP -s \"share;/share;yes;no;yes;all;all\" "
restart: always
environment:
- TZ=CST6CDT
- NMBD=true
- FILEMASK=0777
- DIRECTORYMASK=0777
- FORCEGROUP=root
- FORCEUSER=root
- USERID=0
- GROUPID=0
volumes:
- /data:/share #/data中的目錄將被顯示在共享文件的share中
ports:
- "139:139"
- "445:445"
logging:
driver: "json-file"
web:
image: nginx:alpine
restart: always
ports:
- "80:80"
volumes:
- ./buildout:/var/www/html:rw
- /data:/var/www/html/buildout/iso:rw
- ./nginx-site.conf:/etc/nginx/conf.d/default.conf:rw
logging:
driver: "json-file"
配置中的 nginx 的配置文件:
server {
listen 80;
server_name localhost;
root /var/www/html/buildout;
index index.php index.html index.htm;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 512m;
client_body_buffer_size 512m;
autoindex on;
location / {
try_files $uri $uri/ /index.html;
}
}
roles/netbootxyz/files/ipxe/local/general.h 中添加如下配置,開啟 sanboot 相關(guān)功能
#define PXE_STACK /* PXE stack in iPXE - you want this! */
#define PXE_MENU /* PXE menu booting */
#define DOWNLOAD_PROTO_NFS /* Network File System Protocol */
#define SANBOOT_PROTO_ISCSI /* iSCSI protocol */
#define SANBOOT_PROTO_AOE /* AoE protocol */
#define SANBOOT_PROTO_IB_SRP /* Infiniband SCSI RDMA protocol */
#define SANBOOT_PROTO_FCP /* Fibre Channel protocol */
#define SANBOOT_PROTO_HTTP /* HTTP SAN protocol */
#define PXE_CMD /* PXE commands */
user_overrides.yml 中修改相關(guān)配置:
boot_domain: 192.168.1.127
bootloader_http_enabled: true
我寫了個小腳本來進行 netbootxyz 的編譯:
#!/bin/bash
cd netboot.xyz
docker build -t localbuild -f Dockerfile .
docker run --rm -it -v $(pwd)/../buildout:/buildout localbuild
netbootxyz 構(gòu)建出的 menu.ipxe 中添加下面的內(nèi)容(我的在 buildout 目錄中):
#item --gap Default: 這行下面添加
item win10_boot ${space} win10_64_boot
item win10_install ${space} win10_64_install
#下面的添加到最后
:win10_boot
echo "boot win10 from iscsi"
set keep-san 1
#ip地址需要注意,對于默認(rèn)的tgt來說,iqn之前的冒號前有個1
sanboot iscsi:192.168.1.127:::1:iqn.rix.test.win:win10 || goto mainmenu
:win10_install
echo "install win10 to iscsi"
imgfree
set keep-san 1
sanhook iscsi:192.168.1.127:::1:iqn.rix.test.win:win10
kernel http://${boot_domain}/wimboot
initrd http://${boot_domain}/iso/win10/boot/bcd BCD
initrd http://${boot_domain}/iso/win10/boot/boot.sdi boot.sdi
initrd http://${boot_domain}/iso/win10/sources/boot.wim boot.wim
boot
上面的 iso/win10 目錄下存放的是從 win10 鏡像中解壓縮出來的文件
我的 tgt 沒有放到 docker 中,所以單獨配置下吧。在/etc/tgt/conf.d 目錄下隨便添加一個.conf 后綴的文件,內(nèi)容如下:
<target iqn.rix.test.win:win10>
backing-store /data/disks/win.img
</target>
上面的那個 iqn 是很重要的,配置啟動的時候需要用到。然后使用下列命令創(chuàng)建一個磁盤鏡像:
fallocate -l 40G /data/disks/win10.img
我將所有磁盤鏡像,windows 的安裝文件啥的都扔在/data 目錄下。重啟并檢查 tgt:
sudo systemctl restart tgt
sudo tgtadm --mode target --op show #這個命令應(yīng)該可以看到我們的iqn以及對應(yīng)的磁盤文件
win10 的虛擬機啟動,如果準(zhǔn)備工作正確的話,會看到 netboot.xyz 的界面,并且看到我們添加的自定義的菜單,然后選賊 win10_install。正確的話,會啟動 win10 的安裝流程,這個在虛擬機中運行的時候,等待的時間比較長,也可能是以為我給虛擬機分配的內(nèi)存比較少。總之,如果看到 win10 的選擇語言的選項,就說明正常了。
如果這個時候按照正常的安裝邏輯的話,在安裝程序啟動后,會找不到磁盤。所以,我們在語言之后,要選擇“修復(fù)計算機”->“疑難解答”->“命令行提示符”然后在彈出的命令行中輸入以下代碼:
net use \\192.168.1.127\share
\\192.168.1.127\share\win10\sources\setup.exe
第一行表示使用共享目錄。第二行執(zhí)行共享目錄下 win10 目錄中原始的安裝程序。之后和正常的 win10 安裝一樣了。最后到倒計時重啟。重啟后,選擇 win10_64_boot 這項進行啟動,以后都可以使用這個來進行啟動。
使用流程除了從網(wǎng)絡(luò)啟動外,其他的和有磁盤的方式?jīng)]太大區(qū)別。默認(rèn)的情況下,數(shù)據(jù)也可以保存,數(shù)據(jù)保存是自動通過網(wǎng)絡(luò)保存到服務(wù)器上的,只是啟動的過程比較慢,文件讀寫涉及到網(wǎng)卡速度,估計大文件會比較慢。
使用這種方式創(chuàng)建的無盤系統(tǒng)只是作為一個參考,比不得專業(yè)的無盤系統(tǒng)的效率。
這里來簡要說明一下什么是無盤系統(tǒng)?
什么是無盤系統(tǒng)
無盤系統(tǒng),泛指由無盤工作站(普通電腦)組成的局域網(wǎng)。相對于普通的PC機,無盤工作站可以在沒有任何外存(軟驅(qū)、硬盤、光盤等)支持的情況啟動并運行操作系統(tǒng)。為了支撐這樣的網(wǎng)絡(luò)構(gòu)架,需要采用專門的軟件系統(tǒng),此類的軟件成為整個無盤系統(tǒng)的組成部分之一。
工作原理
1. 無盤工作站的網(wǎng)卡配有啟動芯片(Boot ROM),當(dāng)工作站以LAN方式啟動時,它會向服務(wù)器發(fā)出啟動(操作系統(tǒng)文件鏡像)請求信號.
2. 服務(wù)器收到后,根據(jù)不同的機制,向工作站發(fā)送啟動數(shù)據(jù),工作站下載完啟動數(shù)據(jù)(系統(tǒng)鏡像文件)后,系統(tǒng)控制權(quán)由Boot ROM轉(zhuǎn)到內(nèi)存中的特定區(qū)域,并引導(dǎo)服務(wù)器上的操作系統(tǒng)鏡像文件從而啟動系統(tǒng)。
3 . 根據(jù)不同的啟動機制,目前比較常用無盤工作站可分為RPL、PXE及 虛擬硬盤等啟動類型,目前國內(nèi)外主流的無盤系統(tǒng)均為基于PXE 的虛擬硬盤模式(網(wǎng)卡引導(dǎo)啟動)。
應(yīng)用范圍
無盤網(wǎng)絡(luò)系統(tǒng)可以應(yīng)用在網(wǎng)絡(luò)教室,企業(yè)內(nèi)部局域網(wǎng)、網(wǎng)吧、酒店、點歌娛樂行業(yè)及一切無盤網(wǎng)絡(luò)的組建和改造。
1、 適用于學(xué)校無盤網(wǎng)絡(luò)教室的組建或改造
2、 適用于大中小型公司、企事業(yè)單位、營業(yè)廳等辦公室
3、 適用于游戲吧及網(wǎng)吧
4、 適用于酒店、KTV歌廳等(免去管理人員走進客房安裝,調(diào)試)
系統(tǒng)優(yōu)點
1. 節(jié)省網(wǎng)絡(luò)部署成本,網(wǎng)絡(luò)施工系統(tǒng)安裝工作時間縮短.(同一配置的電腦主機只需要安裝好一臺,其他所有同樣配置的主機即可全部一鍵完成安裝)
2. 易于管理和維護,采用國際主流的虛擬化桌面存儲概念,統(tǒng)一管理網(wǎng)絡(luò)中的所有的機器,統(tǒng)一軟件部署與版本更新可以集中完成,節(jié)省管理成本(只需要給一臺無盤工作站主機開啟管理模式,安裝軟件和更新后,保存之后其他同樣配置主機也一同完成更新)
3. 在普通用戶模式下,無盤工作站操作系統(tǒng)上所進行的操作,在重新啟動后均會還原初始,可以防止病毒入侵與誤操作破壞. 節(jié)省維護成本.
4.減少投資成本,所有電腦無盤工作站不用安裝硬盤,可以有效的介紹資金采購成本。
5.省電,主機少了硬盤,可以在一定程度上節(jié)省耗電!
這里我們以網(wǎng)吧無盤安裝網(wǎng)維大師無盤系統(tǒng)為案例來安裝說明。
第一步:
配置網(wǎng)絡(luò),也就是配置路由器,讓網(wǎng)絡(luò)正常接入。將網(wǎng)絡(luò)調(diào)試正常,接入到路由器并配置好,然后接入到局域網(wǎng)的核心主交換機上。
第二步:
安裝無盤服務(wù)器的操作系統(tǒng),這里建議無盤服務(wù)器的操作系統(tǒng)安裝Windows server 2008 r2 64位系統(tǒng)。具體的系統(tǒng)版本建議使用死性不改的gho安裝包即可,該系列系統(tǒng)已經(jīng)經(jīng)過優(yōu)化,專業(yè)針對網(wǎng)咖網(wǎng)吧行業(yè)的無盤服務(wù)器。
第三步:
安裝好無盤服務(wù)器操作系統(tǒng)之后,配置好網(wǎng)卡參數(shù)之后,明確服務(wù)器里面每個硬盤的作用。
備注說明:無盤服務(wù)器中要求具備:服務(wù)器本身的系統(tǒng)盤,存儲無盤工作站系統(tǒng)的鏡像盤,處理支撐無盤工作站數(shù)據(jù)的回寫盤以及負(fù)責(zé)存儲和支持無盤工作站運行游戲的游戲盤(企業(yè)無盤中可以忽略掉游戲盤)。
關(guān)于服務(wù)器硬盤的幾個建議:
1.建議服務(wù)器的系統(tǒng)盤采用intel ssd固態(tài)硬盤,建議240gb及以上,分兩區(qū),用做服務(wù)器系統(tǒng)盤和無盤工作站的鏡像盤,也可以單獨使用一塊intel 120gb固態(tài)硬盤作為無盤工作站的鏡像存儲盤(推薦)。
2.回寫盤建議最少兩個,建議使用Intel品牌固態(tài)盤。
3.游戲盤建議使用西數(shù)企業(yè)級2tb以及以上容量硬盤(也稱re4黃盤)
第四步:
準(zhǔn)備無盤工作站的系統(tǒng)鏡像,兩種方式,第一是自己安裝系統(tǒng)上傳,第二是使用萬能包直接導(dǎo)入。這里的建議是使用萬能包,能夠提供施工效率,而且萬能包也是針對網(wǎng)吧網(wǎng)咖等無盤場景經(jīng)過優(yōu)化過的。
這里依舊推薦使用死性不改的萬能鏡像包,可以到死性不改的網(wǎng)站去下載即可。詳情請見本文底下方。
我們下載完對應(yīng)的鏡像包文件之后,將其解壓到服務(wù)器的鏡像盤即可。
第五步:
從網(wǎng)維大師官方網(wǎng)站下載網(wǎng)維大師服務(wù)端最新版本,安裝無盤軟件,我們這里以網(wǎng)維大師無盤為例。
根據(jù)步驟安裝好之后,打開軟件,按照引導(dǎo)步驟,設(shè)置無盤工作站的名稱,ip。然后根據(jù)提示,導(dǎo)入提前解壓在服務(wù)器鏡像盤中的萬能鏡像包文件,導(dǎo)入完成即可。
然后在網(wǎng)維大師服務(wù)端控制臺上-基礎(chǔ)設(shè)置里面-選擇允許進行客戶機登記。
第六步:
服務(wù)器上基本上就設(shè)置完了,然后我們直接開啟所有無盤工作站(請?zhí)崆霸跓o盤工作站主板設(shè)置中開啟網(wǎng)卡lan的pxe引導(dǎo)功能),就會啟動到藍(lán)色選擇登記客戶機ip界面,根據(jù)自己想要排列的順序,選擇對應(yīng)的名稱和ip,連續(xù)點擊兩次回車即可完成無盤工作站的ip名稱綁定。
第七步:
1.登記完無盤工作站之后,所有登記過的無盤工作站就會進入到系統(tǒng)里面。這時,我們在服務(wù)器上選擇任意一臺無盤工作站,選中之后右鍵,選擇開啟超級模式,開啟之后,重啟對應(yīng)的無盤工作站。
2.開啟了超級模式的無盤工作站重啟之后,我們需要給這個超級無盤工作站安裝相對應(yīng)的驅(qū)動程序,這里建議使用驅(qū)動精靈自動安裝即可,切勿安裝電腦管家或者殺毒軟件。
3.驅(qū)動安裝完成之后,建議刪除桌面上默認(rèn)的ie瀏覽器圖標(biāo),安裝第三方瀏覽器,防止各種軟件的主頁劫持,同時也能提升視頻和網(wǎng)頁打開的速度。這里,我們一般安裝的是360極速瀏覽器。
4.這些進行完之后,刪除桌面上不必要的多余圖標(biāo),卸載掉驅(qū)動精靈,重啟超級無盤工作站。在啟動起來之后,測試耳機聲音正常,顯卡驅(qū)動正常即可。
5.將無盤工作站關(guān)機。關(guān)機之后,到服務(wù)器上客戶機列表里選擇對應(yīng)的無盤工作站,右鍵選擇關(guān)閉退出超級模式,會提示是否生成一個還原點,確認(rèn)生成保存,任意輸入一個名稱保存即可。
到這里,無盤工作站的系統(tǒng)安裝和無盤服務(wù)器的服務(wù)器設(shè)置施工差不多就完成了。
如果是企業(yè)無盤場景,如果需要安裝相應(yīng)的辦公軟件或者作圖軟件,請直接開啟任意一臺無盤工作站的超級模式,在超級模式下安裝所需要的軟件,安裝完畢之后,參考第七步第五個步驟,關(guān)機保存無盤工作站的還原點,其他的無盤工作站重新開機就會有相應(yīng)的辦公軟件和作圖軟件。
如果是網(wǎng)咖網(wǎng)吧無盤場景,還需要進行第八步:
第八步:
接第七步,再次選擇任意一臺無盤工作站,開啟超級模式,重啟無盤工作站后進入系統(tǒng),下載相應(yīng)版本的計費軟件客戶端,安裝設(shè)置即可。(請?zhí)崆奥?lián)系計費軟件相關(guān)人員輔助完成服務(wù)端的安裝)。
第九步:
企業(yè)無盤場景請忽略本條步驟。在服務(wù)端上選擇所需要的游戲進行下載即可,建議根據(jù)全局dp值下載即可。
參考資料:
死性不改系統(tǒng)下載:http://www.clxp.net.cn/forum.php
歡迎有興趣的朋友一起討論,QQ:511254851 微信號:Aptclz7 (推薦微信交流)
新浪微博認(rèn)證帳號:網(wǎng)維田野