免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2741 | 回复: 0

opensolaris 内核编译 [复制链接]

论坛徽章:
0
发表于 2010-01-06 11:53 |显示全部楼层
opensolaris 内核编译
作者:
Last Updated: 2008-12-10
如果有任何问题欢迎 到
http://www.opensolution.org.cn/archives/214.html
讨论。。。。
我将尽快答复你。。。。
Opensolaris 做为solaris的开源版本已经流行很久。由于其绝大部分代码都可以看到源码,所以在使用中由于使用问题,进行kernel源码的修改,重新编译就成了需要
让我们开始介绍opensolaris的内核编译
1.下载Solaris Express release 版本
现在最新的发行版本是snv103

http://opensolaris.org/os/downloads/
下载最新的iso,一般官方站点提供的是2个压缩过的iso文件,需要解压后合并
合并成iso文件
例如://cat file-a.iso file-b.iso file-c.iso file-d.iso file-e.iso > sxcr.iso//
刻录成光盘
安装要点
a. 磁盘需要最少10G空间
b. 最好建立单独的分区为编译做准备 分区需要4G以上空间
c. 建立单独的opt 分区 ,编译的工具都一般都安装在opt下面
========================================================================
2.下载和安装 Sun Studio 12 编译工具
对于snv99以后最好都使用studio12 进行编译
下载如果是pkg包的话直接安装即可
最新的Sun Studio12 则是 tar包,不需要安装,解压后即可使用 为了管理统一,解压后的文件在opt下建立link  SUNWspro -> sunstuido
# cd /opt
# mkdir sunstuido
# cd sunstuido
# gzcat -zxf $HOME/sunstudio11-ii-x86.tar.gz |tar -xf -
# ln -s sunstuido SUNWspro
# /opt/SUNWspro/bin/cc -V
cc: Sun C 5.9 SunOS_i386 Patch 124868-07 2008/10/07
usage: cc [ options] files.  Use ‘cc -flags’ for details
# /opt/SUNWspro/bin/CC -V
CC: Sun C++ 5.9 SunOS_i386 Patch 124864-07 2008/08/22
无论是cc 还是C++ 请确保有 Patch 124864
3.下载源码,解压,安装onbld等
当前流通版本
http://dlc.sun.com/osol/on/downloads/current/
载x86 平台
需要下载 至少3个文件
a.ON Specific Build Tools  工具包
b.ON Binary-Only Components (non-debug) 还没完全开源的二进制包
c.ON Source 源码
解压刚才下载的这些文件
# cd /export/mybuild
$ bzcat $HOME/snv-20060918/on-src*.tar.bz2 | tar -xf -
$ bzcat $HOME/snv-20060918/on-closed-bins*.i386.tar.bz2 | tar -xf -
安装onbld 工具包
# cd /tmp
#bzcat $HOME/SUNWonbld-*.i386.tar.bz2 | tar -xf -
# pkgadd -d onbld SUNWonbld
4.修改 opensolaris.sh 脚本,Makefile.master文件
$ cd /export/mybuild
$ cp usr/src/tools/env/opensolaris.sh .
修改opensolaris.sh 文件
a.修改GATE=testws;                    export GATE
为GATE=mybuild;                    export GATE
b.修改编译时候的进程数 ,根据直接cpu的核来计算,例如4核的cpu一般改为
maxjobs() {
        ncpu=`/usr/sbin/psrinfo -p`
        expr $ncpu \* 4 + 2
}
检查其他环境变量是是否和自己的环境一致
重点 如下几个变量
BUILD_TOOLS=/opt;                               export BUILD_TOOLS
ONBLD_TOOLS=/opt/onbld;                 export ONBLD_TOOLS
SPRO_ROOT=/opt/SUNWspro;                        export SPRO_ROOT
SPRO_VROOT=$SPRO_ROOT;                          export SPRO_VROOT
修usr/src/Makefile.master文件
将#__SSNEXT=      $(POUND_SIGN)
__SSNEXT=
设置为空
修改为
BUILD_TOOLS=            /opt
至于其他关于版本等变量请大家根据情况自己修改即可
5.build开始
修改环境变量,使之生效
$ PATH=/opt/SUNWspro/bin:/opt/onbld/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/ccs/bin
$ export PATH
$ TERM=vt100;LINES=24;COLUMNS=80;EDITOR=vi;LANG=C;LC_ALL=C
$ export TERM LINES COLUMNS EDITOR LANG LC_ALL
$ cd /export/mybuild
使编译需要的环境变量生效
# bldenv opensolaris.sh
# env
请确保 SCM_TYPE 为空
# export SCM_TYPE=
开始真正的编译工作
/opt/onbld/bin/nightly ./opensolaris.sh &
检查编译中的错误
tail -f logs/nightly.log |egrep “Error code|Warning”
如果出现Error code一般编译不能成功
编译是一个漫长的过程,你可以去。。。或者等待
一般编译完成后会在/export/mybuild 下有一个log文件,里面会有相信的编译log和一个编译总结的mail文件,请直接查看即可
cat mail_msg
==== Nightly distributed build started:   Mon Dec  1 14:21:25 CST 2008 ====
==== Nightly distributed build completed: Mon Dec  1 15:17:39 CST 2008 ====
==== Total build time ====
real    0:56:14
==== Build environment ====
/usr/bin/uname
SunOS dc-15 5.11 snv_101 i86pc i386 i86pc
/export/mybuild/usr/src/tools/proto/opt/onbld/bin/nightly ./opensolaris.sh
-r-xr-xr-x   1 root     root       89641 Dec  1 11:47 /export/mybuild/usr/src/tools/proto/opt/onbld/bin/nightly
/opt/SUNWspro/bin/dmake
dmake: Sun Distributed Make 7.8 SunOS_i386 Patch 126504-01 2007/07/19
number of concurrent jobs = 4
32-bit compiler
/opt/onbld/bin/i386/cw -_cc
cw version 1.27
primary: /opt/SUNWspro/bin/cc
cc: Sun C 5.9 SunOS_i386 Patch 124868-07 2008/10/07
shadow: /usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
64-bit compiler
/opt/onbld/bin/i386/cw -_cc
cw version 1.27
primary: /opt/SUNWspro/bin/cc
cc: Sun C 5.9 SunOS_i386 Patch 124868-07 2008/10/07
shadow: /usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802)
/usr/java/bin/javac
java full version “1.6.0_10-b33″
/usr/ccs/bin/as
as: Sun Compiler Common 12 SunOS_i386 snv_93 06/19/2008
/usr/ccs/bin/ld
ld: Software Generation Utilities - Solaris Link Editors: 5.11-1.1624
Build project:  user.root
Build taskid:   87
==== Nightly argument issues ====
Warning: the N option (do not run protocmp) is set; it probably shouldn’t be
WARNING: DEBUG build not requested; disabling lint.
==== Build version ====
mybuild
==== Make clobber ERRORS ====
==== Make tools clobber ERRORS ====
==== Tools build errors ====
==== Build errors (non-DEBUG) ====
==== Build warnings (non-DEBUG) ====
==== Elapsed build time (non-DEBUG) ====
real    50:41.6
user  2:59:05.7
sys     45:31.6
==== Build noise differences (non-DEBUG) ====
==== Check ELF runtime attributes ====
==== Diff ELF runtime attributes (since last build) ====
==== cstyle/hdrchk errors ====
==== Find core files ====
==== Impact on file permissions ====
6.安装新内核
# PATH=/opt/SUNWspro/bin:/opt/onbld/bin:/usr/ccs/bin:/usr/sbin:/usr/bin
# export PATH
# FASTFS=/opt/onbld/bin/`uname -p`/fastfs;export FASTFS
# BFULD=/opt/onbld/bin/`uname -p`/bfuld;export BFULD
# GZIPBIN=/usr/bin/gzip;export GZIPBIN
#
# env
BFULD=/opt/onbld/bin/i386/bfuld
FASTFS=/opt/onbld/bin/i386/fastfs
GZIPBIN=/usr/bin/gzip
HOME=/
HZ=
LANG=C
LC_ALL=C
LOGNAME=root
MAIL=/var/mail/root
PATH=/opt/SUNWspro/bin:/opt/onbld/bin:/usr/ccs/bin:/usr/sbin:/usr/bin
SHELL=/sbin/sh
TERM=vt100
TZ=Canada/Eastern
# /opt/onbld/bin/bfu /export/mybuild/archives/`uname -p`/nightly-ng/
结束后出现buf# kbfu#
检查编译结果更新配置文件在buf#提示符号 下执行 ksh /opt/onbld/bin/acrr
reboot
如果一切顺利的话将从新的kernel启动。。。。。
如果你不想编译整个kerenel的话也可以编译部分
大体过程如下
解压好源码
Building the kernel
1. bldenv -d ./opensolaris.sh
2. cd usr/src/uts
3. dmake all
Building the tools
1. cd usr/src/tools
2. dmake all
Booting
在 usr/src/uts下
1. Install -G my.kernel -k i86pc
2. su
3. cd /
4. tar xf /tmp/Install.my.kernel .
5. gedit /boot/solaris/filelist.ramdisk
6. add /platform/i86pc/my.kernel to the end
7. gedit /boot/grub/menu.lst
8. add an entry pointing kernel to my.kernel
9. reboot
最近的更新请参考
http://www.opensolution.org.cn/archives/214.html
也欢迎您纠错,我也将尽快修改掉。。。。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109695/showart_2141747.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP