无忧启动论坛

标题: 20210226更新:RyanTC—Tinycore16MB的微型移動Linux系統建pxe伺服器。合併到u盤啟動 [打印本页]

作者: hkkitlee    时间: 2019-7-24 16:17
标题: 20210226更新:RyanTC—Tinycore16MB的微型移動Linux系統建pxe伺服器。合併到u盤啟動
本帖最后由 hkkitlee 于 2021-2-26 00:13 编辑

這個投票只是好奇有多少人對Linux有興趣,也全透明好讓大家知道結果。

制作“離線版”RyanTC,可獨自作伺服,合併到u盤并加入客制化引導
16MB Linux RamOS PXE Server:RyanTC獨立運作版,M$手工更換引導文件


建立原因:
1鑑於Legacy bios對ipxe的 undionly.pxe/kpxe/kkpxe或 usb有時會莫名奇妙的不啟動(老機器真特別麻煩)。在遠端處也沒有pxe server,所以嘗試做一個「臨時的」pxe伺服影像,在遠端隨便找部機器作「臨時拉夫」急救用。
2實在太微型引起我的興趣。載入速度快;不用考慮內存大小,cpu快慢;BIOS / UEFI通吃 。#1Valdikss UEFISecureBoot

#1:Valdikss 的 SecureBoot啟動由以下項目代勞:編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS


20190728聲明:由於我的版本是直接修改ramfs(內存文件系統/ram file system):刪除了其他多餘的視窗之類軟件,所以「容量上」會比下面教程的版本更輕巧
修改方法也有小許不同。
另外有興趣的朋友也可進入系統看一看pxe的設定。

由於各發行版Linux大多有不同的防火牆、系統保護程式(Debian的apparmor或RHEL的selinux)等等。往往建立一個伺服程式都要學一輪更改系統預設定,否則即使正確啟動也無發提供服務(出於系統保護)。基於以上各點所以嘗試用TinyCore Linux做教程。

自行學習/修改參考:
嗚謝及原網:http://tinycorelinux.net/
原下載:https://distro.ibiblio.org/tinyc ... ePure64-current.iso


正如我之前的帖「編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS」所寫是基於CentOS 7。今次會盡量將Redhat系(Fedora , CentOS) / Debian系(Ubuntu) 及主角TinyCore的命令融合。如有遺留請各大幫忙提出並會盡快作出修訂。


changelog:
20210226:RyanTC Desktop with PXE & Data Rescue更新版本官方v12
20190731:
1新增軟件sshfs:可手動遠端連線回各人機房硬盤
2TC:增加命令備忘,命令行內輸入cat ~tc/help即可。
20190730:
自動的模組化:
1pxe server
2samba(windows網絡芳鄰),作(放M$安裝iso/臨時備份)用途。
20190729:
1更新防火建牆設定
2又是舊網卡!延時30秒待舊網卡啟動才執行bash...




作者: hkkitlee    时间: 2019-7-24 16:18
本帖最后由 hkkitlee 于 2021-2-26 06:30 编辑

並因為方便各位修改ipxe的script[啟動腳本],所以會增加由syslinux來chainload ipxe,只需修改script檔即可





A基礎教學

基於
1本帖是對多個發行版進行設定;
2圖形視窗有多個版本(Gnome,KDE等等),也不是必須的;而且大部分伺服器取消圖形視窗為搾取性能
所以會是以「命令行」的方式進行;當然你也可以在圖形介面下開一個terminal做設定。

出於個人感想:
多年前,由於機器壓力過大,工作不勝負荷。被迫從M$ 的Windows轉往Linux當中,轉到Linux就是經常聽說可以把性能搾出油來;還有就是Raid了。沒錢買Raid卡的怎辦!Linux用軟件就可以做Raid了!卡也不用買(不要問我什麼是硬盤沉餘陣列......)。心想兩個本來就是操作系統,分別為何如此巨大!
因此會多套用「這個就類似M$的XXX」之類來具體化表達。

現在的Win10怪事頻生,可以越更新越出問題,無語了...反正學懂Linux是自己的。

全文簡稱(大寫英文):
TC = TinyCore
RH = RedHat 系列包括Centos / Fedora
DB = Debian 系列包括Ubuntu
M$ = Windows

關於安裝Linux
TC只需下載影像檔並選擇安裝在U盤即可。
RH/DB安裝以minimal install即可。詳細硬盤劃分之類怕與本論壇目的相違背,所以請自行參考、虛擬機、或用TC u盤。





B安裝軟件並設定(俗稱軟件包管理器)
現在的M$ Win10 當中,有個叫[Microsoft Store]的軟件,其作用就類似我們智能電話中Android的Google Play或IOS Iphone中的App Store(國行版閹割了的)。事實上Linux很早期已有此功能實現。

各發行版因應自身設計,發展出不同的[線上管理器]:
Linux 尋找 查詢詳情 安裝 卸載移除
RH yum search XXX
yum info YYY
yum install YYY
yum remove YYY
DB apt search XXX
apt info YYY
apt install YYY
apt remove YYY
TC tce-ab (Enter後選"S"earch填入)
tce-ab ('S'earch完選取即可見)
tce-load -wi YYY
tce-remove YYY

XXX為你查詢關鍵字,查詢後得到軟件包的全名
YYY就是包全名稱用以安裝/移除

這次我們需要dnsmasq(因為可連tftp一起啟動),所以:
RH: sudo yum install dnsmasq -y
DB: sudo apt install dnsmasq -y
TC: sudo tce-load -wi dnsmasq


***-y 為預先確認安裝***


在M$我們編輯文檔,沒有Office也的要個notepad;看看下面Linux中的一個cat命令已建立完畢。
其實還有其他方法,不過是因為後續3樓「懶人大法」的關係吧了。
現在編輯dnsmasq的設定檔,其位置在/etc/dnsmasq.conf:

RH/DB/TC:
sudo cat << EOF > /etc/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 #這裡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-service=X86PC, "Install Legacy BIOS", bios/core/pxelinux.0
pxe-service=IA32_EFI, "Boot BC_EFI", efi64/efi/syslinux.efi
pxe-service=BC_EFI, "Boot BC_EFI", efi64/efi/syslinux.efi
pxe-service=X86-64_EFI, "Boot X86-64", efi64/efi/syslinux.efi

dhcp-range=192.168.2.5,proxy#*******這個就是設定為dhcp-proxy啟動,留意ip值是否適用,並沒有設子掩碼以盡量回應。
EOF


上面dnsmasq.conf中,在/var/lib/tftpboot下創建兩個新的資料夾,分別名為bios及uefi;用來儲存不同架構用的菜單。


sudo mkdir -p /var/lib/tftpboot/syslinux


C防火牆/selinux/apparmor

20190729:
RH:
sudo systemctl stop firewalld #關閉系統防火牆
sudo systemctl start firewalld #啟動系統防火牆
sudo firewall-cmd —add-port=4011/udp #臨時防火牆開放連線:udp的端口4011
sudo firewall-cmd —add-port=4011/udp -permanent #永久防火牆開放連線:udp的端口4011
其他port自己照著辦吧!
sudo firewall-cmd —remove-port=4011/udp #取消喇
sudo firewall-cmd —remove-port=4011/udp —permanent #永久的取消

