:::
針對查詢「virtualbox」依關聯性排序顯示文章。依日期排序 顯示所有文章

Windows開機自動開啟VirtualBox虛擬機器──用延後啟動

布丁布丁吃布丁

Windows開機自動開啟VirtualBox虛擬機器──用延後啟動

伺服器要能夠自動地運作,那麼開機時順便把虛擬機器一起開起來,這也是必要的條件。

如果你的虛擬機器VirtualBox架在Linux(特別是ubuntu)上,你可以參考ubuntu正體中文站的「用 VirtualBox 讓 Windows Server 偷偷(背景執行)跑在 Linux Server 上」,但是如果你跟我一樣把VirtualBox架在Windows上,那麼就沒有這麼簡單了。


在Windows裡面要啟動虛擬機器的命令列跟Linux一樣,用VBoxSDL.exe會開啟一個簡單的視窗(像上圖),內容如下,

"C:\Program Files\innotek VirtualBox\VBoxSDL.exe" vm Koha

或著用以下VBoxManage.exe開啟跟普通VirtualBox相同的視窗:

"C:\Program Files\innotek VirtualBox\VBoxManage.exe" startvm Koha

紅色的字是VirtualBox的安裝位置,藍色的字則是虛擬機器的名稱。你可以把它寫成bat批次執行檔以便快速執行,參考這個檔案當作範例,自己修改。


無法直接開啟虛擬機器

我先說失敗的經驗,在Windows 2003 Server或Windows XP裡面都沒有辦法順利地直接啟動。

一開始找尋的方法是將應用程式(Application)改成以系統服務(NT Service)的方式運行,「以服務形式啟動 Windows 內的 PPPoE 撥號網路」這一篇教學很完整,啟動服務所需要用到的instsrv.exe及srvany.exe也可以從Windows的網站上免費下載。或著是使用其他軟體來將應用程式轉成系統服務,然而除了DynaSvr-服務控制程序(NT Service Controller)大陸簡體程式是免費之外,大部分都是要收費付費軟體。

我嘗試以前者的方式,用instsrv.exe及srvany.exe將VBoxSDL.exe轉成系統服務執行。雖然可以成功轉換並執行,但是網路卻怎樣也沒辦法連上。最後我的結論是,在Windows理面,以服務執行虛擬機器,是不可行的。(或著是沒這麼單純,還要啟動其他相對應的程式)

接著我以自動登入搭配啟動應用程式的方式進行。Windows只要在開始 / 程式集 / 啟動 裡面的程式,只要登入之後就會自動執行。首先先將上面的命令列指令作成批次執行檔,擺到啟動裡面,或是用開機管理軟體starter(PChome Toget的介紹)來設定。再設定開機時自動登入指定帳號,或著是用簡化的系統自動登入工具

然而,還是失敗了。Windows 2003 Server像是不接受用自動登入開啟程式虛擬機器一樣,不管是設定在,「啟動 - 目前的使用者」、「啟動 - 所有的使用者」、「登錄檔 - 使用者 啟動列表」、「登錄檔 - 機器 啟動列表」、「登錄檔 - 機器 啟動服務」、「登錄檔 - 預設使用者啟動列表」,都無法用自動登入的方式啟動虛擬機器。

正確來說,在剛開啟的Windows狀態下啟動VirtualBox會發生錯誤,用VBoxSDL.exe開啟時,會發生錯誤「SQL Error: no available video device"」,而導致無法開啟。


用延後開啟的方式虛擬機器(Startup Delayer)

後來發現,改用VBoxManager.exe的方式,雖然無法在第一時間啟動虛擬機器,但是卻可以在開機直到所有程式都載入之後,就可以順利執行。

因此這時候Startup Delayer或是系統看門狗WinPatrol的Delayed Start就可以派上用場。

接下來,以Startup Delayer的設定來說明:

開啟主程式之後,先切換到你設定的帳號(非必要過程)。

按左上角綠色十字的Add功能。

選擇要延遲啟動的程式,此處選擇C:\Program Files\innotek VirtualBox\VBoxManage.exe。

在Parameters填入「startvm Koha」,Koha可改成您虛擬機器的名稱。在Delay填入要延後的時間,三格欄位個別是小時、分鐘、秒鐘,我們在分鐘填入1,表示要延後一分鐘。

看到剛剛新增的VBoxManage。

可以在該項目上面按右鍵,選擇「Start now」測試啟動狀態。

如果可以順利啟動,那麼重新開機之後應該會看到視窗上方Startup Delayer的倒數計時。等待數到0之後,VirtualBox的虛擬機器就能順利啟動了!


光是為了這個功能,這一篇花了我一整天的時間。想說終於可以回去了,但是卻發現外面網路連不到實驗室的伺服器,這讓我又萌生了不想離開這邊的念頭。今晚要繼續待在這邊研究Koha呢?還是要回去宿舍然後卻什麼都不能作好呢?

總之,先休息一下吧......

(more...)

VirtualBox用網路橋接器設定虛擬機器的固定IP

布丁布丁吃布丁

VirtualBox用網路橋接器設定虛擬機器的固定IP

VirtualBox(以下簡稱vbox)是跨平台、多語言、免費虛擬機器,安裝容易設定也很簡單。當要找一台電腦安裝特定的作業系統、卻又沒有空出來的電腦供安裝時,vbox就可以派上用場了。

跟大多數虛擬機器一樣,vbox安裝在Windows或Linux作業系統上,成為一個應用軟體。接著vbox可以用該電腦的資源,模擬出一台新的電腦。此時我們稱主要電腦為Host(主端),模擬出來的電腦則是Guest(客端)。

如果要把Guest電腦作為伺服器,那麼有兩個基本條件是需要的:

  1. 外界可以連線到Guest電腦,最好是擁有獨立IP
  2. Host電腦開機時自動啟動Guest電腦

先解決條件一,預設Guest電腦的網路是以Host電腦的網路做NAT(網路位置轉換),但是這種方式無法讓外界連線到Guest電腦。因此本篇就是教你建立Vbox的虛擬網路卡、再與Host的網路卡作網路橋接(bridge),給予Guest電腦一個固定的IP。

