现在的位置: 首页 > 综合 > 正文

中文 Linux LiveCD 的制作

2013年01月22日 ⁄ 综合 ⁄ 共 6244字 ⁄ 字号 评论关闭

及永刚

jungle@soforge.com

2006 年 1 月 5 日  版本:0.7

目 录 

 

 

前言

很多人都用过或听说过 Knoppix,只需一张光盘, 就能够让我们在任何场所,随心所欲地使用 Linux1, 打破了操作系统只能先安装再使用的传统概念。 Knoppix 最初的设计用途是教学,但由于这项技术很受欢迎,使得 LiveCD 这项技术不断发展, 现在它的应用已经非常广泛,涉及:系统演示、系统急救、网络防火墙、产品宣传、游戏,等等。

虽然有众多的 LiveCD 供我们挑选,但有时候找一张完全满足个人需要的版本还真是不容易。 不过没关系,因为绝大多数 LiveCD 采用的都是开放源码的自由软件,这让我们完全可以自己动手, 按自己要求制作 LiveCD。这篇文章就是示范如何在已有 LiveCD 的基础上定制符合自己要求的 LiveCD。

 

确定目标

首先,我们要明确所需的 LiveCD 的用途,应该具备的功能。 这里示范的 LiveCD 是给没有装 Linux 系统的笔记本电脑用的, 用它可以连上网络收发电子邮件,而不用担心病毒的侵扰,另外还可以学习使用 Linux。

于是我们可以列出这张 LiveCD 需要有的特性:

  • 支持中文。既能看,又能写。
  • 硬件识别能力强。特别是能识别大多数网络设备,可以连上 LAN,也可以拨号使用2
  • 要有网络浏览器。便于通过 WebMail 查阅邮件。
  • 要能打开 MS Word 和 pdf 格式的文件。
  • 容量不超过 200M,可以刻录到 MiniCD 上,便于携带。

Knoppix 是最有名的 LiveCD,估计很多人都会首先想到从它入手,但是 Knoppix 采用 KDE 作为桌面环境, 按照上面最后一项的要求,Knoppix 怎么样都无法裁减到 200M 以内,因此不合适。

经过寻找和比较各种已有的 LiveCD,发现 Morphix 符合要求,它与 Debian,Knoppix 一脉相承,采用模块化设计是它的主要特点, 就是将 LiveCD 的各个部分分解成模块,可以随意组合成不同用途的 LiveCD。 由于可以选择轻量级的桌面管理器,LiveCD 的尺寸能容易控制在 200M 以内。

 

制作环境和工具

 

使用的系统

下面演示中使用的系统是 Debian GNU/Linux。这张 LiveCD并不一定要在 Debian 下才能制作, 你也可以采用其他的 Linux 发型版,但仍要熟悉 Debian 的一些基本包管理命令, 这是因为 Morphix 是基于 Debian 的,添加和删除软件包都要使用这些命令。

 

一张已有的 LiveCD

这里选择 MorphixCombined-LightGUI-0.5-pre4.iso3 作为基础, 你可以从 SourceForge.net 的 morphix 项目 下载

 

必不可少的工具

下面是必需的工具,这里列出 Debian 软件包里面的命名。

cloop-utils: 创建压缩文件系统的工具。有了这个工具,200M 的光盘实际可以容纳下 500M 左右的软件。
mkisofs: 生成光盘文件系统的工具。
cdrecord: 光盘刻录工具,你也可以选用其他自己熟悉的工具。

 

Morphix 提供的工具

Morphix 提供了一些制作辅助工具,它们就是上面所列工具组成的脚本。

Debian 的用户可以通过修改 /etc/apt/sources.list,增加 Morhpix 源的方式进行安装。

deb http://www.morphix.org/debian ./

非 Debian 用户可以访问 Morphix 网站直接下载对应的脚本。

这些工具都以 morphix- 开头,从命名就能知道各自的用途, 另外有一个 morphing-tools 包,可以一次性安装所有的制作工具。

在以下的操作中,我们需要其中的解压和压缩模块工具: morphix-modulebuilder 和 morphix-moduleextractor。

 

制作过程

 

解压 iso 文件

将 Morphix iso 文件里面的内容复制到硬盘。假设当前工作目录是 ~/projects/livecd。

# mkdir -p tmp/cd; mkdir -p iso/Morphix
# mount -o loop MorphixCombined-LightGUI-0.5-pre4.iso tmp/cd
# cp -a tmp/cd/* iso/Morphix
# umount tmp/cd

 

Morphix 模块简介

