LXC 虛擬電腦的進階使用與設定

LXC 虛擬電腦的 Console 模式

一般若直接使用如〝sudo lxc-start -n myUS1204〞指令的方式來啟動 LXC 虛擬電腦,則會在終端機上直接進入 LXC 虛擬電腦本體內,但這樣就會直接佔用目前的終端機視窗,在某些情況下還蠻不方便的,所以可以改用以下的指令來啟動 LXC 虛擬電腦,以釋放終端機的操控權:

$ sudo lxc-start -n myUS1204 -d

而當按下 Enter 鍵之後,會發現終端機視窗並沒有任何反應:

終端機沒有回應的原因,在於 LXC 虛擬電腦已經被放到背景當中執行,若要進入(連結)在背景執行的 LXC 虛擬電腦,則需要利用〝Console〞的連線模式,才能連結到在背景執行的 LXC 虛擬電腦,而 LXC 的原生命令也有提供〝Console〞模式的連線指令,因此,要進入在背景執行的 LXC 虛擬電腦,則要用以下的指令來連線:

$ sudo lxc-console -n myUS1204

這樣就可以順利進入背景執行的 LXC 虛擬電腦內了。

而一般在使用 Linux 系統的時候,有許多經常執行的動作、指令,都會需要一些參數的配合,又或者會需要輸入較長的指令,例如,一個完整的關機指令為〝sudo shutdown -h now〞,這對熟悉 Linux 操作的人來說,在指令的操作上或許沒啥大不了,但就一般使用者來說,記住著些指令與參數,可是會要了他們的老命呢,這時就可以善用〝alias〞的指令,來簡化許多指令參數的組合。

首先,先利用以下指令來開啟家目錄下的〝.bashrc〞檔案:

$ sudo vim .bashrc

開啟之後,直接移動到檔案的最後面,並在最後面加入以下兩行指令:

alias ping=’ping -c 4’

alias bye=’sudo shutdown -h now’

輸入完成,就可以存檔後退出,而為了讓 alias 之後的指令可以套用,則需要先登出系統之後,再重新登入就可以套用,而至於登出 LXC 虛擬電腦的方式,只需要直接輸入〝exit〞的指令,就可以登出系統。,並重新回到登入畫面:重新登入系統之後,就可以測試剛剛 alias 之後的指令,使否可以正常使用了!

LXC 虛擬電腦的中文化

就所安裝的 LXC 虛擬電腦來說(Ubuntu 系統),預設安裝完成並沒有桌面套件,因此,在操作上都是透過終端機來進行連線與操作,所以整個操控都是英文介面,不支援中文顯示,因此,在這邊我們要替 LXC 虛擬電腦來進行中文化。

而所謂的中文化,其實只是安裝中文語系的套件包,其指令如下:

$ sudo apt-get install language-pack-zh-hant

安裝完成,就可以清楚看到已經將中文語系安裝到系統內了:

中文語系安裝完成之後,還需要在 /etc/profile 檔案內進行一些設定,指定系統以中文語系為主,利用以下指令開啟 /etc/profile 檔案:

$ sudo vim /etc/profile

檔案開啟之後,直接移動到檔案的最後面,並加入以下兩行文字:

export LANG=zh_TW.UTF-8

export LANGUAGE=zh_TW.UTF-8

存檔退出之後,一樣,要重新登入系統之後,設定直才會生效。

重新登入之後,來測試一下中文化的狀況,利用 nano 這套編輯器開啟一個新檔案,不過,LXC 虛擬電腦的系統內預設並沒有這套編輯器,所以可以利用〝sudo apt-get install nano〞的指令來安裝,開啟新檔案之後,可以直接利用實體電腦的編輯器,在新檔案內輸入中文字,如下圖:

這樣中文化的設定就完成了,且不只可以輸入中文,連編輯器的操控介面也都已經中文化了。

安裝常用命令

LXC 虛擬電腦在執行與操作上看似與一般實體主機上的系統沒有差異,但事實上,許多常用的指令(套件),在最初安裝 LXC 虛擬電腦的時候,並沒有一併被安裝進來,例如,〝wget〞這一個檔案下載的指令,預設就沒有被安裝在 LXC 虛擬電腦之內,但若一般實體電腦內的系統,就會有包含此一套件,所以,若再使用 LXC 虛擬電腦時候,若發現到某些常用的指令並沒有包還含在 LXC 虛擬電腦之內,就直接利用線上安裝的方式,將缺失的套件給安裝進來,例如:

$ sudo apt-get install wget

部屬使用環境

每次要啟動或進入 LXC 虛擬電腦的時候,都需要在終端機內輸入一串指令,難道沒有比較快速簡易的方式嗎?其實是有的,不過,這還需要搭配一個客製化的 Bash Script,才能簡化啟動與進入的程序。

首先,利用任一編輯器,開啟硬建立一個名稱為〝srvlxc〞的檔案,當然,名稱可以自定,而檔案開啟之後,在檔案內輸入以下內容:

#!/bin/bash

[ "$#" != "1" ] && echo "srv.sh lxc-system" && exit 1