以下操作皆以Windows XP (2003也一樣) Host、Linux Guest方式,用VirtualBox 1.5.6版本來設定網路。這篇的重點著重於網路的設定,vbox的安裝、新增虛擬機器的過程以及Linux設定網路卡的方法將不詳述。


安裝好vbox、設定成正體中文語系、再新增了虛擬機器之後的主要程式畫面大概是上圖這樣,請選擇要連線的虛擬機器,再開啟「設定値」。

進入左方選單的「網路」,在到「主端介面」右邊,點選新增網路卡的圖示。

新增一個「VirtualBox主端介面1」。

此時Windows會偵測到要新增的VirtualBox TAP Adapter,選擇「繼續安裝」吧。

如藍色框所標示,「VirtualBox 主端介面1」已經安裝完成。此時設定紅色框裡面的「附掛到」選項,從NAT(網路位置轉換)改成「主端介面」,在修改「介面名稱」為待會要做網路橋接的主端介面,預設是第一個主端介面「VirtualHost主端介面1」。

打開Windows控制台的「網路連線」,可以看到VirtualBox主端介面1已經成功新增。接下來我們要架設網路橋接器,請選擇VirtualBox主端介面1,再按著Ctrl選取另一個可以連線的區域網路,預設通常是「區域連線」。

按右鍵,「橋接器連線」。注意,這個步驟會重置區域連線的設定,導致網路斷線、IP設定消失!所以請不要用遠端連線的方式設定!

網路橋接器架設完成。

原本「區域網路」的Internet Protocol(TCP/IP)設定,要在「網路橋接器」裡面重新設定。

做完以上步驟之後,請再確認Windows Host可以連上網路、外界也可以連到Windows Host。沒問題的話,設定Linux Guest的網路卡、給予固定IP,這樣子就大功告成了!

(more...)

Windows XP實體機器虛擬化 (P2V) 心得分享

布丁布丁吃布丁

Windows XP實體機器虛擬化 (P2V) 心得分享

image

最近因為家裡需求,我又研究起實體機器虛擬化(Physical-to-Virtual,P2V)。這次把實體機器的Windows XP轉換成了VirtualBox可運作的虛擬機器。在操作中遇到了些問題,最後終於能夠成功地解決。這些過程在此整理成小心得跟大家分享,

小故事:用實體機器虛擬化來保存舊有系統

我媽在工作的時候常常同時使用兩台電腦:一台是工作用的電腦,效能比較好;一台是舊電腦,跑Window XP SP2,Pentium 4、32GB、256 RAM,可是它卻裝著公司多年前購買的重要系統,工作時不得不使用它。她在同時操作這兩台電腦,總是有很多不方便,像是資料交換啦、舊電腦運作速度緩慢啦、必須同時開啟兩台實體機器浪費電啦,而且舊電腦也面臨著硬體大壽將近的難關。

因此,我就用之前我在Blog介紹的Acronis True Image備份檔案轉換成虛擬機器的方法,將我媽的舊電腦轉換成虛擬機器,放在比較快速的工作用電腦來運作。多虧VirtualBox客戶端高度整合化提供的滑鼠指標整合(Mouse pointer integration),操作虛擬化之後的舊電腦不僅比之前透過遠端桌面操作還要方便,而且在工作用電腦中運作速度還比原本的舊電腦要快得多呢。

不過轉換過程並沒有這麼順利,在此記錄我解決這些問題的作法,供他人參考。這一篇算是在補充之前寫的用Acronis True Image來實作實體機器虛擬化(P2V),因此細節作法請搭配著前一篇文來看,其他小問題就是看這一篇囉。

VMware vCenter Converter Standalone轉換時記得搭配sysprep使用

2013-02-10_215327

使用VMware vCenter Converter Standalone轉換Windows XP時,請務必配合Windows XP的大量部屬工具Windows XP Server Pack 2 Deployment Tools使用。下載後請解壓縮到以下路徑,Windows 7以上的路徑為:「C:\ProgramData\VMware\VMware vCenter Converter Standalone\sysprep\xp」,Windows XP的路徑為:「C:\Documents and Settings\All Users\Application Data\VMware\VMware vCenter Converter Standalone\sysprep\xp」。

在Windows 2003以前的Windows,它記錄著現在運作電腦的硬體環境,每次開機時都必須與此環境相符,這導致我們無法輕易地將Windows XP從實體機器轉換到虛擬機器運作環境上。使用大量部屬工具可以幫助我們解除這個限制,讓我們更容易把Windows XP放到虛擬機器中執行。

Windows 7似乎就比較沒有這方面的問題,而Linux本來就很容易相容於不同的硬體環境,要從實體機器轉換成虛擬機器更是輕而易舉。

VirtualBox設定注意事項

image

當我們利用VMware vCenter Converter Standalone把tib硬碟備份映像檔轉換成vmdk虛擬機器映像檔之後,我們就可以拿它來當成VirtualBox虛擬機器的硬碟,建立一台新的虛擬機器使用。只是這台虛擬機器嘚的預設參數可能還是無法讓他順利運作,通常還有一些參數配置需要我們去調整。

無法顯示Windows XP讀取畫面→啟用 IO APIC

image

Input Output APIC (IO APIC)是藉由使用超過16個中斷呼叫的功能而提高系統的運作效率,儘管VirtualBox提示說它可能會降低系統效能,但也有人說感覺不出來效能差異

image

一開始我在BIOS結束後,應該要顯示Windows XP讀取畫面時,它連畫面都跳不出來。後來我開啟這個選項後,它終於能夠順利進入Windows XP開機畫面。

image

終於順利讀取。

Windows XP讀取中進入藍白畫面:檢查硬碟設定是否為IDE

image

有時候建立VirtualBox虛擬機器時,它會自動把硬碟的控制器設為SATA。可是你要看原本實體機器裝在Windows XP的硬碟是那一類型,再來選擇對應的控制器。以舊電腦來說通常都是IDE控制器。這一選錯就是會不斷進入藍白當機畫面,請務必注意。

