設定 Alpine linux 作為 KVM 的 guest OS

Alpine Linux

Alpine Linux 是一個小巧,適合用來當作嵌入式儀器作業系統的 Linux 系統。它使用 musl 作為 C 語言程式庫,以及 busybox 作為基礎服務提供程式,造就了它精巧的體積。

不過,零件少就表示可能有時會有漏掉某些比較少用的東西。

在 Docker 上面使用 Alpine 相對容易,不過千秋打算用虛擬機器設定看看,因為這樣小體積的發行版應該對研究叢集行為會有不小的幫助吧!

Virtual machine 設置

使用 OpenSUSE 的 QEMU/KVM 加上圖形界面管理程式。機器的網路卡設定成 virtio (用預設的 rtl8139 無法被系統辨識)。在設定機器時以 Add Hardware 加上 Filesystem ,模式設定為 mapped 以便與本地檔案系統分享檔案。

Alpine Linux 的映像檔可以直接使用( liveOS ),只有文字界面。千秋選用 alpine-virt-3.6.2-x86_64-x86_64.iso

登入時使用 root 為帳號,密碼為空字串(直接按下 enter )。要安裝的話使用 setup-alpine 指令。

安裝的過程中,安裝程式會偵測網路卡,並且詢問網卡的網路設定。若沒有詢問的話表示 Alpine 找不到您的網路卡。

另外,安裝時不要忘了要使用 ssh server 服務,否則將難以從 host 連接到 guest 。

安裝完成後,若使用 wget 時出現找不到 ssl_helper 的錯誤,則 apk add ca-certificates openssl

接著,因為 ssh 預設無法使用 root 帳號連接,最好的方法是以 adduser 新增一個帳號。

要掛載分享的檔案系統時,使用 mount -t 9p <KVM-target-path> /tmp/mountpoint

最後,娛樂完畢,使用 poweroff 指令關機。重新啟動的話,使用 reboot

VirtualBox 網路設定

若要從主體利用 ssh 連接到客體,則需要在客體上設定兩張網卡

  • host-only network

    靜態或是動態 IP 都可以

  • NAT

    很不幸的是 VirtualBox 的 NAT 沒辦法讓主體連入客體

用橋接網路不是不可以,但每次都必須手動用 VirtualBox 的客體畫面來登入,增添了麻煩;此外,某些情況下可能沒辦法直接接觸到 VirtualBox 的客體畫面,例如在以 ssh 連入的遠端機器中利用 command line 產生虛擬機器的情況。

注意 若選擇設定靜態 IP ,那要注意 gateway 要設定成可以和外部世界( Internet )連接的
gateway ,否則會無法使用網路!

如何知道虛擬機被分配到的 IP 位置

  • 在虛擬機裡面執行 ifconfig

  • 在 host 執行 arp -a

  • 在 host 使用 virshroot 權限)

    1
    2
    # virsh net-list
    # virsh net-dhcp-leases <network-name-from-previous-command>
文章目錄
  1. 1. Alpine Linux
  2. 2. Virtual machine 設置
  3. 3. VirtualBox 網路設定
  4. 4. 如何知道虛擬機被分配到的 IP 位置