|
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 &
其中紅色為最有價值分享的資料了。知道是什麼嗎? |
|