Windows XP讀取中還是進入藍白畫面:修改硬碟讀取類型為ICH6

image

我在上述檢查中確認是用IDE控制器無誤,但還是開機時進入藍白畫面當機。後來我才發現原來還要改IDE控制器的類型。VirtualBox預設選用PIIX4,VMware好像也是,但是我改成ICH6之後,Windows XP終於不會卡在藍白當機畫面,而能夠順利進入Windows作業系統。

因此我發現到,如果要做實體機器虛擬化的話,通常控制器的設定才是問題的關鍵吧。

如果還是不行?VirtualBox還有很多可以調整的地方

image

VIrtualBox有趣的地方就是可以設定的參數非常多,我自己也不是很清楚所有選項的意義何在。如果你在做實體機器虛擬化時遇到無法開啟的問題,不妨先檢查這些參數是否與實體機器環境相合,可能就是解決問題的關鍵。

然而令人擔心的是,比起VirtualBox,KVM似乎就沒有這麼多參數可以設定了。因此從實體機器轉換到KVM虛擬化的時候,可能還會遇到很多難關吧。

結語:實體機器虛擬化的價值

數位典藏的術語中,實體機器虛擬化(P2V)是屬於主要策略中的「模擬」(Emulation)保存方法。一方面既能將舊電腦中的完整系統做一個備份,另一方面又能夠讓舊系統再次提供服務。所以P2V其實不只是資管技術專業之一,其實他也是圖書資訊學領域會需要的技術喔!大家一起來研究虛擬機器吧!

(more...)

學校實驗室的伺服器虛擬化方案評比(三):綜合比較

學校實驗室的伺服器虛擬化方案評比(三):綜合比較

5BE1364F-74A0-9288-304C-124E9DD7732Awallpaper

經過前面個別測試安裝六個伺服器虛擬化方案之後,接下來我先綜合比較各個方案的功能,再來決定要選擇哪個方案。


綜合比較

由於評比的時間並不長、使用的功能也沒有很完整地評估,在此我只看成本、虛擬化技術、安裝、管理介面安裝、管理介面操作、虛擬機器網路、虛擬裝置支援等七個面向。

成本

由於我是先以免費或開放原始碼方案來挑選,所以這七個方案基本上都可以免費取得。

其中,下載、安裝之後可以自由使用的是OpenNode、Proxmox VE。它們都是開放原始碼軟體,各基於不同的Linxu發佈版整合而成。

Oracle VM也是可以免費取得、安裝,應該也是不需要輸入認證序號就能使用。

VirtualBox也有OSE(開放原始碼版本),但通常大家用的都是具有VRDP跟USB 2.0支援的普通版本,在商業使用上需要收費,個人及教育用途則沒有任何限制。

VMware ESXi跟Citrix XenServer都要申請免費的序號。其中XenServer每年都要申請一次;ESXi只要輸入一次序號就可以永久使用,但輸入序號後就從60天評估版降低到免費版,功能有所縮減。

虛擬化技術

這幾個伺服器虛擬化方案往往整合了多種虛擬化技術,以因應不同的虛擬化需求。然而,在沒有VT-x / AMD-V硬體虛擬化技術的輔助下,各方案可以支援客端電腦就有很大的差別。

即使沒有VT-x / AMD-V也能進行全虛擬化的VirtualBox以及半虛擬化技術的VMware ESXi(感謝網友指正,關於全虛擬與半虛擬技術詳細可以參考TKG的說明)都可以安裝Windows作業系統,可以支援大多數的作業系統。其中,ESXi是空機安裝特製的伺服器,比起VirtualBox容易受到主端電腦作業系統影響,ESXi的效率較高。

沒有VT-x / AMD-V輔助,只能使用半虛擬化的方案為Citrix XenServer、Oracle VM。在半虛擬化的限制之下,客端電腦也僅能安裝特定版本的Linux而已,而且通常搭配要安裝修改核心的工具才能發揮客端電腦的真正效能。儘管如此,效能還是比全虛擬化還要高些。

OpenVZ技術的容器虛擬化不需要VT-x / AMD-V的輔助,OpenNode、Proxmox這兩個方案也只能製作特定版本的Linux客端電腦。效能運作較高,從虛擬裝置/樣板建立虛擬機器的手續也相當簡單。

反過來說,如果實體機器有VT-x / AMD-V技術支援的話,那麼採用Xen與KVM技術的方案就可以使用全虛擬化,全部就都能安裝Windows作業系統,因此虛擬化技術的差異就不是很大了。

安裝

空機安裝是建立虛擬電腦伺服器的最佳方案,你可以讓主端電腦能夠在預先配置好的最佳狀態中執行虛擬機器。提供空機安裝的方案有VMware ESXi、Citrix XenServer、OpenNode、Proxmox VE、Oracle VM。

大部分的方案也同時提供安裝檔供人安裝於特定作業系統中,VirtualBox是了個人用的桌面虛擬化應用程式,因此僅有提供安裝檔,可以安裝於Windows與多數Linux中。但是由於安裝VirtualBox之前,必須要先準備好作業系統才能安裝Virtual,配置上比較麻煩。

管理介面安裝

一般來說,管理虛擬機器的工作都不會在本機的電腦螢幕上進行,而是由遠端的電腦(通常是Windows作業系統)來管理。各方案的管理介面都有所不同,光是在安裝、配置管理介面的方式,就有很大的差異。

安裝完虛擬機器軟體之後,就能從瀏覽器直接啟用是最簡單的作法,這是Proxmox VE的特色。

安裝完虛擬機器之後,需要再安裝額外的客戶端管理程式。Citrix XenServer、VMware ESXi跟VirtualBox都是如此。其中VirtualBox的遠端管理程式是裝在伺服器上的網站系統phpVritualBox,比起前兩者的Windows安裝精靈來說安裝起來更複雜。

