vps 幾種情況特殊下引導 netboot.xyz 安裝系統

 最近嫖的 azure3 年訂閱要到期了,猶豫 rancher 要求的配置高,單獨買機器的成本大,所以把 docker 管理面板從 rancher 換成了 portainer, 又整理了手頭上閒置的 vps 資源,全部加入到 docker, 從 virmach 賬戶找到了去年黑五買到的低硬盤低內存用 ubuntu 最小化安裝開機都成問題的機器,於是便想起可以裝 alpine 使用,然後索性研究了下 alpine 裡面能不能跑 docker 容器,發現可行後便準備將現有的所有 docker 節點更換為 alpine 以便剩下更多的資源給容器用,但有些服務商不提供系統模板 /iso 掛載 / 屏蔽 gpxe 或 ixpe 等,本文章主要介紹了這些特殊情況下如何引導 netboot.xyz 進行網絡系統的安裝.

目前測試過的情況

  1. 服務商提供 iso 上傳
  2. 服務商不提供 iso 上傳但 vps 啟動時有 ipxe
  3. 服務商屏蔽了 boot 菜單只能在面板選擇 cd 啟動,但不提供 netboot.xyz 的 cd
  4. 服務商只能提供現有的系統模板,不提供任何引導選項和任何 cd
  5. 服務商不提供系統重裝,只提供救援系統,而且現在系統無法啟動

以上 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 信息之後進入菜單之後選擇網絡安裝然後選擇自己需要的系統安裝即可.
https://blog.ni-co.moe/public/576.html

评论

此博客中的热门博文

VirtualSMC.kext For Mac v1.0.8 替代你的FakeSMC

廣東話客家話歇後語A~Z

一键网络重装系统,一键DD– 魔改版