文档首页 > > 私有镜像制作指南> 使用virt-manager工具制作私有镜像> Linux镜像制作流程> 虚拟机环境配置

虚拟机环境配置

分享
更新时间: 2019/10/21 GMT+08:00

为虚拟机配置网络环境使其能够连接互联网,上传安装包到虚拟机。

前提条件

  • 宿主机可以连接互联网。
  • 已经通过远程桌面工具VNC Viewer等软件连接到宿主机。
  • 所需安装包已经上传至宿主机。

操作步骤

  1. 安装vim软件、dkms包、linux--headers-xxx-common和linux-headers-xxx-amd64包(仅Debian需要执行此步骤)。
    1. 安装vim软件。
      1. 配置apt源。

        执行vi /etc/apt/sources.list命令,添加apt源。不同版本的Debian操作系统所添加的内容不一样,以下文本以Debian 8.6为例。

        deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-free
        deb-src http://mirrors.ustc.edu.cn/debian jessie main contrib non-free
        deb http://mirrors.ustc.edu.cn/debian jessie-proposed-updates main contrib non-free
        deb-src http://mirrors.ustc.edu.cn/debian jessie-proposed-updates main contrib non-free
        deb http://mirrors.ustc.edu.cn/debian jessie-updates main contrib non-free
        deb-src http://mirrors.ustc.edu.cn/debian jessie-updates main contrib non-free

        输入:wq!保存文件,然后执行apt update命令。

      2. 执行apt-get install vim安装vim软件。
    2. 执行apt-get install dkms安装dkms包。
    3. 执行apt-get install linux--headers-xxx-common安装linux--headers-xxx-common包。

      xxx代表具体内核版本号,如Debain 8.6的内核版本为3.16.0-4,请执行apt-get install linux--headers-3.16.0-4-common

    4. 执行apt-get install linux-headers-xxx-amd64安装linux-headers-xxx-amd64包。

      xxx代表具体内核版本号,如Debain 8.6的内核版本为3.16.0-4,请执行apt-get install linux-headers-3.16.0-4-amd64

    5. 删除“/etc/network/interfaces”文件的配置项。

      执行命令vi /etc/network/interfaces,如果存在eth0的配置,删除最后两行配置项。

      ...
      # The loopback network interface
      auto lo
      iface lo inet loopback
      
      # The primary network interface
      # 以下为需要删除的配置项:
      allow-hotplug eth0
      iface eth0 inet dhcp

      输入:wq!保存文件。

  2. 虚拟机网络配置。

    为虚拟机配置一个可用的IP地址,使虚拟机和宿主机网络互通。

    1. 在虚拟机上,执行以下命令,查看网卡名称。

      ifconfig -a

    2. 执行以下命令,查看网卡是否获取到IP地址。

      ifconfig

      显示如下回显信息(xxx表示自动获取的IP地址,XX表示MAC地址):

      eth0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
      inet addr:xxx.xxx.xxx.xxx  Bcast:xxx.xxx.x.xxx Mask:xxx.xxx.xxx.xxx
    3. 如果没有获取到(否则跳过此步骤),执行以下命令,使网卡动态获取IP地址。

      ifup 网卡名称

      示例:

      ifup eth0

      显示如下回显信息:

      Determining IP information for eth0... done

      也可以执行下列命令:

      ifconfig eth0 up

      一般无回显信息。

  3. 设置时间参数,防止裸金属服务器下发超时。
    • 对于Red Hat 7系列/EulerOS 2.2/EulerOS 2.3/CentOS 7系列/Oracle Linux 7系列/Ubuntu 16.04/SUSE 12 SP2/SUSE 12 SP3/Debian 8.6操作系统,执行以下命令:

      vi /etc/systemd/system.conf

      去掉“DefaultTimeoutStartSec”和“DefaultTimeoutStopSec”前的#号注释,将时间修改为300s,修改后的配置文件如下所示:

      #TimeSlackNSec=
      #DefaultTimerAccuracySec=1min
      #DefaultStandardOutput=journal
      #DefaultStandardError=inherit
      DefaultTimeoutStartSec=300s
      DefaultTimeoutStopSec=300s
      #DefaultRestartSec=100ms
      #DefaultStartLimitInterval=10s
      #DefaultStartLimitBurst=5
      #DefaultEnvironment=
      #DefaultCPUAccounting=no
      #DefaultBlockIOAccounting=no
  4. 关闭虚拟机防火墙。防火墙会阻止远程SSH登录等连接,需要关闭。
    • 对于Red Hat 7.0/Red Hat 7.2/Red Hat 7.3/Red Hat 7.4/Oracle Linux 7系列/EulerOS 2.2/EulerOS 2.3/CentOS 7系列操作系统,依次执行以下命令:

      systemctl disable firewalld.service

      systemctl stop firewalld.service

      查看服务状态:systemctl status firewalld.service

    • 对于Red Hat 6.7/Red Hat 6.8/Red Hat 6.9/CentOS 6.8/CentOS 6.9/Oracle Linux 6.8/Oracle Linux 6.9操作系统,依次执行以下命令:

      chkconfig iptables off

      service iptables stop

      查看服务状态:service iptables status

      [root@localhost ~]# service iptables status
      iptables: Firewall is not running.
    • 对于SUSE 12操作系统,依次执行以下命令:

      systemctl disable SuSEfirewall2.service

      systemctl stop SuSEfirewall2.service

      查看服务状态:service SuSEfirewall2 status

    • 对于SUSE 11操作系统,先执行:

      rcSuSEfirewall2 stop

      再执行下面命令:

      1. yast
      2. 选择“Security and Users > Firewall > Disble Firewall Automatic Starting”。
      3. 查看是否为“Disble Firewall Automatic Starting”。
        • 是,单击“Cancel > Quit”。
        • 否,选择它,单击“Next > Finish > Quit”。
    • 对于Ubuntu 16.04/Ubuntu 14.04/Debian 8.6操作系统,执行下面命令关闭防火墙:

      ufw disable

      如果没有ufw命令,可以在官网下载防火墙管理软件ufw并安装(下载地址参考:https://packages.ubuntu.com/)。

      deb安装包如下(版本号仅供参考):

      ufw_0.35-0ubuntu2_all.deb

      或者参考“Ubuntu 16.04”章节配置完apt源后,使用命令apt-get install ufw进行安装,之后再执行ufw disable关闭防火墙。

  5. 对于XenServer 7.1,需要单独配置DNS服务器。
    1. 执行vi /etc/resolv.conf,将nameserver后的ip改为8.8.8.8。DNS服务器的IP信息可根据实际情况修改。
    2. 运行systemctl status ntpd.service检查ntpd服务状态。如果ntpd服务未设置开机自启动,运行systemctl enable ntpd.service进行设置。
  6. 升级wicked组件(仅SUSE 12 SP1需要执行此步骤)。
    1. 执行rpm -ivh --nodeps --force *rpm命令强制安装wicked软件包。
    2. 查看当前已安装的所有wicked软件包。
      linux-locc:/home/fsp/Desktop # rpm -qa | grep wick
      wicked-service-0.6.28-1.1.x86_64
      libwicked-0-6-0.6.28-1.1.x86_64
      libwicked-0-6-0.6.40-28.6.1.x86_64
      wicked-0.6.28-1.1.x86_64
      wicked-service-0.6.40-28.6.1.x86_64
      wicked-0.6.40-28.6.1.x86_64
    3. 卸载旧版本的wicked软件包。
      linux-locc:/home/fsp/Desktop # rpm -e wicked-service-0.6.28-1.1.x86_64
      linux-locc:/home/fsp/Desktop # rpm -e libwicked-0-6-0.6.28-1.1.x86_64
      linux-locc:/home/fsp/Desktop # rpm -e wicked-0.6.28-1.1.x86_64
  7. 关闭虚拟机的网络管理工具。系统的网络管理可能与network-config配置冲突,需要关闭(SUSE 11 SP4、Ubuntu 16.04和Ubuntu 14.04不需要执行此步骤)。
    • 对于Red Hat 7系列/Oracle Linux 7系列/Debian 8.6/EulerOS 2.2/EulerOS 2.3/CentOS 7系列操作系统,依次执行以下命令:

      systemctl disable NetworkManager.service

      systemctl stop NetworkManager.service

      查看服务状态:service NetworkManager.service status

      [root@localhost ~]# service NetworkManager.service status
      edirecting to /bin/systemctl status NetworkManager.service
       NetworkManager.service - Network Manager
        Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service disabled; vendor preset: enabled)
        Active: inactive (dead) since Mon 2017-11-13 19:06:18 CST; 1 min 17s ago

      对于EulerOS 2.2/EulerOS 2.3操作系统,如果有以下两个服务,还需要关闭这两个服务:

      Systemctl disable euleros-security

      Systemctl disable NetworkManager-wait-online

    • 对于Red Hat 6.7/Red Hat 6.8/Red Hat 6.9/CentOS 6.8/CentOS 6.9/Oracle Linux 6.8/Oracle Linux 6.9操作系统,依次执行以下命令:

      对于Red Hat 6.7/Red Hat 6.8/Red Hat 6.9/CentOS 6.8/CentOS 6.9/Oracle Linux 6.8/Oracle Linux 6.9操作系统,如果创建虚拟机时选择安装桌面,则需要执行如下关闭网络服务操作,若选择的是基础安装则不需要执行。

      service NetworkManager stop

      chkconfig NetworkManager off

    • 对于SUSE 12操作系统,依次执行以下命令:

      systemctl disable wicked

      systemctl stop wicked

  8. (可选)删除虚拟机的本地用户。

    安装虚拟机的过程需要创建本地用户,如果不需要可以进行删除,删除方法如下:

    执行命令:userdel -rf xxx

    其中,xxx为本地用户的名称。“/home”目录下无该用户的文件夹表示删除成功。

    如果删除失败,请重启虚拟机并使用root用户登录,重新执行删除命令。

  9. (可选)修改DHCP配置项。

    SUSE系列操作系统需要进行此配置,其他操作系统请跳过此步骤。

    1. 在操作系统中打开命令行终端,执行su - root命令切换到root用户。
    2. 执行vi /etc/sysconfig/network/dhcp命令以vi编辑器打开待修改的配置文件。
    3. 输入“?DHCLIENT_PRIMARY_DEVICE”,按“Enter”定位到待修改的配置项。

      按“i”进入编辑模式,将配置项的取值修改为“yes”,配置DHCP启动时获取默认网关。

      按“Esc”退出编辑模式。

      如果配置文件中没有“DHCLIENT_PRIMARY_DEVICE”配置项,则忽略此配置。

    4. 输入“?DHCLIENT_SET_HOSTNAME”,按“Enter”定位到待修改的配置项。

      按“i”进入编辑模式,将配置项的取值修改为“no”,防止DHCP过程修改主机名。

      按“Esc”退出编辑模式。

    5. 输入“?DHCLIENT_USE_LAST_LEASE”,按“Enter”定位到待修改的配置项。

      按“i”进入编辑模式,将配置项的取值修改为“no”,配置DHCP持续获取IP地址能力。

      按“Esc”退出编辑模式。

    6. 输入“?DHCLIENT6_MODE”,按“Enter”定位到待修改的配置项。

      按“i”进入编辑模式,将配置项的取值修改为“managed”。

      按“Esc”退出编辑模式。

    7. 输入:wq命令,按“Enter”保存配置并退出。
  10. (可选)对于Ubuntu 14.04/Debian 8.6,需要为grub配置文件设置超时参数,防止服务器异常掉电,造成系统无法正常进入。
    1. 使用vi编辑器打开“/etc/default/grub”,在GRUB_CMDLINE_LINUX字段内容后面增加GRUB_RECORDFAIL_TIMEOUT=10。
      GRUB_DEFAULT=0
      #GRUB_HIDDEN_TIMEOUT=0
      GRUB_HIDDEN_TIMEOUT_QUIET=true
      GRUB_TIMEOUT=2
      GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null || echo Debian'
      GRUB_CMDLINE_LINUX_DEFAULT=""
      GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0"
      GRUB_RECORDFAIL_TIMEOUT=10
    2. 执行以下命令刷新配置。

      grub-mkconfig -o /boot/grub/grub.cfg

  11. 上传需要的软件包到虚拟机。
    • 方法一:宿主机和虚拟机网络连通的情况下,可以使用scp方式传输文件到虚拟机(推荐使用,因为此命令简单方便,可通过scp -help查询用法)。

      例如,在虚拟机中执行以下命令(命令中的文件名以实际为准,此处仅为示例):

      scp fsp@xxx.xxx.xxx.xxx:/home/fsp/network-config-1.0-1.x86_64.rpm /home

      说明:scp 用户名@宿主机ip:/自定义目录/所传文件名 /虚拟机目录

    • 方法二:宿主机和虚拟机网络连通且可以通过Xshell登录虚拟机的情况下,可以使用Xftp进行文件传输。
    • 方法三:如果宿主机和虚拟机网络不通,使用虚拟光驱挂载方式。

      第一步:在宿主机中创建ISO文件

      在Linux终端中执行:

      • 创建目录,执行mkdir /root/software命令。
      • 将network-config和SDI卡驱动软件包放入software中。
      • 执行cd /root,然后执行mkisofs -L -R -J -T -V system-sp2 -o defindsoftware.iso /root/software,建立ISO映像文件。
      • 执行ll,结果显示的“defindsoftware.iso”即为制作的ISO文件。

      第二步:使用virt-manager挂载ISO文件

      1. 在virt-manager界面选择“View > Details”。
      2. 选择“IDE CDROM 1”页签,单击右侧的“Connect”,按照下图的1、2、3依次完成操作。

      3. 单击“Browse Local”,选择/root目录。
      4. 找到“defindsoftware.iso”文件并双击,在弹出的页面中单击“OK”。

      5. 再次选择“View > Console”,选择对应正在操作的虚拟机。
      6. 进入虚拟机后打开终端,执行lsblk命令,查看ISO文件是否有挂载,例如挂载点在“/run/media/suse/system-sp2”。
      7. 执行cd /run/media/suse/system-sp2,将其中的文件复制到某个目录下,如“/home”。如果在挂载点处没有文件目录,就需要手动挂载,使用命令mount /dev/sr0 /home(挂载到/home目录下)。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区