您的位置:首页-> 资讯中心-> .net技术-> .net-> Unix编程/应用问答中文版 ---14.一些小工具的使用 15.32-bit/64-bit相关问题

.net

.net

本类阅读TOP10

·C语言的lex和yacc工具说明
·C/C++语言中指向函数的指针
·C语言库函数(S类字母) - 3
·C语言库函数(I类字母)
·(新手篇)C++Builder 6操作MS SQL Server数据库的SQL集锦
·Unix编程/应用问答中文版 ---20.shell script问题
·Unix编程/应用问答中文版 ---8.Solaris内核编程相关问题
·jsp文件操作之读取篇
·C++Builder5.0调用SQLSERVER7.0驱动编程
·C++ Builder中,sql server在客户端调用存储过程向服务器端备份数据库

精品推荐
Unix编程/应用问答中文版 ---14.一些小工具的使用 15.32-bit/64-bit相关问题

加入时间:2005-2-22 快乐下载

14.   一些小工具的使用 
14.1   
14.2   
14.3  只在本地文件系统上查找 
14.4   
-------------------------------------------------------------------------- 
15.   32-bit/64-bit相关问题 
15.1  Solaris下如何识别当前内核版本 
15.2  如何启动Solaris 32-bit/64-bit内核 
15.3  gcc支持64-bit编译吗 
15.4  Solaris启动时内核文件找不到了 
15.5  64-bit驱动程序无法在8下关联,但在7下工作正常 
-------------------------------------------------------------------------- 

14.3 只在本地文件系统上查找 

Q: 我不想在NFS AUTOFS CACHEFS这些文件系统上查找文件 

A: Sun Microsystems 2001-02-12 

下面举例演示如何不在NFS文件系统上查找文件 

# find / -name su -type f -print -o -fstype nfs -prune 

下例表示不在PROC文件系统中查找文件(参看/etc/vfstab文件) 

# find / -name su -type f -print -o -fstype proc -prune 

15. 32-bit/64-bit相关问题 

15.1 Solaris下如何识别当前内核版本 

Q: 我编写了一个内核模块,在Solaris 7/8下编译通过,模块中如何识别当前正在运 
   行内核版本 

A: Andrew Gabriel 

   参看adb使用的宏"utsname",32-bit的位于usr/lib/adb/utsname,此外可以参看 
   /usr/include/sys/utsname.h文件,但是这些不是DDI/DKI兼容的。 

   sysdef | more 看看 

A: scz <scz@nsfocus.com> 

非DDI/DKI兼容意味着丧失良好的可移植性,未来版本的Solaris可能不再提供相应的 
支持,但是就Kernel Hacking而言是可以一试的。 

adb -P 'sun>' -k /dev/ksyms /dev/mem 

sun>$</usr/lib/adb/sparcv9/utsname  <-- 使用64-bit宏 

utsname: 
utsname:        sys     SunOS 
utsname+0x101:  node    sun27 
utsname+0x202:  release 5.7 
utsname+0x303:  version Generic_106541-08 
utsname+0x404:  machine sun4u 
sun>$q 

cat /usr/lib/adb/sparcv9/utsname 

utsname+0=""       <-- 指定当前地址.为utsname 
+/"sys"8t257c      <-- t表示tab,c表示以字符方式显示1个字节 
+/"node"8t257c 
+/"release"8t257c  <-- +表示当前地址.递增 
+/"version"8t257c 
+/"machine"8t257c 

more /usr/include/sys/utsname.h 

#define _SYS_NMLN 257  /* 
                        * 4.0 size of utsname elements 
                        * Must be at least 257 to 
                        * support Internet hostnames. 
                        */ 
#define SYS_NMLN  _SYS_NMLN 

struct utsname 

    char sysname[_SYS_NMLN]; 
    char nodename[_SYS_NMLN]; 
    char release[_SYS_NMLN]; 
    char version[_SYS_NMLN]; 
    char machine[_SYS_NMLN]; 
}; 

