无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 22570|回复: 178

[原创] 20201108:RyanBoot 小白「云端系統」ipxe usb UEFI Secure/Bios安裝/救援Linux/Winpe

    [复制链接]
发表于 2019-7-7 00:55:03 | 显示全部楼层 |阅读模式
本帖最后由 hkkitlee 于 2020-11-10 21:34 编辑

Ryanboot - 小白「云端系统」
拒絕病毒!拒絕流氓!拒絕廣告!


本軟件的由來:出於幫朋友重灌,掃毒,恢復文件誤刪之類的操作。往往需要在機器面前才可以操作。因此本人「組合」成這個只有不足40MB的usb影像檔。用來遠程控制解決大部份的操作以節省交通時間。

本分享帖是以本軟件由編譯,組合,制作影像檔;伺服器軟件設定。

本影像檔由以下軟件組成/鳴謝
Ipxe
ValdikSS

請注意!請注意!請注意!
1.本軟件的部分系統(Remote control by server)現時開放權限為自動執行遠程連線!(給我的小白朋友用)不是駭客入侵。機器前也是可以透明操作的
2.私人機器不是全日24小時啟動,如果啟動不了有機會是機器未啟動。我習慣是下午5時至凌晨12時在線
3.使用與否隨閣下所喜,由於機主也是透明可操作的,因此使用便是同意並是自願性質,請緊慎操作「水能載舟 亦能覆舟」
4.本人出於分享精神寫此文件
5.除非是機主及我同意的有償服務,否則即使連線到伺服器亦不會有任何操作,特此聲明
6.少寫文章,可能段落格式,表達方法都不太好.請多多見諒


首頁: https://hkkitlee.ddns.net:9000
詳細圖文教學使用 https://hkkitlee.ddns.net:9000/setup.html
https://github.com/hkkitlee/Ryanboot

軟件簡介:本軟件適用於
1機器類型:實體機器,虛礙機(vmware [esxi/workstation]/ kvm / virtualbox等等)
2BIOS/UEFI [Secureboot] 都可以
3影像檔內並沒有操作系統,所以體積很小(約25MB)和需要伺服器供檔啟動
4因軟件會不定時更新/除錯,請在使用前下載一次
5賬密請仔細閱讀,未知賬號請不要強行進入,否則伺服器會禁止IP連線。另立賬密以供無懮論壇會員作測試,如刪除/更改恕不另行通知。名稱:wuyou  密碼:本人的無懮論壇名稱



Login for Install or live LINUX/WINDOWS,輸入賬號密碼登入後 screenshot.png Screenshot from 2019-07-15 22-18-32.png Screenshot from 2019-07-15 22-19-05.png


可啟動項目:


Ryanboot ##小白云端系統啟動首頁
|---Boot by Your Network MAC address ##使用網卡唯一識別碼自動啟動
|---Login for Install or live LINUX/WINDOWS ##登入伺服器
|       |---(A) RyanTC mini PXE Server  ##文本終端pxe 伺服器
|       |---(B) Tinycore v11 Desktop  ##桌面、ipxe編譯環境、連 pxe 伺服器
|       |---(C) Boot Clonezilla for Backup / Restore ##再生龍備份/還原。終端中使用partclone的備份軟件
|       |---(D) Boot REMOTE CONTROL system Menu ##遠程被控項目
|       |       |---(1) P2P BOOT Debian 10 Buster Installer or Live for Data Rescue  ##(P2P啟動RPBL;硬盤壞軌讀取,救援誤刪系統。)
|       |       |---(2) Boot Win10PE_x64 w/VNC  ##(Winpe不用多說了吧)
|       |       |---(3) Install Centos7 via VNC by Kit  ##(安裝Centos Linux)
|       |       |---(4) Install Fedora28 via VNC by Kit ##(安裝Fedora Linux)
|       |       |---(5) Boot Redo rescue for Backup / Restore ##桌面中使用partclone桌面的備份軟件
|       |       |---(Ctrl-R) Return to First Menu ##返回首頁
|       |
|       |---(E) P2P Boot Official Debian Buster Live Menu ##BT/p2p啟動Debian官方桌面版本項目
|       |       |---(0) Lxqt
|       |       |---(1) Gnome
|       |       |---(2) Kde
|       |       |---(3) Lxde
|       |       |---(4) Mate
|       |       |---(5) Standard
|       |       |---(6) Xfce
|       |       |---(7) Cinnamon
|       |       |---(Ctrl-R) Return to First Menu ##返回首頁
|       |
|       |---Testing Area (Restricted)
|       |---(Ctrl-R) Return to First Menu ##返回首頁
|
|---(A) Install Current Centos8 amd64
|---(B) Centos8 live CD Rescue mode
|---(C) Install Current Ubuntu amd64
|---(D) Install Current Ubuntu i386
|---(E) Install Fedora32 amd64
|---(F) Install Current Debian amd64
|---(G) Install Current Parrot-Linux amd64
|---(H) Install Current Parrot-Linux i386
|---(I) Install Current Kali-Linux amd64
|---(J) Install Current Kali-Linux i386
|---Free Memtest ##記憶體測試


Changelog:
20201107:Redo Rescue Version 2.0.5 > 3.0.2 Screenshot_2020-11-07_20-47-13.png
20201027:更新官方Debian Live 10.6,vmlinuz-4.19.0-11-amd64
20201012:Ryanboot - 小白云系統
20201005:Redo rescue 2.0.5自動被控項目 Screenshot_2020-10-05_22-37-16.png Screenshot_2020-10-05_22-38-33.png Screenshot_2020-10-05_22-39-38.png @友联电脑