為了能達到進階的管理,許多方案採用建立獨立管理伺服器的方式。你可以將管理伺服器建置成虛擬機器,不過要注意到管理伺服器的硬體要求通常不低。OpenNode跟OracleVM都要建立管理伺服器,才能讓管理者遠端控制虛擬機器。其中我在OracleVM的管理伺服器時失敗了,也無從評估OracleVM的使用細節。

管理介面操作

好的管理介面能夠控制主端電腦的開關機與網路、控制虛擬機器的建立與設定、以及各種效能的監控。更重要的是,操作起來也要流暢。VMware ESXi、Citrix XenServer與Proxmox VE都有達到基本的要求。其中Proxmox VE的操作方式與前兩者有很大的差異,但是至少操作上都沒什麼問題,整合度也相當高。

相反地,VirtualBox的phpVirtualBox與OpenNode的OMS操作起來十分不流暢,OracleVM管理伺服器建置失敗,因此都不合格。

虛擬機器網路

本來我以為各種虛擬化方案都會提供NAT模式,但事實上似乎只有個人用的桌面虛擬化應用才會有這樣的功能。

在這次評比的方案中,只有VirtualBox有提供NAT與各種常見的網路模式,其他五個方案都只有虛擬內部網路與橋接模式。

虛擬裝置 / 樣板支援

有時候我們建立虛擬機器的目的只是為了架一些常見的網站,像是WordPress、Joomla、DSpace(這在我們實驗室還蠻常見的),而不是真的想要搞一台Linux主機或Windows主機讓你慢慢設定、調整。

虛擬裝置 / 樣板的應用,可以讓你快速建立起需要的虛擬機器。其中虛擬裝置支援數量最多的應該就是普遍受到市場歡迎的VMware系列,雖然我不清楚是不是ESXi也可以使用,但應該是可以吧?而VirtualBox兼容VMware的虛擬機器,所以一樣可以使用VMware的虛擬裝置。

如果是要求簡單、高效率的虛擬裝置,Proxomox也提供了一系列各種網站的虛擬裝置可供下載取用,而且安裝也是十分方便。

OpenNode也有OpenVZ提供的Linux樣板,可以建立各種Linux發佈版,但是空空的作業系統還是不如已經有內建特定應用的虛擬裝置來得方便。

Citrix XenServer跟Oracle VM也有樣板,但是我並沒有成功使用過,因此評語保留。


最終決定

經過以上考量之後,最後我選擇的是Proxmox VE。選擇的理由是基於以下幾點:

  • 適合舊硬體:老舊伺服器只有記憶體2G、硬碟空間256GB,不適合安裝需要吃太多資源的Windows,還是建立Linux虛擬機器拿來架架網站即可。
  • 簡單高效率:Proxmox VE整合度相當高、操作步驟簡單、OpenVZ可以動態調整虛擬機器的資源。
  • 快速建置:當有人需要快速建立常見的網站時,Proxmox VE是最簡單的選擇。

其他議題

預設網路環境有NAT路由器比較好

經過這次比較之後,我發現大多數的伺服器虛擬化方案都需要直接配給IP。然而考量到高可用、負載平衡等機制的需求上,我想他們應該都是配置在一個內部網路中,以DHCP配置內部IP、透過NAT路由器來連線。

原本我這邊的網路環境是要配給獨立的公開IP,但經過這次架設的經驗之後,我也想用pfSense架一個NAT路由器了。

管理介面的安全性

管理虛擬機器時大多都是在遠端電腦進行,但這個遠端電腦可不能毫無限制地讓任何電腦都可以連線,我們可不希望有莫名其妙的人嘗試連線到虛擬機器搞破壞。

雖然管理介面都有帳號與密碼的認證機制,但這只是防君子不防小人,真的有心的駭客可以用暴力法猜測密碼,帳號密碼被猜到的可能性依然存在。

最好的方法還是限定內部網路或特定IP能夠連線到虛擬機器伺服器進行管理,防止不認識的電腦嘗試登入,這樣就能大幅提高安全性。

大部分防火牆都能做到這種限制,例如iptables。有些基於Linux的方案,例如OpenNode,就能夠安裝iptables來提高安全性。其他的方案能不能做到,則還需要謹慎的評估。


結語

終於寫完啦!粗淺的評估提供給他人的價值不多,但是對自己來說,這是學習虛擬化技術的一個成果交代。

然後,就繼續鑽研吧。

題外話,我好想要一台有VT-x / AMD-V的伺服器啊……

(more...)

VirtualBox用NAT也能架伺服器:連接埠轉送機制

布丁布丁吃布丁

VirtualBox用NAT也能架伺服器:連接埠轉送機制

摘錄自透過Virtualbox下的Windows的網路印表機問題的說明:

因為客端虛擬機器(Guest OS)是以私有的內部網路透過VirtualBox與主端連接,所以客端所提供的網路服務,不管是主端或是在相同區段的其它電腦,不但看不見,而且是不能使用的。(意思是,在GuestOS的服務,其他人都不能使用)

但是VirtualBox可以透過port forwarding的port轉送機制,讓客端的網路服務也可以被外部所存取。在這情形下,VirtualBox會聆聽主機端(Host OS)的確定ports,當有資料送過來時,把資料打包,再重新轉送到內部的客端系統裡去工作。

對於主端的應用程式或是其它網路上的電腦而言,它看起來就像是主端系統所提供的網路服務一樣。(這也意味著,你不可以在主端及客端提供二個相同的服務,比如網頁伺服器服務)經由此種模式,你可以獲得在客端虛擬機器上提供網路服務的優點,比如當你的主端系統對於網路服務是較弱的,比如容易當機或是容易被入侵等,你就可以運用此種方式在主端系統上提供服務。

雖然如此,但是VirtualBox的連接埠轉送機制得靠指令碼來設定VboxManage,對於不習慣指令碼的Windows使用者來說特別不友善,所以乾脆就寫一個指令產生機,方便大家設定吧。


Virtual Box NAT連接埠轉送機制指令產生器(for Windows)
:(如何查詢網路卡?)

