7.2. 编辑 Red Hat Enterprise Virtualization Hypervisor ISO

7.2.1. 编辑 Red Hat Enterprise Virtualization Hypervisor ISO 镜像

虽然 Red Hat Enterprise Virtualization Hypervisor 被设计为一个“封闭的”、“精简的“操作系统,但是您还是可以使用 edit-node 工具程序对 Red Hat Enterprise Virtualization Hypervisor ISO 文件进行编辑,从而满足您对系统的某些特殊要求。这个工具会从基于 livecdISO 文件中展开其中的文件系统,并对其中的一些内容进行编辑(如编辑用户密码、SSH 密钥以及它所包括的软件包)。

重要

如果您对 Red Hat Enterprise Virtualization Hypervisor ISO 文件进行了编辑,则需要在每次把 hypervisor 升级到新的 Red Hat Enterprise Virtualization Hypervisor 版本前,重复这个编辑 ISO 文件的过程。

警告

如果在使用经过 edit-node 编辑的 Red Hat Enterprise Virtualization Hypervisor 系统时出现了问题,您可以把系统恢复到没有编辑过的 Red Hat Enterprise Virtualization Hypervisor 版本,从而可以确定所出现的问题是否是因为编辑 ISO 文件所造成。

7.2.2. 安装 edit-node 工具程序

edit-node 工具程序包括在 ovirt-node-tools 软件包中(由 Red Hat Enterprise Virtualization Hypervisor 软件仓库提供)。

过程 7.2. 安装 edit-node 工具程序

  1. 登录到需要编辑的 Red Hat Enterprise Virtualization Hypervisor ISO 文件所在的系统。
  2. 启用所需的仓库:
    • 对于 Red Hat Enterprise Linux 6:
      # subscription-manager repos --enable=rhel-6-server-rhevh-rpms
    • 对于 Red Hat Enterprise Linux 7:
      # subscription-manager repos --enable=rhel-7-server-rhevh-rpms
  3. 安装 ovirt-node-tools 软件包:
    # yum install ovirt-node-tools
您安装了编辑 Red Hat Enterprise Virtualization Hypervisor ISO 文件所需的 edit-node 工具程序。下一节介绍了如何使用这个工具。

7.2.3. edit-node 工具程序的使用语法

edit-node 工具程序包括了以下的基本选项:

edit-node 工具程序的选项

--name=image_name
指定要被修改的镜像名称。
--output=directory
指定修改后的 ISO 要被保存到的目录。
--kickstart=kickstart_file
指定一个 kickstart 配置文件的路径(或 URL)和名称。
--script=script
指定在镜像中运行的脚本的路径和名称。
--shell
打开一个交换式的 shell 来编辑镜像。
--passwd=user,encrypted_password
user 定义一个密码。这个选项使用 MD5 加密的密码。--password 参数可以被多次使用来指定多个用户。如果没有指定任何用户,将会使用默认的用户 admin
--sshkey=user,public_key_file
为指定的用户设置公共密钥。这个选项可以多次使用来为多个用户设置密钥。如果没有指定用户,则使用默认的用户 admin
--uidmod=user,uid
为指定的用户设置用户 ID。这个选项可以被多次使用来为多个用户设置 ID。
--gidmod=group,gid
为指定的组设置组 ID。这个选项可以被多次使用来为多个组设置 ID。
--tmpdir=temporary_directory
指定需要在本地系统上使用的临时目录。在默认的情况下,它会被设置为 /var/tmp
--releasefile=release_file
指定用于“品牌化”的发行文件的路径和文件名。
--builder=builder
指定重新构建文件的 builder。
--install-plugin=plugin
在镜像中指定需要安装的插件列表。这个列表中的不同插件以逗号分隔。
--install=package
在镜像中指定需要安装的软件包列表。这个列表中的不同软件包以逗号分隔。
--install-kmod=package_name
从一个 yum 软件仓库或一个指定的 .rpm 文件中安装指定的驱动更新软件包。只有指定包括在 kmod 的 whitelist 中的 .rpm 文件才有效。
--repo=repository
指定和 --install-* 选项一起使用的 yum 软件仓库。它可以是一个本地的目录、一个 yum 软件仓库文件(.repo)或是一个磁盘的 .iso 文件。
--nogpgcheck
yum install 阶段忽略 GPG 密钥的验证。使用这个选项将允许您安装未使用密钥进行签字的软件包。

edit-node 工具程序的 manifest 选项

--list-plugins
输出被添加到镜像中的插件列表。
--print-version
输出 /etc/system-release 中的当前版本信息。
--print-manifests
输出 ISO 文件中的 manifest 文件列表。
--print-manifest=manifest
输出指定的 manifest 文件。
--get-manifests=manifest
ISO 文件中创建一个 manifest 文件的 .tar 文件。
--print-file-manifest
输出 ISO 文件中的 rootfs 的内容。
--print-rpm-manifest
输出 ISO 文件中的 rootfs 中安装的软件包列表。

edit-node 工具程序的 debug 选项

--debug
在运行 edit-node 命令时输出 debug 信息。
--verbose
在使用 edit-node 命令时输出详细的信息。
--logfile=logfile
指定 debug 信息要被输出到的文件的路径和文件名。

7.2.4. 添加和更新软件包