20200908:bug fix - Kali Linux Parrot Linux netinstaller ssl error
原廠Netinstaller ssl証書錯誤,安裝源取包失敗,導致安裝失敗。
已更新用mini.iso啟動并測試回復正常。

20200905:CentOS-8.2.2004
20200808:更新p2p啟動官方Debian Live 10.5
改成免登入官方網絡安裝:
Official Linux Installer
Install Centos8 amd64
Centos8 live CD Rescue mode
Install Current Ubuntu amd64
Install Current Ubuntu i386
Install Fedora32 amd64
Install Debian10.4 amd64
Install Current Parrot-Linux amd64
Install Current Parrot-Linux i386
Install Current Kali-Linux amd64
Install Current Kali-Linux i386


20200801:ipxe網絡啟動Linux上安裝/修改原版Windows(PE) ,源碼編譯wimtool-imagex
Official Linux Installer
Install Centos8 amd64
Centos8 live CD Rescue mode
Install Current Ubuntu amd64
Install Current Ubuntu i386
Install Fedora32 amd64
Install Debian10.4 amd64
Install Current Parrot-Linux amd64
Install Current Parrot-Linux i386
Install Current Kali-Linux amd64
Install Current Kali-Linux i386


20200615:RPBL Ryan P2P/BT Boot Linux (Debian Live Buster 10.x Server 服務端), 一鍵腳本

20200612:更新官方Debian Live 10.4 並顯示核心版本信息
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=420972&extra=page%3D1 Screenshot from 2020-06-12 23-39-27.png
20200421:Tinycore v11 desktop 桌面連 pxe 伺服器
20200313:更新官方Debian Live 10.3
20200108:
更新官方Debian Live 10.2
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=418347
20191005:
軟件更新,請重新下載
20190929:
官方Debian和RyanDebian改變為P2P/BT啟動以縮短時間
原碼貼:http://bbs.wuyou.net/forum.php?m ... 6359&extra=page%3D1
發佈貼:http://bbs.wuyou.net/forum.php?m ... 6616&extra=page%3D1
Screenshot from 2019-09-29 19-50-29.png Screenshot from 2019-09-29 19-50-47.png Screenshot from 2019-09-29 19-51-37.png Screenshot from 2019-09-29 19-52-33.png Screenshot from 2019-09-29 19-54-44.png
20190817:
RyanTC增設iPXE編譯環境, 將會自動安裝編譯所需依賴檔案.
iPXE原碼則git clone 到/ipxe下, 編譯指令則參考ipxe.org

20190808:
為提高可用性,iPXE加入兩個shell選項:
1伺服器不在線直入shell。2iPXE選單加入手動進入shell。

20190806:更新1,2失敗,返回上一版本;3已執行。
1再嘗試修正Grub2(x86-64-efi/i386-efi/i386-pc)
2CentOS7與ValdikSS的Grub2版本有出入,統一合併bios/uefi的grub.cfg在/EFI/grub2/下。
3Grub菜單加入「關機」「重啟」項目。

20190803:
1修正GRUB2磁盤啟動項目,並縮小至「整影像檔」壓縮前37MB
2Win連到網絡磁盤名稱:root 密碼:root
3修正RyanTC Linux Samba權限及離線啟動

20190802:
16MB Linux RamOS PXE Server:RyanTC獨立運作版,M$手工更換引導文件

20190729:
關於bios啟動:可能是屏幕解像太高,為相容性現在降低至800X600,請再下載試一下*******

20190728:
完成RyanTC mini pxe server,設成全自動純文字。詳情帖:20190806更新:16MB RyanTC Linux RamOS PXE Server獨立版,M$ Win手工更換引導檔

Screenshot from 2019-07-28 22-10-08.png Screenshot from 2019-07-29 13-01-25.png
20190726:
新增移動Pxe伺服TinyCoreLinux,工程進行中。

20190716:
Debian Live:為加強對應舊網卡驅動,修改對initramfs啟動網卡之timeout,時間改為延長60秒。

20190715:
更新Debian 10 Buster Live for Data Rescue,最小3GB內存








Screenshot from 2019-07-17 01-42-54.png
96A96ABF-D657-43A9-A5B5-361E14E467C8.gif
Screenshot_2020-11-07_20-47-13.png

评分

参与人数 7无忧币 +35 收起 理由
wuxin9712 + 5
纯脆entropy + 5 赞一个!
2012sinkr + 5 很给力!
zhczf + 5 5
2012FuckTheCPC + 5 赞一个!
676714530 + 5 很给力!
sghihor + 5

查看全部评分

 楼主| 发表于 2019-7-7 00:55:32 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-10 23:08 编辑

伺服器軟件/設定編:

10/07/2019更新:下面比較沉長。希望大家先閱讀原理,軟件之間關係,明白了再了解配置
原理會不變,軟件配置就是因應不同的情況而有改變。所以最後最後才看配置文件。否則便很難明白配置了些什麼出來。希望大家明白我的用心。

其實在我學習建立pxe伺服器的時候碰了數不盡的釘子;無菜單到有菜單,有菜單又啟動不了;啟動了又核心錯誤;之後才發現bios/uefi是兩種不同的啟動;自動連線;研究secure boot啟動(最後用現成工具ValdikSS合併);不是向大家炫耀(我也菜鳥!曾經不明白過!比我捧的也大有人在),而是希望給大家信心/恆心。

