2016年11月13日 星期日

How to install VirtualBox on CentOS 7 using command line


前言


最近已經將資料庫在練習的環境測試完了,接下來就該用實驗室的電腦做一點比較正式的環境架設了,但最怕麻煩的我怎麼可能乖乖蹲在實驗室架設環境呢?來回實驗室要快半小時耶,瘋了喔這麼累,在家裡躺在床上用SSH(Secure Shell)遠端實驗室電腦才是王道阿,網路上大多數的教學都是教大家如何在圖形化介面下安裝與設定虛擬機器,這對我這種懶人來說太麻煩了,所以誕生了一個寫一個完全使用command line來安裝VirtualBox教學的念頭,作為小懶人間的小小交流。
  因為平常習慣用的是CentOS,所以下面的指令皆用建立CentOS虛擬機為例。


步驟


Step1:安裝虛擬機器

由於Yum預設的伺服器中並沒有內建VirtualBox軟體庫(Repository)的相關資訊,因此我們必須自己建立一個VirtualBox的repo檔,並安裝目前最新版(20161107)的VirtualBox。
#cd /etc/yum.repos.d
#wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
#yum install -y VirtualBox-5.1.x86_64

Step2:建立虛擬機器

#VBoxManage createvm --name centos
createvm:建立一個虛擬機器檔案
--name後面加虛擬機器的名字
這個命令在執行成功後會在你的家目錄底下建立VirtualBox VMs/centos/centos.vbox

Step3:幫虛擬機器建立硬碟檔案

#VBoxManage createhd --filename centos --size 1000
createhd:建立硬碟
--filename後面加上剛剛建立的虛擬機器檔名
--size是硬碟大小,以MB(Megabyte)為單位,100MB只是示範使用

Step4:讓VirtualBox找到你的虛擬機器檔案

#VBoxManage registervm '/home/user/VirtualBox VMs/centos/centos.vbox'
registervm後面接虛擬機器檔案的完整路徑,前後用引號圈起來
(其實也可以在createvm階段就進行這個操作,只要在filename打完後,空一格加上--register就好,但因為個人習慣才把這個步驟在這個階段進行。)

Step5:虛擬機器的更多設定

#VBoxManage modifyvm centos --ostype RedHat_64 --memory 512 --vram 10 --accelerate3d on --audio alsa --audiocontroller ac97 --nic1 nat --nictype1 82540EM --cableconnected1 on
modifyvm後面接虛擬機器的名稱,讓你對指定虛擬機器進行更多設定
--ostype在使用圖形化介面版本新增虛擬機器時,有沒有印象有一欄是要選擇虛擬機器類型?
那個步驟就是在這邊進行,注意使用的系統是不是64位元的,像我使用的是64位元的CentOS 7,因此我的類型是輸入RedHat_64 (底下會附上比較常見的幾種,如果使用的作業系統沒有在底下看到可以執行$VBoxManage list ostypes查閱。)
--memory 設定給予虛擬機器的記憶體大小,記憶體大小以MB(Megabyte)為單位,512MB只是示範使用。
--vram 顯示記憶體大小,記憶體大小以MB(Megabyte)為單位,10MB只是示範使用
--accelerate3d 是否啟動3D加速
--audio後接主機的音效驅動程式,可以選擇的有none, null, oss, alsa , pulse
--audiocontroller後接音效晶片,可以選擇的有ac97, hda, sb16(這部分還不確定理解是否正確)
--nic後面不用空格接上網路卡編號(1~n),之後空格接上模式,可以選擇的有none, null, nat, bridged, intnet, hostonly, vde
--nictype後面不用空格接上網路卡編號(1~n),之後空格接上網路卡的類型,可以選擇的選項有Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, virtio
--cableconnected後面不用空格接上網路卡編號(1~n),選擇是否連接

作業系統與ostype對照
Debian (32-bit)----->Debian
Debian (64-bit)----->Debian_64
Fedora (32-bit)----->Fedora
Fedora (64-bit)----->Fedora_64
Red Hat (32-bit)--->RedHat
Red Hat (64-bit)--->RedHat_64
Ubuntu (32-bit)---->Ubuntu
Ubuntu (64-bit)---->Ubuntu_64
FreeBSD (32-bit)-->FreeBSD
FreeBSD (64-bit)-->FreeBSD_64

Step8:設定虛擬機的儲存設備連接埠

