如何在进行LiveCD自定义时添加自定义脚本
我想在定制Ubuntu LiveCD时添加自定义脚本。
关于这个问题的我的股票答案是关于Turnkeylinux博客的这篇文章。 它是一个Ubuntu派生的发行版,它们在repo中有一套物理到实时的脚本,效果非常好。 好的,你可以在Ubuntu主线上安装他们的脚本。
还有remastersys和其他几个,但我发现交钥匙脚本对我的需求非常简单。
文章:
将虚拟磁盘映像:VDI或VMDK转换为可以分发的ISO作者:Alon Swartz – 58条评论| 最新单位
为什么心智正常的人想要将VM转换为ISO?
好问题,Conor Fox的答案(这篇文章的灵感来自于Conor!)是为了分发他定制的TurnKey PostgreSQL图像,以便其他人可以使用它。
分发ISO而不是VM映像允许将其安装在任何虚拟化平台以及裸机上,并带来额外的实时运行奖励。
我认为这是一个足够好的理由,所以让我们开始吧。
将VM磁盘转换为原始映像并进行挂载
首先,我们需要获得qemu-img,一个与qemu(KVM的虚拟化后端)捆绑在一起的工具,用于将VM磁盘转换为原始映像,以及TKLPatch,即用于打包ISO的TurnKey定制机制。
如果您未使用TurnKey安装,请参阅TKLPatch安装说明 。
apt-get install qemu
apt-get install tklpatch
我将展示如何将VMWare VMDK映像转换为原始磁盘格式。 如果您使用的是其他虚拟化平台,例如Virtualbox,请参阅有关将VDI转换为原始映像的post 。
qemu-img convert -f vmdk turnkey-core.vmdk -O raw turnkey-core.raw
接下来,将原始磁盘安装为环回设备。
mkdir turnkey-core.mount mount -o loop turnkey-core.raw turnkey-core.mount
GOTCHA 1 :如果你的VM有分区,那就有点琐碎了。 您需要设置循环设备,分区映射并最终安装rootfs分区。 您将需要kpartx来设置映射。
loopdev = $(losetup -s -f turnkey-core.raw) apt-get install kpartx kpartx -a $ loopdev #p1指的是第一个分区(rootfs) mkdir turnkey-core.mount mount / dev / mapper / $(basename $ loopdev)p1 turnkey-core.mount
提取根文件系统并调整ISO配置
现在,制作根文件系统的副本并卸载环回。
mkdir turnkey-core.rootfs rsync -a -t -r -S -I turnkey-core.mount / turnkey-core.rootfs umount -d turnkey-core.mount
如果您的VM有分区(GOTCHA 1):
kpartx -d $ loopdev losetup -d $ loopdev
由于VM是安装的系统而不是ISO,因此需要更新文件系统表。
猫>交钥匙core.rootfs / etc / fstab文件<< EOF aufs / aufs rw 0 0 tmpfs / tmp tmpfs nosuid,nodev 0 0 EOF
GOTCHA 2 :如果您的VM使用针对虚拟化优化的内核(如TurnKey VM构建中包含的内核),则需要将其替换为通用内核,并在安装时删除vmware-tools。
tklpatch-chroot turnkey-core.rootfs #在chroot里面 apt-get update apt-get install linux-image-generic dpkg --purge $(dpkg-query --showformat ='$ {Package} \ n'-W'vmware-tools *') dpkg --purge $(dpkg-query --showformat ='$ {Package} \ n'-W'* -virtual') 出口
生成ISO
最后,准备cdroot并生成ISO。
tklpatch-prepare-cdroot turnkey-core.rootfs / tklpatch-geniso turnkey-core.cdroot /
而已!
奖励:默认情况下,ISO将自动启动。 如果要包含TurnKey bootsplash和bootmenu,请从TurnKey ISO中提取cdroot并告诉tklpatch-prepare-cdroot将其用作模板。
tklpatch-extractiso turnkey-core.iso tklpatch-prepare-cdroot turnkey-core.rootfs / turnkey-core.cdroot / tklpatch-geniso turnkey-core.cdroot /