vps幾種情況特殊下引導netboot.xyz安裝系統
最近嫖的azure3年訂閱要到期了,猶豫rancher要求的配置高,單獨買機器的成本大,所以把docker管理面板從rancher換成了portainer,又整理了手頭上閒置的vps資源,全部加入到docker,從virmach賬戶找到了去年黑五買到的低硬盤低內存用ubuntu最小化安裝開機都成問題的機器,於是便想起可以裝alpine使用,然後索性研究了下alpine裡面能不能跑docker容器,發現可行後便準備將現有的所有docker節點更換為alpine以便剩下更多的資源給容器用,但有些服務商不提供系統模板/iso掛載/屏蔽gpxe或ixpe等,本文章主要介紹了這些特殊情況下如何引導netboot.xyz進行網絡系統的安裝.
目前測試過的情況
- 服務商提供iso上傳
- 服務商不提供iso上傳但vps啟動時有ipxe
- 服務商屏蔽了boot菜單只能在面板選擇cd啟動,但不提供netboot.xyz的cd
- 服務商只能提供現有的系統模板,不提供任何引導選項和任何cd
- 服務商不提供系統重裝,只提供救援系統,而且現在系統無法啟動
以上5條均有提供vnc,需要用vnc操作後續系統的安裝和網絡設置,沒有vnc的情況下我也無能為力.
其實還有遇到各種情況,這裡只列出來常見的幾種(貌似也摻雜了不常見的)
此外,這裡只提供基於傳統的legacy引導的方法,手裡沒有uefi引導的vps沒有測試過.
第一條就不講了,自己動腦.
服務商不提供iso上傳但vps啟動時有ipxe
滿足這個條件的情況下就很簡單了,首先開機看看有沒有提供ipxe,一般會顯示ipxe的熱鍵看到後立即按下熱鍵即可進入ipxe,如果沒看到熱鍵但是看到有啟動選項熱鍵,則按下熱鍵檢查裡面是否有ipxe選項,如果有則選擇ipxe啟動,如果沒有但是有網卡啟動,則選擇網卡看看網卡是否使用ipxe如果沒有的話說明機器不支持ipxe引導,請查看沒有ipxe的啟動方法.
假設你現在已經進入了ipxe那麼你只需要輸入config
進入設置菜單,設置你的網絡然後輸入netboot.xyz的引導指令
chain --autofree https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn
然後等待netboot.xyz自動檢測和設置ip之後進入菜單之後選擇網絡安裝然後選擇自己需要的系統安裝即可.
部分情況netboot.xyz不會自己檢測到ip信息,那麼在netboot.xyz加載的時候按下m手動設置ip即可(推薦每次這樣做,因為如果自己檢測不到還是得重啟vps重新進入ipxe引導)
此外部分服務商不提供ipxe但提供gpxe,gpxe是ipxe的前身,設置ip方法好像是一樣的(不確定,很久之前用過)
設置好ip之後可以嘗試引導netboot.xyz如果不能成功引導的話可以試試salstar.sk
的網絡安裝程序
chain http://boot.salstar.sk
服務商屏蔽了boot菜單只能在面板選擇cd啟動,但不提供netboot.xyz的cd
這種情況其實和第四條一樣,採用相同的做法即可.
先安裝ubuntu或者debian進入系統,然後下載netboot.xyz的內核到/boot目錄
wget https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn -O /boot/netboot.xyz.lkrn
然後編輯/boot/grub/grub.cfg
加入以下內容
menuentry "netboot.xyz.lkrn" {
linux16 /boot/netboot.xyz.lkrn
}
推薦加到現有的menuentry
的前面,這樣下次重啟的時候會自動加載netboot.xyz而不用自己手動選擇.
如果是arch/alpine等使用extlinux引导的则编辑/boot/extlinux.conf
找到第一个LABEL
在它前面加入
LABEL netboot.xyz
KERNEL /boot/netboot.xyz.lkrn
然后重启后狂点上下键出现引导菜单
啟動後按m設置ip信息之後進入菜單之後選擇網絡安裝然後選擇自己需要的系統安裝即可.
服務商不提供系統重裝,只提供救援系統,而且現在系統無法啟動或有因為系統導致的網絡問題
這個場景是我一個vps的服務商的重裝模板系統失效了,而且現有系統開機在vnc中會花屏時研究出來的,其實很簡單
首先進入一個救援系統,linux內核或者其它專業救援系統都可以
進入系統後首先要找到vps的系統硬盤分區,然後將其掛載,這裡假設我的系統在/dev/sda1
裡
那麼要先將其找個地方掛載,這裡我掛載到/mnt/sda1
mkdir /mnt/sda1
chmod 777 /mnt/sda1
mount /dev/sda1 /mnt/sda1
掛載後即可修改現有系統的引導菜單了,按照第3/4條的方法對其進行修改即可,複製下載指令時注意別下載錯位置,因為當前加載的是救援系統,vps本身的系統分區已經被掛載到了/mnt/sda1
,此時應該將netboot.xyz.lkrn
放到/mnt/sda1/boot
裡,grub.cfg
的路徑同理,但需要注意加入的menuentry
裡面的路徑不變.
修改完成之後重啟.
如果當前進入的系統是純linux內核,沒有wget/curl等命令時,可以本機下載下來然後用sftp或者scp上傳.
如果vps本身系統的grub引導已經損壞那麼有2個解決辦法.
一個是自己修好它
第二個是找其它相同架構的vps安裝系統後通過dd命令保存整個磁盤(注意是整個磁盤而不是單獨的分區),然後傳到當前有問題的vps中通過dd寫到vps的磁盤裡,注意寫盤之前要先取消掛載,寫完之後重新掛載然後修改引導重啟.
啟動後按m設置ip信息之後進入菜單之後選擇網絡安裝然後選擇自己需要的系統安裝即可.