DB:
sudo ufw disable #關閉防火牆
sudo ufw enable #啟動防火牆
sudo ufw default deny incoming #設定防火牆預設禁止外來連線
sudo ufw allow 4011/udp #防火牆開放連線:udp的端口4011
其他port自己照著辦吧!
sudo ufw deny 4011/udp #取消開放連線


TC: 沒有防火牆

RH的selinux:sudo setenforce 0
DB的apparmor:sudo systemctl stop apparmor


***暫時關閉防火牆,之後再追加啟動開放連線***





D啟動dnsmasq(daemon mode)
平常我們在windows啟動軟件,就時雙按圖標,出現程式介面或出現小圖示在時間旁邊。以Tiny Pxe server作例:

相信大家也不陌生了。但有否留意HTTPd/DNSd最後為何有個d字?
沒錯,這就是我上面的標題—daemon mode。意思是類似背境長駐程式。

在Linux中deamon是—「程式/命令(在背境)執行/啟動伺服的方式」。
在M$中就類似在時間邊的最小化圖示。

還是實際點不扯太遠,看看如何啟動dnsmasq作一個pxe伺服「環境」。
因應預設定檔是/etc/dnsmasq.conf,所以會馬上根據預設定檔來啟動。
RH/DB: sudo systemctl start dnsmasq
TC: sudo dnsmasq -9 -d


PXE環境「硬件」至此已經完成,只欠給客戶機的「軟件」,就是E和F了





E.  Syslinux
原包下載:https://mirrors.edge.kernel.org/ ... x/syslinux-6.03.zip

簡介:Syslinux 提供現成的[pxelinux.0給bios][syslinux.efi給uefi]的網啟軟件,我們只需要在下載,解壓縮至dnsmasq指定的/var/lib/tftpboot/內即可。

RH/DB/TC:
sudo wget https://mirrors.edge.kernel.org/ ... x/syslinux-6.03.zip -O /var/lib/tftpboot/syslinux-6.03.zip #wget=下載至/var/lib/tftpboot/
sudo unzip /var/lib/tftpboot/syslinux-6.03.zip -d /var/lib/tftpboot/ #把syslinux-6.03.zip解壓縮至/var/lib/tftpboot/



放好軟件syslinux了,是時候告訴syslinux的要做什麼工作,就是靠[菜單];告知要chainload 我們的主角ipxe了。

#BIOS版菜單

sudo cat << EOF > /var/lib/tftpboot/bios/core/pxelinux.cfg
DEFAULT menu.c32
LABEL bios
KERNEL undionly.kpxe dhcp && chain http://10.10.10.10/NFW.ipxe
EOF


#UEFI版菜單

sudo cat << EOF > /var/lib/tftpboot/efi64/efi/syslinux.cfg
DEFAULT menu.c32
LABEL uefi
KERNEL ipxe.efi dhcp && chain http://10.10.10.10/NFW.ipxe
EOF


「軟件」的一半—Syslinux 已完成了





F. IPXE
下載bios版ipxe:http://boot.ipxe.org/undionly.kpxe
下載uefi版ipxe:http://boot.ipxe.org/ipxe.efi

又是如法炮製:
RH/DB/TC:
sudo wget http://boot.ipxe.org/undionly.kpxe -O /var/lib/tftpboot/bios/core/undionly.kpxe #下載bios版ipxe至/var/lib/tftpboot/bios/core/
sudo wget http://boot.ipxe.org/ipxe.efi -O /var/lib/tftpboot/efi64/efi/ipxe.efi #下載uefi版ipxe至/var/lib/tftpboot/efi64/efi/


根據上面syslinux賦予ipxe的腳本是http://10.10.10.10/NFW.ipxe。那往後只需修改網頁伺服器內的這個腳本即可。不需要再行編譯了。
除非網頁伺服的ip或script改名改位置,才需要更改TC內syslinux的設定檔了。

「軟件」部份已全部完成。是時候在IPXE的script中發揮你們天賦了。
溫馨提示:如需向「公網」對外開放,請做足防禦。大屁孩小屁孩滿天飛!





G*特別*關於TC儲存回u盤
RH/DB正常都屬於安裝在硬盤的操作系統(Live等版本除外),正常關機下是會回寫數據待下次啟動。
但TC因為本身設定是RamOS,內存特點就是沒電消數據,半點不留人。所以我們需要手工多一步來寫回U盤。寫回「設定、需啟動命令」留待下一次開機自動讀取執行。

TC:sudo filetool.sh -b


是否開始發覺現在用的操作系統完來在背後有很多工作?
這個操作系統彈性十足吧?這其實只是九牛一毛...
作者: hkkitlee    时间: 2019-7-24 16:18
本帖最后由 hkkitlee 于 2019-7-28 13:33 编辑

即將會是「超級懶人自動執行易改包」....

懶人思路:
雖然我們已經可以用命令來做pxe伺服器了。也已經可以回寫儲存在u盤了。
但我的本意是做一個臨時的pxe;既然是臨時的:[dnsmasq網絡參數]、[httpd ip]等等都可能需要因環境情況而改變喇!

M$當中有種命令檔叫「批次檔」*.bat。Linux也有一種用來存放命令的檔案叫「bash file」 *.sh;
我們大可以把所有命令放在bash檔,一次過執行。

我是一個非常懶、貪方便的人。每次需要改變bash就需要坐在「臨時拉夫」的機器面前:看看看,打打打。
生產環境的惡劣,曾經試過要鍵盤壞幾個鍵,要屏幕不是插頭不對就是色偏又或驅動不對[Linux常見事]沒畫面;但網絡沒問題。既然我只需要Pxe服務......

不如我們*只*設定TC啟動時,*wget下載*我們預先設定好的bash檔再*執行*。那我們就不用再坐在「臨時機」前再「操勞一番」。反正我們都有httpd來存放操作系統文件,加多個bash檔好了!

優點:
1可以避免鍵盤屏幕之類問題。
2連Syslinux的菜單都可以遙距改變!「最主要的是httpd伺服ip啊」!
3避免對u盤有不可逆回的改變!即使誤操作,從新啟動又一條好漢啦!
4更可以多寫幾個不同功能的bash檔,變成不同的多功能伺服器!



綜合以上思路,我們以後只需要更改bash檔及ipxe的script就可以完整控制整個臨時的TC伺服器了!!!

現在首先需要知道如何令TC自動執行第一個bash,翻查官網文件原來位置是 /opt/bootlocal.sh,當系統核心完成啟動並加載好其他模組後即以root身份執行,太好了。

那我們只需修改 /opt/bootlocal.sh令其*wget下載*、*執行*我們自已的bash檔就完成了!

在TC開個terminal:
sudo cat << EOF >  /opt/bootlocal.sh
#繼續假設你httpd地址是http://10.10.10.10/並把bash檔命名為TCbash.sh,放到網頁的根目錄可供下載。
sudo wget http://10.10.10.10/TCbash.sh -O /TCbash.sh #下載並儲存在TC的根目錄。
sudo bash /TCbash.sh #執行就是bash檔前加命令bash。
EOF

sudo filetool.sh -b #馬上寫回u盤了