(如指定多個轉接埠時,得用不同名稱,以免被覆蓋)
說明
  • 連接埠轉送機制指令碼的使用方法:請把輸出的網頁存成bat檔案,存到任意地方並開啟執行即可。
  • 執行指令的時候必須先關閉虛擬機器才會生效
  • Windows TCP/IP連接埠範圍:根據微軟的說明,Windows XP和2003可供保留的連接埠範圍是從1025到MaxUserPort(預設為5000)以及49152到65535,因此設定時請使用這範圍的連接埠,以免與其他服務相衝。
  • 設定完成之後,必需要開啟Host OS的防火牆才行。如何手動開啟 Windows XP 網際網路連線防火牆中的連接埠,其他的設定就麻煩網管吧。
  • 網路卡位於[設定值] > [網路] > [介面卡] > [進階] > [介面卡類型]的選單中,請見參考此圖
    如果網路卡為PCnet-開頭,則值應該設定為「pcnet」;如果網路卡為Intel PRO/1000開頭,則應該設定為「e1000」。當你發生「configutation error: Faild to get the "MAC" value」的錯誤時,應該就是網路卡設錯了,請見此討論的說明

參考網頁:透過Virtualbox下的Windows的網路印表機問題 [論壇 - Ubuntu基本設定] - Ubuntu 正體中文站 (翻譯自VirtualBox的說明)

(more...)

Thomas的VDI修改記事

Thomas的VDI修改記事

前言

繼以VirtualBox架設Koha的緣由,這一篇記錄從Thomas取得的VDI檔案之後修改的過程。原本該討論主題主張以trac + svn聯合多人共同開發koha軟體,但是我其實只求能架設、使用Koha即可,並沒有準備要到參與開發的程度。

在修改Thomas原始的VDI檔時,恐怕有破壞原有計畫的疑慮,因此才打算撰寫本篇以茲說明。另一方面也是為自己摸索Linux (Thomas是使用Debian發行版)的過程留下記錄。

最後修改過的VDI檔案在下方。使用的時候,除了網路設定(/etc/network/interfaces)保留以DHCP開啟之外,其他的修改都不需要再修改。之後我會以此檔案再寫一篇以VirtualBox架設Koha的方法作為詳細說明。

koha-vdi-20080408 (分流1)

koha-vdi-20080411(分流2)

※註:內有VirtualBox 5.6.1與虛擬機器設定檔

關於虛擬機器VirtualBox與VDI動態擴充映像檔

VDI是VirtualBox架設虛擬機器時的硬碟檔案,透過以VDI架設起的VirtualBox虛擬機器,你可以快速地在任何作業系統上重現一台已經架設完成的伺服器,而不需要再從無到有第一步一步安裝設定。

然而這只是理論,實際上我也只嘗試在WindowsXP跟Windows 2003上成功架設過,尚未測試各種的情況,不能給予完美的保證。至於詳細的架設過程,請參考另一篇虛擬機器VirtualBox架設Koha。

關於Thomas的VDI硬碟檔案

Thomas架設的環境如下:

  • Linux debian 2.6.18
  • Koha 2.2.9 (已經預設是zh_TW中文環境)
  • 硬碟虛擬空間4.88GB
  • 硬碟檔案實際大小2.09GB:VDI動態擴充映像檔會隨著映像檔內安裝的實際檔案大小來改變,而不會強求一定要虛擬空間這麼大。
  • Linux登入
    帳號:koha (也可用root登入)
    密碼:ilovekoha

也許有人會對於硬碟不到3GB的剩餘空間感到憂心,但我想對於中小型圖書館來說應該已經是綽綽有餘,因此這個問題先不在研究範圍內。

以Thomas的VDI架設起的Koha,我遇到了以下問題:

  1. 鍵盤配置錯誤:執行dpkg-reconfigure console-data修正
  2. 抓不到網路卡:停止udev自動新增網路卡
  3. 語系錯誤:修改語系為zh_TW.UTF-8
  4. Koha的OPAC非預設的80 port:重新設定/etc/Koha-http.conf
  5. 修改Koha OPAC與Intranet的一些程式

以下將各問題與處理方式一一詳述。

操作方法及使用軟體

以下操作剛開始是以root身分登入本機電腦。網路可以連線之後,則改用SSH遠端登入、FileZillar上傳檔案。


鍵盤配置錯誤

一開始以root登入Linux的時候,是完全以命令列來操作,必須要依靠鍵盤輸入指令。如果你發現你打的字跟你的鍵盤不吻合,那麼得先調整鍵盤配置。

  1. 輸入「dpkg-reconfigure console-data」,開啟藍底設定畫面
  2. 按「tab」跳到「ok」,「enter」進到下一頁
  3. 選擇最後一項「Select keymap from full list」,按「enter」
  4. 選擇「pc / qwerty / US american / Standard / US Internation (ISO 8859-1)」,按「enter」

如果您連怎麼輸入「dpkg-reconfigure console-data」都做不到,那請試著按「↑」回溯一下之前的指令找找看吧。

我安裝在第二台電腦的時候才發生了這個問題,即使現在設定過配置,之後可能設定還會跑掉,這時就得照著這個步驟重做一次。


解決抓不到網路卡的問題

開機的過程中,預設的eth0並沒有被抓到,這是由於網路卡的MAC碼並不相同的緣故。

接下來修改設定我是使用vim,這個文字編輯器對於初學者來說可能不太友善,詳細的操作方式請參考基本 VIM 操作指令

debian:~#vim /etc/udev/rules.d/z25_persistent-net.rules

在udev的管理之下,從這邊會記錄著該台虛擬機器曾經安裝過的網路卡,而你目前安裝的網路卡應該會被排到最後一個去,可能被當成eth1或eth2。預設/etc/network/interface僅有自動啟動eth0,故其他的eth1或eth2自然是無法啟動了。

因此,我打算把udev自動增加網路卡的功能取消掉,方法如下。

debian:~#vim /etc/udev/rules.d/z45_persistent-net-generator.rules