在修改之前,先简单介绍一下这张 Morphix 光盘中各个目录下的模块,以便有针对性地修改。 关于各个模块详细的说明,见 Morphix 站点的文档。

  • boot/
    Linux 内核以及 grub 引导程序和设置。
  • base/morphix
    此为 base 模块,负责基本系统的加载。
  • mainmod/light.mod
    MainModule,主要包含与应用相关的程序。这是我们主要修改的模块,最后要达到两个目的, 一是增加中文 locale 支持,二是根据需要安装和删除应用程序。
  • minimod/new-light4.mod
    MiniModule 是在 MainModule 之后加载,可以将一些额外的内容加载到系统里面, 也可以覆盖 MainModule 中的内容。我们利用这一特性,修改 LiveCD 默认用户 morph 的设置, 实现系统的中文化支持。方法很简单,就是把自己 $HOME 下的 .bashrc 这样的设置文件, 复制到 /home/morph 里面。

 

修改 MainModule

  • 解压 MainModule4

    # mkdir -p mod/light
    # module-extract iso/Morphix/mainmod/light.mod mod/light
    

     

  • 挂载 /proc
    # mount --bind -t proc /proc mod/light/proc
    

     

  • chroot
    # chroot mod/light
    

     

  • 添加中文 locale。在下载的 Morphix LiveCD 里面,locale 只有 C 和 POSIX, 所以要修改 /etc/locale.gen 文件,包含下列内容
    en_US ISO-8859-1
    en_US.UTF-8 UTF-8
    zh_CN GB2312
    zh_CN.GB18030 GB18030
    zh_CN.GBK GBK
    zh_CN.UTF-8 UTF-8
    

    接着执行 locale-gen 命令生成新的 locale。

     

  • 修改 resolv.conf,联通网络。例如,使用
    # echo "nameserver 202.96.134.133" > /etc/resolv.conf
    

     

  • 更改默认的 debian 软件包源指向离自己最近的镜像。例如,我使用 cn99 的源
    deb http://debian.cn99.com/debian unstable main contrib non-free
    

     

  • 更新软件包。按照自己的定制要求,添加和删除软件包。
    # apt-get update
    # apt-get install 一些软件
    # apt-get remove --purge 不需要的软件
    # apt-get upgrade
    # apt-get clean
    

     

  • 清理空间。为了方便清理,先安装 deborphan 这个工具,然后用下面命令清理:
    # deborphan | xargs apt-get -y --purge remove
    

     

  • 清空软件包缓存
    # cd /var/lib/apt/lists/
    # rm -f *
    # touch lock
    # cd /var/cache/apt/
    # rm -f *
    # cd /var/tmp/
    # rm -f *
    

     

  • 清理其他的空间。为了最大程度地节约空间,可以将 /usr/share/locale 目录下, 不使用语言的 mo 文件删除。另外在 /usr/share/doc, /usr/share/man 下面也有这样的文件, 也可以删除。

     

  • 更新文件名数据库
    # updatedb
    

     

  • 恢复配置
    # rm /etc/resolv.conf
    # touch /etc/resolv.conf
    # umount /proc
    

     

  • 压制 MainModule
    # module-builder -t ext3 mod/light iso/Morphix/mainmod/light.mod
    

     

 

修改 MiniModule

 

  • 解压 MiniModule

    # mkdir -p mod/new-light4
    # module-extract iso/Morphix/minimod/new-light4.mod mod/new-light4
    

     

  • 解压后的 MiniModule 里面有两个目录: files 和 morphix。其中 files 目录下面是 tar 压缩包, 用来保存 /home/morph 目录下配置文件。

    为了在 LiveCD 启动后加载中文环境,使用 fcitx 输入法,我们需要修改 .xinitrc 文件, 增加以下内容,并将它链接到 .xsession:

    export LANG=zh_CN.UTF-8
    export LC_CTYPE=zh_CN.UTF-8
    export XMODIFIERS=@im=FCITX
    export GTK_IM_MODULE="fcitx"
    fcitx &
    

    然后再用 tar 打包。在这个压缩文件里,我们还可以放入其他一些软件的配置,比如 FireFox 的 Adblock 扩展。

     

  • 压制 MiniModule
    # module-builder mod/newe-light4 iso/Morphix/minimod/new-light4.mod
    

     

 

与中文相关的软件包

Morphix 模块化设计的一个主要目的在于重用性。所以在 MainModule 里面我们不放入与中文相关的软件, 而将他们放在 LiveCD 根目录下的 deb 目录里面。系统启动的时候,这个 deb 目录下的软件包会自动安装。

