7. 扩展解决方案

7.1. 保存和恢复文件而非文件系统

如果您不想保存整个磁盘镜像,而只想保存文件系统内的文件,您可以使用类似的解决方案,但使用 tarcpio 而不是 dd。此外,您需要挂载文件系统。应该在克隆脚本中添加更多命令,如下所示。

# mkdir /mnt
# mount ${device_name} /mnt
# mknod ${image} p
# tftp ${tftp_server} <<-EOT &
binary
put ${image}
EOT
tar czf ${image}
			

# tftp ${tftp_server} <<-EOT &
binary
get ${image}
EOT
tar xzf ${image}
			

您必须将 mkdirtar 程序放入 initrd 镜像中,以便脚本可以使用它们。

7.2. 设置主引导记录

如果您使用此设置来重组和调整分区大小,您最终可能会得到一个无法启动的磁盘。从 Grub 运行 setup 命令(包括镜像中的 grub 程序)应该可以解决问题。 有关详细信息,请参阅 Grub 文档。

7.3. 加载必要的模块

根据您的内核,可能需要额外的模块才能访问某些块设备,例如 SCSI 设备。只需将必要的模块放入/libinitrd 镜像的目录中,并在克隆脚本中放入相应的 insmod 命令。 这同样适用于文件系统。 例如,如果您想保存 fat 文件系统的文件而不是镜像,您将需要fat.ovfat.o模块。

7.4. 对grub.conf

Grub 菜单文件grub.conf的预定义操作可以进行自定义,以呈现一些复制选项,甚至执行预定义的操作,例如重新分区磁盘和从网络检索指定的镜像。 同样,您可以使用此处介绍的概念来实现特定的应用。