那bash如何寫!!!2樓綠色的全部就是了!
原文:趕緊把需要的複製粘上吧!
20190727:實測下因為bash檔由{系統}並以{root}執行,而TC是禁止root安裝的。所以安裝dnsmasq時以{tc}執行,而啟動則需要(全路徑)。請看最下文的bash分享。

既然已經「線上引導啟動」那2樓的G—sudo filetool.sh -b還有需要加到bash檔嗎?所以就是紅色了。
又來溫馨提示:bash是有「先後順序」的,即不會「未安裝,就執行」的道理。理解不?


我的成品則會「嘗試」再深一點的改造,並放在編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS中,用來網啟出另一台Pxe伺服出來。
到時大家可以一個u盤,網啟你們網絡的全部電腦了。

移動pxe完成了,哈哈。有興趣的朋友自己動動手吧。








20190728我的改造如下:
TC的啟動腳本改為在/etc/init.d/dhcp.sh,原因如下:
1我是直接修改iso(Live)的corepure64.gz,啟動時不執行/opt/bootlocal.sh
2啟動過快,有時網卡未初始化完成就執行bash,導致所需的工作失敗(如安裝dnsmasq)。




#由於root禁止安裝,所以用root命令用戶名tc來安裝dnsmasq,如下:
/bin/su tc -c '/usr/bin/tce-load -wi dnsmasq';


sudo /bin/cat << EOF > /etc/dnsmasq.conf

#Don't function as a DNS server:
port=0

#Log lots of extra information about DHCP transactions.
log-dhcp

enable-tftp
tftp-root=/var/lib/tftpboot

#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-prompt="Press F8 for NBP (Net Boot Program) menu.Default kkpxe.", 10

#0
pxe-service=X86PC, "kkpxe for Legacy BIOS", undionly.kkpxe
pxe-service=X86PC, "kpxe for Legacy BIOS", undionly.kpxe
pxe-service=X86PC, "pxe for Legacy BIOS", undionly.pxe

#2
pxe-service=IA64_EFI, "Boot IA64_EFI", uefi/ipxe64.efi

#6
pxe-service=IA32_EFI, "Boot IA32_EFI", uefi/ipxe32.efi

#7
pxe-service=X86-64_EFI, "Boot X86-64_EFI", uefi/ipxe64.efi

#8
pxe-service=Xscale_EFI, "Boot BC_EFI", uefi/ipxe64.efi

#9
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe64.efi

EOF

ip=$(/sbin/ifconfig |grep -v 127 | grep 'inet ' | sed 's/^.*inet addr://g'    | sed 's/ *Bcast.*$//g')

echo "dhcp-range=$ip,proxy" >> /etc/dnsmasq.conf



/usr/local/sbin/dnsmasq -9 &



其中紅色為最有價值分享的資料了。知道是什麼嗎?
作者: pcfan120    时间: 2019-7-24 17:50
不足30MB的 Linux系統建pxe伺服器,很期待楼主的成品,多谢分享
作者: mastercn    时间: 2019-7-24 18:23
期待大佬拯救苍生
作者: 邪恶海盗    时间: 2019-7-24 22:01
服务端啊,我以为是PXE客户端呢...
作者: hkkitlee    时间: 2019-7-25 00:09
邪恶海盗 发表于 2019-7-24 22:01
服务端啊,我以为是PXE客户端呢...

客戶端想要寫什麼?
作者: hkkitlee    时间: 2019-7-28 01:10
本帖最后由 hkkitlee 于 2019-7-28 01:19 编辑

完工了,一個白痴問題卡半天。

最後總大小是16MB,純文字並自動介入~自我感覺良好~
作者: 2010sya    时间: 2019-7-28 08:48
谢谢分享
作者: 江南一根葱    时间: 2019-7-28 19:21
能做成tcz档不,我好无聊时编译成单文件linux
作者: hkkitlee    时间: 2019-7-28 19:42
江南一根葱 发表于 2019-7-28 19:21
能做成tcz档不,我好无聊时编译成单文件linux

短訊覆你
作者: 指南针    时间: 2019-7-29 14:08
看样子是需要额外的httpd放置bash脚本;
利用dnsmasq实现dhcp、tftp服务加载引导文件,也是需要有其他的文件服务器
作者: hkkitlee    时间: 2019-7-29 14:20
本帖最后由 hkkitlee 于 2019-7-29 14:21 编辑
指南针 发表于 2019-7-29 14:08
看样子是需要额外的httpd放置bash脚本;
利用dnsmasq实现dhcp、tftp服务加载引导文件,也是需要有其他的文 ...


我的版本不用,直接可用

自建那是肯定需要的

要是你不嫌慢也放tftp就不用了
作者: 江南一根葱    时间: 2019-7-29 19:50
只需要dnsmasq这一个包就行了吗,看来可以做成pxe的tftpboot路径用启动参数来自定义
作者: hkkitlee    时间: 2019-7-29 21:30
江南一根葱 发表于 2019-7-29 19:50
只需要dnsmasq这一个包就行了吗,看来可以做成pxe的tftpboot路径用启动参数来自定义

沒錯, 只需更改(懶人包)中的引導bash(dnsmasq設定)就可以了
作者: 江南一根葱    时间: 2019-7-29 21:40
本帖最后由 江南一根葱 于 2019-7-29 21:47 编辑

根据楼主脚本编译了个比较肥的单文件演示版本(里面很多以前折腾过的垃圾文件),通杀bios/efi,随带随启,不过没在lib目录下放文件,貌似这脚本还是挺方便实用的,改天再改。。
efi下直接启动或chainloader
bios下直接作为kernel启动
链接: https://share.weiyun.com/5pqYA8c (密码:usFG)
效果
作者: 江南一根葱    时间: 2019-7-29 21:57
KERNEL ipxe.efi dhcp && chain http://10.10.10.10/NFW.ipxe
这个是能用ipxe.efi启到自定义的ipxe文件去的吗,以前从没这么用过,还是只能配合dnsmas才能用
作者: hkkitlee    时间: 2019-7-29 22:36
本帖最后由 hkkitlee 于 2019-7-29 22:37 编辑
江南一根葱 发表于 2019-7-29 21:57
KERNEL ipxe.efi dhcp && chain http://10.10.10.10/NFW.ipxe
这个是能用ipxe.efi启到自定义的ipxe文件去 ...


自訂版建議修改/etc/init.d/dhcp.sh

sleep XX........之後就是我的bash了
有自行編好的ipxe也可直接經dnsmasq引導,不用syslinux了.
作者: hkkitlee    时间: 2019-7-30 00:59
江南一根葱 发表于 2019-7-29 21:57
KERNEL ipxe.efi dhcp && chain http://10.10.10.10/NFW.ipxe
这个是能用ipxe.efi启到自定义的ipxe文件去 ...

是,chain是核心,initrd是核心參數/環境
作者: hkkitlee    时间: 2019-7-30 00:59
江南一根葱 发表于 2019-7-29 21:57
KERNEL ipxe.efi dhcp && chain http://10.10.10.10/NFW.ipxe
这个是能用ipxe.efi启到自定义的ipxe文件去 ...