因為以前學習時找的教學帖、文件,只會叫你裝什麼,什麼指令啟動;當學習者環境情況有變時,即使一對一做也有網絡/啟動問題(我就是從這情況中跌跌碰碰才學出來)。所以,有心學建立(尤其是linux)伺服器希望不要怕多字,學懂原理,因環境作適當配置,一步一步明白實踐建立出你們自己的pxe server。

有問題會盡量解答。



Centos7 minimal install
DNSMASQ---dhcp proxy
xinetd-tftp
httpd/nginx
firewalld port


Pxe server啟動流程原理:
1網卡啟動pxe

2客戶機執行網卡內的pxe rom向dhcp server經udp port 67/4011發廣播請求3個東西[1自身ip][2bootserver ip(即為xinetd-tftp server ip地址)][3bootserver啟動文件的路徑與名稱]

3客戶網卡得到以上資料,從bootserver經udp port 69下載得到 ipxe引導檔

4ipxe在《客戶機》啟動後用https 向伺服器(httpd/nginx)請求下載操作系統檔並存到內存Ram中,下載完成後啟動

即客戶機網卡pxe ---(udp 67/4011)--->向dhcp伺服器(dnsmasq)發送請求,得到bootserver ip後,客戶機網卡的pxe經udp port 69向bootserver下載引導並執行—->ipxe啟動再向web server下載操作系統並啟動---(https<tcp>)--->OS




本usb影像檔啟動流程原理:
1Bios/UEFI啟動並讀取usb影像啟動ipxe

2客戶機載入網卡驅動向dhcp server發廣播請求自身ip

3客戶網卡得到以上資料,向伺服器(httpd/nginx)請求下載操作系統檔並存到內存Ram中,下載完成後啟動

即usb—->網卡載入執行ipxe(不是原網卡內的pxe rom)---(https<tcp>)--->OS











綜合以上
純pxe server需要dnsmasq,xinetd這兩個軟件作udp傳送引導檔用途。而引導檔即ipxe只是《客戶機》自行下載並執行,伺服器的是完完全全沒有執行過的,最多只是傳送到客戶機。打個比喻,如果你的操作系統檔放在tftp給客戶機下載,那就不需要有httpd伺服了。但udp缺點就是慢。

順帶一提,引導檔有多款的,例如syslinux , grub2等等。如果你已完成dnsmasq, xinetd的設定,也可加入其他引導檔一同選擇。

有個思考的問題:
由於本影像檔不經pxe網絡得到可引導檔,所以就不再需要xinetd了。
那dhcp server(dnsmasq)呢?
答:即使你不需要以下全部3項作啟動用途[1自身ip][2bootserver ip(即為xinetd-tftp server ip地址)][3bootserver啟動文件的路徑與名稱],但第1的自身ip即使你的網絡也是需要的。試想想你家用公司網絡,不只是手機,平板電腦,還有訪客都需要dhcp的。總不能每每手動設定吧!
那就帶出了下面的設定檔為何是dhcp-proxy而不是完整的dhcp設定了

路由器/router一般自帶dhcp server。如果兩個dhcp server在同一個網段是會相撞的,輕則部份電腦網絡癱瘓,重則全網癱瘓。dhcp的功能就是如客戶機ip,網關和網段。而dhcp-proxy就是可以不改變既有的dhcp-option上補齊[2bootserver ip(即為xinetd-tftp server ip地址)][3bootserver啟動文件的路徑與名稱]

Dhcp —-ip分派,網關,網段
Dhcp-proxy—-[2bootserver ip(即為xinetd-tftp server ip地址)][3bootserver啟動文件的路徑與名稱]

當然你也可以在一個dhcp server內設定好所有的dhcp-option,但路由器的dhcp多是閹割版,大部份沒了啟動功能;或者
停用路由的dhcp長期開啟電腦等待一個普通的dhcp請求?



希望各位看完以上明白各軟件之間的責任和流程。
下面就是軟件的設定檔,會因應上面的流程給解說














================================dnsmasq.conf=======================================


#Don't function as a DNS server:
port=0 #不以DNS server作啟動

#Log lots of extra information about DHCP transactions.
log-dhcp #以log在伺服器作記錄

#enable-tftp #以#為記號即此行設定不成立,我的設定是以xinetd-tftp作為tftp伺服,所以這裡無而dnsmasq兼任tftp。
#tftp-root=/var/lib/tftpboot #tftp的設定路徑

#Disable re-use of the DHCP servername and filename fields as extra
#option space. That's to avoid confusing some old or broken DHCP clients.
dhcp-no-override #簡單而言,就是避免與太老舊的網卡相撞。


#以下深藍色的就是設定客戶機所需的PXE啟動檔,在tftp中的名稱與路徑請求,予以回報給客戶機下載的設定路徑,只是路徑,bootserver(tftp)的伺服ip是下面淺藍部份。
dhcp-vendorclass=x86PC,PXEClient:Arch:00000 #BIOS x86
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00006 #EFI x86-64
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00007 #EFI x86-64
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00009 #EFI x86-64

pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe
pxe-service=IA32_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=X86-64_EFI, "Boot X86-64", uefi/ipxe.efi



#當下面的tftp伺服器ip與上面的路徑組合在一起,就類似是tftp://tftpserverip/檔名路徑
#pxe-service=tag:BC_EFI,BC_EFI, "Install Linux on BC_EFI UEFI", uefi/ipxe.efi

#dhcp-boot=net:x86PC,undionly.kpxe.0,0,192.168.2.5
#dhcp-boot=net:BC_EFI,uefi/ipxe.efi,0,192.168.2.5

dhcp-range=192.168.2.5,proxy#這個就是設定為dhcp-proxy啟動,並告知客戶機bootserver ip是192.168.2.5。



