[转]Live-build使用指南

Ubuntu各种衍生版本
回复
ubuntulikeme
帖子: 10
注册时间: 2013-04-25 21:39
系统: ubuntu

[转]Live-build使用指南

#1

帖子 ubuntulikeme » 2013-05-13 17:15

转自:http://www.ubuntukylin.com/ukylin/forum ... =20&extra=

Live-build使用指南v1

瓶子


相关命令:
lb config
在当前目录下建立auto和config目录和相关配置文件,运行auto/config脚本。
lb clean
运行auto/clean脚本
lb build
按照config目录下的各种配置脚本构建系统镜像

软件源的指定:(增加parent前缀可以强制使用指定源:--parent-mirror-bootstrap http://mirrors.163.com/ubuntu/ \
To set the distribution mirrors at build time : chroot

$ lb config --mirror-bootstrap http://localhost/debian/ \
--mirror-chroot-security http://localhost/debian-security/ \
--mirror-chroot-backports http://localhost/debian-backports/

chroot mirror:--mirror-chroot, 默认使用—mirror-bootstrap 的值
或者创建config/archives/your-repository.list.chroot 文件,内容为源地址。源会被加入到live系统的/etc/apt/sources.list.d/目录。

set the distribution mirrors at run time: binary

$ lb config --mirror-binary http://mirror/debian/ \
--mirror-binary-security http://mirror/debian-security/
或者创建config/archives/your-repository.list.binary 文件,内容为源地址。

对系统的软件包进行定制:
方法一、将所需的包列表放在config/package-lists目录下,并命名为XXX.chroot.list或XXX.binary.list即可。
方法二、使用--package-lists “XXX”,将使用/usr/share/live/build/package-lists/下的指定包列表
方法三、将自定义的包放到config/chroot_packages/目录下即可

auto/config中为配置参数,例如:
lb config noauto \
--distribution "precise" \

--mode ubuntu \

--initsystem none \

--source false \

--parent-archive-areas "main restricted universe" \

--parent-mirror-bootstrap http://mirrors.163.com/ubuntu/ \

--parent-mirror-chroot http://mirrors.163.com/ubuntu/ \

--parent-mirror-chroot-security http://mirrors.163.com/ubuntu/ \

--parent-mirror-chroot-backports http://mirrors.163.com/ubuntu/ \

--parent-mirror-binary http://mirrors.163.com/ubuntu/ \

--package-lists none \

--bootloader "syslinux" \

--initramfs-compression lzma \

--bootstrap-keyring ubuntu-keyring \

--binary-images "iso-hybrid" \

--memtest "memtest86+" \

"${@}"

在执行lb config后会按此脚本中的参数生成config目录下的binary、bootstrap、 chroot、 common四个配置文件。lb build读取这四个配置文件,所以也可以在lb config后可以对这四个文件内的参数做具体修改。

syslinux主题设置
--syslinux-theme "ubuntu-precise" 可在auto/config中指定主题名,默认是用本地系统的主题。
会在本地特定目录中查找并复制指定主题到livecd镜像中去(具体可看live-build这部分的脚本)

自定义目录:
自定义的目录和其中的文件放在config/相应的include目录下即可
config/binary_local-includes(以生成镜像的根目录为根目录)
config/chroot_local-includes(以目标系统的根目录为根目录)

HOOKS:
在live-build完成每个阶段的工作后都会运行config/相应hooks中的脚本。
config/binary_local-hooks
config/chroot_local-hooks

开机默认语言:
在 config/binary_local-hooks下增加如下脚本,并建立config/language.txt文件,其内容为:zh_CN (live系统启动的默认语言)
#!/bin/sh -e

LOC=config/language.txt

if [ -e "$LOC" ]; then

echo "$0: $LOC exists, setting gfxboot default language..."

cp "$LOC" binary/isolinux/lang

echo >> binary/isolinux/lang

else

echo "$0: $LOC does not exist, not setting gfxboot default language"

fi

系统中文支持:
在config/chroot_local-hooks下添加如下脚本
#!/bin/sh

set -e
echo 'P: Configuring language support...'
lang="zh-hans"

[ -n "$lang" ] || continue

pkgs=`check-language-support -l $lang`

pkgs=`echo "$pkgs" | xargs -n1 | grep ^language-pack-` || true

if [ -n "$pkgs" ]; then

echo "P: Installing packages for language $lang: $pkgs"

apt-get -y -q install $pkgs

fi

echo 'P: Language support configuration done.'

live镜像启动界面更改:
syslinux模式的脚本为lb_binary_syslinux,使用的文件是:
/usr/share/syslinux/themes/${LB_SYSLINUX_THEME}/${_BOOTLOADER}-live/*
tar xzf /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz
可以用修改过的替换相关文件。
auto/config中的用来指定内核启动参数的配置项:--bootappend-live,似乎在syslinux中必须有live.cfg。而ubuntu的syslinux主题文件结构中没有此文件,以至于配置项:--bootappend-live无效。

在使用lb build前需要做些修正:
1、使用--initramfs-compression lzma 时必须将config/common中LB_INITRAMFS_COMPRESSION="lzma"的"lzma"替换为"gzip"
# work around live-build failure with lzma initramfs (Debian #637979)

sed -i 's/^LB_INITRAMFS_COMPRESSION="lzma"/LB_INITRAMFS_COMPRESSION="gzip"/' config/common

2、默认kernel文件的名称不对,需要增加如下修改脚本
# rename kernel and initrd to what syslinux expects

cat <<EOF > config/binary_local-hooks/rename-kernel

#!/bin/sh -e

if [ ! -e binary/casper/initrd.lz ]; then

zcat binary/casper/initrd.img-* | lzma -c > binary/casper/initrd.lz

rm binary/casper/initrd.img-*

fi

if [ ! -e binary/casper/vmlinuz ]; then

mv binary/casper/vmlinuz-* binary/casper/vmlinuz

fi

EOF

最终执行lb build构建订制的livecd镜像
回复