教学环境还是一样比较好,所以,这几年来,鸟哥都是用虚拟机教学。既然如此,那就大家一起来创建好所需要的环境吧!
训练课程与自学的环境不太一样,训练课程的 Linux 操作系统环境中,主要是由鸟哥预先帮大家规划好的环境来让大家做许多的练习, 等到第 15 章的时候,再让大家自己搭建一个环境,期待在期末的时候大家都具有自己创建好属于自己的 Linux 操作系统的环境。不过,在训练过程中, 还是期望大家先取得已经预先安装好的虚拟化系统,这样在学习上面比较不会有太大的问题。 所以,如果老师/同学们没有办法取得 gocloud 环境时,可以使用底下的 virtualbox 的虚拟化软件来搭建你的 Linux 虚拟机在线环境喔!
训练课程的主要内容大致上是通过一个名为 Gocloud 的商业软件来达成的,该软件在教学与实机在线作业上面相当有帮助! 不过考量到许多大专院校或者经费较不足的教育者来说,要达成这样的环境确实有点难度。因此,鸟哥也使用 VirtualBox 的环境来让大家创建训练环境。 只是这个训练环境与实际操作比较不同,因此硬盘的文件名是 /dev/sda 而不是虚拟加速的 /dev/vda,因此在许多的侦测脚本上面, 结果会有些许问题~这部份得要请大家多多见谅。
鸟哥这里都假设大家已经有操作 windows 操作系统的经验,因此底下主要是以 windows 操作系统的基础环境来说明如何建置一个虚拟化的训练系统。 如果你已经具有 Linux 虚拟化的技术,请直接使用 Linux 底下的 qemu-img 指令,将光盘所附的操作系统磁盘文件 (img) 直接转成 qcow2 后, 就可以通过 Linux 的 KVM 搭配 libvirt 与 qemu 软件,直接挂载该硬盘就能开始作业。如果你只有 windows 或者是 MAC 操作系统, 那就使用底下介绍的 virtual box 来处理我们的上课环境吧。
如果您是计算机中心的管理伙伴,而且需要替老师们建置好这个 Linux 操作系统的教学环境时,无须进行多重操作系统的规划, 只要将 virtualbox 安装妥当,并且将硬盘 img 放置好,同时依据底下的流程建置好整个 virtual box 启动虚拟机的流程, 那就可以直接将你的 windows 系统做完还原硬盘,那同学们就可以在开机后直接使用了。当然,你的 images 就得要放置在没有被还原的其他分区才行呢!
另外,本文最新版本可以到底下的链接查阅喔:
VirtualBox 是甲骨文公司依据 GPL 授权所发布的虚拟化软件,所以你可以自由的从网络上面下载最新的软件来安装。 VirtualBox 的官网在底下的链接:
请依据你的操作系统环境来选择要下载的软件。在这里先针对虚拟化系统的专有名词做个简单的解释:
以我们这个训练教材的目的来说,我们是想在 windows 系统上面虚拟化 Linux 系统,因此 host 就是 windows 操作系统, VM 内的 guest OS 才是 Linux 操作系统之意。所以,当你要下载 Virtualbox 时,务必请选择正确的 host 版本 (在这个案例中,就是下载 host 为 windows 的版本之意。)
目前的 CentOS 7 已经不支持 32 比特的硬件环境,但是许多的虚拟化系统还是仅支持 32 比特而已~好在 Virtualbox 是有支持 64 比特的, 只是,你的硬件主机 BIOS 就得要启动许多支持虚拟化的功能才行!设置好 BIOS 的虚拟化支持也很简单,重新开机,进入 BIOS 之后, 记得进入高端模式,然后选择 CPU 有关的设置,选择有『虚拟化』支持的项目即可~底下是鸟哥所拥有的电脑中的一个 BIOS 设置示意图:
附带一提,如果未来你的这部主机想要支持硬件的 PCI passthrough 功能,那么那个 VT-d 的功能也来放行一下! 不过,在我们这个训练教材中,底下的设置为非必备就是了。
在 BIOS 的设置结束之后,请拿出书籍附上的 DVD ,将里面的文件暂时通通拷贝到你的 D 槽 (假设你的 D 槽容量够大), 基本上,该 DVD 应该会有底下的软件才对:
这样事前准备工作就完成了!
双击两下 VirtualBox 软件文件,就可以进入安装画面,其实近期以来的软件都做得很棒,只要一直下一步即可! 唯一要注意的是,因为 Virtualbox 会有安装一块虚拟网卡到你的 windows 系统上,在实做出该虚拟网卡时, 你的网络很可能会被暂时的中断,因此记得在处理安装时,这点需要特别留意!也就是说,不要有类似 ssh 的软件同时在运作, 否则断线很困扰的!
底下为依序的流程截屏,没啥大不了,就一直下一步就对了!
上面的图标当然要按『是』才能安装妥当!不要按错了!
安装完毕之后,启动 virtualbox 就有点像底下的图标:
安装完毕后,再来按下『添加』,我们来创建一部虚拟机啰!
上面这个步骤很重要,请选择正确的虚拟机硬盘档~说穿了,就是从 DVD 拷贝过来的文件就是了。如果你未来想要重复操作这个训练系统, 请自行将文件拷贝多份,出错就将硬盘换掉或者将硬盘拷贝即可。全部做完后,就像底下这样了:
然后按下设置值,先来优化一下 CPU 的设置如下:
缺省只用一颗 CPU,那你的系统会跑得慢吞吞~所以,这个 CPU 的优化也是很重要的!再来调整一下其他的设置值吧! 包括显示功能,如下所示:
最终也得要注意一下网络,因为我们的练习环境在最后可能会跟其他用户及 server 互相沟通,因此最好能够使用桥接界面。 整个网络设置有点像底下这样:
最终完成的图标会有点像底下这样,然后按下『启动』,就可以取得你的 Linux 训练教材的环境了!接下来就请前往 unit01 开始用功吧!
假设你已经具有 Linux Server,并且你的 BIOS 也已经设置好了虚拟化的支持,此时你只需要安装 libvirtd 这个服务, 同时加上 qemu-kvm 这个软件,以及 qemu-img 这个软件,就可以开始进行你的训练机器的设置了,并不需要动到实体机器! 这样操作系统会跟训练教材书籍内容一模一样,跟着教材做也会比较顺畅。
如果你手边有一部支持虚拟化的主机没有在使用,那就直接从网络上下载 CentOS 7 的 DVD,然后跟着鸟站的文章教学, 使用支持 GUI 的服务器安装方式,安装完毕之后,也立刻就能够使用 Linux KVM 的虚拟化软件了!
如果你还是不知道怎么启动虚拟化,那么请到实体机器上面去观察下列的数据,有的话那就表示可以进行虚拟化作业了!
# 检查一下 CPU 有没有支持虚拟化的功能!如果找不到 vmx 的话,请到 BIOS 进行调整。 [root@study ~]# cat /proc/cpuinfo | grep vmx flags : fpu vme de pse tsc msr pae ... vmx smx ... cqm_occup_llc # 要确认 libvirtd 是有启动的状态才行! [root@study ~]# systemctl status libvirtd ● libvirtd.service - Virtualization daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-09-28 12:09:04 CST; 1h 42min ago Docs: man:libvirtd(8) http://libvirt.org Main PID: 2250 (libvirtd) CGroup: /system.slice/libvirtd.service └─2250 /usr/sbin/libvirtd # 确认 virsh list 程序是可行的 [root@study ~]# virsh list Id Name State ---------------------------------------------------- # 检查已经安装了 qemu-img 以及 qemu-kvm 等软件! [root@study ~]# rpm -q qemu-img qemu-kvm qemu-img-1.5.3-105.el7_2.7.x86_64 qemu-kvm-1.5.3-105.el7_2.7.x86_64
假设书籍的 DVD 附上的硬盘文件你已经放置到 /home/vbirdlinux 目录下,接下来你得要先转换硬盘格式才行。因为 DVD 里面的数据主要是给 VirtualBox 使用的, 因此你得要先将该格式转成 KVM 可以读取的 qcow2 才行。处理的方式其实非常简单!
[root@study ~]# cd /home/vbirdlinux [root@study vbirdlinux]# ll -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img convert -O qcow2 linux_os_train_class.vdi linux_os_train_class.qcow2 -p (100.00/100%) [root@study vbirdlinux]# ll -rw-r--r-- 1 root root 3964010496 Sep 28 14:02 linux_os_train_class.qcow2 -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img info linux_os_train_class.qcow2 image: linux_os_train_class.qcow2 file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 7.0G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
上面的 linux_os_train_class.qcow2 就是课程提供的上课用硬盘,这个硬盘最好不要更动到!如果硬盘出错的话,就可以通过这个硬盘来重新处理。 而为了加快硬盘处理的速度,其实我们可以通过 qemu-img 提供的 backing_file 功能进行处理。假设让这颗硬盘文件名变成 linux_os_train_class.qcow2.raw 之后, 我们可以增加一个快照 (backing_file) 的文件,两个文件的内容会一摸一样,但是容量差很多!
[root@study vbirdlinux]# linux_os_train_class.qcow2 linux_os_train_class.qcow2.raw [root@study vbirdlinux]# qemu-img create -f qcow2 -o backing_file=linux_os_train_class.qcow2.raw \ > linux_os_train_class.qcow2 Formatting 'linux_os_train_class.qcow2', fmt=qcow2 size=42949672960 backing_file='linux_os_train_class.qcow2.raw' encryption=off cluster_size=65536 lazy_refcounts=off [root@study vbirdlinux]# ll -rw-r--r-- 1 root root 197632 Sep 28 14:08 linux_os_train_class.qcow2 -rw-r--r-- 1 root root 3964010496 Sep 28 14:02 linux_os_train_class.qcow2.raw -rw-rw-r-- 1 root root 3984753152 Sep 28 13:44 linux_os_train_class.vdi [root@study vbirdlinux]# qemu-img info linux_os_train_class.qcow2 image: linux_os_train_class.qcow2 file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 196K cluster_size: 65536 backing file: linux_os_train_class.qcow2.raw Format specific information: compat: 1.1 lazy refcounts: false
接下来请打开 "linux_os_train_class.xml" 这个文件,因为我们放置文件的位置与相关的设置与鸟哥当初的设置并不相同, 所以这里得要修改一下才可以!
[root@study vbirdlinux]# ll -rw-rw-r-- 1 root root 2577 Sep 28 14:11 linux_os_train_class.xml [root@study vbirdlinux]# vim linux_os_train_class.xml <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>vm_linux</name> <memory>2097152</memory> <currentMemory>2097152</currentMemory> <vcpu>4</vcpu> <cpu mode='host-passthrough'> <arch>x86_64</arch> <model>SandyBridge</model> <vendor>Intel</vendor> <topology sockets='1' cores='4' threads='2'/> </cpu> <os> <type arch='x86_64'>hvm</type> <boot dev='cdrom'/> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none' io='native' copy_on_read='off' /> <source file="/home/vbirdlinux/linux_os_train_class.qcow2"/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <disk type='file' device='cdrom'> <source file=''/> <target dev='hdc' bus='ide'/> <readonly/> </disk> <interface type='bridge'> <mac address='52:54:00:11:11:33'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target port='0'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='spice' port='5701' autoport='no' listen='0.0.0.0'> <image compression='auto_glz' /> <jpeg compression='auto' /> <zlib compression='auto' /> <playback compression='on' /> <streaming mode='all' /> </graphics> <graphics type='vnc' port='5901' autoport='no' listen='0.0.0.0'> <image compression='auto_glz' /> <jpeg compression='auto' /> <zlib compression='auto' /> <playback compression='on' /> <streaming mode='all' /> </graphics> <video> <model type='qxl' vram='32768' heads='1'/> <acceleration accel3d='yes' accel2d='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <sound model='ich6'/> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </memballoon> </devices> </domain>
我这里假设你的 KVM host 已经安装好了桥接设备,亦即是 br0 这一个桥接界面,如果你输入 ifconfig 发现到仅有 virbr0 的时候, 请将上述的桥接器改成 virbr0 即可!再来就是鸟哥同时启动 spice 与 vnc 两个界面,缺省端口口如上所示, 如果你不想要使用上述的端口口,那就请自行改掉该端口口即可。 此外,如果想要在外头连接到这个系统,那么最好加上密码才好! 我这边缺省是没有加密码的,如果要加密码,那请修改这一行:
[root@study vbirdlinux]# vim linux_os_train_class.xml <graphics type='spice' port='5701' autoport='no' listen='0.0.0.0' passwd="your_passwd">
如果一切都准备妥当,这时请启动虚拟机:
[root@study vbirdlinux]# virsh create linux_os_train_class.xml Domain vm_linux created from linux_os_train_class.xml [root@study vbirdlinux]# virsh list Id Name State ---------------------------------------------------- 2 vm_linux running [root@study vbirdlinux]# netstat -tlunp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 7134/qemu-kvm tcp 0 0 0.0.0.0:5701 0.0.0.0:* LISTEN 7134/qemu-kvm
此时,只要在 Linux 的图形界面上面启动 remove-viewer ,然后输入『 spice://#:5701 』即可取得图形画面。 如果你是使用外部的 IP 时,那请放行防火墙,之后在 remove viewer 软件输入『 spice://your_kvm_host_ip:5701 』即可取得上课用的环境教材!