使用虛擬機就和物理機一樣,第一步就是要裝機。
安裝一臺虛擬機
事前準備
就和我們要安裝物理機一樣,我們在安裝虛擬機之前也要做點事先的準備。要準備這麼幾樣東西。
- 必要的系統檢查
- 創建虛擬機的虛擬磁盤
- 下載guest系統的iso鏡像
必要的系統檢查
檢查分爲兩種,硬件和軟件,軟件上又可以分爲內核模塊和應用程序。
首先芯片上要支持kvm,比如x86的架構需要有vmx。這個在linux系統上通過命令“cat /proc/cpuinfo | grep vmx”來判斷。如果有這個標誌,說明芯片是支持的。
然後看內核是否支持。通過命令“lsmod | grep kvm”。如果看到有兩個模塊kvm, kvm_intel,那麼表示當前的內核已經加載了這兩個模塊。如果沒有加載,請加載或者需要重新編譯內核。
最後看有沒有qemu安裝。這個每個發行版的可執行文件的名字或許有差別,但基本都以qemu開頭。有的叫qemu-kvm, qemu-system-x86_64等,當然也有特別的就是叫kvm。具體在你的發行版上如何命名,可以使用包管理軟件搜索qemu來確認和安裝。
創建虛擬機的虛擬磁盤
這個就和我們裝物理機,要求物理機上有硬盤一樣。我們安裝的虛擬機也是要有虛擬磁盤的。
虛擬磁盤有多種形式和格式,這裏就不展開了。簡單來講,虛擬磁盤在host上就是一個文件。我們可以用以下命令創建一個虛擬磁盤。
qemu-img create -f raw fedora.img 30G
這樣就在當前目錄下創建了一個大小爲30G的虛擬磁盤文件fedora.img。這個虛擬磁盤的格式是raw的。關於格式,不在這裏介紹。有興趣的童鞋可以自行查閱資料。
下載guest系統的iso鏡像
你喜歡裝什麼系統就下什麼系統吧。和你主機一樣的也行,能裝就行。
比如說這裏有一個Fedora 25的iso文件,有興趣的話可以嘗試一下。
開始安裝
命令很簡單
qemu-kvm -m 4096 -smp 4 \
-hda fedora.img -cdrom Fedora.iso \
-boot dc
就這麼簡單,這一條命令就可以啓動虛擬機並進入安裝的界面了。
簡單介紹一下各個參數
-m 4096: 虛擬機內存是4096MB
-smp 4: 虛擬機有4個vcpu
-hda: 硬盤的文件
-cdrom: 光盤文件
-boot: 啓動順序,從光盤啓動
啓動後就能看到和真實物理機安裝一樣的界面。按照提示一步步往下走就好了。現在的發行版已經做得很人性化了。
啓動虛擬機
在我們玩高級貨之前,還是先來看看已經安裝好的虛擬機吧。
啓動也很簡單,一條命令。
qemu-kvm -m 4096 -smp 4 \
-hda fedora.img
就是把cdrom和啓動順序的參數去掉就可以了~
歡迎來到虛擬機的世界。
小進階 – 通過字符界面安裝虛擬機
有的時候我們沒有圖形界面,或者無法很好地使用圖形界面。比如我們在服務器上安裝虛擬機,有時候不安裝圖形界面的,或者網絡帶寬受到限制,使用圖形界面操作會讓你崩潰。
小編今天傾情奉獻獨家祕籍,告訴你如何通過字符界面安裝虛擬機。
備註: 該方法不一定適合所有發行版。下面的例子安裝的是rhel6.7。
掛載虛擬機iso
掛載iso是爲了找到其中的kernel和initrd。
sudo mount -o loop rhel-server-6.7-x86_64-dvd.iso tmp/
找到 啓動kernel 和 initrd
一般情況下啓動的kernel和initrd在光盤文件的isolinux目錄內。
比如在rhel6.7種,文件分別是
isolinux/vmlinuz
isolinux/initrd.img
路徑和名字若有變化,請自行探索。
開始安裝
好了,這就要開始安裝了哈。我使用的命令是:
sudo qemu-system-x86_64 --enable-kvm \
-m 4096 -smp 4 \
ubuntu.img \
-cdrom rhel-server-6.7-x86_64-dvd.iso \
--nographic \
-append console=ttyS0 \
-kernel tmp/isolinux/vmlinuz \
-initrd tmp/isolinux/initrd.img
前面和正常安裝的是一樣的,就是多了後面四個選項。
--nographic 不使用圖形界面
--append 啓動時傳給內核的參數
--kernel 使用哪個內核
--initrd 使用哪個initrd
如果該發行版本可以通過字符安裝,那麼你就會看到字符的安裝界面。雖然和圖形界面相比醜了一點,但是用起來倒是一樣的。
再進一步–一鍵安裝
好了,懶人的天性要發揮一下。雖然現在的安裝界面已經很友好,步驟也很簡單了,但是如果能夠一鍵安裝,世界會是有多麼美好。你要知道裝機是件很無聊的事兒,有這時間不如忙裏偷閒喝杯咖啡。再說了,要是碰到要安裝N臺機器怎麼破?
嘿,其實這事兒早就有人做好了。這個東西叫做kickstart。
PS: kickstart主要用在RHEL和CentOS。其他發行版據說也有類似的功能,請童鞋自行探索。
使用kickstart的方式有幾種,我這裏提供一種把腳本放到iso文件的方式。
編寫kickstart腳本
kickstart其實就是一個事先寫好的腳本,按照特定的語法寫上了安裝過程中的信息,比如用戶名密碼,如何劃分硬盤,需要安裝的包以及安裝完成後的一些動作。功能挺強大,具體細節我也沒有仔細研究,這裏給出一個可以安裝的例子。
# This is an installation
install
# From cdrom
cdrom
lang en_US.UTF-8
keyboard us
# root password, plaintest
#rootpw --plaintext abc123
# root password encrypted
rootpw --iscrypted $6$27qsH/RZygFeKCF9$iDAZJsCnN7N
firewall --service=ssh
autoconfig --enableshadow --passalog=sha512 --enablefingerprint
selinux --enforcing
# power off after installation
poweroff
timezone --utc America/New_York
bootloader --location=mbr --driverorder=sda --append="console=ttyS0 crashkernel=auto"
# clear the disk
clearpart --all --drivers=sda --initlabel
autopart
zerombr
repo --name="Red Hat Enterprise Linux" --baseurl=file:///mnt/source --cost=100
%packages --nobase
@core
%end
整個腳本也還好,有些不是特別明白,但是基本的東西能看懂。有幾個點特別註釋一下:
- poweroff 這個有幾個選項,reboot, halt。試了一下,只有在poweroff的時候安裝完qemu是退出的,其他的都會卡在那。不利於用腳本批量安裝虛擬機。
- autopart 一定要加上,否則安裝過程中還是會提示你要怎麼分區,就比較蛋疼了
大家看了這個kickstart腳本估計還是會不知道要怎麼寫。告訴大家兩個可以借鑑別人例子的地方。
- RHEL手動安裝完後會有一個腳本在/root目錄下,上面這個例子就是從這個文件拷貝出來的
- RHEL帶有一個配置的軟件, system-config-kickstart。有些選項不知道怎麼寫,可以借鑑這個軟件的。
製作帶有kiskstart腳本的iso
這個步驟so easy
mkisofs -o ks.iso ks.cfg
這樣你就有了一個帶有kickstart腳本的iso。
腳本的文件名一定是ks.cfg
腳本的文件名一定是ks.cfg
腳本的文件名一定是ks.cfg
反正我改成這個名字才裝成功了。
傳說的一鍵安裝
好了,開始安裝吧。其實就是一條命令~
sudo qemu-system-x86_64 --enable-kvm \
-m 4096 -smp 4 \
ubuntu.img \
-drive file=rhel-server-6.7-x86_64-dvd.iso,media=cdrom,index=1 \
-drive file=ks.iso,media=cdrom,index=2 \
--nographic \
-append "console=ttyS0 ks=cdrom:/ks.cfg"\
-kernel tmp/isolinux/vmlinuz \
-initrd tmp/isolinux/initrd.img
是在沒啥可以說的,照着運行吧。從此以後就再也不怕虛擬機被整死了。
Hope you would enjoy it~