是,chain是核心,initrd是核心參數/環境
作者: 江南一根葱    时间: 2019-7-30 08:00
想弄个脚本检测u盘是否存在pxeroot文件夹,存在就挂载到mnt/tftproot下,对应tftp-root,bash一窍不通,还在慢慢查
作者: 江南一根葱    时间: 2019-7-30 11:06
上面的脚本已经折腾好了,tinycore配置http用哪个好
作者: hkkitlee    时间: 2019-7-30 12:47
本帖最后由 hkkitlee 于 2019-7-30 12:49 编辑
江南一根葱 发表于 2019-7-30 11:06
上面的脚本已经折腾好了,tinycore配置http用哪个好


    Three steps are required to install HTTP Serwer:
        1. Download and install (tce-load -w -i busybox-httpd.tcz);
              2. Make it load on the each boot (edit file /opt/bootlocal.sh);
                    3. HTML page to load (index.html).


WEB server (busybox-httpd.tcz). Load / install. Short story, skip the rest.

--- Boot from CF card, Tiny Core already installed, text mode ---

tce-load -wi busybox-httpd.tcz
sudo vi /opt/bootlocal.sh
    Esc, i
    add-> /usr/local/httpd/sbin/httpd -p 80 -h /mnt/sda1/wwwsite
    Esc, :, w, q, Enter
sudo mkdir /mnt/sda1/wwwsite
sudo touch /mnt/sda1/wwwsite/index.html
sudo vi /mnt/sda1/wwwsite/index.html
    Esc, i
    add->   <html>
    add->      <body>
    add->         Web site alive
    add->      </body>
    add->   </html>
    Esc, :, w, q, Enter
filetool.sh -b
sudo reboot

--- OPTIONAL --- DD entire of CF card to file on USB disk ---
--- DONE ---


原文:https://skootsone.yolasite.com/netbox-tcore-web.php
作者: hkkitlee    时间: 2019-7-30 12:57
江南一根葱 发表于 2019-7-30 08:00
想弄个脚本检测u盘是否存在pxeroot文件夹,存在就挂载到mnt/tftproot下,对应tftp-root,bash一窍不通,还 ...

請教下,掛載後怎用?
作者: 江南一根葱    时间: 2019-7-30 13:01
本帖最后由 江南一根葱 于 2019-7-30 13:22 编辑
hkkitlee 发表于 2019-7-30 12:57
請教下,掛載後怎用?

挂载后列出里面指定类型的启动文件(比如包含grldr中的"ldr"或kpxe、efi之类的,) 把这个目录的启动文件添加到dnsmasq配置文件中,pxe启动后可以选中启动
-----------------------------------------------------------------------

大概想法是这样的,启动linux后搜索u盘的pxeboot目录,并把它设为tftp、http的根目录  列出相关*.efi等可启动文件配置到conf里,在启动时显示供选择,
然后启动网启服务



现在我只折腾成功了自动挂载,设为tftp目录,,列出菜单还没实现
作者: hkkitlee    时间: 2019-7-30 13:49
本帖最后由 hkkitlee 于 2019-7-30 13:54 编辑
江南一根葱 发表于 2019-7-30 13:01
挂载后列出里面指定类型的启动文件(比如包含grldr中的"ldr"或kpxe、efi之类的,) 把这个目录的启动文件添 ...


我理解
1應該只欠dnsmasq.conf中tftp的根路徑設成你掛載的tftp-root
2再根據客戶機回報arch所需的指定啟動文件。

不太肯定你是以什麼方式存放啟動文件(分區/硬碟影像/文件夾),所以估計是否這樣?
作者: 江南一根葱    时间: 2019-7-30 14:04
hkkitlee 发表于 2019-7-30 13:49
我理解
1應該只欠dnsmasq.conf中tftp的根路徑設成你掛載的tftp-root
2再根據客戶機回報arch所需的指 ...

嗯,挂载和http tftp啥的我已经瞎搞了下实现了,
就差列表指定目录的文件为启动文件了,
作者: hkkitlee    时间: 2019-7-30 14:13
本帖最后由 hkkitlee 于 2019-7-30 14:15 编辑
江南一根葱 发表于 2019-7-30 14:04
嗯,挂载和http tftp啥的我已经瞎搞了下实现了,
就差列表指定目录的文件为启动文件了,


成功不遠了

溫馨提示:記得dnsmasq內指示啟動文件是以tftp-root作為根!不是系統根目錄作根就可以!
完成發個帖出來分享下~

想問問你動態掛載pxeroot是否為了容易於更新啟動文件?
作者: 江南一根葱    时间: 2019-7-30 14:35
hkkitlee 发表于 2019-7-30 14:13
成功不遠了

溫馨提示:記得dnsmasq內指示啟動文件是以tftp-root作為根!不是系統根目錄作根就可以! ...

是啊,启动文件常要换的,搞试验用
作者: 江南一根葱    时间: 2019-7-30 15:13
本帖最后由 江南一根葱 于 2019-7-30 15:17 编辑

列菜单可以了,不过有点郁闷,启动时会在启动文件后面会加.0。。。然后提示找不到xxxx.xxx.0

我明明放的managerpxebios.kpxe,启动的也是这个文件,但提示的是managerpxebios.kpxe.0 not found
作者: hkkitlee    时间: 2019-7-30 15:18
江南一根葱 发表于 2019-7-30 15:13
列菜单可以了,不过有点郁闷,启动时会在启动文件后面会加.0。。。然后提示找不到xxxx.xxx.0

不郁悶,這好像是要兼容老bios的pxe rom,都忘記講了

多建幾個pxe,坑慣就不坑了~哈哈
作者: 江南一根葱    时间: 2019-7-30 15:29
hkkitlee 发表于 2019-7-30 15:18
不郁悶,這好像是要兼容老bios的pxe rom,都忘記講了

多建幾個pxe,坑慣就不坑了~哈哈

这个没法解决吗,还是文件一定得加个.0
作者: hkkitlee    时间: 2019-7-30 15:50
江南一根葱 发表于 2019-7-30 15:29
这个没法解决吗,还是文件一定得加个.0

Linux命令:
ln -s xxxxx xxxxx.0 #建立帶*.0的捷徑



手動加.0
作者: 江南一根葱    时间: 2019-7-30 15:55
本帖最后由 江南一根葱 于 2019-7-30 16:08 编辑
hkkitlee 发表于 2019-7-30 15:50
Linux命令:
ln -s xxxxx xxxxx.0 #建立帶*.0的捷徑


我加了.0之后在传输时又给我加了.0,于是变成.0.0了,

然后暂时是用文件实际有.0,配置里是 ${biosfile%.0}这样,
。。。这软件包有点变态啊。


efi文件没这问题吧,好坑
作者: hkkitlee    时间: 2019-7-30 16:20
本帖最后由 hkkitlee 于 2019-7-30 16:22 编辑
江南一根葱 发表于 2019-7-30 15:55
我加了.0之后在传输时又给我加了.0,于是变成.0.0了,

然后暂时是用文件实际有.0,配置里是 ...


試試在原文件加個副檔名,就好像不再需要.0了

我的引導檔有副檔名就沒問題了