现在,我们将 fcitx 输入法,ttf-arphic-newsung 中文字体,firefox 中文界面支持, 以及 xpdf 中文支持的相关的软件包复制到 iso/Morphix/deb 目录下面。

 

更换内核

通常 LiveCD 为了能够识别最多的硬件设备,提供的内核几乎包含了所有的 Linux 能支持的硬件驱动, 而我们自己定制的 LiveCD 自然不需要那么多的驱动,既浪费空间又减慢启动速度,下面就简单介绍一下如何将它替换为自己精简过的内核。

在 Morhpix LiveCD 里面,Linux 的内核分别放入以下几个模块:

  • iso/Morphix/boot/vmlinuz 这个文件即 Linux 的内核
  • iso/Morphix/boot/initroot.gz 包含一些磁盘的驱动模块
  • iso/Morphix/base/morphix 包含完整的内核和模块

Morphix 使用的内核与 Debian 的不完全相同,需要从 morphix 网站上下载它提供的内核源码。如果已经将 morphix 添加到 source.list,使用 apt-get 就能方便地得到所需的文件。

除了 kernel-source 之外,LiveCD 还需 cloop 和 cowloop 这两个额外的内核模块,cloop 在 Debian 的源里面的 名称为 cloop-src,而 cowloop 则需要到 cowloop 网站下载。

编译内核的方法和步骤,跟平时一样,可以参阅 Debian 参考手册完成。最后可以生成 deb 包格式,也可以使用 Linux 的普通方式。 morphix 提供了一个脚本 morphix-changekernel 进行内核替换,但它是针对 2.4 的内核, 不能直接用于现在的 2.6 内核,不过我们可以拿它作为参考,了解整个替换过程。

其他需要注意的是,自己编译的内核与模块的 gcc 版本和 体系架构要保持一致,这点可以通过使用 strings 命令查看 vermagic 来确定。

 

修改 bootsplash

LiveCD 启动时的画面也能定制,可以换成与自己 LiveCD 主题匹配的说明和图像。

启动画面图像保存在 LiveCD 根目录 boot/miniroot.gz 文件里面,将它解压,挂载到一个临时目录

# mkdir -p tmp/miniroot
# gzip -d miniroot.gz
# mount -o loop miniroot tmp/miniroot

启动时的图像和设置位于 bootsplash 目录,我们可以修改 config 中的配置文件, 也可以直接替换 images 目录下面的文件。

这些图像是以 jpeg 格式保存,但 bootsplash 当前只支持 16bit 色,如果你手头的 jpeg 是 24bit 色, 需要先进行转换处理。

下面是采用 netpbm 软件包里面的工具完成转换工作。

$ jpegtopnm image24.jpg |ppmtojpeg > image16.jpg

 

压制 iso 文件

定制工作完成以后,用下面命令就可以生成可以启动的 iso 文件

 

# mkisofs -pad -l -r -J -v -V "SoForge" -b boot/grub/iso9660_stage1_5 /
-c base/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /
-hide -rr -moved -o SoForge.iso iso/Morphix

 

相关链接

 

 

后记

这里只讲述了制作 Linux LiveCD 的步骤,有关 LiveCD 的原理和 Mophix 模块设计并没有涉及。 这方面的一些内容可以从上面参考资料链接中找到。

按照上述步骤制作的 LiveCD 可以从 ``这里'' 下载。 但我希望你还是自己动手,因为制作 LiveCD 的确不是一件很难的事情。假如照着上面文章的步骤, 你制作的 LiveCD 不能用,或者有什么问题,请发邮件到 jungle@soforge.com 与我联络,我很高兴与你一起来改进它。

 

图 : 这是 LiveCD 运行起来的画面

/includegraphics[width=0.8/textwidth]{livecd_scr03.eps}


脚注

... 就能够让我们在任何场所,随心所欲地使用 Linux1
本文中的 Linux 指的都是 GNU/Linux。
... 硬件识别能力强。特别是能识别大多数网络设备,可以连上 LAN,也可以拨号使用2
这张 LiveCD 还不支持 WinModem
... 这里选择 MorphixCombined-LightGUI-0.5-pre4.iso3
你也可以在本文最后生成的 LiveCD 基础上进行修改。
... 解压 MainModule4
Morphix 提供的工具使用 /tmp 目录存放临时文件, 如果你的 /tmp 目录空间不足,比如使用的是内存文件系统,需要修改诸如 module-extract 这样的脚本, 例如,我将其中的 /tmp 改成 ./tmp。


Build by Ji YongGang <jungle@soforge.com>

 

抱歉!评论已关闭.