最近因為工作的關係,又開始了我的Linux初學者之路,只是這一次不再是用Windows 7+ VMware Workstation + Ubuntu來安裝Linux環境,而是在Windows 8.1下用內建的Hyper-V來安裝CentOS 7 Linux作業系統。
這件事我搞了已經兩個禮拜,從做初的CentOS 6在Virtual Box上的安裝一直到今天改裝CentOS 7在 Hyper-V上,除了今天突然間如有神助的大有進展而一鼓作氣把CentOS 7弄好以外,其他時間都在卡關狀態,想當然爾,一定遇到很多問題,趁現在記憶猶新,就讓我給自己把這難得實務經驗給整理整理吧。
在這裡把整個過程用看問題的方式來把整個過程一步步交待,比較容易看出遇到問題的過程和解決方式。
一. 一直找不到可以用的CentOS ISO安裝檔
這是最先碰到的問題,其實我一開始最想裝的是CentOS 6系列,從CentOS 官網或其他網站也可以找到很多CentOS的安裝ISO檔,但是CentOS本身是很龐大的OS,因此一般把CentOS的ISO檔分割成多塊CD/DVD的ISO檔案,也有一些是只有最基本安裝功能的Minimal版本。
起初我下載的某些CentOS 6 ISO的分割版本的part 1 DVD或CD,但一直安裝不成功,在進入安裝畫面後到某一步要選擇開機媒體時便會出錯,這些媒體包含CD Rom/Disk/Internet,但不管我選哪一種開機都無法進行下一步,後來才知道原來是我選的分割檔並不完整,所以在安裝時會出現類似"找不到系統安裝光碟,請插入光碟後再試"的錯誤。
而知所以會發現這個錯誤的原因也是誤打誤撞,因為我後來下載了CentOS 6.6的 Minmal版本,只有6.7百MB,是一個未分割的ISO檔,但成功裝好後發現沒有UI與網路功能,可能需要其它安裝光碟才能有網路功能,所以最後我也放棄這個版本。
然後我終於找到一個CentOS 7的Live CD(CentOS-7-x86_64-LiveCD-1503.iso),這也是一個完整iso光碟,但他是Live CD,也就是可以直接用光碟免安裝即可運行的CentOS,所以一開始掛接成功然後便可以在Hyper-V中的虛擬機器看到CentOS 7的桌面了(看到這我也嚇一跳,後來才想到這是因為它是Live CD),而也還好Live CD中的桌面有個Icon 可以點擊直接安裝OS到Disk,於是乎我始得可以開始安裝CentOS到Hyper-V中。
二. 怎麼在Hyper-V中新增CentOS 7虛擬機器
以下用圖示方式一步步介紹如何新增一台新的CentOS 7到Hyper-V中:
首先是先打開Hyper-V管理介面,然後在右邊按"新增虛擬機器"。
接著會出現新增虛擬機器的精靈,基本上只要按照上面所示一直下一步下一步地進行設定即可,
在這邊要特別說明一下部份我刻意設定的參數:
指定名稱與位置: 勾選"將虛擬機器儲存在不同位置(S)"然後選則要放置虛擬機器整個Folder的位置
- 指定世代:這邊我是指定第一世代,似乎比較不會有太多問題
- 指派記憶體:依系統所需,可勾選動態指派
- 設定網路功能:若未新增適當的Hyper-V的”虛擬網路交換器”,則可以先不指定認何連線。
- 連接虛擬硬碟:即虛擬硬碟檔案的指定及位置,這邊是新增的VM,所以就選"建立虛擬硬碟(C)"來建立新的Vhdx檔案並指定檔案大小及存放位置。
- 安裝選項:即指定要用什麼媒體安裝CentOS,這邊有兩種媒體,一是把ISO檔Mock到CD/DVD光碟機後(Windows 8.1可直接在ISO檔上按右鍵然後掛接檔案)用來安裝OS,或者是直接指定ISO檔位置進行安裝。
以上步驟完成後便可完成VM的新增,然後啟動該OS便會載入Live CD進入到作業系統桌面,然後點選 "安裝到硬碟"ICON便會開始進行安裝CentOS 7到虛擬硬碟的程序。
在這邊安裝過程基本上也是一項一項點入進行基本設定即可,在此僅就其中比較特別的"安裝位置"項目作說明,也只有這個項目是一定要進入作設定的,因為其項目本身就特別標上紅色文字(已選擇自動分區)提醒我們必須特別注意內部設定。
該項目其實是設定磁碟是否要進一步分割配置,在此我沒有任何特殊需求,所以一切可保留預設,除了"其它存備選項"必須選擇"我要配置分區"如下圖:
接著選擇掛載點要使用哪種分區方案,在這邊預設是用LVM,但是我選擇標準分區,不過兩種設定都可以就是:
之後基本上都下一步或接受就好,最後記得設定root密碼和建立一個user account便會開始安裝CentOS了,然後CentOS 7就安裝完成了。
三. 如何讓CentOS 7可以在 Hyper-V中上網
安裝完CentOS 之後先關閉CentOS 7,因為我們有很重要一件事要做,那就是設定Hyper-V網路使CentOS 7可以與實體主機和網際網路溝通,這就必需在Hyper-V中先新增一個外部網路虛擬交換器了。
Hyper-V有三種類型的虛擬交換器(或虛擬網路),分別是外部、內部與私人網路,詳細的差別茲先不在此作討論,我會另外撰文真對Hyper-V網路架構再作說明,這邊只著重於如何讓CentOS 7可透過Hyper-V網路交換器上網?
首先我們需要建立"外部虛妳交換器",該交換器可使VM與外部實體機器共用實體網路卡來與外部網路作溝通,缺點當然是會有與實體機器搶網路資源的問題,但設定好後CentOS將被自動發配網路位址且可連上網際網路。
要新增外部網路交換器,我們得先在Hyper-V新增交換器,過程很簡單如下:
(1) 新增外部虛擬交換器
(2) 設定交換器內容,包括名稱且連線類型為外部網路,同時選擇實體機器欲與VM共用的網路卡然後勾選共用選項按確定即完成外部虛擬交換器新增。
新增好網路交換器後,便為CentOS 指定網卡內容,若CentOS沒有網卡,可先新增網卡或傳統網路卡,在此我選擇新增以往Linux在Hyper-V常用的傳統網卡,但CentOS7似乎並無此限制:
接著為網卡選擇虛擬交換器,這邊選擇剛剛新增的外部網路虛擬交換器:
這樣 CentOS 7便可與獲得一自動配置的網路設定了。
但在這邊仍要注意的是在新增虛擬交換器後實體機器會出現新的網卡代表這需擬交換器網路,而原本的乙太網路網卡必需記得設定成其它機器可透過此台電腦上網,否則VM可能仍然無法連上外部網路,
下圖說明乙太網路如何設定為共用:
完成以上設定後-6進入CentOS 打開Terminal 輸入ifconfig便可看到自動配置的網路參數與IP address,此時可用FireFox Browser測試看看是否可以連上網際網路。
四. Putty無法連入CentOS
萬事皆備,此時只欠東風,就在一切設定正常後從windows 用Putty輸入CentOS的IP與SSH Port 22欲進行遠端shell登入時卻發現Putty連線被拒絕,悲憤之餘只得上網搜尋一下可能原因是什麼,發現最有可能的兩大成因是:
1. Firewall被打開且不允許Port 22被連入使用
針對此點我的方式是不管三七二十一直接把Firewall給關了,而欲關閉Firewall,在下達disable之後最好重開機,然後再查看Firewall 狀態,以下為Firewall的關閉與觀看狀態指令:
Disable Firewalld
systemctl disable firewalld
Stop Firewalld
systemctl stop firewalld
Check the Status of Firewalld
systemctl status firewalld
2. SSHD 服務未正常開啟
由於是新安裝的CentOS,所以SSH服務有可能並沒有被安裝,而我正好屬於這種情況,於是便需要下指令安裝openSSH:
yum install openssh*
而在安裝完成後只需要用以下指令確定SSH port 22在Listen狀態快可以從Putty遠端SSH登入CentOS了:
netstat -ant
呼!以上就是我這次安裝CentOS 7在Hypew-V的過程與解決方式,實在是一個辛苦的過程,不過可以安裝成功總算是一種成就,特此紀錄一個Linux菜鳥成長的過程。