首先我想新增一個IDE給虛擬機器連接光碟機
$VBoxManage storagectl centos --name IDE --add ide --controller PIIX4 --bootable on
再新增一個SATA給虛擬機器連接硬碟
$VBoxManage storagectl centos --name SATA --add sata --controller IntelAhci --bootable on
storagectl後面加上目標虛擬機器的名稱
--name可以讓你幫這個儲存裝置命名,你要想取啥甚至連Trump都行
--add後面接上你的介面,可以選擇的有ide, sata, scsi, floppy
--controller後接的為控制晶片,可以選擇的有LsiLogic, LSILogicSAS, BusLogic, IntelAhci, PIIX3, PIIX4, ICH6, I82078(對這方面較沒研究,因此在這邊都選擇最常見的,IDE對PIIX4,SATA對IntelAhci)
--bootable選擇on讓他可以啟動

Step9:將儲存設備接上虛擬機器

設定虛擬機器連接埠所連接的對象(硬碟),並且放入虛擬機器的硬碟檔案
#VBoxManage storageattach centos --storagectl SATA --port 0 --device 0 --type hdd --medium /home/user/VirtualBox\ VMs/centos/centos.vdi
設定虛擬機器連接埠所連接的對象(光碟機),並且放入虛擬機器的光碟檔案
#VBoxManage storageattach centos --storagectl IDE --port 0 --device 0 --type dvddrive --medium /home/user/CentOS-7-x86_64-Everything-1511.iso
storageattach後面接目標虛擬機器
--storagectl後面接剛剛透過--name所命名的連接埠
--port儲存設備接上的port
--device設定該裝置在該port上的編號
--type後接該儲存設備的型態,可以使用的有dvddrive, hdd, fdd
--medium後接上欲放入的檔案完整路徑

Step10:啟動
經過10個步驟的摧殘,終於可以啟動與關閉虛擬機器了
#VBoxManage startvm centos
#VBoxManage controlvm centos poweroff

總結


  以上就是如何在Linux安裝、設定並且啟動虛擬機器的方法,如果要遠端重灌的話,需要開啟遠端桌面伺服器VRDE,這部分還沒有時做過,因此不在本文章中討論。

【Linux教學】授權使用者使用sudo

在管理伺服器的時候,不建議直接使用root進行控制,雖然在執行指令時完全不用考慮權限問題非常方便 (我自己以前也常常這樣,直到刪掉不該刪的東西...),為了不要讓這種悲劇再次發生在你我身邊,大家在管理伺服器時建議使用可以用超級使用者權限的用戶登入即可,有需要時加個sudo就好,底下附上如何讓使用者取得使用sudo權限的方法。

要讓使用者使用sudo,必須修改/etc/sudoers這個文件,但是因為這個文件的擁有者與群組皆為root所有,且為唯獨檔(-r--r-----),因此必須先取得root密碼才可以進行修改。

1. 登入root或是執行su指令,並輸入root密碼,用超級使用者的身分操作系統
2. 修改/etc/sudoers這個檔案
#vim /etc/sudoers
在大約98行的地方可以找到
root    ALL=(ALL)       ALL
在它底下新增一行
username  ALL=(ALL)       ALL
(username為欲給予使用sudo權限的使用者)
:wq儲存

儲存完之後,該user就可以使用sudo了

2016年11月5日 星期六

(under construction)Linux指令筆記

隨手放一些常常忘記的指令以備不時之需~

1. 查看系統版本
#uname -a

2. 檢查SELinux (Security Enhanced Linux) 狀態
#getenforce

→修改SELinux狀態
#vim /etc/selinux/config
修改SELINUX=enforcing
SELinux的模式可分為三種模式,以下取自於鳥哥的Linux私房菜
  1. enforcing:強制模式,代表 SELinux 運作中,且已經正確的開始限制 domain/type 了。
  2. permissive:寬容模式:代表 SELinux 運作中,不過僅會有警告訊息並不會實際限制domain/type 的存取。
  3. disabled:關閉,SELinux 並沒有實際運作。
3. 修改ip
#ifconfig <device_name> <ip_addr> 
其他網卡資料的修改

#vim /etc/sysconfig/network-scripts/<device_name>

4. hostname
檢查hostname
#hostnamectl

修改hostname
CentOS 7更新了修改hostname的方法,現在只需要
# hostnamectl set-hostname <new_hostname>