Linux 基础学习训练教材 - CentOS 7.x

课前课程管理-学生篇

教学环境还是一样比较好,所以,这几年来,鸟哥都是用虚拟机教学。既然如此,那就大家一起来创建好所需要的环境吧!

最近更新时间: 2017/09/28

训练课程与自学的环境不太一样,训练课程的 Linux 操作系统环境中,主要是由鸟哥预先帮大家规划好的环境来让大家做许多的练习, 等到第 15 章的时候,再让大家自己搭建一个环境,期待在期末的时候大家都具有自己创建好属于自己的 Linux 操作系统的环境。不过,在训练过程中, 还是期望大家先取得已经预先安装好的虚拟化系统,这样在学习上面比较不会有太大的问题。 所以,如果老师/同学们没有办法取得 gocloud 环境时,可以使用底下的 virtualbox 的虚拟化软件来搭建你的 Linux 虚拟机在线环境喔!

0.1:前言

训练课程的主要内容大致上是通过一个名为 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 就得要放置在没有被还原的其他分区才行呢!

另外,本文最新版本可以到底下的链接查阅喔:

0.2:VirtualBox 的安装与设置

VirtualBox 是甲骨文公司依据 GPL 授权所发布的虚拟化软件,所以你可以自由的从网络上面下载最新的软件来安装。 VirtualBox 的官网在底下的链接:

请依据你的操作系统环境来选择要下载的软件。在这里先针对虚拟化系统的专有名词做个简单的解释:

  • Hypervisor: 虚拟机监督器,就是上面的 KVM, Xen...软件的意思
  • Host: 运作 hypervisor 的母系统,就是实体机器的系统的意思。
  • Virtual Machine: 虚拟机 (注意!是虚拟『机器』不是虚拟『主机』),由 hypervisor 所仿真出来的『假硬件』,简称为 VM
  • Guest: 在 VM 上面运作的操作系统

以我们这个训练教材的目的来说,我们是想在 windows 系统上面虚拟化 Linux 系统,因此 host 就是 windows 操作系统, VM 内的 guest OS 才是 Linux 操作系统之意。所以,当你要下载 Virtualbox 时,务必请选择正确的 host 版本 (在这个案例中,就是下载 host 为 windows 的版本之意。)

0.2.1:安装前准备动作

目前的 CentOS 7 已经不支持 32 比特的硬件环境,但是许多的虚拟化系统还是仅支持 32 比特而已~好在 Virtualbox 是有支持 64 比特的, 只是,你的硬件主机 BIOS 就得要启动许多支持虚拟化的功能才行!设置好 BIOS 的虚拟化支持也很简单,重新开机,进入 BIOS 之后, 记得进入高端模式,然后选择 CPU 有关的设置,选择有『虚拟化』支持的项目即可~底下是鸟哥所拥有的电脑中的一个 BIOS 设置示意图:

图0.2-1、BIOS 的虚拟化功能支持示意图
图0.2-1、BIOS 的虚拟化功能支持示意图

附带一提,如果未来你的这部主机想要支持硬件的 PCI passthrough 功能,那么那个 VT-d 的功能也来放行一下! 不过,在我们这个训练教材中,底下的设置为非必备就是了。

图0.2-2、BIOS 的虚拟化功能支持示意图-针对 Intel VT-d 功能
图0.2-2、BIOS 的虚拟化功能支持示意图-针对 Intel VT-d 功能

在 BIOS 的设置结束之后,请拿出书籍附上的 DVD ,将里面的文件暂时通通拷贝到你的 D 槽 (假设你的 D 槽容量够大), 基本上,该 DVD 应该会有底下的软件才对:

  • linux_os_train_class.vdi:就是主要的硬盘环境
  • VirtualBox-5.1.28-117968-Win.exe: VirtualBox 于 2017/09 下载的版本
  • readme.pdf:就是本文档
  • linux_os_train_class.xml:启动 KVM 的 XML 设置(尚须修改)

这样事前准备工作就完成了!

0.2.2:开始安装与设置

双击两下 VirtualBox 软件文件,就可以进入安装画面,其实近期以来的软件都做得很棒,只要一直下一步即可! 唯一要注意的是,因为 Virtualbox 会有安装一块虚拟网卡到你的 windows 系统上,在实做出该虚拟网卡时, 你的网络很可能会被暂时的中断,因此记得在处理安装时,这点需要特别留意!也就是说,不要有类似 ssh 的软件同时在运作, 否则断线很困扰的!

  • 软件安装

底下为依序的流程截屏,没啥大不了,就一直下一步就对了!

VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程

上面的图标当然要按『是』才能安装妥当!不要按错了!

VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程

安装完毕之后,启动 virtualbox 就有点像底下的图标:

VirtualBox 安装与设置的完整流程
VirtualBox 安装与设置的完整流程
  • 虚拟机的硬件设置及优化

安装完毕后,再来按下『添加』,我们来创建一部虚拟机啰!

虚拟机的硬件设置及优化
因为我们的系统是 CentOS 也是来自于 Red Hat 系列,所以选这个项目!
虚拟机的硬件设置及优化
训练机大约 2G 到 3G 的内存就很够用了!如果你的 host 只有 4G 的话,这里使用 1.5G 也还 OK !
虚拟机的硬件设置及优化
虚拟机的硬件设置及优化

上面这个步骤很重要,请选择正确的虚拟机硬盘档~说穿了,就是从 DVD 拷贝过来的文件就是了。如果你未来想要重复操作这个训练系统, 请自行将文件拷贝多份,出错就将硬盘换掉或者将硬盘拷贝即可。全部做完后,就像底下这样了:

虚拟机的硬件设置及优化
虚拟机的硬件设置及优化

然后按下设置值,先来优化一下 CPU 的设置如下:

进行 VM 的 CPU 优化喔!很重要! 进行 VM 的 CPU 优化喔!很重要! 进行 VM 的 CPU 优化喔!很重要!
进行 VM 的 CPU 优化喔!很重要!

缺省只用一颗 CPU,那你的系统会跑得慢吞吞~所以,这个 CPU 的优化也是很重要的!再来调整一下其他的设置值吧! 包括显示功能,如下所示:

进行 VM 的显卡优化
进行 VM 的显卡优化

最终也得要注意一下网络,因为我们的练习环境在最后可能会跟其他用户及 server 互相沟通,因此最好能够使用桥接界面。 整个网络设置有点像底下这样:

进行 VM 的网络卡设置
进行 VM 的网络卡设置

最终完成的图标会有点像底下这样,然后按下『启动』,就可以取得你的 Linux 训练教材的环境了!接下来就请前往 unit01 开始用功吧!

进行 VM 优化完毕的结果
进行 VM 优化完毕的结果

0.3:利用 KVM host 处理训练教材

假设你已经具有 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
  • 编辑 VM 硬件设置档

接下来请打开 "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 』即可取得上课用的环境教材!

其他链接
环境工程模式篇
鸟园讨论区
鸟哥旧站

今日 人数统计
昨日 人数统计
本月 人数统计
上月 人数统计