===============================dnsmasq.conf 完==========================================

dnsmasq解說:
以上各位可以看出,什麼網關,網段,分派客戶ip的工作一個也沒有。只是告訴客戶機bootserver的ip是什麼,引導啟動檔的名稱是什麼,並以dhcp-proxy啟動。其餘的並不參與留待原網絡的dhcp server工作。

那深藍部份的到底是什麼呢?

dhcp-vendorclass=x86PC,PXEClient:Arch:00000 #BIOS x86
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00006 #EFI x86-64
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00007 #EFI x86-64
#dhcp-vendorclass=BC_EFI,PXEClient:Arch:00009 #EFI x86-64

dhcp-vendorclass=XXXXXXX#這些設定是基於舊版dnsmasq,還留在此設定是作參考之用。新版如下,如無需要可自行刪除。

pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe
pxe-service=IA32_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe.efi
pxe-service=X86-64_EFI, "Boot X86-64", uefi/ipxe.efi


大家請留心標點符號,pxe-service=AAA, "BBB", CCC
AAA=不是隨意的。客戶機宣告給dhcp server自已是什麼架構類型(arch)的機器(例如執行環境bios/uefi/32bit/64bit)所以不能自定更改。
BBB=是隨意的。在啟動時你想顯示的文字,可用作說明或除錯
CCC=是隨意的。啟動文件的路徑與名稱。只需符合與tftpd的檔案路徑即可。

以pxe-service=X86PC, "Install Legacy BIOS", undionly.kpxe作解說:
整句就是:如果dnsmasq收到客戶機自己宣告是什麼架構類型的機器X86PC(AAA),就會顯示Install Legacy BIOS(BBB),並告知引導檔的路徑undionly.kpxe(CCC)
那不同的客戶宣告不同的AAA,就會有不同的顯示BBB與得到引導檔的路徑CCC














tftp

===============================tftp=============================================

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = yes
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

================================tftp 完==========================================

xinetd-tftp 解說:
其實沒什麼好寫,因為簡單得不行了
要留意的只有兩樣:
1server_args             = -s /var/lib/tftpboot#就是你設定在伺服機的本機路徑。
2對應上面的CCC引導檔路徑。即在伺服機內看到應該是/var/lib/tftpboot/CCC。




簡單就是:Dnsmasq負起通訊,xinetd-tftp負起傳送引導檔案。
另外關於防火牆設定,因應不發行版的linux所使用的命令都不太相同。所以在此只告知 protocol ,port,請自行開啟
Dnsmasq:67/udp,4011/udp
xinetd-tftp:69/udp


















Ipxe (ipxe只是一個可執行檔)
回應給pcfan120朋友,win/linux的檔案路徑就是放在ipxe格式的配置文件,並編譯進ipxe檔內。
(和下一樓的一鍵生成是一樣的,只是節錄出來):

以下是編譯的命令


======================================================
#!/bin/bash
make clean #編譯前清空舊文件

make bin-x86_64-efi/ipxe.efi EMBED=ipxe.script; #編譯uefi版ipxe
make bin/undionly.kpxe EMBED=ipxe.script; #編譯bios版ipxe
make bin/ipxe.lkrn EMBED=ipxe.script; #編譯usb版ipxe

cp bin/undionly.kpxe /var/lib/tftpboot/ ; #bios版本複製至tftp的路徑
cp bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/uefi/ ; #uefi版本複製至tftp的路徑
==============================================

拆開這句說明make bin-x86_64-efi/ipxe.efi EMBED=ipxe.script;
make bin-x86_64-efi/ipxe.efi #編譯給x86-64,uefi的環境的執行檔(bios環境不運行的)
EMBED=ipxe.script; ipxe.script就是自己寫的配置內容。
全句就是「把對應的配置文件(ipxe.script)作出對x86-64 uefi環境作編譯。

make bin/undionly.kpxe#這句就是給bios pxe啟動的
make bin/ipxe.lkrn#這句就是bios usb啟動的。

關於執行架構方面的問題,簡單點說如下:
1uefi比較方便,一種格式放在pxe,usb都可以啟動的。

2bios比較煩人,不知是否因為「實模式」的關係。pxe格式不能與usb共用。所以才需要分開編譯。
「實模式」指的是bios執行時的16Bit定址模式,詳細請參考「保護模式」「組合語言」之類的書籍文件。
(表達力真的很有限。)


那就看看下面的配置文件了。

配置文件(此為極其簡單的例子,好讓大家易點明白ipxe如何得知啟動的路徑和配置。注意:不是本影像檔內的配置。)
=====================================
  #!ipxe
kernel http://192.168.2.5/boot_templates/debian_8.8/live/vmlinuz
initrd http://192.168.2.5/boot_templates/debian_8.8/live/initrd.img
imgargs vmlinuz boot=live config hooks=filesystem username=live noeject fetch=http://192.168.2.5/boot_templates/debian_8.8/live/filesystem.squashfs
boot

=====================================
假設你打算用http制式傳送啟動文件和你的網頁伺服是在192.168.2.5,當你的ipxe啟動後就會向以上的網址進行下載。
所以你的win/linux盤文件是放在網頁伺服內


httpd只需按你所寫的路徑複製你需要的啟動文件,例如上面的3個:vmlinuz,initrd.img,filesystem.squashfs就可以。
(測試的話可以複製你所寫的設定網址在瀏覽器開啟一下。正常有詢問是否下載即路徑正確。)
httpd的設定我也沒設就直接用的(原設定),外面的教學如山如海。另外就是閣下也不一定要用http來傳送檔案,ftp,sanboot,總之方法一大把




