使用虚拟机就和物理机一样,第一步就是要装机。
就和我们要安装物理机一样,我们在安装虚拟机之前也要做点事先的准备。要准备这么几样东西。
检查分为两种,硬件和软件,软件上又可以分为内核模块和应用程序。
首先芯片上要支持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的。关于格式,不在这里介绍。有兴趣的童鞋可以自行查阅资料。
你喜欢装什么系统就下什么系统吧。和你主机一样的也行,能装就行。
比如说这里有一个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是为了找到其中的kernel和initrd。
sudo mount -o loop rhel-server-6.7-x86_64-dvd.iso tmp/
一般情况下启动的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其实就是一个事先写好的脚本,按照特定的语法写上了安装过程中的信息,比如用户名密码,如何划分硬盘,需要安装的包以及安装完成后的一些动作。功能挺强大,具体细节我也没有仔细研究,这里给出一个可以安装的例子。
# 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
整个脚本也还好,有些不是特别明白,但是基本的东西能看懂。有几个点特别注释一下:
大家看了这个kickstart脚本估计还是会不知道要怎么写。告诉大家两个可以借鉴别人例子的地方。
这个步骤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~