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 文件进行编辑,从而满足您对系统的某些特殊要求。这个工具会从基于 livecd 的 ISO 文件中展开其中的文件系统,并对其中的一些内容进行编辑(如编辑用户密码、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 工具程序
- 登录到需要编辑的 Red Hat Enterprise Virtualization Hypervisor ISO 文件所在的系统。
- 启用所需的仓库:
- 对于 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
- 安装 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. 创建一个本地的软件仓库
- 在需要编辑 Red Hat Enterprise Virtualization Hypervisor ISO 文件的系统上安装 createrepo 软件包:
# yum install createrepo
- 创建一个作为软件仓库的目录。
# mkdir exampleLocalrepo
- 把所需的软件包和它们的依赖软件包复制到新创建的目录中。
- 为目录设置元数据,从而使它可以作为一个软件仓库:
# 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 文件中的 vdsm 和 libvirt 软件包:
例 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