是否可以从清单文件构建ISO,还是仅将清单文件
dpkg --get-selections
放入文本文件?
相关,排序:
是否可以从清单文件构建ISO,还是仅将清单文件
dpkg --get-selections
放入文本文件?
相关,排序:
Answers:
filesystem.manifest是使用以下命令生成的:
dpkg-query -W --showformat='${Package} ${Version}\n' > casper/filesystem.manifest
因此package_name version
,语法为示例:
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)
老实说,经过多年的自定义iso,在其工作方式上存在一条学习曲线。一旦您了解了几件事,它就不会太难,只是需要的知识相当大,而且没有单一的,最新的信息源。
您使用2个构建目录
~/custom - build directory for the iso
~/rootfs - build directory for the root file system.
custom-此目录包含将进入最终iso的所有文件。它包含根文件系统,内核,initramfs和isolinux。
rootfs-此目录包含实时CD文件系统,您可以压缩该目录(使用mksquashfs),并将其包含在CD中。您可以使用debootstrap(从头开始使用实时D)构建此文件,也可以从ubuntu-desktop.iso中提取文件系统(定制实时CD)。有关详细信息,请参见下面的ubuntu Wiki链接。
1)了解mksquashfs-您可以使用mksquashfs将根文件系统压缩为casper/filesystem.squashfs
sudo mksquashfs /home/bodhi/rootfs custom/casper/filesystem.squashfs
2)了解isolinux-这使iso可以启动,以及CD(启动)菜单。请参阅Arch Linux Wiki syslinux。
您可以使用grub2替代isolinux,但是随后您需要了解grub2的工作原理;)。大多数现场CD仍在使用isolinux。
3)如何制作一个initramfs。initramfs是第二个文件系统,用于引导。通常,当您遇到问题时(自定义启动映像不起作用,内核模块未加载),并且您不明白为什么查看根文件系统时,在initramfs中很可能会找到答案。
#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脚本位于3个位置,所有3个都可以发挥作用。它们都是bash脚本,在某些时候您几乎肯定会想要浏览它们。
主持人 - /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
是跨版本的经典且相当标准的。
6)如果不能在中进行自定义/usr/share/
,请使用/etc/skel
,这/etc/skel/.bashrc
是一个经典方法,该文件将被复制到〜/ .bashrc。您可以在其中放置各种confg文件,以存放Firefox或gnome或其他内容,但是/ usr / share可能更好(因设置而异)。
7) mkisofs-您使用mkisofs将构建目录转换为iso
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)持久性。您可以将持久性与许多现场CD一起使用,包括ubuntu-desktop cd和自定义cd,这是由casper实现的。
A. root-casper将casper-rw
在/上挂载标记为母牛覆盖的分区或文件。如果您随后安装软件包或修改配置文件,则更改将在重新启动后继续存在。
谨慎使用。如果更新所有软件包,则将占用大量空间。我还发现这种方法有时是错误的。
B.家-卡斯珀门槛home-rw
在/ home上将标记为aas的分区或文件作为母牛覆盖。
我更喜欢这样做,因为我的firefox书签和私有数据将在启动时保留下来,我发现它更可靠。
永久居所(更改为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
/ 放在分区的根目录中,或者放在闪存驱动器中(不在子目录中)。
引导实时CD时,请按F6它们的键,在“-”前面Esc将选项添加persistent
到引导参数中。
quiet splash persistent --
然后,casper引导脚本会自动找到一个安装文件。
请参见Ubuntu Wiki的持久性 -ubuntu Wiki页面仅讨论了casper-rw,但是在casper脚本中引用了home-rw,其工作方式相同,只是名称有所更改。
请参阅Ubuntu论坛上的这篇文章,以获取屏幕快照(尽管有不同的选择)。
C.您可以使用多种图形工具(例如unetbootin)启用持久性。图形工具(据我所知)使用casper-rw
。
好的,一旦您了解了所有这些内容,这两页将变得更加有意义
您将需要谷歌。您会在互联网上找到一些建议的片段。
现在您已经了解了所有这些,请使用Debian Live脚本。不要让这个名字愚弄您,这些脚本在任何.deb系统(包括Mint和Ubuntu)上都可以正常工作。
安装
sudo apt-get install live-build
有图形界面
sudo apt-get install live-magic
了解实时魔术gui可能会失败,就像remastersys和其他gui失败一样。在这种情况下,您将退回到实时构建脚本(live-magic将生成一个构建目录)。
需要一些时间来学习实时构建脚本和目录布局/结构
请看Debian Live Manuel Aye,它很长,一次只完成一个iso。
实时构建脚本的优势在于,一旦您了解了实时CD的组成部分,这些脚本就可以自动执行90%以上的构建,并且进行更改通常是对配置文件的简单编辑(通常),有时甚至是构建initramfs。
如果那对您来说太长了,请深呼吸,放松并通过信息一次来工作。我保证它将开始变得有意义,您会发现时间是值得的。
如果您从另一套工具开始,请回到这套工具,并在经过几次iso之后,您将欣赏这套说明;)
我的自定义12.04构建,它支持开箱即用的gma500,仅2d(无3d)(将在接下来的几天内将iso公开提供给gma 500人群)。