WEB开发网
开发学院操作系统Linux/Unix 如何创建属于自己的GNU/Linux发行版系统 阅读

如何创建属于自己的GNU/Linux发行版系统

 2008-12-31 12:14:15 来源:WEB开发网   
核心提示:作者:yan 【赛迪网-IT技术报道】作为创建gNewSense的一部分,我们导出了Builder工具,如何创建属于自己的GNU/Linux发行版系统,允许在Ubuntu Hardy的基础上创建新的GNU/linux发行版,通过一个简单的配置文件,然后执行命令 ./gen-repo && linux32 ./do-up

作者:yan

【赛迪网-IT技术报道】作为创建gNewSense的一部分,我们导出了Builder工具,允许在Ubuntu Hardy的基础上创建新的GNU/linux发行版。通过一个简单的配置文件,你就能够选择发行版的名称,版本号,标语以及你想要安装或者移除默认的软件包。图像将会自动生成。虽然这些脚本主要的目的是为了创建gNewSense,但是它还是一个不错值得利用的工具。需要注意的是你可以不遵循下面的步骤使用gNewSense,因为你可以从网站的镜像下载到相关的镜像文件。

你需要至少60GB的硬盘空间,最好有一个非常快的网络连接(因为你将要下载40GB的数据)。同时你的镜像点(也可以在同一个系统中)也需要40GB左右的空间。如果你会利用硬链接,就能够避免一些重复的下载。这一些操作都将在Ubuntu Hardy(或者更高版本的)系统执行。所有的命令都必须运行在Root权限下。

如果你有什么问题,可以发到我们的IRC中。Builder这个工具还只是测试版软件,我已经很久没有从源码重新编译过该工具,因为有些代码已经修改过了。

第一步:GPG Key

软件库中很多最近版本的apt,需要经过GPG签名的版本文件,这样可以保证发行版的集成度,所以我们的第一步就是创建一个GPG Key。

gpg --gen-key

这个命令就可以让你做到这些。确保Key只有一个空白的密码。把这个Key的指纹信息记录下来,因为之后你将在配置文件中用到它。

第二步: Deb镜像(可选的)

为了避免重复下载文件,我建议创建一个Ubuntu main和universe软件库的镜像点。这样的话大概需要40GB的空间。

debmirror --verbose --PRogress --method=http --host=ie.archive.ubuntu.com --arch=i386 --source \

--dist=hardy,hardy-security,hardy-updates,hardy-backports --section=main,main/debian-installer,universe \

--ignore-release-gpg --root=ubuntu /the/target/directory

你也可以建一个Apache服务器,这样你就能通过HTTP看到这个镜像点。这个步骤是可选的,但是我强烈推荐大家制作一个本地的Ubuntu镜像点。

第三步: 软件包

你需要安装一些软件包,使得Builder运行顺畅。

apt-get install reprepro debmirror build-essential apache2 subversion cdebootstrap debootstrap imagemagick

apt-get install squashfs-tools netpbm syslinux bittornado fakeroot devscripts equivs sharutils mkisofs

svn co http://svn.gnewsense.svnhopper.net/gnewsense/builder/trunk builder

cd builder

如果这里面还缺少某些软件包,请告知我。

第四步: 配置

用文本编辑器,打开配置文件。你主要关心的设置有MIRROR,RELEASE,DISTRONAME,DOMAIN,BASEDIR,和REPOAPT。 如果还有其它的定制要求可以修改配置文件的其它设置部分。

MIRROR 指的是你在第二步中创建的镜像点,或者Ubuntu镜像点,它应该包含安全的软件包。

MIRRORDIST 指的是镜像点的发行版本,通常是“Ubuntu“

DISTRONAME 指的是你的发行版名称,只能包含字母和数字。

BASE_RELEASE 指的是你的版本号。版本号应该是小写的,因为它将在路径出现。

TAGLINE 出现在开机启动和登录的屏幕中。

SIGNINGKEY 指的是第一步中你设置的GPG Key,不能包含任何空格。

BASEDIR 指的是放置软件库、livecd、临时文件的目录名称,REPODST 指的是当前文件系统下建立的镜像点位置($BASEDIR/发行版名称的小写形式)。

REPOAPT 指的是编译脚本放置的路径,用来下载软件包。我们假定在archive.DOMAIN和security.DOMAIN以及subdomains处都是类Ubuntu的安装方式。

RSYNC_DEST 指的是可以通过push-repo 或者push-cd来同步的软件库和livecd的位置。

LOGO_LETTER 指的是标志中的字母。

META_*_{ADD,REMOVE} 在你的默认的软件包建立之后,用来管理哪些软件包你想增加或者想把它从Ubuntu默认的软件包移除。

*_VERSION 指的是给软件包版本添加的号码。每次你要重编译一个软件包的时候,你需要增加这些。多半都是从1开始计。

第五步: 构造软件库

./gen-repo && ./do-update

这一步需要一些时间。当这个命令运行的时候,软件库有可能会不一致。这就是为何在第七步中你只需要将改动放到镜像点中。每次有新的版本(例如安全库更新了)重新执行 do-update命令就可以了(如果需要的话,也只可以执行debmirror)。

如果你在64位的内核上运行32位的用户程序,安装linux32软件包,然后执行命令

./gen-repo && linux32 ./do-update

第六步: 创建LiveCD

./gen-livecd

创建好的镜像文件将放在 $LIVECDDIR/$DISTRONAME_L-livecd-$LIVECD_VERSION.iso

./gen-cdsource

./stage-cd

这两个命令将创建一个源码包,并把这个ISO放置在 $REPODST/cdimage

第七步:把你的软件库放到镜像点并公开

现在可以在你的镜像点公开你的软件库(dists和pool)地址和LiveCD,将你的新发行版向世界公开。

./push-repo

./push-cd


? Brian Brazil 2006

Minor edits by Karl Goetz

Tags:如何 创建 属于

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接