將以下兩行註解掉(在該行前面加上「#」(井字號),這樣程式就不會去執行這行指令)。

#ACTION!="add", GOTO="persistent_net_generator_end"

#KERNEL=="eth*|ath*|wlan*|ra*|sta*", DRIVERS=="?*",\

接著清空vim /etc/udev/rules.d/z25_persistent-net.rules網路卡的資料。清空之後只會剩下以下五行註解文字:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.

以上方法可以解決udev自動增加網路卡的問題。

接著是設定網路,預設是將eth0以DHCP(動態主機設定協定)啟動,這是只有在VitualBox網路設定為NAT的情況下才需要用的。如果要作為伺服器,最好給予網路卡一個靜態的IP,關於VirtualBox的網路設定請參考另一篇「 VirtualBox用網路橋接器設定虛擬機器的固定IP」,以下則是示範在Linux debian裡面設定網路的步驟。

先用VIM開啟/etc/network/interfaces/

debian:~# vim /etc/network/interfaces

將原本的DHCP註解掉,然後取消靜態網路的註解(刪掉行前的#),設定如下:

#iface eth0 inet dhcp

iface eth0 inet static
address 172.20.0.15
netmask 255.255.255.0
gateway 172.20.0.1

以上的adress、netmask、gateway請改成您網路環境所使用的設定。關於network interface的詳細解說,可以參考「/etc/network/interfaces 集網路設定之大成」。

修改完成之後,請執行以下指令或重開機以重新啟動網路:

debian:~# /etc/init.d/networking restart


改用PieTTY遠端操控虛擬機器

網路設定完成之後,您應該可以用PieTTY之類的軟體來連線到虛擬機器了。由於PieTTY操作起來比起在虛擬機器VirtualBox上操作更為順手,所以接下來我們的操作都改在PieTTY上進行(我是使用PieTTY 0.3.27版本)。當然,這並非必要步驟,你也可以繼續在虛擬機器上操作Linux。

在開始之前,要記得修改字元編碼為UTF,步驟在上方工具列「選項 / 字元編碼 / Unicode UTF-8」。


修改語系

有些Koha的設定檔(如/etc/koha-http.conf)寫入了中文字,然而這在預設的狀態下會變成亂碼,因此得修改語系以正確顯示才行。

請輸入以下指令:

debian:~# export LC_ALL=zh_TW.UTF-8

接著再開啟/etc/koha-http.conf的時候,就能夠顯示正確的編碼了。

但是在虛擬機器上看起來還都是亂碼,這個我就沒有繼續研究了。


用80 port開啟Opac

預設的設定中,開啟虛擬機器的網址,只會跑出一個「It works!」的字樣。根據/etc/koha-http.conf的說明,還需要修改很多部份才能順利開啟,因此我想改成直接以80 port(如此一來,網址就不需要加上:80連接埠),並能夠保持phpmyadmin的功能。

用vim開啟/etc/koha-http.conf

debian:~# vim /etc/koha-httpd.conf

全部檔案內容設定如下,紅字的部份是我修改過的,e-mail記得要改成自己的喔:

# Koha 2.2 阿帕契(Apache)虛擬主機設定檔
#
# 在你的阿帕契(Apache)設定,包含這個檔案。
# 最好的方法依據你的網站設定。
# 有一些像是一個 Include 加到 /etc/apache/httpd.conf
# 且有一些寧願一個 symlink 從一些目錄到這個檔案。
# 請參考你的系統手冊。

# 針對 Koha 監聽埠號
# 無法評論這些,假如它們已經不在主要 httpd.conf
#
Listen 8080
#Listen 8081

# NameVirtualHost 被用在其中一個設定檔,詳細如下:
# 還沒註解以前,請確認這行是否正確。
# 參考 http://httpd.apache.org/docs/vhosts/ 一些手冊。

#NameVirtualHost 11.22.33.44
NameVirtualHost *:80
NameVirtualHost *:8080


# KOHA's OPAC 設定

ServerAdmin administrator@email DocumentRoot /usr/local/koha/opac/htdocs
ServerName *:80
ScriptAlias /cgi-bin/koha/ /usr/local/koha/opac/cgi-bin/
Redirect permanent index.html http://*/cgi-bin/koha/opac-main.pl
ErrorLog /usr/local/koha/log/opac-error_log
TransferLog /usr/local/koha/log/opac-access_log
SetEnv PERL5LIB "/usr/local/koha/intranet/modules"
SetEnv KOHA_CONF "/etc/koha.conf"
Alias /phpmyadmin /usr/share/phpmyadmin/

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all



# KOHA's INTRANET 設定

ServerAdmin administrator@email
DocumentRoot /usr/local/koha/intranet/htdocs
ServerName *:8080
ScriptAlias /cgi-bin/koha/ "/usr/local/koha/intranet/cgi-bin/"
Redirect permanent index.html http://*:8080/cgi-bin/koha/mainpage.pl
ErrorLog /usr/local/koha/log/koha-error_log
TransferLog /usr/local/koha/log/koha-access_log
SetEnv PERL5LIB "/usr/local/koha/intranet/modules"
SetEnv KOHA_CONF "/etc/koha.conf"


# 假如你想要使用虛擬主機(Virtual Hosting):
# 1. 移除兩個監聽行(Listen lines)
# 2. 取代 *:80 成為你的 opac 領域名稱(domainname)埠號
# 3. 取代主機名稱(ServerName) * 你的 opac 領域名稱(domainname)
# 4. 取代 *:8080 你的 intranet 領域名稱(domainname)埠號
# 5. 取代主機名稱 * 你的 intranet 領域名稱(domainname)
#
# 假如你想要使用 NameVirtualHost'ing (一個 ip 使用兩個名稱):
# 1. 依照以上 1-5 的步驟
# 2. 沒有註解 NameVirtualHost 行並解設定正確 ip 位址

修改完成之後,重新啟動Apache 2才會生效,請輸入以下指令:

debian:~# /etc/init.d/apache2 reload

如果沒有出現錯誤訊息的話,那麼就成功了。

可以直接用http://虛擬機器的網址/開啟Koha的OPAC。

用http://虛擬機器的網址:8080/開啟Koha內部網路。附帶一提,預設的帳號密碼是kohaadmin、ilovekoha。

也可以用http://虛擬機器的網址/phpmyadmin開啟phpymymin了。一樣附帶一提,預設的帳號密碼是root、ilovekoha。


修改Koha的機讀格式

這版本的Koha似乎是使用中國機讀格式CMARC3,隱藏了許多欄位,最後僅剩24段。我做了以下修改:

  • 有顯示名稱的欄名,皆加上國家圖書館CMARC3的說明連結,作為編目人員的快速參考。
    例如:
    700
    人名-主要著者

    其中惟有856電子資源位址及取得方法並非CMARC3擁有的欄位,故改以CMARC民國90年修訂版的說明連結。
  • 700$a標目主體使用了權威記錄PER,在尚未釐清權威記錄的用法之前,我先將之拿掉,變成可以自由輸入的欄位。
  • 606 主體標題欄位改成可重複,610非控制主題詞彙分欄$a標目主體改成可重複。
  • 995$o改以允許値,因為只有流通與不流通兩種
  • 修正欄位名稱200$h 編次(Number of a part)

修改OPAC顯示

檔案是/home/koha/svn/trunk/opac-html/opac-tmpl/npl/zh_TW/opac-detail.tmpl跟/home/koha/svn/trunk/opac-html/opac-tmpl/npl/zh_TW/images/ BOOK.gif,詳細內容我就省略了。

修改外掛程式

  • 欄位100:日期修正、設定預設值
    /home/koha/svn/trunk/intranet-cgi/value_builder/unimarc_field_100.pl
    /home/koha/svn/trunk/intranet-html/intranet-tmpl/npl/zh_TW/value_builder/unimarc_field_100.tmpl
  • 欄位105:修正錯字
    /home/koha/svn/trunk/intranet-html/intranet-tmpl/npl/zh_TW/value_builder/unimarc_field_105.tmpl

修正z39.50無法使用的問題

因為沒有Perl模組的Text::Trim,我在Koha臺灣論壇裡面有提問過,已經獲得解決,請在Linux命令列輸入以下指令安裝缺失的模組:

perl -MCPAN -e 'install "Text::Trim"'

修改無法查詢沒有前後切截的問題

關鍵在於koha/intranet/modules/C4/SearchMarc.pm的create_request函式,裡面查詢MySQL的語法是使用like,規則是「低於4個字元長度以下,則把%去掉」(%是切截功能的萬用字元),但是這規則並沒有自動加上%的功能,因此我加了「高於4個字元長度,則在前後加上%」,以方便查詢的進行。再把這個4的參數改成Koha的系統設定變數「truncation」,以方便管理者控制。需要精確查詢的時候,建議改用新增機讀格式(MARC)欄位查詢吧。

此外,加上了查詢結果顯示查詢字的功能,因此要修改的有三個檔案。

/home/koha/svn/trunk/modules/C4/SearchMarc.pm
/home/koha/svn/trunk/intranet-cgi/search.marc/search.pl
/home/koha/svn/trunk/intranet-html/intranet-tmpl/npl/zh_TW/search.marc/result.tmpl


Thomas VDI內Koha系統的SVN版本控制系統

檔案位置看起來不太像是Koha的安裝位置(/usr/local/koha/),這是由於Thomas的VDI裡面的系統是用SVN版本控制系統,但是我對這方面沒有研究,故沒有參與,僅僅只有說明。


小結與感言

從取得VDI檔案、摸索Koha系統、到操作,甚至是修改程式碼,這些過程真的是花了不少功夫, 也讓這一篇修修改改地拖了好久才寫完。跟上次玩DSpace一樣,這次玩Koha也個老師沒教的摸索過程,不同的是,這次有個可以問的前輩們,再次感謝Koha Taiwan的毛老師、龍山與Thomas等人的努力與幫助!

(more...)

虛擬機器轉移(V2V) : Windows 2003從VirtualBox到KVM

布丁布丁吃布丁

虛擬機器轉移(V2V) : Windows 2003從VirtualBox到KVM

image

跟前幾篇講實體機器虛擬化(Physical-to-Virtual,P2V)不同,這一篇要講的是虛擬機器VirtualBox 4.2.6)轉移到另一種虛擬機器Proxmox VE 1.9底下的KVM)的過程,亦即所謂的虛擬機器轉移(Virtual-to-Virtual,V2V,或是遷移migration)。這次轉移的客體作業系統(Guest OS)是Winodws 2003,儘管只是把VirtualBox上製作的VMDK虛擬機器硬碟映像檔換到KVM執行,但還是有很多細節需要注意。以下記錄大致上的過程供大家參考。