恭喜啟動成功了!
作者: 江南一根葱    时间: 2019-7-30 17:29
又遇到个麻烦,tinypxe能启的它不能启,貌似得用钦定的pxe菜单文件
作者: hkkitlee    时间: 2019-7-30 17:40
本帖最后由 hkkitlee 于 2019-7-30 17:56 编辑
江南一根葱 发表于 2019-7-30 17:29
又遇到个麻烦,tinypxe能启的它不能启,貌似得用钦定的pxe菜单文件


對一對網頁路徑是否正確



如果見不到自己寫的引導「菜單」,那要看dnsmasq.conf或上一層引導設定。

見到引導檔的菜單,dnsmasq已完成工作。接力的是引導檔經網頁伺服取得OS文件!
如果是在TC建的httpd,留意設定檔網站的根目錄設定
測試則可用瀏覽器試看
作者: 江南一根葱    时间: 2019-7-30 19:18
hkkitlee 发表于 2019-7-30 17:40
對一對網頁路徑是否正確

菜单和取文件都正常了的,
不过bios下不能启动g4d(grldr)
启kpxe文件丢失内置脚本的,脚本是设置下一个启动文件为g4d
作者: 江南一根葱    时间: 2019-7-30 19:28
hkkitlee 发表于 2019-7-30 17:40
對一對網頁路徑是否正確



比如这个 kpxe本来内痣了脚本,脚本是set bootfile下面那个g4d文件,死循环了,,
直接引导g4d,报错了,

看来它这个有点像生成3com那个pxe bootmenu,并不是什么启动文件都支持的,我估计能直接启软盘img文件
作者: hkkitlee    时间: 2019-7-30 19:36
江南一根葱 发表于 2019-7-30 19:18
菜单和取文件都正常了的,
不过bios下不能启动g4d(grldr)
启kpxe文件丢失内置脚本的,脚本是设置下一个 ...

「引導檔」引導另一個「引導檔」是有機會失敗,特別是bios
還有就是一款引導已經有多種啟動命令!幾個引導檔看齊所有真的是吃不消。
Grub2命令多得直接嚇死人


kpxe內置腳本是否已測試過?


作者: 江南一根葱    时间: 2019-7-30 19:42
hkkitlee 发表于 2019-7-30 19:36
「引導檔」引導另一個「引導檔」是有機會失敗,特別是bios
還有就是一款引導已經有多種啟動命令!幾個引 ...

应该知道是为啥失败了, 它出现的菜单应该和这个软件生成的pxe启动菜单.mba文件是一样的东西,我再确认下,还有就是efi分这么多不知道啥意思,有没有地方参考,我vmware认出来的efi居然是bc_efi
作者: hkkitlee    时间: 2019-7-30 19:49
本帖最后由 hkkitlee 于 2019-7-30 19:56 编辑
江南一根葱 发表于 2019-7-30 19:28
比如这个 kpxe本来内痣了脚本,脚本是set bootfile下面那个g4d文件,死循环了,,
直接引导g4d,报 ...


messagepxebios 回報體積過大

Ipxe 是死循環,應該係script有問題不執行或沒script可執行
作者: hkkitlee    时间: 2019-7-30 19:55
江南一根葱 发表于 2019-7-30 19:42
应该知道是为啥失败了,它出现的菜单应该和这个软件生成的pxe启动菜单.mba文件是一样的东西,我再确认下, ...

#2
pxe-service=IA64_EFI, "Boot IA64_EFI", uefi/ipxe64.efi

#6
pxe-service=IA32_EFI, "Boot IA32_EFI", uefi/ipxe32.efi

#7
pxe-service=X86-64_EFI, "Boot X86-64_EFI", uefi/ipxe64.efi

#8
pxe-service=Xscale_EFI, "Boot BC_EFI", uefi/ipxe64.efi

#9
pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe64.efi



bc_efi=bit-code類型efi。詳細就不懂
還有ia32/64,x86-64
作者: 江南一根葱    时间: 2019-7-30 20:45
hkkitlee 发表于 2019-7-30 19:49
messagepxebios 回報體積過大

Ipxe 是死循環,應該係script有問題不執行或沒script可執行

这两个在tinypxe下都是可以启的,tinycore下不知道有没有其它的服务端
作者: 江南一根葱    时间: 2019-7-30 21:49
本帖最后由 江南一根葱 于 2019-7-30 22:03 编辑



bios和uefi都需要特殊格式的启动文件才行,看来我还得重新编译ipxe。。。

卧槽,试来试去,还是就pxelinux.0正常
作者: hkkitlee    时间: 2019-7-30 22:52
江南一根葱 发表于 2019-7-30 21:49
bios和uefi都需要特殊格式的启动文件才行,看来我还得重新编译ipxe。。。

卧槽,试来试去,还是就px ...

發個dnsmasq.conf來看看
作者: 江南一根葱    时间: 2019-7-31 09:12
hkkitlee 发表于 2019-7-30 22:52
發個dnsmasq.conf來看看

set -- $(cat /proc/cmdline)
for x in "$@"; do
case "$x" in
myip=*)
export myip="${x#myip=}"
;;
pxeroot=*)
export pxeroot"${x#pxeroot=}"
;;

esac
done
#mount
for i in $(ls /mnt); do
mount /mnt/$i
done

if [ !-n $bootmulu ]; then
mulu=$( find /mnt/ -name pxeboot -type d)
else
mulu=$( find /mnt/ -name $pxeroot -type d)
fi


sudo /bin/cat << EOF > /etc/dnsmasq.conf

#Don't function as a DNS server:
port=0

#Log lots of extra information about DHCP transactions.
log-dhcp

enable-tftp
tftp-root=$mulu

#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-prompt="Press F8 for NBP (Net Boot Program) menu.Default ipxe.", 10

#0


#pxe-service=X86PC, "kkpxe for Legacy BIOS", undionly.kkpxe
#pxe-service=X86PC, "kpxe for Legacy BIOS", undionly.kpxe
#pxe-service=X86PC, "pxe for Legacy BIOS", undionly.pxe

#2

#pxe-service=IA64_EFI, "Boot IA64_EFI", uefi/ipxe64.efi

#6

#pxe-service=IA32_EFI, "Boot IA32_EFI", uefi/ipxe32.efi

#7
#pxe-service=X86-64_EFI, "Boot X86-64_EFI", uefi/ipxe64.efi

#8
#pxe-service=Xscale_EFI, "Boot BC_EFI", uefi/ipxe64.efi

#9
#pxe-service=BC_EFI, "Boot BC_EFI", uefi/ipxe64.efi
EOF
#test
cd $mulu
for biosfilea in $(find *bios* -type f ); do
echo pxe-service=X86PC, "${biosfilea%.*}", ${biosfilea%.0} >> /etc/dnsmasq.conf
done
for biosfileb in $(find *.0 -type f ); do
echo pxe-service=X86PC, "${biosfileb%.*}", ${biosfileb%.0} >> /etc/dnsmasq.conf
done


for efi64a in $(find *64* -type f ); do
echo pxe-service=BC_EFI, "$efi64a", $efi64a  >> /etc/dnsmasq.conf
done

for efi64b in $(find *64* -type f ); do
echo pxe-service=X86-64_EFI, "$efi64b", $efi64b  >> /etc/dnsmasq.conf
done

