免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11177 | 回复: 13
打印 上一主题 下一主题

opensolaris 内核编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-10 23:46 |只看该作者 |倒序浏览
opensolaris 内核编译
作者:<jh1405@gmal.com>
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
也欢迎您纠错,我也将尽快修改掉。。。。

[ 本帖最后由 ljh1405 于 2008-12-23 00:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-12-11 18:47 |只看该作者
没人有兴趣?自己顶下吧!!

论坛徽章:
0
3 [报告]
发表于 2008-12-11 22:13 |只看该作者

论坛徽章:
7
荣誉会员
日期:2011-11-23 16:44:17水瓶座
日期:2013-08-28 21:20:16丑牛
日期:2013-10-02 21:01:462015年迎新春徽章
日期:2015-03-04 09:54:45操作系统版块每日发帖之星
日期:2016-06-05 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-20 08:24:0515-16赛季CBA联赛之四川
日期:2016-08-18 15:02:02
4 [报告]
发表于 2008-12-11 22:40 |只看该作者
lz的帖子不错,希望网友们多多交流,共同学习,共同进步

论坛徽章:
0
5 [报告]
发表于 2008-12-12 17:10 |只看该作者
目前编译solaris内核还不像Linux那样普及..:wink:

论坛徽章:
0
6 [报告]
发表于 2008-12-12 17:22 |只看该作者
收藏谢谢分享

论坛徽章:
0
7 [报告]
发表于 2008-12-13 15:30 |只看该作者
你这个仅仅是在编译内核吗

论坛徽章:
0
8 [报告]
发表于 2008-12-13 21:36 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2008-12-20 16:44 |只看该作者
楼主 好牛逼 啊!  我也在编译!  遇到 很多 问题 ! 用的 sunstudio11
相向楼主 请教 些问题! 可否 来给个联系方式!!!!!

论坛徽章:
0
10 [报告]
发表于 2008-12-20 16:46 |只看该作者
报错:dmake warning :'install'do not remake ;是什么原因啊!
可否解释下!!!!
谢谢 啊~!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP