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

这个答案谈到了ISO清单 – 这里有一个例子。 。

是否可以从清单文件构建ISO,或者只是将dpkg --get-selections放入文本文件中的清单文件?

相关,sorta:

  • 如何制作自己定制的Ubuntu版本?

  • 如何自定义Ubuntu Live CD?

使用以下命令生成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 – 此目录包含live 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和casper脚本位于3个位置,所有3个都可以发挥作用。 它们都是bash脚本,在某些时候你几乎肯定想要浏览它们。

A.主机 – /usr/share/initramfs-tools/scripts/casper

B.根文件系统 – 自定义/ usr / share / initramfs-tools / scripts / casper

C.在initramfs中 – 请参阅/ scripts目录。

见Ubuntu man casper

5)您可以在/usr/share/usr/share/gnome*对用户界面/应用程序进行自定义,例如,确切的位置因发布而异, /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)坚持。 你可以使用许多live CD的持久性,包括ubuntu-desktop cd和自定义cd,这是由casper实现的。

A. root-casper会将标记为casper-rw的分区或文件挂载为/上的牛覆盖。 如果您随后安装了软件包或修改了配置文件,则更改将在重新引导时保留。

谨慎使用。 如果更新所有包,则会占用大量空间。 我也发现这种方法有时会出错。

B. Home – casper sill将一个分区或文件标记为aas home-rw作为/ home上的牛覆盖。

我更喜欢这个,因为我的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放在/(在分区的根目录中)或闪存驱动器(不在子目录中)。

当您启动Live 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自定义Live CD

谷歌

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

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

Debian Live

现在您已了解所有这些,请使用Debian Live脚本。 不要让这个名字欺骗你,这些脚本在任何.deb系统上运行得很好,包括Mint和Ubuntu。

安装

 sudo apt-get install live-build 

有一个图形界面

 sudo apt-get install live-magic 

活魔

了解现场魔法gui可能会失败,就像remastersys和其他guis失败一样。 在那种情况下,您将回到实时构建脚本(live-magic将生成构建目录)。

学习实时构建脚本和目录布局/结构需要一段时间

看看Debian Live Manuel Aye,它很长,一次只能通过一个iso工作。

实时构建脚本的优点是,一旦您理解了Live CD的组件,脚本就可以自动执行90%以上的构建,并且进行更改是对配置文件的简单编辑(通常)或有时构建initramfs。

太长

如果这对你来说太长了,请深呼吸,放松一下,然后通过信息处理一部分。 我保证它会开始有意义,你会发现时间非常值得。

如果你从另一个工具集开始,回到这套工具,在几个iso之后,你会欣赏这套说明;)

我的自定义12.04版本,它支持gma500,仅支持2d(没有3d)(将在接下来的几天内将iso公开提供给gma 500人群)。

gma 500

Interesting Posts