for efi64c in $(find *64* -type f ); do
echo pxe-service=IA64_EFI, "$efi64c", $efi64c  >> /etc/dnsmasq.conf
done

for efi32 in $(find *32* -type f ); do
echo pxe-service=IA32_EFI, "$efi32", $efi32  >> /etc/dnsmasq.conf
done

sleep 8
ip=$(/sbin/ifconfig |grep -v 127 | grep 'inet ' | sed 's/^.*inet addr://g' | sed 's/ *Bcast.*$//g')
echo "dhcp-range=$ip,proxy" >> /etc/dnsmasq.conf
echo tftp:$mulu
echo $ip
sleep 2
/usr/local/sbin/dnsmasq -9 &
/usr/local/httpd/sbin/httpd -p 80 -h $mulu &
filetool.sh -b
cd /tce/optional


我改成这样了,暂时用pxelinux能启
作者: 江南一根葱    时间: 2019-7-31 09:13

作者: diwu2005    时间: 2019-7-31 09:30
江南一根葱,弄个懒人版出来,让零基础小白也能使用
作者: hkkitlee    时间: 2019-7-31 11:53
本帖最后由 hkkitlee 于 2019-7-31 12:27 编辑
江南一根葱 发表于 2019-7-31 09:12
set -- $(cat /proc/cmdline)
for x in "$@"; do
case "$x" in


讀了一會,這個在思路上和程式上有點意見:
動態資料夾
動態檔案數
「半」動態檔名

既然此影像檔是用來啟動,何不設為:
絕對路徑存放引導檔
已可啟動的引導檔「不」以尋找方式寫設定檔了,是寫死的
而需要作測試的則以特定檔名存放在pxeboot,比如是atest.efi/atest.pxe;設定則寫死在dnsmasq.conf內。有檔則啟,無檔無礙。


因為如果你的script在背境執行,是很難排錯。script還要兼顧邏輯/條件問題
還有就是有些「不」需要連腳本引導,有的則需要二次帶腳本引導;會通通全走出來。更難排錯。

還有就是tftp路徑過長會類似「記憶體溢出」。


另外見你引導IMG檔,引導此類檔都需要syslinux的memdisk for bios,或者ipxe 的 sanboot 。不知tinypxe是否已幫忙加載,這要查原文件。
作者: 江南一根葱    时间: 2019-7-31 12:09
本帖最后由 江南一根葱 于 2019-7-31 12:54 编辑
hkkitlee 发表于 2019-7-31 11:53
讀了一會,這個在思路上和程式上有點意見:
動態資料夾
動態檔案數


img文件用3com boot image editor修改成tcp/ip启动可以直启的  如图


,以前把整个win98弄进img里直接启动到桌面过
不过这个pxemenu貌似跟3com的不太一样,3com那个兼容性很好,可以启动grldr,这个不行,有点不太理解。。
作者: 江南一根葱    时间: 2019-7-31 12:35
linux貌似有一点不好,获取不到ip就没地址了,要是像win一样,没dhcp能取到169.254.1.1这样的地址就好了
作者: 2012zhiwen    时间: 2019-7-31 12:45
多放些图片,,

作者: hkkitlee    时间: 2019-7-31 13:43
本帖最后由 hkkitlee 于 2019-7-31 13:48 编辑
江南一根葱 发表于 2019-7-31 12:09
img文件用3com boot image editor修改成tcp/ip启动可以直启的  如图


留意一下你的gif圖,tinypxe的log中是有回傳客戶機*MAXDOS9.SYS*

Linux是比軟「原始」,你不叫他不做。
沒什麼背境作業。也因為如此什麼都得手工。也可以手工。
性能也就是如此搾出來。就是如此又愛又恨。

Tinypxe 看來幫手做了點初始工夫
作者: 江南一根葱    时间: 2019-7-31 15:46
hkkitlee 发表于 2019-7-31 13:43
留意一下你的gif圖,tinypxe的log中是有回傳客戶機*MAXDOS9.SYS*

Linux是比軟「原始」,你不叫他不 ...

可能我没描述清楚才没讨论到点上,不过我已经实证了是可以兼容启动3com工具生成mba文件,并直接启动img文件,


efi文件好像没启成功,不知道为什么,难道也要加.0?
作者: hkkitlee    时间: 2019-7-31 16:14
很好!!再堅持點完工了~~
逐個擊破排錯吧,一步一步收窄問題

EFI那邊有沒有選擇NBP?
作者: 江南一根葱    时间: 2019-7-31 17:42
本帖最后由 江南一根葱 于 2019-7-31 19:51 编辑
hkkitlee 发表于 2019-7-31 16:14
很好!!再堅持點完工了~~
逐個擊破排錯吧,一步一步收窄問題


nbp菜单有出来的,列文件也正常,但就是选中后过了一会回到EFI固件设置界面了



现在基本搞通能启什么类型的文件了,重新编译了.pxe类型的ipxe(bios)目前正常,还有两个东西待解决

dnsmsasq要配置proxydhcp,不然有路由的情况tftp不到文件
局域网没有dhcp的时候tinycore要分配一个地址,169.254.0.0段的。。


可惜今天公司的机晚上连不上远程桌面编译,家里同步不过来,只好先编译几个启动文件

作者: hkkitlee    时间: 2019-7-31 20:28
本帖最后由 hkkitlee 于 2019-7-31 20:32 编辑
江南一根葱 发表于 2019-7-31 17:42
nbp菜单有出来的,列文件也正常,但就是选中后过了一会回到EFI固件设置界面了


看似bios/uefi都可啟動了。恭喜完工了!

Proxydhcp差不多是必備了。不必動到原來網絡「基本設定」。
外出工作時,即使「求」,人家網管人員多數也不理你。

我版本更新了點,有空試試。請看changelog
作者: 江南一根葱    时间: 2019-7-31 21:04
hkkitlee 发表于 2019-7-31 20:28
看似bios/uefi都可啟動了。恭喜完工了!

Proxydhcp差不多是必備了。不必動到原來網絡「基本設定」。 ...

没有dhcp的情况下tinycore会不会有ip地址的,我暂时没试
作者: hkkitlee    时间: 2019-7-31 21:27
江南一根葱 发表于 2019-7-31 21:04
没有dhcp的情况下tinycore会不会有ip地址的,我暂时没试

當然沒有,除非手動設定。

常規伺服器是手動設定,不靠dhcp。

但pxe 又怎可能沒dhcp,伺服器不要客戶機都要啦!

我的版本要用在不同網域上,只是網段/子掩碼不同就不能硬設定。
作者: 江南一根葱    时间: 2019-7-31 22:26
还是遇到挺多坑的,在tinypxe里,ipxe收到的是next-server,dnsmasq里就变成dhcp-server了
proxydhcp/next-server变成了proxydhcp/dhcp-server...
搞了半天才发现这个奇葩的问题
作者: guzhentao    时间: 2019-7-31 22:28
最新的版本是在你的官网上下吗?
作者: hkkitlee    时间: 2019-7-31 22:49
guzhentao 发表于 2019-7-31 22:28
最新的版本是在你的官网上下吗?

