如何在RHEL 7/8中创建与inst.updates一起使用的anaconda updates.img
在本文中,我将分享"创建anaconda updates.img"的步骤,并结合示例在GRUB2菜单或者启动菜单的PXE配置文件中与inst.updates一起使用。
什么是product.img或者updates.img图像文件?
" product.img"或者" updates.img"镜像文件是一个归档文件,其中包含替换现有文件或者在安装程序运行时中添加新文件的文件。在启动过程中,Anaconda会从启动媒体上的" images /"目录中加载此文件。然后,它使用该文件中存在的文件替换安装程序文件系统中名称相同的文件。这是定制安装程序所必需的(例如,用自定义镜像替换默认镜像)。
重要的提示:
" product.img"或者" updates.img"镜像必须包含与安装程序相同的目录结构。
创建anaconda updates.img
如果我们正在使用anaconda或者正在查看错误,并且想要测试自己的错误修复,则可以轻松创建自己的updates.img
文件。但是,updates.img
不仅可以包含来自蟒蛇的文件,还可以包含更多内容。它还可以包括共享库,图形,其他python模块以及anaconda使用的某些数据文件。
现在,在分享创建anacondaupdates.img
的步骤之前,我们必须熟悉目录结构,以便更改可以正确地转储到主机上。为了本文的方便,我将创建一个新的udev规则文件并将其添加到我的updates.img
文件中
此udev规则文件的位置必须为
/usr/lib/udev/rules.d/
导航到工作目录,例如/tmp
,并在一个临时文件夹下创建类似于上述rules.d
的目录结构。
# cd /tmp
其中我将创建一个临时目录" custom_updates_img",在该目录中将创建水蟒" updates.img"。
[root@rhel-7 tmp]# mkdir custom_updates_img [root@rhel-7 tmp]# cd custom_updates_img
创建所需的目录结构
[root@rhel-7 custom_updates_img]# mkdir -p usr/lib/udev/rules.d/
现在将规则文件放在/tmp/custom_updates_img/usr/lib/udev/rules.d /
中
[root@rhel-7 custom_updates_img]# cd usr/lib/udev/rules.d/ [root@rhel-7 rules.d]# ls -l total 4 -rw-r--r--. 1 root root 876 Sep 14 01:05 20-persistent-net.rules
对要添加到安装程序中的每个文件重复上述步骤(创建目录结构并将修改后的文件移入其中)。
在目录的根目录中创建一个.buildstamp
文件,该文件将成为updates.img
文件。 .buildstamp文件描述了系统版本和其他几个参数。以下是Red Hat Enterprise Linux 7.6中的.buildstamp文件的示例:
[Main] Product=Red Hat Enterprise Linux Version=7.6 BugURL=your distribution provided bug reporting tool IsFinal=False UUID=201904040748.x86_64 [Compose] Lorax=19.6.92-1
说明:
" IsFinal"参数,用于指定图片是用于产品(True)的发布(GA)版本,还是用于Alpha,Beta或者内部里程碑(False)等预发布版本。由于此更改只是为了演示,因此我将使用" False"
用于创建此类安装介质的工具是lorax。
每当Engineering需要修改boot.iso或者创建ISO时,都会使用lorax。
以下是我们updates.img的最终列表
[root@rhel-7 custom_updates_img]# ls -la total 8 drwxr-xr-x. 3 root root 36 Sep 14 01:35 . drwxrwxrwt. 10 root root 4096 Sep 14 01:15 .. -rw-r--r--. 1 root root 170 Sep 14 01:35 .buildstamp drwxr-xr-x. 3 root root 17 Sep 14 01:20 usr
切换到/tmp/custom_updates_img目录,并创建updates.img
存档:
[root@rhel-7 rules.d]# cd /tmp/custom_updates_img [root@rhel-7 custom_updates_img]# find . | cpio -c -o | gzip -9cv > ../updates.img 5 blocks 80.3%
这将在" custom_updates_img /"目录的上一级创建一个" updates.img"文件。
验证" updates.img"文件
[root@rhel-7 custom_updates_img]# ls -lh ../updates.img -rw-r--r--. 1 root root 361 Sep 14 01:15 ../updates.img
检查updates.img
图像文件的内容
[root@rhel-7 custom_updates_img]# lsinitrd /tmp/updates.img Image: /tmp/updates.img: 4.0K ======================================================================== Version: Arguments: dracut modules: ======================================================================== drwxr-xr-x 3 root root 0 Sep 14 01:05 . -rw-r--r-- 1 root root 170 Sep 14 01:35 .buildstamp drwxr-xr-x 3 root root 0 Sep 14 01:02 usr drwxr-xr-x 3 root root 0 Sep 14 01:02 usr/lib drwxr-xr-x 3 root root 0 Sep 14 01:02 usr/lib/udev drwxr-xr-x 2 root root 0 Sep 14 01:05 usr/lib/udev/rules.d -rw-r--r-- 1 root root 876 Sep 14 01:05 usr/lib/udev/rules.d/20-persistent-net.rules ========================================================================
现在,我们可以将" updates.img"复制到我们要挂载和共享图像文件的位置。
在启动阶段如何使用或者挂载updates.img?
无需在启动媒体上添加updates.img
或者product.img
文件,我们可以将该文件放置在其他位置,并在启动菜单中使用inst.updates =
启动选项来加载它。
在这种情况下,镜像文件可以具有任何名称,并且可以放置在任何位置(USB闪存驱动器,硬盘,HTTP,FTP或者NFS服务器),只要可以从安装系统访问此位置即可。
inst.updates= Specifies the location of the updates.img file to be applied to the installation program runtime.
下表显示了要使用的语法。在所有格式中,如果我们不指定文件名而是仅指定目录,则安装程序将查找名为updates.img的文件。
安装源 | 选项格式 |
---|---|
任何CD/DVD驱动器inst.updates=光盘 | |
专用CD/DVD驱动器inst.updates=光盘:设备 | |
硬盘驱动器inst.updates=高清:设备:/path | |
HMC | inst.updates=hmc |
HTTP服务器inst.updates=http://主机/路径 | |
HTTPS服务器inst.updates=https://主机/路径 | |
FTP服务器inst.updates=ftp://用户名:password@host/path | |
NFS服务器 | inst.updates=nfs文件:server:/path,nfsvers=3(对于NFSv3) inst.updates=nfs文件:server:/path,nfsvers=4(对于NFSv4) |
使用基于PXE的安装挂载updates.img
其中我正在使用NFS协议在基于PXE的安装的初始阶段安装updates.img
。以下是我的示例PXE引导文件默认autoinst
label autoinst IPAPPEND 2 kernel rhel7_64/vmlinuz append initrd=rhel7_64/initrd.img ramdisk_size=65536 vga=no ksdevice=bootif ks=nfs:10.10.10.20:/home/custom_install/kickstart.conf,nfsvers=4 inst.updates=nfs:10.10.10.20:/tmp/custom_initrd/updates.img,nfsvers=3
使用基于DVD的安装挂载updates.img
其中我将使用RHEL 7.6 ISO DVD引导在安装在Linux服务器上的Oracle VirtualBox上运行的vm。
我们将获得此屏幕以开始安装,这里按TAB
进入启动菜单。
如下所示,使用inst.updates将添加内容添加到挂载updates.img
,如下所示(我以HTTP为例,但我们可以使用任何其他受支持的协议)
提取updates.img图像文件
现在,在创建anaconda updates.img之后,我们还可以提取updates.img
图像文件以进行进一步修改。再次创建一个临时目录并使用以下命令提取updates.img
文件
另请阅读:
如何在RHEL/CentOS Linux中提取和重建不同类型的initramfs文件
[root@rhel-7 custom_updates_img]# gunzip -dc /tmp/updates.img | cpio -id 4 blocks
检查" updates.img"的内容
[root@rhel-7 custom_updates_img]# ls -l total 0 drwxr-xr-x. 3 root root 17 Sep 14 01:20 usr