自己动手编译OpenSolaris内核

OpenSolarisSUN2005年创建的一个开源项目,通过创建OpenSolaris开源社区,SUN希望后续的Solaris产品基于OpenSolaris开源项目。OpenSolaris的社区网站是www.opensolaris.org,该网站公布了OpenSolaris社区的最新信息。同时,OpenSolaris discuss邮件组是讨论OpenSolaris开源项目的官方邮件列表。这篇文章作为一个step by stepguide,介绍如何从源文件开始创建自己的OpenSolaris系统。

安装OpenSolaris Express

OpenSolaris社区发布了一些基于OpenSolaris的操作系统,它们包括:

Solaris Express Community Edition 代号为Nevada,是SUNOpenSolaris开发者发布的二进制格式的操作系统,该系统包括由最新的OpenSolaris源代码和尚未公开的技术编译而成,尚未经过测试,没有任何技术支持。该系统每两个礼拜的礼拜五更新。

Solaris Express Developer Edition 该系统是经过测试的开发版本系统,供免费免费使用,可以从http://developers.sun.com/solarisdevex/上获得技术支持。该版本每三到四个月更新一次。

BeleniX 基于OpenSolaris源码的LiveCD

marTux 基于SPARC处理器的OpenSolaris发布。

NexentaOS 基于GNUOpenSolaris,该系统集成了OpenSolaris内核,和开源软件(OSS)应用程序。

Schillix x86x64EM64T发布的OpenSolaris LiveCD

编译OpenSolaris内核需要基于Solaris Express Community Edition,所以需要从SUN的网站上下载该系统的CDDVD格式的安装镜像,然后将镜像刻录在光盘上,利用安装光盘安装Solaris Express系统。该操作系统镜像可以在http://www.opensolaris.org/os/downloads/下载,在安装该系统之前,最好到http://www.opensolaris.org/os/downloads/on/solex_cr_known_issues/上看看一些已知的问题。

下载OpenSolaris源码

可以通过两个途径来下载OpenSolaris源码:从http://dlc.sun.com/osol/on/downloads/上下载,或通过hg命令从OpenSolaris的源码库里面下载最新的源代码。

Hg通过ssh管道连接到OpenSolaris的源码库,所以首先需要设置ssh配置文件,该配置文件位于~/.ssh/config中:

 

# cat ~/.ssh/config

Host *.opensolaris.org

ProxyCommand /usr/lib/ssh/ssh-socks5-proxy-connect -h proxy.jf.intel.com %h %p

Compression yes

 

设置好ssh管道,后通过hg clone命令可以获得一份OpenSolaris源代码的拷贝:

 

[solaris-devx@b65]hg clone ssh://[email protected]/hg/onnv/onnv-gate

destination directory: onnv-gate

requesting all changes

adding changesets

adding manifests

adding file changes

added 3811 changesets with 70433 changes to 43748 files

40000 files updated, 0 files merged, 0 files removed, 0 files unresolved

 

当然,如果你不是OpenSolaris开发队伍中的一员,你只是想自己动手编译一下自己的OpenSolaris内核,那http://dlc.sun.com/osol/on/downloads/是最好的选择。

下载尚未公开的二进制文件

OpenSolaris系统中(不仅仅是内核)还包含了一些尚未公开源代码的部分,这部分是以二进制代码的形式公开的,所以需要下载该文件。这些文件被压缩在一个tar文件中,通过http://dlc.sun.com/osol/on/downloads/可以下载该tar文件。

下载onbldSun Studio工具

Onbld工具提供了nightlybldenv等有用的命令,这些命令是编译OpenSolaris必不可少的工具。

安装onbldSun Studio工具

到目前为止,我们已经已经有了下面的一些必要的文件了:

 

SUNWonbld-DATE.PLATFORM.tar.bz2

on-src-DATE.tar.bz2

on-closed-bins-DATE.PLATFORM.tar.bz2

sunstudio11-ii-DATE-PLATFORM.tar.bz2

 

首先,查看/opt目录下,是否存在SUNWspro目录:

 

[solaris-devx@~]ls /opt

SUNWappserver      SUNWspro           netbeans-5.5_mars  staroffice8

SUNWmlib           netbeans-5.5       onbld

 

该目录是SUN Studio的安装目录,如果该目录已经存在,则安装操作系统时,你已经安装了SUN Studio,否则你需要用下面的命令来安装SUN Studio

 

# cd /opt

# bzcat DOWNLOAD-DIRECTORY/sunstudio11-ii-DATE-PLATFORM.tar.bz2 | /bin/tar xf –

 

接下来安装onbld工具:

 

# bzcat SUNWonbld-.i386.tar.bz2 | tar xf -

# pkgadd -d SUNWonbld-

 

注意,onbld工具是以安装包的形式下载的,所以需要超级用户权限通过pkgadd工具安装,卸载的时候需要使用pkdrm命令。

安装源代码和closed二进制文件

源代码和closed二进制文件安装位置是由你来确定的,但它们必须在同一个目录下:

 

[solaris-devx@b65]bzcat on-src-DATE.tar.bz2 | tar xf -

[solaris-devx@b65]bzcat on-closed-bins-DATE.PLATFORM.tar.bz2 | tar xf –

[solaris-devx@b65]cp usr/src/tools/env/opensolaris.sh .
[solaris-devx@b65]vi opensolaris.sh

 

Opensolaris.sh中保存了编译OpenSolaris的环境变量,将该文件中的一些变量改为适当值:

 

GATE=b65; export GATE

CODEMGR_WS="/export/home/user/$GATE"; export CODEMGR_WS

STAFFER="user"; export STAFFER

VERSION="$GATE-$STAFFER";export VERSION

 

编译OpenSolaris

最后使用nightly编译OpenSolaris

 

[solaris-devx@b63]nightly opensolaris.sh &

[solaris-devx@b63]tail -f log/nightly.log

 

编译过程中所产生的log信息被保存在log/nightly.log文件中,可以使用tail工具来实事查看log信息。Nightly编译时间会很长,笔者的P4服务器使用了大概4个小时的时间来完成所有编译。当编译完成后,在log/log.date/mail_msg文件中保存一份邮件,告知改编译的结果,通过该邮件也会发送到用户邮箱中(默认为用户在OpenSolaris的帐户,如果编辑~/.forward文件,将转发邮箱地址放在该文件中,则该邮件会发送到指定邮箱)。成功的编译会在编译目录下生成archives目录,并在该目录下保存结果:

 

[solaris-devx@nightly]pwd

/export/home/user/build/b63/archives/i386/nightly

[solaris-devx@nightly]ls

conflict_resolution.gz  generic.root            i86pc.boot

generic.kernel          generic.sbin            i86pc.root

generic.lib             generic.usr             i86pc.usr

总结

该文章总结了从源代码编译OpenSolaris内核的步骤。关键字:OpenSolarisKernelSUN Studionightly 

你可能感兴趣的:(自己动手编译OpenSolaris内核)