哈,官網不敢當,小網站好了
https://hkkitlee.ddns.net:9000/ryan.zip

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: hkkitlee    时间: 2019-7-31 22:55
江南一根葱 发表于 2019-7-31 22:26
还是遇到挺多坑的,在tinypxe里,ipxe收到的是next-server,dnsmasq里就变成dhcp-server了
proxydhcp/next- ...

不是坑
只是專用名詞,多用linux就不陌生

還可以實際點,sudo netstat -tunlp
直接問系統開了什麼端口
Pxe:67,69,4011
Smb:137-139,445
作者: huaqingyuan    时间: 2019-7-31 23:17
dhcpsrv2.5.2  OpenDHCPServerInstallerV1.73   都非常好用!特别是dhcpsrv2.5.2,自带HTTP,FTP
作者: guzhentao    时间: 2019-7-31 23:32
hkkitlee 发表于 2019-7-31 22:49
哈,官網不敢當,小網站好了
https://hkkitlee.ddns.net:9000/ryan.zip

我用32G的U盘进行写入,好像盘符没显示!其中有个要格式化
作者: hkkitlee    时间: 2019-7-31 23:52
guzhentao 发表于 2019-7-31 23:32
我用32G的U盘进行写入,好像盘符没显示!其中有个要格式化

要格式化的,所以請先保存好原資料。

不懂做u盤可再看看:https://hkkitlee.ddns.net:9000/setup.html
作者: hkkitlee    时间: 2019-7-31 23:58
huaqingyuan 发表于 2019-7-31 23:17
dhcpsrv2.5.2  OpenDHCPServerInstallerV1.73   都非常好用!特别是dhcpsrv2.5.2,自带HTTP,FTP

讚,多一個選擇!
作者: 江南一根葱    时间: 2019-8-1 09:17
本帖最后由 江南一根葱 于 2019-8-1 09:35 编辑
hkkitlee 发表于 2019-7-31 22:55
不是坑
只是專用名詞,多用linux就不陌生


不知道能不能在dnsmasq里指定next-server,懒得整一大堆ipxe引导文件。。
谷歌了下貌似是dhcp-option=pxe,66,"$ip" ,赶紧试下先


其实我最终的用处是在一个没有dhcp的环境用,当然也要可以在有dhcp的环境用,

作者: 指南针    时间: 2019-8-1 09:40
楼主可以换个5.2.0内核

bzImage64.part1.rar

2 MB, 下载次数: 6, 下载积分: 无忧币 -2

bzImage64.part2.rar

2 MB, 下载次数: 7, 下载积分: 无忧币 -2

bzImage64.part3.rar

2 MB, 下载次数: 7, 下载积分: 无忧币 -2

bzImage64.part4.rar

825.17 KB, 下载次数: 7, 下载积分: 无忧币 -2


作者: hkkitlee    时间: 2019-8-1 10:21
指南针 发表于 2019-8-1 09:40
楼主可以换个5.2.0内核

嘩~~謝謝謝謝~~~
我可不客氣,晚一點更新!

你自己編譯的嗎?
作者: hkkitlee    时间: 2019-8-1 10:21
指南针 发表于 2019-8-1 09:40
楼主可以换个5.2.0内核

嘩~~謝謝謝謝~~~
我可不客氣,晚一點更新!

你自己編譯的嗎?
作者: hkkitlee    时间: 2019-8-1 10:24
江南一根葱 发表于 2019-8-1 09:17
不知道能不能在dnsmasq里指定next-server,懒得整一大堆ipxe引导文件。。
谷歌了下貌似是dhcp-option= ...

我的是網啟版,dhcp是必備了

等你好消息哦
作者: 指南针    时间: 2019-8-1 10:27
hkkitlee 发表于 2019-8-1 10:21
嘩~~謝謝謝謝~~~
我可不客氣,晚一點更新!

不是我编译的,我从    易数一键备份还原 官网下载的ISO里面提取的,测试是能识别  ide、sata、scsi、nvme磁盘的,网络居然也支持(我用的VM虚拟机),我看体积编译的有点小,猜测可能网卡驱动会不会内置的不全?
作者: hkkitlee    时间: 2019-8-1 10:53
指南针 发表于 2019-8-1 10:27
不是我编译的,我从    易数一键备份还原 官网下载的ISO里面提取的,测试是能识别  ide、sata、scsi、nvm ...


我晚一點在u盤選項增加一項:RyanTC mini pxe kernel 5.20 by COMPASS

好嗎?
作者: 指南针    时间: 2019-8-1 11:00
hkkitlee 发表于 2019-8-1 10:53
我晚一點在u盤選項增加一項:RyanTC mini pxe kernel 5.20 by COMPASS

好嗎?

你用的是64位的还是32位的?看你这么有折腾劲,我确实有自己编译好的内核,内置了ide、sata、scsi、nvme驱动,内置了全部有线网卡驱动,而且是最新版的5.2.5内核哦
作者: 江南一根葱    时间: 2019-8-1 11:07
本帖最后由 江南一根葱 于 2019-8-1 11:15 编辑
hkkitlee 发表于 2019-8-1 10:24
我的是網啟版,dhcp是必備了

等你好消息哦


哎,今天早上公司里用在线编译折腾不了ipxe,ipxe里的next-server可以取到了,但proxydhcp/next-server还是不行,看来还得继续折腾
我这个是网启,本地通用的
不过你用网启来网启一个网启服务器,那不是。。。。
作者: hkkitlee    时间: 2019-8-1 11:19
指南针 发表于 2019-8-1 11:00
你用的是64位的还是32位的?看你这么有折腾劲,我确实有自己编译好的内核,内置了ide、sata、scsi、nvme ...

折騰還不是為了方便自己
外出工作,帶少了點工具工作不了;要帶多又辛苦又怕忘記。

硬盤驅動還不太緊張,畢竟是ramos;主要還是網卡。
我想i686差不多該淘汰了,x64主流了
作者: hkkitlee    时间: 2019-8-1 11:29
本帖最后由 hkkitlee 于 2019-8-1 11:40 编辑
江南一根葱 发表于 2019-8-1 11:07
哎,今天早上公司里用在线编译折腾不了ipxe,ipxe里的next-server可以取到了,但proxydhcp/next-server ...


https://rom-o-matic.eu/

這個網啟出來的網啟,肯定「不是」本地用了!

Ipxe可以寫判斷式,next-server不行chainload dhcp-server囉
作者: hkkitlee    时间: 2019-8-1 11:35
指南针 发表于 2019-8-1 11:00
你用的是64位的还是32位的?看你这么有折腾劲,我确实有自己编译好的内核,内置了ide、sata、scsi、nvme ...

還記得在那個光盤年代,我的網線夾刮了一下win me的安裝光碟,就要我來回三小時,還未算燒錄時間....

作者: 指南针    时间: 2019-8-1 11:42
hkkitlee 发表于 2019-8-1 11:35
還記得在那個光盤年代,我的網線夾刮了一下win me的安裝光碟,就要我來回三小時,還未算燒錄時間....

http://bbs.wuyou.net/forum.php?m ... d=415622&extra=
作者: 江南一根葱    时间: 2019-8-1 12:04
hkkitlee 发表于 2019-8-1 11:29
https://rom-o-matic.eu/

這個網啟出來的網啟,肯定「不是」本地用了!