至於Centos7當中的selinux,因為不是每個發行版都有,在往後時間再加入。
回复

使用道具 举报

 楼主| 发表于 2019-7-7 00:55:40 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-9 15:38 编辑

影像檔篇

以下是自己寫一鍵生成的Linux bash檔,解說在下面

===============================ryanboot.sh====================================

#!/bin/bash
make clean #編譯前清空舊文件

make bin-x86_64-efi/ipxe.efi EMBED=ipxe.script; #編譯uefi版ipxe
make bin/undionly.kpxe EMBED=ipxe.script; #編譯bios版ipxe
make bin/ipxe.lkrn EMBED=ipxe.script; #編譯usb版ipxe

cp bin/undionly.kpxe /var/lib/tftpboot/ ; #bios版本複製至tftp的路徑
cp bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/uefi/ ; #uefi版本複製至tftp的路徑

#至此pxe 要求已經完成,你已經可以無盤工作了
#以下是創建usb影像檔了

dd if=/dev/zero of=ryan.usb bs=1M count=25 #dd出一個25MB大小的檔案。

#下面是利用gdisk將25MB的檔案當作硬碟般切割成3個邏輯盤。1MB,11MB,13MB
gdisk ryan.usb << EOF
o
y
n


+1M
EF02
n


+11M
EF00
n



0700
w
y
EOF

#下面是再用gdisk做成hybrid mbr,bios/uefi雙啟動之硬碟格式
gdisk ryan.usb << EOF
r     # recovery and transformation options
h     # make hybrid MBR
1 2 3 # partition numbers for hybrid MBR
N     # do not place EFI GPT (0xEE) partition first in MBR
EF    # MBR hex code
N     # do not set bootable flag
EF    # MBR hex code
N     # do not set bootable flag
83    # MBR hex code
Y     # set the bootable flag
x     # extra functionality menu
h     # recompute CHS values in protective/hybrid MBR
w     # write table to disk and exit
Y     # confirm changes
EOF


partprobe;#硬盤數目因分割改變,所以命令系統核心更新硬碟
kpartx -av ryan.usb;#將已分割好的影像檔模擬成硬碟。
mkfs.vfat -F16 -n RYANBOOT /dev/mapper/loop8p2;#將影像檔內的第二邏輯盤格式化成fat16。
mkfs.vfat -F16 -n DATA /dev/mapper/loop8p3;#將影像檔內的第三邏輯盤格式化成fat16。
mount /dev/mapper/loop8p2 efi -o uid=1000,gid=1000,umask=022 ;#掛載剛格式化的第二邏輯盤準備寫入工作。
mount /dev/mapper/loop8p3 data;#掛載剛格式化的第三邏輯盤準備寫入工作。

#利用grub2在特定磁區寫入可啟動資訊
grub2-install --target=x86_64-efi --efi-directory=efi/ --boot-directory=data/boot --removable --recheck
grub2-install --target=i386-pc --recheck --boot-directory=data/boot /dev/loop8

