制作自己的Debian Livecd

首先,Debian 官方是提供了 LiveCD 的,但是存在一些问题,其中一个最大的问题,就是不支持UEFI启动,另外官方提供的 LiveCD 总是没有自己定制过的顺手,所以在这儿讲解一下如何创建一个自定义的 Debian LiveCD 。

安装需要的软件包

需要 isolinux 、xorriso、squashfs-tools这几个包

创建工作目录

$ mkdir ~/livecd

注意: $号表示以普通身份执行,下同。

下载Debian安装镜像,取得必要的引导及配置文件

Debian安装镜像可以从 这儿 下载,得到文件 debian-8.7.1-amd64-CD-1.iso 。然后执行命令,将该文件挂载到系统中。

# mount debian-8.7.1-amd64-CD-1.iso /mnt

注意: #号表示以 root 身份执行,下同。

然后拷贝其中的 boot 目录和 isolinux 目录到工作目录 ~/livecd 中:

$ cp -rv /mnt/boot ~/livecd
$ cp -rv /mnt/isolinux ~/livecd

然后修要分别修改配置文件 ~/livecd/boot/grub/grub.cfgisolinux/isolinux.cfg 内容如下:

grub.cfg

if loadfont $prefix/font.pf2 ; then
  set gfxmode=800x600
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod gfxterm
  insmod png
  terminal_output gfxterm
fi

if background_image /isolinux/splash.png; then
  set color_normal=light-gray/black
  set color_highlight=white/black
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi

insmod play
play 480 440 1
set timeout=0
menuentry --hotkey=i 'Install' {
    set background_color=black
    linux    /vmlinuz vga=788 boot=live quiet
    initrd   /initrd
}

isolinux.cfg

# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path 
menu hshift 7
menu width 61

menu title Debian GNU/Linux installer boot menu
menu background splash.png
menu color title	* #FFFFFFFF *
menu color border	* #00000000 #00000000 none
menu color sel		* #ffffffff #76a1d0ff *
menu color hotsel	1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg	* #ffffffff #00000000 *
menu color help		37;40 #ffdddd00 #00000000 none
# XXX When adjusting vshift, take care that rows is set to a small
# enough value so any possible menu will fit on the screen,
# rather than falling off the bottom.
menu vshift 12
menu rows 10
menu helpmsgrow 15
# The command line must be at least one line from the bottom.
menu cmdlinerow 16
menu timeoutrow 16
menu tabmsgrow 18
menu tabmsg Press ENTER to boot or TAB to edit a menu entry
default install
label install
	menu label ^Install
	menu default
	kernel /vmlinuz
	append vga=788 initrd=/initrd boot=live quiet

#default vesamenu.c32
default install
prompt 0
timeout 0

用debootstrap构建一个最小环境

$ cd ~/livecd && su #切换到root用户
# debootstrap --include=linux-image-amd64,live-boot --component=main,contrib,non-free --arch=amd64 rootfs sid http://mirrors.163.com/debian

然后 chroot 进入这个最小环境中,做一些定制工作,包括修改root密码,hostname,安装软件,创建用户什么的,这一步我就不展开讲了,根据你自己的需求定制即可。

# chroot rootfs /bin/bash

将linux内核和initrd复制到工作目录的最顶层

$ cd ~/livecd && su #切换到工作目录和root用户
# cp rootfs/boot/linuz-*-amd64 vmlinuz
# cp rootfs/boot/initrd.img* initrd

构建squashfs压缩文件

进入工作目录 ~/livecd 创建新目录 live 然后把刚才得到的 rootfs 目录压缩成squashfs格式的文件放在 live目录下,重命名为filesystem.squashfs

# mkdir live
# mksquashfs rootfs live/filesystem.squashfs

然后删除 rootfs 目录即可,或者把他移到其他地方,以备多次对 LiveCD 进行修改。

# rm -rf rootfs

构建iso文件

最后一步就是构建定制的 LiveCD,这一步我们使用 xorriso 这个工具来进行。

$ cd && su #进入 `livecd` 目录的父目录,然后切换到 `root`
# xorriso -as mkisofs -r -V 'LiveCD'                                          \
    -J -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin                                                      \
    -J -joliet-long                                                                                       \
    -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot                                           \
    -boot-load-size 4 -boot-info-table -eltorito-alt-boot                                                 \
    -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus livecd/         \
    -o livecd.iso

完成之后,我们会得到一个 livecd.iso 的文件,这个就是我们制作出的 LiveCD ,可以把它dd到U盘中使用了。

2 个赞

马克

最近刚迁移到新电脑,准备研究一下创建DebianISO试试~
这个是liveISO,不知道install-ISO是不是也这么容易~

这个liveCD对不同硬件的适应性怎么样?比如用于不同的电脑时,网卡或显卡品牌/型号可能不一样?我想达到官方liveCD的效果。

我现在在研究 libresociety openworld 提到的几个链接:

我比较感兴趣的是live DVD能否像debian10 11那样子可以体验也可以安装到硬盘,这样子的话就可以装完后马上使用自己的软件了。~~~~:D

装完后马上使用自己的软件

是指装什么?在启动的live环境中安装应用程序,然后把整个live真正安装到电脑上?

我的目标是实现Debian官方相同的功能。
不过ubuntu只有一种iso,即live iso,没有install iso,不知道为什么debian是两种iso,是因为有两个团队?

我意思是可以打包自己常用的软件到这个live ISO,类似于debian live iso,debian live iso不是就包含了不少常用软件吗。就这个意思啦~~~~

live里面也可以用,把live装到硬盘去,进入系统也是马上就可以用

明白了~

可以考虑做两种,一个是尽量简化,另一个是尽量全~

陈年老坟,其中的细节我基本忘光了 :joy:

嘿哟。。。。那我得自己找国外资料了~~~~

等我实现,我上来补充~

1 个赞

以前通过这个做过 liveISO
https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html

1 个赞

太详细了。周末有的搞啦。