不是,我的应用场景是在没任何dhcp服务器的机房用u盘启动这个tinycore变成服务器,

其它机器开起来进入pe,然后用微力同步p2p分发数据

现在折腾了个ipxe脚本,勉强可以满足我需求了。

#!ipxe
set getfile managerpxe
ifopen net0
ifstat
   set menu-timeout 5000
   set menu-default dhcpserver
:boot
prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell ||
chain file:/pxeboot/${getfile} || goto netboot

:netboot
dhcp
chain tftp://${dhcp-server}/${getfile} || chain tftp://${proxydhcp/dhcp-server}/${getfile} ||
goto start


:menu
isset ${ip} || dhcp
goto start

:start
  menu Choose An Existing Server!  Serverip:${serverip}  bootfile: ${getfile}
  item --gap --             --------------------------------PXE BOOT-----------------------------
  item dhcpserver        ${dhcp-server}
  item proxydhcp         ${proxydhcp/dhcp-server}
  item retry             set filename   

  item --gap --             ---------------------------- Advanced options -----------------------
  item --key c config       Configure settings                                   -- c
  item --key p pxelinux     Load PXELinux menu                                   -- p
  item shell                Drop to iPXE shell
  item reboot               Reboot computer
  item --key x exit         Exit iPXE and continue BIOS boot                     -- x
  choose --timeout ${menu-timeout} --default ${menu-default} selected
  goto ${selected}

:dhcpserver
echo ${dhcp-server}/${getfile}
chain tftp://${dhcp-server}/${getfile} || set menu-default proxydhcp ||
goto start

:proxydhcp
echo ${proxydhcp/dhcp-server}/${getfile}
chain tftp://${proxydhcp/dhcp-server}/${getfile} || set menu-default retry ||
goto start

:retry
console
echo set Filename
read getfile
set menu-default dhcpserver
goto start

:shell
  echo Type 'exit' to get the back to the menu
  shell
  goto start

:failed
  echo Booting failed, dropping to shell
  goto shell

:reboot
  reboot

:exit
  exit

:config
  config
  goto start


作者: 江南一根葱    时间: 2019-8-1 12:07
本帖最后由 江南一根葱 于 2019-8-1 12:17 编辑



这样一个ipxe脚本灵活应用
不怕取不到文件。。。。
作者: 江南一根葱    时间: 2019-8-1 13:17
还是挺纠结的,tinypxe下用ipxe脚本能成功chain到g4d,用tinycore就怎么整都会失败,,
作者: 江南一根葱    时间: 2019-8-1 13:17
还是挺纠结的,tinypxe下用ipxe脚本能成功chain到g4d,用tinycore就怎么整都会失败,,
作者: hkkitlee    时间: 2019-8-1 13:57
江南一根葱 发表于 2019-8-1 13:17
还是挺纠结的,tinypxe下用ipxe脚本能成功chain到g4d,用tinycore就怎么整都会失败,,

G4d 沒動力折騰了,好像只啟動bios嗎?

http://ipxe.org/appnote/work_around_bios_halting_on_ipxe_exit
作者: 江南一根葱    时间: 2019-8-1 14:08
hkkitlee 发表于 2019-8-1 13:57
G4d 沒動力折騰了,好像只啟動bios嗎?

http://ipxe.org/appnote/work_around_bios_halting_on_ipxe_e ...

嗯,tinypxe的dhcp貌似能给ipxe设置很多变量值,fiilename之类的,dnsmasq里看来还要添加很多东西。。

作者: hkkitlee    时间: 2019-8-1 14:16
江南一根葱 发表于 2019-8-1 14:08
嗯,tinypxe的dhcp貌似能给ipxe设置很多变量值,fiilename之类的,dnsmasq里看来还要添加很多东西。。

http://2kr.blog87.fc2.com/blog-entry-1037.html

Dnsmasq當然有,慢慢看,加油
作者: linan186    时间: 2019-8-1 15:18

感谢分享。
作者: 江南一根葱    时间: 2019-8-1 16:12
基本都解决了,现在唯一难点pxe-service列出的启动文件在按下回车启动后,要向ipxe发送相应(不同)的filename,搜索了一堆资料没成功。。
作者: hkkitlee    时间: 2019-8-1 16:48
江南一根葱 发表于 2019-8-1 16:12
基本都解决了,现在唯一难点pxe-service列出的启动文件在按下回车启动后,要向ipxe发送相应(不同)的filenam ...

不太明白你意思
作者: 江南一根葱    时间: 2019-8-1 17:04
hkkitlee 发表于 2019-8-1 16:48
不太明白你意思

pxe-service列出文件,选中,启动ipxe
ipxe里filename的变量值要是选择的那个文件,好像目前做不到

作者: hkkitlee    时间: 2019-8-1 17:16
江南一根葱 发表于 2019-8-1 17:04
pxe-service列出文件,选中,启动ipxe
ipxe里filename的变量值要是选择的那个文件,好像目前做不到

還是不太明.......

Ipxe filename還要變量什麼?
作者: 2010悟雨    时间: 2019-8-1 17:59
从广州加载你那边的文件还是很快的
10ms延迟
看到江南一根葱踩的坑,蒙蔽中
作者: 江南一根葱    时间: 2019-8-1 18:10
hkkitlee 发表于 2019-8-1 17:16
還是不太明.......

Ipxe filename還要變量什麼?

嗯,,启动后 会在filename出现,ipxe命令行下config可以看
我要chain 启动文件.ipxe
作者: hkkitlee    时间: 2019-8-1 18:23
江南一根葱 发表于 2019-8-1 18:10
嗯,,启动后 会在filename出现,ipxe命令行下config可以看
我要chain 启动文件.ipxe

你動態尋找啟動檔是在TC(A),並寫入dnsmasq.conf

執行ipxe是客戶機(B),想找出(A)的可啟動檔變量!?!?

我不懂怎做了....
作者: hkkitlee    时间: 2019-8-1 18:24
2010悟雨 发表于 2019-8-1 17:59
从广州加载你那边的文件还是很快的
10ms延迟
看到江南一根葱踩的坑,蒙蔽中

太好,有用後回覆~

請問試了的是什麼?
作者: 江南一根葱    时间: 2019-8-1 19:12
hkkitlee 发表于 2019-8-1 18:23
你動態尋找啟動檔是在TC(A),並寫入dnsmasq.conf

執行ipxe是客戶機(B),想找出(A)的可啟動檔變量!?!? ...

我是想在这里选中启动文件



能在这里找到

然后我就在脚本里可以引用${filename}了

目的就是不用经常编译调用指定ipxe文件,也不用自己去写菜单,别人发布的拿来就用
作者: 江南一根葱    时间: 2019-8-1 19:16

也就是说我想把它写进循环里,貌似是不行,
这里显示的filename是我在dnsmasq的conf中钦定的,
dhcp-boot=tinycore.pxe.0这样

作者: hkkitlee    时间: 2019-8-2 11:47
江南一根葱 发表于 2019-8-1 19:16
也就是说我想把它写进循环里,貌似是不行,
这里显示的filename是我在dnsmasq的conf中钦定的,
dhcp-bo ...

這.......

小弟愚笨:想了很久,好像是有雞先還是有蛋先之類的問題




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3