#將剛編譯的uefi版bios版ipxe複製到影像檔中
cp  bin/ipxe.lkrn data/boot/ryan.lkrn;
#將ValdikSS[Secureboot]放複製到影像檔中
cp  -R ../../UEFIinSecureBoot-Disk/v3m/* efi/
cp  bin-x86_64-efi/ipxe.efi efi/EFI/BOOT/grubia32_real.efi;
cp  bin-x86_64-efi/ipxe.efi efi/EFI/BOOT/grubx64_real.efi;

#寫好grub2的設定文件到影像檔內
cat << EOF > data/boot/grub2/grub.cfg
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"

insmod part_gpt
insmod fat
insmod part_msdos
insmod all_video
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi
set timeout=0

menuentry "Lagacy PC Ryan's boot server" {
        linux16  /boot/ryan.lkrn
}


EOF


#卸載兩個邏輯盤
umount efi;
umount data;
#解除由檔案模擬成硬碟設備
kpartx -dv ryan.usb;
#壓縮影像檔
zip ryan.zip ryan.usb;

=====================================完=======================================

解說一下重點/有趣點:
1要實現雙啟動bios/uefi,就需要Hybrid mbr格式的啟動盤,即便是windows/linux的安裝盤都是一樣。盤內存什麼就隨你喜歡,我就是ipxe+ValdikSS的grub文件。

2kpartx是把影像模擬成設備,即硬盤。所以如果要給影像檔分割,先用kpartx模擬成設備,後gdisk分割,之後格式化,最後就複製你需要的引導/啟動檔入去。

3其實軟件的容量很小,但因為fat16格式最小容量都要約每個邏輯盤10MB,所以你會發現壓縮後的影像檔zip只有11MB,原因就在於檔案系統的問題了,不是軟件的大小了。有興趣自行解壓縮一下查看細節。你格式化過一個只有10MB大的硬盤嗎?哈哈
回复

使用道具 举报

 楼主| 发表于 2019-7-7 00:55:52 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-15 12:16 编辑

總結:
1pxe是intel發明,其程式碼是內置在你的網卡內。即使沒有操作系統,只要你的網卡有pxe rom也可執行。
2ipxe是一套自行編譯的軟件,是一套可在pxe環境下執行的軟件而已。

10/07/2019更新:完完整整流程是希望更具體讓大家明白,各伺服、軟件何時和做了什麼工作;如何得到引導檔(ipxe,syslinux,grub2)並執行,執行後又如何得到操作系統的檔案並啟動。

以本帖作例的總流程(更詳細分開dhcp 2a 與dhcp-proxy 2b 回應):
1客戶機啟動pxe,向網絡廣播詢問(67/udp,4011/udp)。

2a[客戶機自身ip][網關][網段netmask子掩碼][DNS]等等由原dhcp伺服回答。

2b[bootserver ip][因應機器架構arch的可啟動引導檔的路徑名稱]由dhcp-proxy伺服回答客戶機。

3客戶機接收以上資料後並向bootserver(69/udp)下載dhcp-proxy回報自身架構(bios/uefi/32bit/64bit)的可引導檔(ipxe,syslinux,grub2)。

4客戶機下載完畢(此帖使用ipxe)並執行,跟據已編譯進ipxe的配置文件知道向192.168.2.5發出http下載請求。

5客戶機跟據配置文件下載完成並啟動下載回來的操作系統。










看到朋友pcfan120的關心和提問,我先回答再想想我的帖如何寫提升一下表達能力(畢竟少寫)。

我使用的winpe10大約4XXMB大小,經ipxe用http下載。你當成普通瀏覽器下載就成。
我試過跨慢一點的互聯網,好像是6至7分鐘下載完成。
內聯網保守點計應該20秒內下載完成,15秒內啟動完畢。

另外一個最大容量的是debian live 2.2G,只試過內聯作自用救援測試。
內聯2分鐘內已完成下載並啟動。

其實除了重灌,恢復誤刪,還可以作其他用途
例如:
臨時系統作軟件測試
遠距離教學,實時同步,不再紙上談兵
系統設定如LVM,軟raid之類
全系統跨互聯網備份—-clonezilla,相對ghost只可在本機或內聯網備份更具彈性。
又或者部份資料備份—-rsync,ssh,各大發行版linux系統自帶的工具,也可跨網備份。




當你有實體機,虛擬機需要維護/測試時,有個無盤pxe server當真方便。
再加個ipxe跨網啟動,幫朋友時自己也可以無盤出門。

另外關於自動連線,因為涉及更加多的[網絡知識][winpe/linux等ramos核心啟動參數修改]和[不同類型的伺服軟件],所以有機會再另行開帖講解

点评

ipxe跨互联网启动。。。楼主好想法。。不知到楼主实际测试启动速度如何,启动pe及linux大概多少时间?按照大陆当前的网速估计还很困难,等5G成熟以后可能就不是问题了。。  发表于 2019-7-8 00:20
回复

使用道具 举报

发表于 2019-7-7 01:27:35 | 显示全部楼层
多谢分享,有一点没理解,楼主这个只是PXE启动模板镜像并没有沒有操作系統对吧,那么服务器需要放置什么文件及路径来搭建呢,多谢指教

点评

pxe 啟動引導 ipxe , ipxe 用https 請求操作系統檔作啟動 即pxe ---(tftp)--->ipxe---(https)--->OS 所以可以跨互聯網作啟動  详情 回复 发表于 2019-7-7 01:41
回复

使用道具 举报

发表于 2019-7-7 01:41:08 | 显示全部楼层
哦,看功能很强大,期待完整的服务器搭建教程

点评

要你久候了^_^  详情 回复 发表于 2019-7-7 14:18
回复

使用道具 举报

 楼主| 发表于 2019-7-7 01:41:34 | 显示全部楼层
pcfan120 发表于 2019-7-7 01:27
多谢分享,有一点没理解,楼主这个只是PXE启动模板镜像并没有沒有操作系統对吧,那么服务器需要放置什么文件 ...

pxe 啟動引導 ipxe , ipxe 用https 請求操作系統檔作啟動

即pxe ---(tftp)--->ipxe---(https)--->OS

所以可以跨互聯網作啟動

点评

了解,期待服务器文件搭建教程  发表于 2019-7-7 01:45
回复

使用道具 举报

发表于 2019-7-7 13:23:37 | 显示全部楼层
网站都打不开。

点评

2.私人機器不是全日24小時啟動,如果啟動不了有機會是機器未啟動。我習慣是下午5時至凌晨12時在線 涉及操作系統,請仔細閱讀,後服再用  详情 回复 发表于 2019-7-7 14:12
回复

使用道具 举报

 楼主| 发表于 2019-7-7 14:12:42 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-7 15:02 编辑


2.私人機器不是全日24小時啟動,如果啟動不了有機會是機器未啟動。我習慣是下午5時至凌晨12時在線

涉及操作系統,請仔細閱讀,後再服用
我還在寫帖中呢
回复

使用道具 举报

 楼主| 发表于 2019-7-7 14:18:27 | 显示全部楼层
pcfan120 发表于 2019-7-7 01:41
哦,看功能很强大,期待完整的服务器搭建教程

要你久候了^_^

点评

不着急,静待大师慢慢分享,看了当前大师的讲解多是配置文件,具体pe及linux文件放置路径等好像还没看到  发表于 2019-7-8 00:15
回复

使用道具 举报

发表于 2019-7-7 21:24:28 | 显示全部楼层
先谢谢大大分享~
回复

使用道具 举报

 楼主| 发表于 2019-7-8 10:38:38 | 显示全部楼层
wintoflash 发表于 2019-7-8 08:53
你用来通过secureboot的是 @ValdikSS 的那一套方案?

是啊
回复

使用道具 举报

发表于 2019-7-8 13:38:08 | 显示全部楼层
这个让我想到了,
之前重装了一个苹果本,苹果系统。
什么工具也没用,插上网线,开机按下Command+R。抹掉重装,等着就好了。

点评

舊版蘋果電腦可以用pxe啟動的(好像是2015年前的版本) 新版的蘋果機已不是用pxe網啟,他們用自家的boot protocol ,現成的軟件好像叫BSDPy。好像還有docker鏡像。 因為沒有蘋果硬件做測試,提不起實作,所以什麼  详情 回复 发表于 2019-7-8 14:03
回复

使用道具 举报

 楼主| 发表于 2019-7-8 14:03:59 | 显示全部楼层
sghihor 发表于 2019-7-8 13:38
这个让我想到了,
之前重装了一个苹果本,苹果系统。
什么工具也没用,插上网线,开机按下Command+R。抹 ...

舊版蘋果電腦可以用pxe啟動的(好像是2015年前的版本)
新版的蘋果機已不是用pxe網啟,他們用自家的boot protocol ,現成的軟件好像叫BSDPy。好像還有docker鏡像。
因為沒有蘋果硬件做測試,提不起實作,所以什麼都是*好像*。
回复

使用道具 举报

发表于 2019-7-10 16:15:23 | 显示全部楼层
请提供你用的winpe10(大約4XXMB)、debian live 2.2G等下载,并提供操作视频,以便我等小白进行测试操作。因为水平低,看得吃力,希望有个更明了的教程

点评

軟件下載:https://hkkitlee.ddns.net:9000/ryan.zip 影像檔寫入軟件:https://hkkitlee.ddns.net:9000/rufus-3.5.exe 首頁: https://hkkitlee.ddns.net:9000 詳細圖文教學使用 https://hkkitlee.ddns.net:9000/  详情 回复 发表于 2019-7-10 16:37
回复

使用道具 举报

 楼主| 发表于 2019-7-10 16:37:12 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-10 18:52 编辑
diwu2005 发表于 2019-7-10 16:15
请提供你用的winpe10(大約4XXMB)、debian live 2.2G等下载,并提供操作视频,以便我等小白进行测试操作。因 ...


軟件下載:https://hkkitlee.ddns.net:9000/ryan.zip
影像檔寫入軟件:https://hkkitlee.ddns.net:9000/rufus-3.5.exe
首頁: https://hkkitlee.ddns.net:9000
詳細圖文教學使用 https://hkkitlee.ddns.net:9000/setup.html

你只需連接好網線;將影像檔寫入usb;bios/uefi 改成usb啟動;啟動電腦就可以選擇win/linux啟動,不必手動下載操作系統的。
3個準備的步驟上面連結是圖文並茂的。


視頻拍完我不知要放到那裡?
回复

使用道具 举报

发表于 2019-7-10 17:27:45 | 显示全部楼层
这个远程安装引导的前提下,还是需要一个启动U盘作为引导媒介?

点评

跨互聯網就需要... 建議可以先看看2樓什麼是「pxe啟動的原理」。要是你有pxe server就不需要此u盤引導。  详情 回复 发表于 2019-7-10 18:13
回复

使用道具 举报

 楼主| 发表于 2019-7-10 18:13:23 | 显示全部楼层
yigeren 发表于 2019-7-10 17:27
这个远程安装引导的前提下,还是需要一个启动U盘作为引导媒介?

跨互聯網就需要...

建議可以先看看2樓什麼是「pxe啟動的原理」。要是你有pxe server就不需要此u盤引導。

点评

如果跨互联网需要一个启U盘来作为引导,那意义就不大(还是我理解有误了?) PS:有U盘干嘛还需要跨网远程引导启动,直接启动U盘里制作好的PE不更省事,系统包一样存放在U盘里安装  详情 回复 发表于 2019-7-10 19:46
回复

使用道具 举报

发表于 2019-7-10 19:46:17 | 显示全部楼层
hkkitlee 发表于 2019-7-10 18:13
跨互聯網就需要...

建議可以先看看2樓什麼是「pxe啟動的原理」。要是你有pxe server就不需要此u盤引導 ...


如果跨互联网需要一个启动U盘来作为引导,那意义就不大(还是我理解有误了?)
PS:有U盘干嘛还需要跨网远程引导启动,直接启动U盘里制作好的PE不更省事,系统包一样存放在U盘里安装

点评

20190715:加多點補充,此影像檔另一個主要用途是給headness(就是沒有熒光幕的電腦)使用。大部份伺服器都是「沒頭」的。 那當然就要在編譯時要和httpd解除賬號密碼。  详情 回复 发表于 2019-7-15 15:20
這個就是小白朋友使用及管理的問題了。 使用:1 寫此影像檔是給我的朋友們用,當朋友機器要使用不同系統時他就要不同的下載與寫入u盤。不懂電腦的朋友會感吃力。 2還有就是整個iso長時間的下載,雖然ipxe都需要  详情 回复 发表于 2019-7-10 21:48
這個就是小白朋友使用及管理的問題了。 使用:1 寫此影像檔是給我的朋友們用,當朋友機器要使用不同系統時他就要不同的下載與寫入u盤。不懂電腦的朋友會感吃力。 2還有就是整個iso長時間的下載,雖然ipxe都需要  详情 回复 发表于 2019-7-10 21:48
回复

使用道具 举报

发表于 2019-7-10 21:20:29 | 显示全部楼层
我u盘早就支持启动家里的pe了,不过就是用来装逼的,现在可以远程启动家里的硬盘。。
然后也没什么用

点评

那我小白的朋友有點多,有點不幸,哈哈。 因為這幾個系統是會自動反向連線回伺服器給我操作的,所以他們也覺得很不錯,不用操作。懶惰的小白^_^|||  详情 回复 发表于 2019-7-10 22:13
回复

使用道具 举报

发表于 2019-7-10 21:21:23 | 显示全部楼层
以前也一直有这个设想,实现mac book类似的在线恢复,好像bios下是很容易实现,uefi下没条件试

点评

就著我對ipxe/pxe的些小認識: Bios:以memdisk模擬成ramdisk啟動是沒問題。 Uefi:我是使用wimboot來啟動。但wimboot啟動需要在windows目錄下有pxexxx(忘記了名稱)的檔案,如沒有會啟動不了。有部入pe是沒有/  详情 回复 发表于 2019-7-10 22:35
回复

使用道具 举报

 楼主| 发表于 2019-7-10 21:48:55 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-11 11:32 编辑
yigeren 发表于 2019-7-10 19:46
如果跨互联网需要一个启动U盘来作为引导,那意义就不大(还是我理解有误了?)
PS:有U盘干嘛还需要跨 ...


這個就是小白朋友使用及管理的問題了。

使用:
1寫此影像檔是給我的朋友們用。當朋友機器要使用不同系統時他就要不同的下載與寫入u盤。不懂電腦的朋友會感吃力。
2還有就是整個iso長時間的下載,雖然ipxe都需要,但算是半自動。現在只需要手動下載25MB就可多選項啟動。

管理:
1由於ipxe是可以實時讀配置啟動,所以就算是更新/加入/刪除操作系統也不需要更改u盤任何文件。
2承上。例如我只修改系統核心的參數,用手機ssh回伺服器更改完。我的小白朋友就不需要理會u 盤,亦無需重做u盤。

我的出發點就是從小白出發,越不需要操作越好。u盤還只是引導角色,增/刪還是修改我的系統作彈性處理。
回复

使用道具 举报

 楼主| 发表于 2019-7-10 21:48:58 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-10 22:02 编辑

按急重發了
回复

使用道具 举报

 楼主| 发表于 2019-7-10 22:13:47 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-10 23:03 编辑
江南一根葱 发表于 2019-7-10 21:20
我u盘早就支持启动家里的pe了,不过就是用来装逼的,现在可以远程启动家里的硬盘。。
然后也没什么用


那我小白的朋友有點多,有點不幸,哈哈。

因為這幾個系統是會自動反向連線回伺服器給我操作的,所以他們也覺得很不錯,不用操作。大家也節省交通時間。懶惰的小白^_^|||
回复

使用道具 举报

 楼主| 发表于 2019-7-10 22:35:18 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-10 22:53 编辑
江南一根葱 发表于 2019-7-10 21:21
以前也一直有这个设想,实现mac book类似的在线恢复,好像bios下是很容易实现,uefi下没条件试


就著我對winpe 在ipxe/pxe的些小認識:

Bios:以memdisk模擬成ramdisk啟動是沒問題。wimboot也可以。

Uefi:memdisk啟動不了。所以我是使用wimboot來啟動。但wimboot啟動需要在windows目錄下有pxexxx(忘記了名稱)的檔案,如沒有會啟動不了。有部份pe是沒有/刪除了,但可以手動加回boot.wim用wimboot啟動的。

最後我是用wimboot來作配置使bios/uefi實現雙啟動的。



備份/還原我則用clonezilla的。跨網;win/linux檔案格式通吃;全網多機重灌multi-cast也可。

電腦bios有VT的話開個vm玩玩~我大部份測試是在kvm運行。
回复

使用道具 举报

发表于 2019-7-13 16:05:25 | 显示全部楼层
楼主,朋友用制作的U盘启动电脑,应选择第几个菜单才能自动连上我的电脑(服务器)?我的电脑(服务器)要启动什么软件才能远程控制朋友的电脑进行安装或恢复工作?

点评

不會連上你的伺服器,這是設定問題。 1-6的選項中,1-4都是不用操作自動連到我的伺服器。 Debian Live Winpe10 Install Centos7 Install Fedora 如果你想遠程給朋友控制桌面來安裝/修復,vnc, teamviewe  详情 回复 发表于 2019-7-13 22:03
回复

使用道具 举报

 楼主| 发表于 2019-7-13 22:03:15 | 显示全部楼层
本帖最后由 hkkitlee 于 2019-7-13 22:54 编辑
diwu2005 发表于 2019-7-13 16:05
楼主,朋友用制作的U盘启动电脑,应选择第几个菜单才能自动连上我的电脑(服务器)?我的电脑(服务器)要 ...


不會連上你的伺服器,這是設定問題。


1-6的選項中,選1-4,之後都是不用操作,桌面自動連到我的伺服器。
Debian Live
Winpe10
Install Centos7
Install Fedora

如果你想遠程給朋友控制桌面來安裝/修復,請用vnc, teamviewer之類就可以了。
回复

使用道具 举报

发表于 2019-7-14 18:31:32 | 显示全部楼层
18点了,还是打不开网站

点评

抱歉,才剛下班....... 現在才開機  详情 回复 发表于 2019-7-14 21:13
回复

使用道具 举报

 楼主| 发表于 2019-7-14 21:13:43 | 显示全部楼层
熄灭的烟 发表于 2019-7-14 18:31
18点了,还是打不开网站

抱歉,才剛下班.......
現在才開機

点评

大哥,你能不能24小时开机啊。我们的服务器都是24小时开机的。  详情 回复 发表于 2019-7-14 23:53
回复

使用道具 举报

 楼主| 发表于 2019-7-14 23:30:22 | 显示全部楼层
20190714:Debian 10 (Buster)已推出,有時間將會盡快更新。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2020-11-24 11:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表