Debian live-build定制系统安装镜像详解
<h1 id="系统要求">系统要求:</h1><ul>
<li>超级管理员访问权限</li>
<li>一个最新版本的live-build</li>
<li>符合POSIX标准的shell,如bash或dash</li>
<li>debootstrap或cdebootstrap</li>
<li>内核2.6+</li>
</ul>
<h1 id="环境说明">环境说明:</h1>
<pre><code>debian 8(jessie)
</code></pre>
<h1 id="安装live-build">安装live-build:</h1>
<pre><code>apt-get install live-build
</code></pre>
<h1 id="创建默认镜像">创建默认镜像:</h1>
<pre><code>mkdir live-system && cd live-system
lb config
lb build
</code></pre>
<h1 id="刻录iso镜像到光盘">刻录ISO镜像到光盘:</h1>
<pre><code>apt-get install xorriso
xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed live-image-i386.hybrid.iso
</code></pre>
<h1 id="复制iso镜像到u盘">复制ISO镜像到U盘:</h1>
<pre><code>cp live-image-i386.hybrid.iso ${USBSTICK}
sync
</code></pre>
<h1 id="使用u盘的剩余空间">使用U盘的剩余空间:</h1>
<p>分区:</p>
<pre><code>gparted ${USBSTICK}
</code></pre>
<p>格式化:</p>
<pre><code>mkfs.ext4 ${PARTITION}
</code></pre>
<blockquote>
<p>注意:PARTITION为新创建的分区。</p>
</blockquote>
<h1 id="用qemu测试iso镜像">用qemu测试ISO镜像:</h1>
<pre><code>apt-get install qemu-kvm qemu-utils
kvm -cdrom live-image-i386.hybrid.iso
</code></pre>
<h1 id="创建hdd镜像">创建HDD镜像:</h1>
<pre><code>lb clean --binary
lb config -b hdd
lb build
</code></pre>
<blockquote>
<p>最后会生成live-image-i386.img的文件。</p>
</blockquote>
<h1 id="安装到usb驱动器">安装到USB驱动器:</h1>
<pre><code>lb clean --binary
lb config -b usb-hdd
lb build
dd if=binary.img of=/dev/sdb
</code></pre>
<h1 id="使用自动配置脚本">使用自动配置脚本:</h1>
<pre><code>mkdir mylive && cd mylive && lb config
mkdir auto
cp /usr/share/doc/live-build/examples/auto/* auto/
</code></pre>
<p>创建auto/config配置文件,内容如下:</p>
<pre><code>#!/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/ \
"${@}"
</code></pre>
<blockquote>
<p>注意:使用lb config命令会重置auto/config文件的配置。</p>
</blockquote>
<h1 id="配置选项说明">配置选项说明:</h1>
<p><strong>指定版本:</strong></p>
<pre><code>--distribution jessie
--archive-areas "main contrib non-free"
</code></pre>
<p><strong>用于镜像创建时的安装源:</strong></p>
<pre><code>--mirror-bootstrap http://ftp.cn.debian.org/debian/
--mirror-chroot-security http://ftp.cn.debian.org/debian-security/
</code></pre>
<p><strong>用于镜像运行时的安装源:</strong></p>
<pre><code>--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/
</code></pre>
<p><strong>添加其他安装源:</strong></p>
<p>添加到config/archives/live.list.chroot文件内的安装源在创建镜像时被使用。<br>
添加到config/archives/live.list.binary文件内的安装源会被加入到系统/etc/apt/sources.list.d/目录。<br>
两个文件内容格式如下:</p>
<pre><code>deb http://debian-live.alioth.debian.org/ sid-snapshots main contrib non-free
</code></pre>
<p><strong>选择安装的软件:</strong></p>
<p>配置文件目录为:config/package-lists/,例如安装桌面和浏览器,配置如下:</p>
<pre><code>lb config
echo "task-lxde-desktop iceweasel" > config/package-lists/desktop.list.chroot
</code></pre>
<p><strong>生成软件列表:</strong></p>
<pre><code>lb config
echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
</code></pre>
<p><strong>配置可安装的镜像:</strong></p>
<pre><code>lb config --debian-installer live
echo debian-installer-launcher >> config/package-lists/installer.list.chroot
</code></pre>
<p><strong>安装第三方软件包:(必须添加第三方安装源)</strong></p>
<p>直接复制软件包列表文件到config/packages.chroot/目录,在创建镜像期间会被自动安装。</p>
<p><strong>调整APT节省空间:(可能会带来一些问题)</strong></p>
<pre><code># 禁用缓存软件索引
--apt-indices false
# 禁用APT推荐功能
--apt-recommends false
</code></pre>
<h1 id="自定义内容">自定义内容:</h1>
<p>配置目录为:config/includes.chroot,例如添加www目录及文件:</p>
<pre><code>mkdir -p config/includes.chroot/var/www
cp /path/to/my/index.html config/includes.chroot/var/www
</code></pre>
<h1 id="hooks">Hooks</h1>
<p>包含系统创建完后需要执行的脚本。</p>
<pre><code>/usr/share/doc/live-build/examples/hooks
config/hooks/
*.hook.chroot
*.hook.binary
/lib/live/config/ --> config/includes.chroot/lib/live/config/
</code></pre>
<p>例子:创建hooks/auto_ssh.hook.chroot文件,内容如下。</p>
<pre><code>#!/bin/sh
echo "HOOK: ssh server"
update-rc.d ssh defaults
passwd root <<EOF
admin
admin
EOF
</code></pre>
<p>修改执行权限:</p>
<pre><code>chmod u+x auto_ssh.hook.chroot
</code></pre>
<h1 id="自定义live用户">自定义live用户:</h1>
<p>加入live用户到fuse组:</p>
<pre><code>config/includes.chroot/etc/live/config/user-setup.conf
LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"
</code></pre>
<p>或者作为启动的参数:</p>
<pre><code>live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse
</code></pre>
<p>也可以配置中改变默认的用户”user“和默认的密码”live“:</p>
<pre><code>$ lb config --bootappend-live "boot=live components username=live-user"
</code></pre>
<p>更改默认密码方法:</p>
<pre><code>passwd: /usr/share/doc/live-config/examples/hooks --> config/includes.chroot/lib/live/config/
</code></pre>
<h1 id="自定义语言环境和语言">自定义语言环境和语言:</h1>
<pre><code>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"
</code></pre>
<h1 id="持久存储">持久存储:</h1>
<p>在硬盘的一个ext4分区或USB闪存盘创建:</p>
<pre><code>mkfs.ext4 -L persistence /dev/sdb1
</code></pre>
<p>使用U盘的剩余空间创建:(注意指定正确的分区)</p>
<pre><code>tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems
</code></pre>
<p>使用一个基于ext4的镜像文件作为持久存储:</p>
<pre><code>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
</code></pre>
<p>创建配置文件并追加内容:</p>
<pre><code>echo "/usr union" >> /mnt/persistence.conf
umount /mnt
</code></pre>
<blockquote>
<p>现在,带启动参数”persistence“重启你的live介质。</p>
</blockquote>
<p>例子:将home目录和apt缓存目录持久存储在/dev/sdb1分区上的一个ext4文件系统里面。</p>
<pre><code>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
</code></pre>
<blockquote>
<p>注意:persistence.conf文件列出的任何路径不能包含空格或特殊目录"."和"..",也不能包含/lib,/lib/live目录及其子目录和/,可以添加/ union实现完全持久存储。</p>
</blockquote>
<p>使用加密的持久存储:</p>
<pre><code>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"
</code></pre>
<p>使用U盘的一个分区:</p>
<pre><code>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
</code></pre>
<h1 id="customizing-the-binary-image">Customizing the binary image</h1>
<p>Bootloaders:</p>
<pre><code>/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
</code></pre>
<p>ISO metadata:</p>
<pre><code>LB_ISO_APPLICATION/--iso-application NAME
LB_ISO_PREPARER/--iso-preparer NAME
LB_ISO_PUBLISHER/--iso-publisher NAME
LB_ISO_VOLUME/--iso-volume NAME
</code></pre>
<h1 id="customizing-debian-installer">Customizing Debian Installer:</h1>
<pre><code>lb config --architectures i386 --linux-flavours 586 --debian-installer live
echo debian-installer-launcher >> config/package-lists/my.list.chroot
</code></pre>
<p>Customizing Debian Installer by preseeding:</p>
<pre><code>echo "d-i debian-installer/locale string en_US" >> config/includes.installer/preseed.cfg
</code></pre>
<p>Customizing Debian Installer content:</p>
<pre><code>config/packages.binary/
config/includes.installer/
</code></pre>
<h1 id="options">Options</h1>
<p>默认情况下,制作的 LiveCD 在开机引导时会出现引导画面,需要用户手动选择。<br>
如需跳过手动选择画面,直接进入系统需要使用 genisoimage 再次配置 LiveCD 的映像文件。</p>
<p>liveCD:</p>
<pre><code>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
</code></pre>
<p>创建isolinux.cfg文件,内容如下:</p>
<pre><code>default live
label live
kernel /live/vmlinuz
append initrd=/live/initrd.img boot=live config quiet
</code></pre>
<pre><code>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
</code></pre>
<p>liveUSB:</p>
<pre><code>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
</code></pre>
<h1 id="小结">小结:</h1>
<p>1.自动配置脚本目录:auto/config<br>
2.创建镜像时安装的软件所在目录:config/package-lists/<br>
3.自定义镜像内容目录:config/includes.chroot/<br>
4.创建系统后执行的脚本所在目录:config/hooks/<br>
5.自定义引导程序目录:config/bootloaders/<br>
6.自定义Debian Installer:使用--debian-installer live选项,安装debian-installer-launcher包<br>
7.自定义Debian Installer的内容:config/packages.binary/,config/includes.installer/</p>
</div>
<div id="MySignature" role="contentinfo">
<div id="AllanboltSignature">
<div>作者:Varden</div>
<div>出处:http://www.cnblogs.com/varden/</div>
<div>本文内容如有雷同,请联系作者!</div>
<div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。</div>
</div><br><br>
来源:https://www.cnblogs.com/varden/p/13925972.html
頁:
[1]