我可以从清单构建Ubuntu ISO吗?


Answers:


21

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目录。

参见Ubuntu man casper

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

好的,一旦您了解了所有这些内容,这两页将变得更加有意义

从零开始的Ubuntu Wiki实时CD

Ubuntu Wiki自定义实时CD

谷歌

您将需要谷歌。您会在互联网上找到一些建议的片段。

示例:如何更改Live CD启动画面

Debian Live

现在您已经了解了所有这些,请使用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人群)。

gma 500


1
天啊。这是一个很好的答案。我知道我今晚在做什么。
jrg 2011年

真好 如果未获得40票,则没人可以投票;)
Rinzwind 2011年

对于感兴趣的人,我提供了一个respin,请查看我的博客(也位于Ubuntu Planet上)以获取详细信息和下载。blog.bodhizazen.net/linux/ubuntu-gma500-live-cd
Panther,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.