当前位置: > Linux发行版 > Debian >

Debian live-build定制系统安装镜像详解

时间:2021-12-18 16:49来源:linux.it.net.cn 作者:IT

系统要求:

  • 超级管理员访问权限
  • 一个最新版本的live-build
  • 符合POSIX标准的shell,如bash或dash
  • debootstrap或cdebootstrap
  • 内核2.6+

环境说明:

debian 8(jessie)

安装live-build:

apt-get install live-build

创建默认镜像:

mkdir live-system && cd live-system
lb config
lb build

刻录ISO镜像到光盘:

apt-get install xorriso
xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed live-image-i386.hybrid.iso

复制ISO镜像到U盘:

cp live-image-i386.hybrid.iso ${USBSTICK}
sync

使用U盘的剩余空间:

分区:

gparted ${USBSTICK}

格式化:

mkfs.ext4 ${PARTITION}

注意:PARTITION为新创建的分区。

用qemu测试ISO镜像:

apt-get install qemu-kvm qemu-utils
kvm -cdrom live-image-i386.hybrid.iso

创建HDD镜像:

lb clean --binary
lb config -b hdd
lb build

最后会生成live-image-i386.img的文件。

安装到USB驱动器:

lb clean --binary
lb config -b usb-hdd
lb build
dd if=binary.img of=/dev/sdb

使用自动配置脚本:

mkdir mylive && cd mylive && lb config
mkdir auto
cp /usr/share/doc/live-build/examples/auto/* auto/

创建auto/config配置文件,内容如下:

#!/bin/sh
lb config noauto \
	--architectures i386 \
	--linux-flavours 686-pae \
	--binary-images hdd \
	--mirror-bootstrap http://ftp.cn.debian.org/debian/ \
	--mirror-binary http://ftp.cn.debian.org/debian/ \
	"${@}"

注意:使用lb config命令会重置auto/config文件的配置。

配置选项说明:

指定版本:

--distribution jessie
--archive-areas "main contrib non-free"

用于镜像创建时的安装源:

--mirror-bootstrap http://ftp.cn.debian.org/debian/
--mirror-chroot-security http://ftp.cn.debian.org/debian-security/

用于镜像运行时的安装源:

--mirror-binary http://ftp.cn.debian.org/debian/
--mirror-binary-security http://ftp.cn.debian.org/debian-security/
--mirror-binary-backports http://ftp.cn.debian.org/debian-backports/

添加其他安装源:

添加到config/archives/live.list.chroot文件内的安装源在创建镜像时被使用。
添加到config/archives/live.list.binary文件内的安装源会被加入到系统/etc/apt/sources.list.d/目录。
两个文件内容格式如下:

deb http://debian-live.alioth.debian.org/ sid-snapshots main contrib non-free

选择安装的软件:

配置文件目录为:config/package-lists/,例如安装桌面和浏览器,配置如下:

lb config
echo "task-lxde-desktop iceweasel" > config/package-lists/desktop.list.chroot

生成软件列表:

lb config
echo '! Packages Priority standard' > config/package-lists/standard.list.chroot

配置可安装的镜像:

lb config --debian-installer live
echo debian-installer-launcher >> config/package-lists/installer.list.chroot

安装第三方软件包:(必须添加第三方安装源)

直接复制软件包列表文件到config/packages.chroot/目录,在创建镜像期间会被自动安装。

调整APT节省空间:(可能会带来一些问题)

# 禁用缓存软件索引
--apt-indices false
# 禁用APT推荐功能
--apt-recommends false

自定义内容:

配置目录为:config/includes.chroot,例如添加www目录及文件:

mkdir -p config/includes.chroot/var/www
cp /path/to/my/index.html config/includes.chroot/var/www

Hooks

包含系统创建完后需要执行的脚本。

/usr/share/doc/live-build/examples/hooks

config/hooks/
	*.hook.chroot
	*.hook.binary

/lib/live/config/ --> config/includes.chroot/lib/live/config/

例子:创建hooks/auto_ssh.hook.chroot文件,内容如下。

#!/bin/sh
echo "HOOK: ssh server"
update-rc.d ssh defaults
passwd root <<EOF
admin
admin
EOF

修改执行权限:

chmod u+x auto_ssh.hook.chroot

自定义live用户:

加入live用户到fuse组:

config/includes.chroot/etc/live/config/user-setup.conf
	LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"

或者作为启动的参数:

live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse

也可以配置中改变默认的用户”user“和默认的密码”live“:

$ lb config --bootappend-live "boot=live components username=live-user"

更改默认密码方法:

passwd: /usr/share/doc/live-config/examples/hooks --> config/includes.chroot/lib/live/config/

自定义语言环境和语言:

lb config --bootappend-live "boot=live components locales=en_US.UTF-8"
egrep -i '(^!|german.*switzerland)' /usr/share/X11/xkb/rules/base.lst
lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"
lb config --bootappend-live "boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"
lb config --bootappend-live "boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"

持久存储:

在硬盘的一个ext4分区或USB闪存盘创建:

mkfs.ext4 -L persistence /dev/sdb1

使用U盘的剩余空间创建:(注意指定正确的分区)

tune2fs -L persistence /dev/sdb1		# for ext2,3,4 filesystems

使用一个基于ext4的镜像文件作为持久存储:

dd if=/dev/null of=persistence bs=1 count=0 seek=1G 		# for a 1GB sized image file
/sbin/mkfs.ext4 -F persistence
cp persistence /
mount -t ext4 /persistence /mnt

创建配置文件并追加内容:

echo "/usr union" >> /mnt/persistence.conf
umount /mnt

现在,带启动参数”persistence“重启你的live介质。

例子:将home目录和apt缓存目录持久存储在/dev/sdb1分区上的一个ext4文件系统里面。

mkfs.ext4 -L persistence /dev/sdb1
mount -t ext4 /dev/sdb1 /mnt
echo "/home" >> /mnt/persistence.conf
echo "/var/cache/apt" >> /mnt/persistence.conf
umount /mnt

注意:persistence.conf文件列出的任何路径不能包含空格或特殊目录"."和"..",也不能包含/lib,/lib/live目录及其子目录和/,可以添加/ union实现完全持久存储。

使用加密的持久存储:

apt-get install cryptsetup
lb config
echo "cryptsetup" > config/package-lists/encryption.list.chroot
lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"

使用U盘的一个分区:

ls -l /dev/disk/by-id
cryptsetup --verify-passphrase luksFormat /dev/sdc2
cryptsetup luksOpen /dev/sdc2 live
dd if=/dev/zero of=/dev/mapper/live
mkfs.ext4 -L persistence /dev/mapper/live
mount /dev/mapper/live /mnt
echo "/ union" > /mnt/persistence.conf
umount /mnt
cryptsetup luksClose live

Customizing the binary image

Bootloaders:

/usr/share/live/build/bootloaders --> config/bootloaders

config/bootloaders/*

config/bootloaders/isolinux

splash.svg --> splash.png

isolinux.cfg:
	include menu.cfg
	default vesamenu.c32
	prompt 0
	timeout 50

ISO metadata:

LB_ISO_APPLICATION/--iso-application NAME
LB_ISO_PREPARER/--iso-preparer NAME
LB_ISO_PUBLISHER/--iso-publisher NAME
LB_ISO_VOLUME/--iso-volume NAME

Customizing Debian Installer:

lb config --architectures i386 --linux-flavours 586 --debian-installer live
echo debian-installer-launcher >> config/package-lists/my.list.chroot

Customizing Debian Installer by preseeding:

echo "d-i debian-installer/locale string en_US" >> config/includes.installer/preseed.cfg

Customizing Debian Installer content:

config/packages.binary/
config/includes.installer/

Options

默认情况下,制作的 LiveCD 在开机引导时会出现引导画面,需要用户手动选择。
如需跳过手动选择画面,直接进入系统需要使用 genisoimage 再次配置 LiveCD 的映像文件。

liveCD:

apt-get install genisoimage
cd
mount -o loop live/binary-hybrid.iso /mnt
mkdir live-cd
cp -r /mnt live-cd/iso
umount /mnt
cd live-cd/iso/isolinux
chmod u+w isolinux.cfg

创建isolinux.cfg文件,内容如下:

default live
label live
	kernel /live/vmlinuz
	append initrd=/live/initrd.img boot=live config quiet
cd ~/live-cd
chmod u+w iso/isolinux/isolinux.bin
genisoimage -r -V "debian Live session" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-live-i386.iso iso

liveUSB:

1) Go to the root folder of your Live USB.
2) Enter the syslinux directory.
3) Make the syslinux.cfg file writeable.
4) Replace the contents of the file syslinux.cfg with:
default live
label live
	kernel /live/vmlinuz
	append initrd=/live/initrd.img boot=live config quiet

小结:

1.自动配置脚本目录:auto/config
2.创建镜像时安装的软件所在目录:config/package-lists/
3.自定义镜像内容目录:config/includes.chroot/
4.创建系统后执行的脚本所在目录:config/hooks/
5.自定义引导程序目录:config/bootloaders/
6.自定义Debian Installer:使用--debian-installer live选项,安装debian-installer-launcher包
7.自定义Debian Installer的内容:config/packages.binary/,config/includes.installer/



(责任编辑:IT)
------分隔线----------------------------