|  | 
3#
 
 
 楼主|
发表于 2019-7-24 16:18:49
|
只看该作者 
| 本帖最后由 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 &
 
 
 
 其中紅色為最有價值分享的資料了。知道是什麼嗎?
 | 
 |