為什麼要做V2V?

目前我常用的免費虛擬機器技術有兩種:適合工作站使用的VirtualBox,以及適合伺服器用的KVM

我常常在自己的電腦用VirtualBox安裝作業系統來進行各種測試,VirtualBox可以調整的參數多、網路設定也很方便,操作起來很容易。另一方面,我會將開發到穩定狀態、不太需要常常修改的系統放置到Proxmox VE的KVM上,讓系統提供服務就好,我們平常就不太再去更動作業系統的基層設定。

從VirtualBox到KVM這之間的轉換,就需要V2V的協助。

V2V作法概述:利用共同支援vmdk硬碟格式

200px-Vmware.svg

多虧於VMware如此盛行,VMware制定的vmdk(Virtual Machine Disk,虛擬機器硬碟映像檔)幾乎成為了各家虛擬機器爭相支援的對象,這包括了VirtualBox與KVM。

image

因此簡單的想法,就是利用VirtualBox製作vmdk硬碟檔,再把它放到KVM環境中運作。

題外話,我寫這篇的時候才發現原來VirtualBox也支援建立了KVM主要用的虛擬機器硬碟格式QEMU增強硬碟,不過我想即使用QEMU來建立虛擬機器,轉移Windows 2003的時候依然會出現以下的問題。

