Netros制作帮助

概述

Netros是为ivic项目制作的Debian Live系统,可以装载在U盘或者光驱等媒体上,从这些媒体启动并使用ivic服务。

Netros本质上是经过配置(安装ivic所需客户端软件包,并加入相应设置)的Debian Live系统,使用Debian提供的Live系统制作工具live-helper制作。

本文描述了如何制作Netros镜像,如何制作Live CD和Live USB,以及一些Live系统定制方法。

制作Netros镜像

首先安装live-helper

apt-get install live-helper

从svn中检出Netros制作配置文件

svn co http://dev.ivic.org.cn/svn/ivic/trunk/misc/ivic-client-debianlive

然后make即可生成netros.img,netros.iso,netros.tar.gz三个文件。耗时较长,请耐心等待

cd ivic-client-debianlive
make

注意:由于目前使用testing分支即squeeze来制作Live系统,软件包的版本升级(如内核升级等)可能会导致从现有的配置制作出来的Netros工作不正常,甚至无法完成制作。这时需要根据具体情况修改配置,可参考下文定制部分的内容。

制作Netros Live CD

直接刻录netros.iso即可

制作Netros Live USB

简单的方法

以Linux下的制作为例。用dd将netros.img写入U盘即可

dd if=netros.img of=/dev/XXX

上述命令中/dev/XXX为U盘的设备路径,比如/dev/sdc之类,注意不要写成/dev/sdc1这样的分区路径。

当然也可以使用其他可以写镜像的工具。写入之后,U盘将只能识别七百MB左右的空间。

灵活的方法

首先保证U盘有FAT分区,并且该分区已经打上boot flag(可以使用分区管理工具如parted)。以在Linux下为例,设该分区为/dev/sdc1(请以具体情况为准)。

parted /dev/sdc set 1 boot on

接下来在该分区写入Syslinux用于引导Live系统

syslinux /dev/sdc1

然后将netros.tar.gz中的文件解压到该分区即可。

tar xvzf netros.tar.gz -C /path_to/usbdisk

这种方法不会浪费U盘空间。

使用Grub或者其他可以引导Linux的引导程序均可配合netros.tar.gz制作启动U盘,只是需要自己写引导配置文件。可以参考如下的Syslinux设置

kernel /live/vmlinuz1
append initrd=/live/initrd1.img boot=live splash quiet notimezone username=netros union=aufs 

定制

live-helper制作Live系统,实际上是在硬盘上从零开始安装配置一个Debian系统,利用chroot来“运行”这个系统,完成配置,最后将系统打包成镜像。制作完成以后,可以在chroot目录下看到这个系统的根目录结构。制作分bootstrap,chroot,binary三个阶段。bootstrap使用debootstrap安装一个最小系统,chroot就是装好最小系统之后安装其他软件包以及配置的阶段,binary则是把配置好的系统打包。

在配置文件的config目录下可以看到bootstrap,binary,chroot三个配置文件,顾名思义,对应三个阶段。此外还有一些文件夹,它们所包含的内容均影响文件夹对应的设置。其中比较常用的有以下几个:

chroot_local-hooks 内含希望在chroot阶段执行的脚本,脚本文件名格式为XXblahblah.sh,XX表示两位数字,后跟任意文件名。脚本按照打头数字从小到大的顺序执行。

chroot_local-includes 将想要加入Live系统的文件/目录放在这个目录中,它们将在chroot阶段被拷贝到Live系统的根路径下。

chroot_local-packages 将想要在Live系统中安装的deb包放在这个目录中,它们会在chroot阶段被自动安装。

chroot_sources 配置软件安装源。将形如deb  http://mirror.ivic.org.cn/debian/ squeeze main contrib non-free的源命令行写在文件blahblah.chroot中,置于该目录,则指定的源会在chroot阶段被使用。而写在blahblah.binary中的源会一直保持在Live系统的源列表中。

以Netros的定制为例

在chroot_local-hooks内放置脚本,完成ivic-vnet软件包的安装以及一些配置修改等工作;

在chroot_local-includes放置预先调整好的用户设置文件(包括Gnome桌面设置,Firefox设置等),这些配置文件就会覆盖到Live系统中。另外还预置有一些ivic所需的脚本和程序文件;

在chroot_local-packages内放置自行编译的一些驱动程序包,让live-helper安装到Live系统中;

在chroot_sources中指定安装squeeze分支(lenny一些组件太旧,尤其是驱动部分,由于各种依赖关系还很难单独更新)。

值得注意的是,Netros系统运行时使用的是名为netros的用户,但在静态的系统中却没有这个用户的home目录。这个用户是在每次Netros启动时创建的,并不持久化存在。因此要修改该用户的配置,应修改用户配置模板/etc/skel中的内容。新建用户时,系统会复制skel目录中的内容到新用户的home目录下作为默认配置。

参考资料