Joolix-live project
我已经将 Joolix 的 initrd hook 及 app 制作环境等分离出来,在 google code 上面建立了一个工程, 目的是大家一起来完善这些脚本,使 Joolix 更加稳定、好用,欢迎有意愿的童鞋踊跃参加这个工程。
具体的情况请移步项目主页 http://code.google.com/p/joolix-live/
现在项目刚刚开始,很快会有 roadmap 出来。
我已经将 Joolix 的 initrd hook 及 app 制作环境等分离出来,在 google code 上面建立了一个工程, 目的是大家一起来完善这些脚本,使 Joolix 更加稳定、好用,欢迎有意愿的童鞋踊跃参加这个工程。
具体的情况请移步项目主页 http://code.google.com/p/joolix-live/
现在项目刚刚开始,很快会有 roadmap 出来。
在这里:http://ftp.ubuntu.org.cn/home/xiooli/JOOLIX/joolix-2009/
帐号: ubuntu
密码: ubuntuftp
感谢 ubuntu 中文论坛的 ftp 空间。
ftp 目录结构如下:
../
apps/ 15-Aug-2009 16:23 -
tools/ 15-Aug-2009 16:25 -
md5sum.txt 15-Aug-2009 16:36 439
skel.tar.gz 15-Aug-2009 16:31 8102719
apps 里面是所有的 app 模块,前面数字小于50的是基础模块,大于等于50的是应用程序。
tools 里面现在就只有一个制作 app 模块的脚本,注意,这个脚本需要有一些 app 模块的支持。
skel.tar.gz 里面是整个系统的基本框架和安装到 u 盘的脚本和制作 iso 映像的脚本。
使用方法:
下载 skel.tar.gz, 将其解压到某处(如 U 盘的根目录),你会看见两个目录: boot 和 JOOLIX, boot 不用管, 将下载下来的 app 模块放到 JOOLIX/apps 里面。 app 模块按需要下载,最基本的命令行系统至少需要 001-core.app 和 002-kernel.app, 要有 X 支持的话就需要 003-xorg.app, 还有一个基本的 e17 桌面环境。
放好以后如果想安装到 U 盘的话就执行 boot/bootinst.sh 或 boot/bootinst.bat, 注意要 root 权限。
要想制作 iso 的话就运行 JOOLIX/makeiso.sh 或 JOOLIX/makeiso.bat。
匆忙之间,很多疏漏,欢迎大家使用并提出宝贵意见/建议,及共享用 mkapp.sh 制作出来的 app 模块,谢谢支持!
RT,看个热闹哈,还有几样东西没有完成,可能还要等一段时间才放出测试。
大家请移步 http://forum.ubuntu.org.cn/viewtopic.php?f=33&t=220549 观看哈。
设想系统的主版本号用年数表示,软件包(app模块)的版本号就用其中最主要程序的版本号,命名规则是前面加上表示优先级的数字(3位)-接模块名_接版本号.app。
例如:
将发布的 joolix 版本就定为: joolix 2009
今天压制的软件包比如 kdemod-kdemultimedia-juk 就是 00x-kdemod-kdemultimedia-juk_4.3.0-3.app, 或者觉得长的话就省掉中间的,成为 00x-kdemod-juk_4.3.0-3.app
还有关于版本昵称,采用同 ubuntu 相同的命名策略,joolix 2009 就叫 Crazy Crab
大家觉得怎么样阿?
现在还在进行基础性的制作,进展如下:
1) 基本系统
基本系统的模块已经做好了,只是稍微有点大(96.3 M),还有很大的精简余地。
2) initrd.gz 和 vmlinuz
重新制作了initrd.gz(以前是直接用的从slax那里下载的内核),采用了最新的内核 2.6.30-ARCH,借鉴了 larch 的 hook 插入方式,用普通的 mkinitcpio 法制作 initrd.gz,不再需要给内核打补丁和重新编译(因为是软件模块是用的 squashfs 格式而不是 slax 的 squashfs-lzma 格式压缩,而 squashfs 是已经进入了内核的)。所插入的两个 hook 是基于 larch 的 larch1 和 larch3, 几乎重写。呵呵,写这个东西真的很累,但是也能学到东西哦。
现在 initrd.gz 的制作几乎和发行版无关了(虽然没实验过,不过从脚本来看确实是这样的),只有系统上有 mkinitcpio 就可以制作,不必给内核打补丁和重新编译内核。
3) 模块制作环境
上回书写到想写一个创建模块的工作环境,现在也已经完成了,不过有一点和以前想的不太一样,就是大小问题,必须要依赖一个基本系统的模块(或其他你要制备的模块想要依赖的软件模块),也就是说如果想在基本系统(就是最小的那个命令行系统)制备软件的话就必须要有这个基本系统的模块才行。除却这个问题以外还基本完美,制备出来的软件模块应该就可以直接用并且很干净,还有就是这个工作环境也是发行版无关的,只要你的 linux 系统支持 squashfs 和 aufs 就可以。
其原理是将以 squashfs 格式压缩的基本系统模块挂载到一个目录 A,这个是只读的,另外还有几个目录,比如 B 是用来保存变化后的文件的,还有一个 fackroot 目录和一个目录 C 用来记录你不想压制到软件模块里面的数据。
用 aufs 挂载这几个目录,其挂载方式如下:
mount -t aufs br:B=rw:A aufs ./fackroot
这样所有的变化都会保存在可读写分支 B 里面,然后将不想要压入模块的目录比如 /var/lib/pacman/sync 绑定到目录 C, 将 /sys, /proc, /dev 等绑定到 ./fackroot 下的同名目录,然后 chroot 到 ./fackroot 就可以在里面安装软件了,最后将所有的东西卸载掉,所安装软件的文件就只存在于 B 目录了,然后将 B 目录整个压制成模块就可以了,哈哈,是不是很聪明阿。
接下来的工作就是精简基本系统,然后就是实现上回所说的那另外几项东西了。
RT
joolix 8.04.1-1 已然有些陈旧了,是时候推出新版本了,在这里写些关于新版本的计划和目标,各位童鞋有什么建议的话请跟评论提出哈。
计划:
1) 基于 archlinux 构建
理由:8.04 是基于的 ubuntu jeos,优点是基本系统很小,但是我对 debian 系 linux 的系统配置不熟悉,arch 的系统配置非常简单,且针对 i686 优化,速度上可能会快些,包管理强大简洁,kdemod稳定等等,最主要的原因是配置简洁。现在基本系统已经差不多做好了,除了内核外其他软件均为当前最新版本。
2) 实现模块最小依赖
让模块尽量不依赖其他模块,仅仅一两个基本模块。比如 kde 软件就最多依赖 kdebase(内含qt库和kde runtime之类的东西) 。
3) 实现软件的拖放安装/卸载
建立一个特殊的目录,模块(或可以看作软件安装包)拖放到此目录即完成安装,从其中拖出即完成卸载,至少从视觉上实现所谓“绿色软件”
4) 添加安装到硬盘的功能
让 joolix 不仅能在光盘和 u 盘上使用,还能容易的安装到硬盘。设想能安装到 win 分区或 linux 分区而不破坏原有系统,或新划分区像普通 linux 那样安装。安装过后的系统仍然支持以拖放的方式安装软件。
5) 写一个创建模块的工作环境
设想使用 aufs 和 chroot 来达到此目的,整个环境可以不依赖真实的 joolix 系统,在任何支持 aufs 的 linux 系统上均可创建 joolix 模块,体积不必很大, chroot 里面的命令计划用 busybox (不知道这些命令够用不) 加一些必须的程序。
使用这个环境主要是因为有些程序安装的时候会执行一些脚本,如果仅仅将这个程序压成模块的话有些步骤就不会进行,而在一个虚拟的环境下先将这些程序安装上,那它安装的整个过程都是走完了的,这样的话可能会比较少出问题。
有了这个环境,大家就可以方便的自己创建 joolix 模块了。
6) 桌面环境用 kde4.3
用 arch 的 kdemod 可以很方便的取舍不想要的 kde 软件,最终搭建一个华丽的桌面环境,当然可能会有点大,但是现在谁家的 u 盘不是好几个 G 的呢。当然也可能会创建几个轻量级的桌面环境。
以上就是我的一点想法和计划,大家有什么意见和建议的请踊跃提出哈。
本来计划做一个lzm模块制作环境,但是最近很忙(要写论文阿:(),就先把比较原始的制作方法写出来咯。
因为joolix是使用修改过的slax的那套脚本制作出的,所以制作lzm模块和slax制作lzm模块大同小异,在JOOLIX/tools目录里面你可以看到如下一些脚本:
deb2dir dir2lzm lzm2dir tgz2lzm deb2lzm
这些脚本就是今天的主角,分别介绍下它们:
deb2dir: 将deb包(们)转换成目录,你可以到目录里面删除不要的东西或者改写一些配置。
用法:
deb2dir source_filename.deb(s) #参数支持正则表达式,转换好的目录在/tmp/debs2dir_xxxx
dir2lzm: 将目录转换成lzm模块。
用法:
dir2lzm dir xxx.lzmlzm2dir: 将lzm模块还原成目录,可用于将不满意的lzm模块重新配置/加工。
用法:
lzm2dir xxx.lzm dir #注意dir一定要是已经存在的
tgz2lzm:这个主要是将slackware的包文件转换成lzm,joolix里面几乎不会用到。
用法:
tgz2lzm xxx.tgz xxx.lzm
deb2lzm:将deb包转换成lzm模块,只能转换单个的deb包,要想转换几个deb包(常有一个软件依赖很多包的)得先用deb2dir将这些包解出成目录,然后再用dir2lzm脚本将目录转换成lzm模块。
用法:
deb2lzm xxx.deb xxx.lzm
为了使用方便,你可以将deb2dir dir2lzm lzm2dir tgz2lzm deb2lzm及liblinuxlive复制到/usr/bin等地方,然后直接作为命令使用他们。
这样制作lzm模块不太方便,不过暂时就先这么着吧,不好意思了。。
制作好的CHANGES文件可以去http://joolix.com/2009/02/changes-files-for-joolix下载。
在很多情况下我们都希望U盘系统能够保存使用时产生的数据(废话,不能保存数据那除了用来尝尝鲜以外还能干什么?)
其实,让Joolix自动保存数据是非常简单的一件事,应为你只需要在JOOLIX目录下创建一个名为CHANGES的块文件(因为U盘是fat32格式的,所以貌似大小写并不重要,不过由于在boot/joolix.cfg文件里面的启动参数里CHANGES是用的大写,那大家还是记得用大写命名吧),然后将其格式化为ext3等linux文件系统(因为win的文件系统不能保存linux文件的权限等信息)就可以了。具体怎么做呢,请看下面步骤:
一,创建一个块文件
假设你想建立一个10m大小的块文件。
1 2 | #创建块文件 head -c 10m /dev/zero>CHANGES |
二,格式化块文件
1 2 3 4 5 6 7 8 | #格式化成ext3格式 mkfs.ext3 CHANGES #试试能不能用(此步不是必须步骤) mkdir changes sudo mount -t ext3 CHANGES changes -o loop #如果一切正常,你打开changes目录应该能看见一个lost+found的目录 #umount sudo umount changes |
三,扔到JOOLIX目录
把CHANGES文件复制到你U盘的JOOLIX目录下面即可,当你使用过joolix后,下次再启动joolix,你会惊奇的发现以前的使用更改都还在哦:)
四,没了:)
有同学问了,在windows下怎么做呢?额,在windows下就麻烦了,因为我也不知道欸,要不你先启动到joolix下面?呵呵。
最近评论