从清单文件构建ISO是否可能,或者清单文件只是dpkg --get-selections
放入文本文件中?
相关的,有点类似:
从清单文件构建ISO是否可能,或者清单文件只是dpkg --get-selections
放入文本文件中?
相关的,有点类似:
dpkg-query -W --showformat='${Package} ${Version}\n' > casper/filesystem.manifest
包名 版本号
,例如: xserver-xorg-video-nouveau 1:0.0.16+git20110411+8378443-1
dpkg --get-selections
的格式稍有不同,是 package_name install
。xserver-xorg-video-nouveau install
apt-get install -y $(awk '{print $1}' filesystem.manifest)
~/custom - build directory for the iso
~/rootfs - build directory for the root file system.
自定义 - 这个目录包含所有将放入最终iso的文件。它包含根文件系统、内核、initramfs和isolinux。
rootfs - 这个目录包含Live CD文件系统,您可以使用mksquashfs压缩此目录,并将其包含在CD中。您可以使用debootstrap构建它(从头开始创建Live D),或者从ubuntu-desktop.iso中提取文件系统(定制一个Live CD)。有关详细信息,请参阅下面的Ubuntu Wiki链接。
1) 理解mksquashfs - 您可以使用mksquashfs将根文件系统压缩为casper/filesystem.squashfs
sudo mksquashfs /home/bodhi/rootfs custom/casper/filesystem.squashfs
#extract to a working_directory , I use ~/initrd
cd ~/initrd
lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames
# Make your edits / adjustments
# Package
cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../custom.initrd.lz
然后将您的新initrd.lz移动到自定义构建目录custom/casper/initrd.lz
4) casper。Casper和casper脚本位于3个位置,并且所有3个位置都可以发挥作用。它们都是bash脚本,某个时候您几乎肯定会想要查看它们。
A. 主机 - /usr/share/initramfs-tools/scripts/casper
B. 根文件系统 - custom/usr/share/initramfs-tools/scripts/casper
C. 在initramfs中 - 请参见/scripts目录。
5) 您可以在/usr/share
、/usr/share/gnome*
等位置对用户界面/应用程序进行自定义,具体位置因版本而异,/usr/share/gnome-background-properties/ubuntu-wallpapers.xml
是一个经典的例子,在各个版本中都相当标准。
cd ~/custom
sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-12.04-custom.iso .
8) 坚持不懈。您可以使用坚持不懈的方式来使用许多Live CD,包括ubuntu-desktop CD和自定义CD,这是通过casper实现的。
A. root - casper将一个标记为casper-rw
的分区或文件挂载为/上的cow叠加层。如果您安装了一个软件包或修改了配置文件,这些更改将在重新启动后保留。
请谨慎使用此功能。如果更新所有软件包,将占用大量空间。我还发现这种方法有时会出现错误。
B. Home - casper将一个标记为home-rw
的分区或文件挂载为/home上的cow叠加层。
我更喜欢这种方式,因为我的Firefox书签和私人数据将在重启后得以保留,并且我认为它更可靠。
持久化Home(将其更改为casper-rw以实现持久化/)
# this is a 1 Gb file, increase or decrease the count to make it larger or smaller
dd if=/dev/zero of=home-rw bs=1M count=1000
# make a file system
mkfs.ext4 home-rw
mke2fs 1.41.14 (22-Dec-2010)
home-rw is not a block special device.
Proceed anyway? (y,n) y <-- ANSWER 'y' here
#tune the file system to remove reserved blocks and label it 'home-rw'
tune2fs -m 0 -L home-rw home-rw
home-rw
放置在/(分区的根目录)或闪存驱动器上(不要放在子目录中)。persistent
。quiet splash persistent --
然后,Casper引导脚本将自动找到并挂载它。
参见Ubuntu wiki Persistence - Ubuntu维基页面仅讨论了casper-rw,但是home-rw在casper脚本中被引用,并且以相同的方式工作,只是名称已更改。
参见这篇帖子在Ubuntu论坛上进行屏幕截图演示(尽管选项不同)。
C. 您可以使用几个图形工具启用持久性,例如unetbootin。据我所知,图形工具使用casper-rw
。
好了,现在一旦您理解了所有这些,这两个页面将变得更加有意义
sudo apt-get install live-build
sudo apt-get install live-magic