您可以使用 edit-node 为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加软件包,或更新其中的软件包。为了添加或更新软件包,您需要设置一个本地的软件包存储库(repository)来提供这些软件包和它们所依赖的软件包;或为 edit-node 指定一个提供了这些软件包和它们的依赖软件包的远程软件包存储库。

注意

如果使用一个本地的软件仓库,包括这个软件仓库的目录必须可以通过 web 服务器或 FTP 服务器被访问。例如,它可以通过 http://localhost/myrepo/ftp://localhost/myrepo/ 的形式被访问。

重要

edit-node 无法从使用 SSL 的软件仓库中下载软件包。在这种情况下,您需要手动从软件仓库中下载所有的软件以及它们所依赖的软件包。

7.2.4.1. 创建一个本地的软件仓库

为了把软件包添加到 Red Hat Enterprise Virtualization Hypervisor ISO 文件中,您需要使用 Red Hat Enterprise Linux Workstation 和 Red Hat Enterprise Linux Server 频道所提供的 createrepo 工具程序来创建一个提供所要安装的软件包的软件仓库。

过程 7.3. 创建一个本地的软件仓库

  1. 在需要编辑 Red Hat Enterprise Virtualization Hypervisor ISO 文件的系统上安装 createrepo 软件包:
    # yum install createrepo
  2. 创建一个作为软件仓库的目录。
    # mkdir exampleLocalrepo
  3. 把所需的软件包和它们的依赖软件包复制到新创建的目录中。
  4. 为目录设置元数据,从而使它可以作为一个软件仓库:
    # createrepo exampleLocalrepo
您创建了一个本地的软件仓库。它为 Red Hat Enterprise Virtualization Hypervisor ISO 文件提供了需要安装的软件包和它们所依赖的软件包。

7.2.4.2. 实例:为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加软件包

使用 edit-node 工具程序为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加软件包。它会在 edit-node 工具程序所运行的目录中创建一个新的 ISO 文件,这个文件包括了新添加软件包的名称。
下面的实例为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加了一个软件包。它在本地配置了一个目录作为一个软件仓库,所要安装的软件包包括在这个软件仓库中:

例 7.2. 为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加一个软件包

# edit-node --nogpgcheck --install package1 --repo exampleLocalrepo /usr/share/rhev-hypervisor/rhevh-latest-7.iso
如果需要添加多个软件包,您需要指定一个以逗号分隔的软件包列表,并使用双引号把它们括起来。以下的例子为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加了两个软件包:

例 7.3. 为 Red Hat Enterprise Virtualization Hypervisor ISO 文件添加多个软件包

# edit-node --nogpgcheck --install "package1,package2" --repo  exampleLocalrepo /usr/share/rhev-hypervisor/rhevh-latest-7.iso

7.2.4.3. 实例:更新 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的软件包

您可以使用 edit-node 工具程序为 Red Hat Enterprise Virtualization Hypervisor ISO 文件更新其中的软件包。它会在 edit-node 工具程序所运行的目录中创建一个新的 ISO 文件,这个文件包括了需要更新的软件包的名称。
以下例子更新了 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的 vdsm 软件包。它使用了一个包括了 Red Hat Enterprise Virtualization Hypervisor 软件仓库详情的软件仓库文件:

例 7.4. 更新 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的一个软件包

# edit-node --nogpgcheck --install vdsm --repo /etc/yum.repos.d/rhevh.repo /usr/share/rhev-hypervisor/rhevh-latest-7.iso
如果需要更新多个软件包,您需要指定一个以逗号分隔的软件包列表,并使用双引号把它们括起来。以下例子更新了 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的 vdsmlibvirt 软件包:

例 7.5. 更新 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的多个软件包

# edit-node --nogpgcheck --install "vdsm,libvirt" --repo /etc/yum.repos.d/rhevh.repo /usr/share/rhev-hypervisor/rhevh-latest-7.iso

7.2.5. 编辑用户和组的默认 ID

7.2.5.1. 实例:修改一个用户的默认 ID

您可以使用 edit-node 工具程序修改 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的一个用户的默认 ID。
下面的实例把用户 user1 的默认 ID 改为 60:

例 7.6. 修改一个用户的默认 ID

# edit-node --uidmod=user1,60
如果需要修改多个用户的默认 ID,您可以在一个命令中多次使用 --uidmod 选项来指定多个用户。下面的实例把用户 user1 的默认 ID 改为 60;把用户 user2 的默认 ID 修改为 70

例 7.7. 为多个用户修改默认 ID

# edit-node --uidmod=user1,60 --uidmod=user2,70

7.2.5.2. 实例:修改一个组的默认 ID

您可以使用 edit-node 工具程序修改 Red Hat Enterprise Virtualization Hypervisor ISO 文件中的一个组的默认 ID。
以下例子把组 group1 的默认 ID 修改为 60:

例 7.8. 为一个组修改默认的 ID

# edit-node --gidmod=group1,60
如果需要修改多个组的默认 ID,您可以在一个命令中多次使用 --gidmod 选项来指定多个组。下面的实例把组 group1 的默认 ID 修改为 60;把组 group2 的默认 ID 修改为 70

例 7.9. 修改多个组的默认 ID

# edit-node --gidmod=group1,60 --gidmod=group2,70