live-build、live-boot 和 live-config

要构建一个 live system 主要使用到的有三个工具:live-build,live-boot 和 live-config。这三个工具分别具备不同的职责:

  • live-build,是一组用于构建 live system 的脚本的集合。你可以在/usr/lib/live/build下找到它们,并在/usr/share/live/build下找到这些脚本使用的 functions;
  • live-boot,是一组用于为initramfs-tools提供钩子的脚本的集合,用于生成一个能够引导 live system 的 initramfs;
  • live-config,是一组用于在live-boot之后自动配置 live system 的脚本的集合,它能够处理类似于设置 hostname,locales 和 timezone,创建用户等。

    live-build

live-build 的理念是使用一个配置目录来完全自动化和客制化一个 live image 的各个方面。它和用于构建 Debian 包的debhelper在使用上有很多相似值出:

  • 用于配置构建操作的脚本有一个集中的存放位置。在debhelper中,这个位置是包构建根目录下的debian/子目录。举例来说,dh_install 将会查找一个叫debian/install的文件,以此来决定将哪些文件放入特定的二进制包中。相似的,live-build使用config/目录来保存类似的配置信息;
  • 各个脚本之间是独立的,也就说单独的运行任何一个脚本命令都是安全的。

debhelper不同的是,live-build提供了一个生成配置目录骨架的工具。这个和dh_make工具很相似。注意,lblive-build命令的包装。

  • lb config:负责初始化一个 live system 配置目录;
  • lb build:负责开始构建一个 live system;
  • lb clean:负责一处 live system 的构建;

lb config命令

使用lb config命令使用默认的配置创建config/目录,以及两个目录树auto/local/

1
2
3
4
$ lb config
[2015-01-06 19:25:58] lb config
P: Creating config tree for a debian/stretch/i386 system
P: Symlinking hooks...

不添加任何选项使用该命令只能够创建一个非常基础的镜像,你也可以后期通过配置auto/config来修改某些选项。

通常你可以指定一些选项,例如,指定你想要使用的包管理器:

1
$ lb config --apt aptitude

你也可以指定更多:

1
$ lb config --binary-images netboot --bootappend-live "boot=live components hostname=live-host username=live-user" ...

更多的选项可以查看lb_config的 man page。

lb build命令

lb build命令开始构建,它在构建时会读取config/下的配置。事实上,lb build由多个过程组成,详细的过程步骤可以查看/usr/lib/live/build/build脚本,事实上,它会经过:lb bootstrap,lb chroot,lb binary,lb source 等阶段,每个阶段由多个过程(脚本)构成。每个阶段将完成不同的构建工作。

lb clean命令

清除 chroot,binary 和 source 阶段的构建。但是在 bootstrap 阶段(因为这个阶段会下载大量的 deb 包)的 cache 将会缓存。当然,你也可以清楚单独的某个阶段的构建,例如lb clean --binary只清楚 binary 阶段的构建。如果你的更改影响到了--mode--architecture或者--bootstrap阶段,你就需要使用lb clean --purge来清除。