显然adb下的命令是针对struct utsname结构来的。简单地truss uname -a,可以看 
到如下输出 

ioctl(1, TCGETA, 0xFFBEE5DC)                    = 0 
sysinfo(SI_ARCHITECTURE, "sparc", 257)          = 6 
sysinfo(SI_PLATFORM, "SUNW,Ultra-5_10", 257)    = 16 

暂时没有跟踪这几个系统调用在做什么,想必类似/usr/lib/adb/sparcv9/utsname宏。 

15.2 如何启动Solaris 32-bit/64-bit内核 

Q: Algos@Unix 水木清华 2001-12-04 18:12 

对于UltraSPARC-I/Solaris 8,可以修改/platform/sun4u/boot.conf文件,使操作 
系统运行在64位或者32位,但对于其他机型呢,比如E420、E450、E4500之类服务器 
怎么改?好像起来后就是64位的,怎么才能改成32位的呢? 

Q: 显然有一些32-bit驱动程序以及一些应用软件不能工作在64-bit内核下,比如gcc 
   编译的32-bit IP Filter。我必须启动到32-bit内核模式下,怎么办? 

A: dkoleary@mediaone.net 

32-bit : ok boot disk kernel/unix 
64-bit : ok boot disk kernel/sparcv9/unix 

为了设置成缺省启动内核模式 

32-bit : ok setenv boot-file kernel/unix 
64-bit : ok setenv boot-file kernel/sparcv9/unix 

为了确定你所启动的内核模式 

isainfo -b 

根据你所启动的内核模式,该命令分别返回32、64 

A: Will Wang <willcyw@kimo.com.tw> 2001-06-09 02:17 

一个办法就是启动时按Stop-A进入OK模式,输入 

ok> setenv boot-file kernel/unix 
ok> boot 

另一个办法是已经在shell状态下了,执行命令 

# eeprom "boot-file=kernel/unix" 

系统重启之后将自动加载32-bit内核 

15.3 gcc支持64-bit编译吗 

Q: gcc -v显示版本2.95.2,isainfo -kv显示64-bit sparcv9 kernel modules,我 
   企图通过指定"-mcpu=v9 -m64"获得64-bit代码,提示m64未被支持,仅仅指定 
   mcpu=v9,在汇编阶段报告""v8 can't generate v9 code",我使用的汇编器是 
   /usr/ccs/bin/as,随Solaris 7/8提供的。 

   这是什么问题,我需要一个64-bit汇编器吗,从哪里获取呢? 

A: Robert Banniza <robert@rootprompt.net> 

   我并不认为gcc 2.95.2已经开始支持64-bit编译模式,或许你应该考虑采用 
   Sun WorkShop Compiler SPARC 5.0/6.0。 

15.4 Solaris启动时内核文件找不到了 

Q: 我的Solaris 7莫名其妙死机了,只好关电源,再开,发现错误 
   boot with command:boot now 
   cann't open now 
   enter filename[now]: 
   怎么办 

A: dkoleary@mediaone.net 

启动时按Stop-A进入ok状态,在这里输入 

32-bit : ok boot disk kernel/unix 
64-bit : ok boot disk kernel/sparcv9/unix 

为了设置成缺省启动内核模式 

32-bit : ok setenv boot-file kernel/unix 
64-bit : ok setenv boot-file kernel/sparcv9/unix 

A: liqun.bbs@bbs.gznet.edu.cn 

试试这个,启动时按Stop-A进入OK状态 

OK> setenv boot-file kernel/unix 
OK> reset 

15.5 64-bit驱动程序无法在8下关联,但在7下工作正常 

Q: 一个64-bit驱动程序在Solaris 7下加载、关联(load & attach)成功,但在8下加 
   载(load)成功、关联(attach)失败。 

A: Sun Microsystems 1998-06-13 

从Solaris 8开始,64-bit驱动程序必须位于"sparcv9/"目录中。而在Solaris 7中, 
尽管不提倡,但即使64-bit驱动程序不在"sparcv9/"目录中,也可以加载并关联成功。 




相关文章

相关软件