p=$(ps aux)

echo $p | grep "lxc-start .n $1 .d" &>/dev/null

if [ "$?" == "0" ]; then

   echo -n "按 a 登入, 按 c 關機 : "

   read ans

   if [ "$ans" == "a" ]; then

          sudo lxc-console -n $1

   elif [ "$ans" == "c" ]; then

          sudo lxc-stop -n $1

   fi

else

   echo -n "$1 啟動中.... "

   sudo lxc-start -n $1 -d &>/dev/null

   p=$(ps aux)

   echo $p | grep "lxc-start .n $1 .d" &>/dev/null

   [ "$?" != "0" ] && echo "失敗" && exit 1

   sleep 6

   echo "成功"

   sudo lxc-console -n $1

fi

輸入完成之後,就可以存檔退出,接著,利用以下指令,賦予檔案有可執行的權限:

$ chmod +x srvlxc

接著,點選終端機上的〈檔案〉→〈新增設定組合〉,此時系統會跳出「新增設定組合」的設定視窗,在「設定組合名稱」的欄位上,填入此 LXC 虛擬電腦的名稱,如「myUS1204」:

點選「建立」之後,就會跳出〝正在編輯設定組合視窗「myUS1204」〞的設定視窗,將頁面切換到「標題與指令」的分頁,在此分頁內,勾選「啟動時執行自訂的指令而不是執行shell」,勾選之後,原本灰階的「自訂指令」欄位,就可以輸入內容,並輸入以下內容:

/home/jeos/srvlxc myUS1204

輸入完成之後,就可以直接按下「關閉」,來關閉設定視窗。

接著,回到終端機視窗,點選〈檔案〉→〈開啟分頁〉,這時就可以看到剛剛設定名稱為「myUS1204」的選項:

接著點選「myUS1204」的選項,就會開啟新的終端機分頁,而這個分頁,就是連結到名稱為「myUS1204」的 LXC 虛擬電腦,不過由於啟動 LXC 虛擬電腦需要有管理者的權限,所以會看到要輸入密碼的提示訊息,如下圖:

輸入使用者密碼之後,就可以進入 LXC 虛擬電腦的登入畫面:

然而,能夠裡用此方式快速登入 LXC 虛擬電腦,全都是拜「srvlxc」這隻 Bash Script 程式的功勞,而至於這隻程式的內容,在這邊就不詳述,有興趣的人可以再研究程式的內容。

不過,雖然可以快速進入 LXC 虛擬電腦的登入畫面,但是每此利用這個方式,都還需要輸入使用者的密碼,實在是有點不方便,而會有這樣的原因,是因為啟動時,有使用到〝sudo〞指令的緣故,若實在是不想每次都輸入密碼,則需要動點手腳!

若要使用〝sudo〞指令而不要再輸入密碼,最直接的辦法,就是修改〝/etc/sudoers〞的檔案,不過,這邊要特別強調一下,這是有風險的步驟,必須確認修改的內容沒有任何錯誤之後,才能存檔退出,不然,一旦有錯,之後可是無法使用〝sudo〞的指令。

而為了確保可能的風險,所以在進行修改〝/etc/sudoers〞的檔案之前,先利用以下指令來設定超級管理員,也就是〝root〞的密碼,因為在 Ubuntu 的系統中,root 預設是沒有密碼的,而為了確保若真的因為〝/etc/sudoers〞的檔案修改錯誤,導致無法使用 sudo 的指令來執行管理員的權限,所以還是替 root 帳號設定密碼,以策安全;在終端機輸入以下指令來設定 root 密碼:

$ sudo passwd root

密碼設定完成,會看到如下的訊息:

root 密碼設定完成之後,接著利用任一編輯器開啟/etc/sudoers〞的檔案(這邊使用 vim),檔案開啟之後,找到〝%sudo   ALL=(ALL:ALL)  ALL〞這一行,將此行最前面加上註解符號(#)之後,直接在其下面新增〝%sudo   ALL=(ALL:ALL)  NOPASSWD:ALL〞,如下圖:

不過,在存檔的時候,會遇到如下圖內的警示訊息:

這只是在警告編輯者,此檔案有特殊權限,只需要依照警示提示修改存檔方式(指令)即可!

之後再次利用終端機內的分頁功能,就不會在提示要輸入使用者密碼了:

而「srvlxc」不只有快速進入 LXC 虛擬電腦的功能,當 LXC 虛擬電腦在啟動時,關閉此虛擬電腦的終端機分頁後,若再次使用終端機分頁要進入此虛擬電腦時,會有以下的提示訊息:

這時,使用者可以選擇輸入〝a〞已進入 LXC 虛擬電腦,或者是輸入〝c〞來關閉 LXC 虛擬電腦,這邊選擇輸入〝a〞來進入開啟狀態的 LXC 虛擬電腦,這時會看到系統顯示如下的提示訊息:

這邊可以不需要理會此訊息,再按一次 Enter 鍵之後,就可以進入系統的登入畫面了:

以上,就是 LXC 的基本與進階使用功能,希望能快速帶領大家進入 LXC 的領域!