Windows 2003的V2V步驟

經過了幾次失敗的嘗試之後,我參考了Alex寫的Converting Windows VMWare machines to KVM,將目前看來可行的作法整理如下。步驟中會用到兩個名詞:來源端是指VirtualBox虛擬機器,目的端則是指KVM虛擬機器。

1. 來源建立虛擬機器時用vmdk

image

就如前面所說,這篇V2V是利用共同支援的虛擬機器硬碟格式vmdk,所以建立VirtualBox虛擬機器時請選擇VMDK

image

硬碟大小其實只要符合作業系統最低需求即可,不過有趣的地方在於,似乎因為VMware建立vmdk預設的大小都是8GB,所以許多Virtual Appliance都是8GB。在這邊我們也參考一下傳統,設成8GB。

2. 來源端使用mergeide.reg

2013-02-11_142222

如果你的Windows 2003是裝在IDE控制器上,那麼第一個步驟就是使用mergeide.reg免空Box.net)。請下載這個檔案,然後在來源虛擬機器中執行(如上圖),調整虛擬機器的登錄檔即可。

mergeide.reg是來自於Alex教學中的一個登錄檔,但是連Alex也不知道原作者是誰。在此我也要感謝這位作者的提供,他的mergeide.reg真的幫了我們很大的忙。

以下是mergeide.reg的檔案內容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\primary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\secondary_ide_channel]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*pnp0600]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\*azt0502]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="atapi"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\gendisk]
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"Service"="disk"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#cc_0101]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_0e11&dev_ae33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_0601]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1039&dev_5513]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1042&dev_1000]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_105a&dev_4d33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0640]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1095&dev_0646]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1097&dev_0038]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0001]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10ad&dev_0150]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5215]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5219]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_10b9&dev_5229]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_1106&dev_0571]
"Service"="pciide"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1222]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_1230]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2411]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_2421]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7010]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7111]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#ven_8086&dev_7199]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="intelide"

;Add driver for Atapi (requires atapi.sys in drivers directory)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi]
"ErrorControl"=dword:00000001
"Group"="SCSI miniport"
"Start"=dword:00000000
"Tag"=dword:00000019
"Type"=dword:00000001
"DisplayName"="Standard IDE/ESDI Hard Disk Controller"
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,61,00,74,00,61,00,70,00,69,00,2e,\
00,73,00,79,00,73,00,00,00

;Add driver for intelide (requires intelide.sys in drivers directory)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IntelIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000004
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,69,00,6e,00,74,00,65,00,6c,00,69,\
00,64,00,65,00,2e,00,73,00,79,00,73,00,00,00


;Add driver for pciide (requires pciide.sys and pciidex.sys in drivers directory)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PCIIde]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Tag"=dword:00000003
"Type"=dword:00000001
"ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
52,00,49,00,56,00,45,00,52,00,53,00,5c,00,70,00,63,00,69,00,69,00,64,00,65,\
00,2e,00,73,00,79,00,73,00,00,00

3. 來源端完全關機

image

接著要把來源端電腦完全關機。不能只是儲存機器狀態喔,必須是完全關機。

4. 目的端建立新的虛擬機器

image

本篇使用的目的端KVM是透過Proxmox VE 1.9來控管,這邊我們先建立一個新的虛擬機器。以下是需要注意的參數:

  • Type: Fullyvirtualized (KVM)
  • Image Format: vmdk
  • DIsk space (GB): 8 (同來源端)
  • Disk type: IDE (同來源端)
  • Memory (MB): 256 (同來源端)
  • Guest Type: Windows 2003

image

設置完成,請注意Proxmox VE自動配給的VMID,在此是158。

5. 來源端vmdk傳送到目的端

2013-02-11_145222

接下來就要把來源端的vmdk硬碟檔案傳送到目的端伺服器上。Proxmox VE在配置KVM虛擬機器時都有規定好的路徑,如果VMID為158,那麼158的虛擬機器硬碟檔案就放在以下路徑:

/var/lib/vz/images/158

請將來源端的vmdk上傳到該路徑底下吧。

6. 目的端替換硬碟

image

當vmdk上傳到目的端的指定路徑之後,我們切換到Hardware這一頁,你會發現剛剛上傳的vmdk已經在下面列表了。

image

接著我們先移除原本的硬碟,按下原本硬碟左邊的紅色向下鍵頭按鈕image,它會跳出DELETE選單。按下去之後,原本的硬碟會從虛擬機器上拔除,但是檔案還是在Proxmox VE裡面喔。

image

然後按下Hardware device list for VM 158左邊的紅色下向箭頭image,點下「Add a hard disk」。

image

Existing Disks選擇剛剛上傳的vmdk,然後按下add按鈕。

image

vmdk插上KVM的虛擬機器囉。

7. 目的端關閉KVM功能

image

切換到Options這一頁,然後在Disable KVM這選項後面打鉤,按下save儲存。(感謝來自neozeed的教學)

2013-02-11_161833

如果沒有做這個選項的話,目的端開機時會遇到「INTERNAL_POWER_ERROR」或其他各種問題的藍色當機畫面。

我找到現在仍不知道開關Disable KVM的意義何在。就連Griffon的Blog也是教說關掉KVM就好,目前也只能照做囉。

8. 目的端開機、檢查是否順利運作

image

回到Status,按下「Start」按鈕。

image

然後再按下Open VNC console,來看看虛擬機器現在的狀況。

image

順利的話,就進入Windows 2003囉。


結語:不要被藍白當機畫面打擊士氣了!

Image 11

這個藍白畫面是我在這次V2V過程中最常看到的景象,實在是非常無奈。我想到頭來還是Windows 2003綁定硬體,導致VirtualBox的IDE控制器轉換到KVM上的時候不合所導致的。出現這種藍白當機畫面,大多都是硬體上的問題。只是在不知道解法的時候總是會很無奈。希望這篇記錄的方法可以幫助大家在做V2V更加順利啊。

(more...)