# iVentoy 安裝教學與設定 iVentoy是由著名的ISO引導工具Ventoy的作者`longpanda`所開發的另一款方便的工具,此工具的目標是透過PXE伺服器,讓開機引導與啟動能做到連隨身碟都不需要準備,且系統在使用上也相當便捷,非常適合與OpenWrt這樣的軟路由系統整合使用,讓系統安裝能不再麻煩,簡化使用者的困擾! :::spoiler 目錄 [TOC] ::: ## 下載軟體 網站連結:[請點我](https://www.iventoy.com/cn/)、GitHub Release:[請點我](https://github.com/ventoy/PXE/releases) ![](https://hackmd.io/_uploads/Syg_Pa_Ma.png) **Step 1)** 在進入到網站後,請點選左側數來第三項的『下載』,進入到下載網站 ![](https://hackmd.io/_uploads/r1gzOTOfp.png) **Step 2)** 在下載網頁中,往下滾動,會有兩組下載連結,建議優先選用『123網盤』,或是直接從GitHub下載 ![](https://hackmd.io/_uploads/ryR_iaOfT.png) **Step 3)** 下載完成後,會出現畫面中的三個版本,本次教學主要以Linux環境為主,將會使用到『iventoy-1.0.19-linux-free.tar.gz』這個檔案 ## 複製,解壓縮與測試 為了降低文件的複雜度,因此不再說明如何安裝系統,僅提供硬體規格與安裝過程的項目: - 發行版:Debian 12 (bookworm) - 硬碟大小:32G (可根據自己的需要調整) - 記憶體大小:2GB - 安裝項目: - **無桌面環境** - SSH伺服器 - 標準系統工具 ![](https://hackmd.io/_uploads/H1dRTTuG6.png) **Step 1)** 開啟終端機,透過SCP指令,將檔案複製到計畫安裝PXE伺服器的主機中 ![](https://hackmd.io/_uploads/BJzIRTdfp.png) **Step 2)** 預計以系統服務的方式運作,因此改放到Root家目錄 ![](https://hackmd.io/_uploads/H11jCaOzT.png) **Step 3)** 透過TAR將檔案解壓縮到目錄中 ![](https://hackmd.io/_uploads/BJZ-10df6.png) **Step 4)** 進入資料夾中,確認存在如圖片中的檔案內容 ![](https://hackmd.io/_uploads/S10UyA_GT.png) **Step 5)** 直接使用iventoy.sh將會顯示可用的指令,透過start參數啟動服務,可在瀏覽器上輸入『http://\<host ip\>:26000』檢視管理介面 ![](https://hackmd.io/_uploads/BkKSUCuMp.png) *iVentoy提供的網頁管理介面* :::warning 由於此軟體會讀取硬體的UUID,因此,無法安裝在沒有權限讀取『/sys/class/dmi/id/product_uuid』的環境,在開始安裝前,可以先用『cat \<file path\>』確認系統是否會出現Access Denied,或是在啟動軟體後,到log資料夾中查看『log.txt』文件,確認是否有出現錯誤資訊! ::: ![](https://hackmd.io/_uploads/ryGG-RuGT.png) **Step 6)** 測試正常後,請輸入stop參數,先將工具停止運作 ## 將iVentoy註冊為系統服務 透過註冊為系統服務的方式,可以讓使用上更為方便,也省去每次都要手動啟動與關閉的困擾,這裡以系統內含的systemd作為管理工具,並提供對應的範例設定檔,方便管理與使用! ![](https://hackmd.io/_uploads/SJiD_Adfa.png) **Step 1)** 進入到存放系統服務的資料夾中,路徑為『/etc/systemd/system/』,建立服務檔案『iventoy.service』 ![](https://hackmd.io/_uploads/rJZauA_Mp.png) **Step 2)** 修改執行權限,讓systemd可以讀取檔案內容 ![](https://hackmd.io/_uploads/B1aNt0dG6.png) **Step 3)** 透過編輯工具加入服務的相關內容 ```toml [Unit] Description=iVentoy PXE Server with Web Management Service After=network-online.target Wants=network-online.target [Service] Type=forking WorkingDirectory=/root/iventoy-1.0.19/ ExecStart=/root/iventoy-1.0.19/iventoy.sh start ExecStop=/root/iventoy-1.0.19/iventoy.sh stop Restart=always RestartSec=2s [Install] WantedBy=multi-user.target ``` :::info 請注意以上的內容,WorkingDirectory要指定到工具的資料夾,這是為了能正確使用到作者準備好的C Library,而ExecStart對應的是啟動指令,ExecStop則是停止指令,其他部分則請根據自己的需求進行修改或調整。 ::: ![](https://hackmd.io/_uploads/SJKSsAdza.png) **Step 4)** 修改完成後,請讓systemd重新載入一次所有的service檔案,將服務註冊進去 ![](https://hackmd.io/_uploads/rkFJ2A_za.png) **Step 5)** 透過systemd啟動iventoy,確認是否有出現錯誤,或是反覆啟動服務的狀況 ![](https://hackmd.io/_uploads/BJGa2Cuzp.png) **Step 6)** 將iventoy服務設定為開機自啟動,會在網路狀態為上線後,工具才開始運作 ![](https://hackmd.io/_uploads/SJPHpAuf6.png) **Step 7)** 重新啟動系統,稍後確認是否有正常開始運作 ![](https://hackmd.io/_uploads/SkZhTRdMT.png) **Step 8)** 透過『systemctl status』確認iventoy服務是否有出現 ## 分享器、路由器、軟路由設定 這裡以最多人使用的OpenWrt系統作為範例,加入必要的設定值,讓在同一個網路的裝置可以正確找到我們建立好的PXE伺服器! ![](https://hackmd.io/_uploads/B1TDWkKMp.png) **Step 1)** 請先進入Network區塊的『DHCP and DNS』中 ![](https://hackmd.io/_uploads/rym8M1tMT.png) **Step 2)** 切換到Static Leases分頁後,點選左下的綠色『ADD』按鈕 ![](https://hackmd.io/_uploads/B1I3ZJFzp.png) **Step 3)** 設定喜歡的Hostname,找到機器的MAC address與指定想分配的IP位置,最後請按下右下角的『SAVE』按鈕 ![](https://hackmd.io/_uploads/BJvemktfT.png) **Step 4)** 切換到PXE/TFTP Settings分頁,點選左下角的綠色『ADD』按鈕 ![](https://hackmd.io/_uploads/Hk04m1tMT.png) **Step 5)** 填寫前三個欄位即可,詳細說明如下 :::info - Filename:對應網站上所說的`bootfile`,請設定為==iventoy_loader_16000== - 16000對應的是PXE Server上的TFTP Port,若有修改預設值,這裡也需要修改 - 若不是OpenWrt,請用DHCP Option 67 - Server name:指定TFTP伺服器的名稱,網站上並未提及,建議設定為剛剛儲存的Static Lease名稱 - 若不是OpenWrt,請用DHCP Option 66 - Server address:對應網站上的`next-server`,請設定為PXE Server的實際IP - 若不是OpenWrt,可嘗試DHCP Option 150 ::: ![](https://hackmd.io/_uploads/r1YY8ytzT.png) **Step 6)** 儲存後,可透過WireShark等封包偵測工具,檢查是否有正確設定 ![](https://hackmd.io/_uploads/ByjSvJtMa.png) *此圖片為DHCP ACK封包的資訊,可以注意到Next server, Server host name, Boot file name都已正確顯示為我們在OpenWrt上設定的資訊!* ## 驗證是否有效 在此,透過在相同內部網路的Proxmox VE虛擬環境測試設定好的PXE伺服器是否有用。 ![](https://hackmd.io/_uploads/Byl8KJYz6.png) **Step 1)** 建立測試使用的虛擬機器,不設定任何開機光碟 ![](https://hackmd.io/_uploads/B11Jj1KzT.png) **Step 2)** 上傳想透過PXE啟動的系統映像,映像請放在工具內的iso資料夾中,可透過前面提到的SCP指令進行操作 ![](https://hackmd.io/_uploads/SyFXiJKMT.png) Step 3) 到PXE Server管理介面中,選擇『Image Management』分頁,按下綠色的『Refresh』,確認剛剛上傳的映像有出現在列表中 ![](https://hackmd.io/_uploads/BySPcyFfT.png) **Step 4)** 回到『Boot Information』分頁,按下右側的運作按鈕,正常應該會如圖片所示,寫著『RUNNING』字樣 ![](https://hackmd.io/_uploads/HyrRoytfT.png) **Step 5)** 將虛擬機器開機,正常將顯示如畫面的載入資訊 ![](https://hackmd.io/_uploads/rJ9WhktMa.png) **Step 6)** 成功進入iVentoy引導,可以選擇需要開機的映像,並進行系統安裝 :::warning ![](https://hackmd.io/_uploads/r1Pw31YfT.png) 如果出現如上圖這樣的資訊,顯示Access Denied,這表示機器的安全開機(Secure Boot)沒有關閉,無法通過安全驗證,請先進入到UEFI中關閉選項,接著重新開機,這時,就可以正常載入! ::: ## 總結 透過iVentoy的做法,可以讓我們在安裝系統上,減少許多麻煩,目前大多數的PC、筆電都已經內建了PXE啟動的功能,通常被稱作`Network Stack`,不過,這個輔助功能預設都是關閉的(加快開機速度),所以得要自己開啟,非常建議有大量重灌系統需求,或是想玩玩看這樣功能的朋友,可以動手試試看,若有問題,也歡迎在文章下面留言,一起看看遇到了什麼錯誤,感謝你的耐心閱讀! 我們下次見(❁´◡\`❁) <style> img { border: 1px dashed green } </style>