LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: weixiao

RH7.3最终汉化实例与RedHat软件设置

[复制链接]
发表于 2006-10-5 19:33:38 | 显示全部楼层

打‘补丁’

摘录资料:
-----------------
逐行读取文件内容

http://blog.chinaunix.net/u/13329/showart.php?id=166401

$cat rename.sh

#!/bin/sh
#
#Author: cnscn
#Date : 2006-09-07
#Home : http://cnscn2008.cublog.cn
#
#read lines from file

function read_line_file
{
FILENAME=$1
while read LINE
do
echo ${LINE}
...
done < $FILENAME
}

#call function

read_line_file $1

#End of script.

$ cat a.txt | more
11563629962
11563634472
11561796722
11559395371
11564486721
11561724591
11559191541
11561739722
11559288902
11542068311
11558335531
11558479671
11558278691
11560002781

$rename.sh a.txt
11563629962
11563634472
11561796722
11559395371
11564486721
11561724591
11559191541
11561739722
11559288902
11542068311
11558335531
11558479671
11558278691
11560002781
---------------

My tips:
如果文本中有一条记录是“*** good morning *** ”,即文本含‘*’星号。echo ${LINE} 要修改成 echo "${LINE}"

即:
function read_line_file
{
FILENAME=$1
while read LINE
do
echo "${LINE}"
...
done < $FILENAME
}

------------
------------
回复 支持 反对

使用道具 举报

发表于 2006-10-7 19:50:33 | 显示全部楼层

技巧实例 4

(平时操作笔记摘录)

16 退出登录脚本 .bash_logout

设置关机自动运行程序,注意:
脚本.bash_logout 是登录的用户(注销)退出至待登录界面时执行。所以 X 重启(reboot) 、或关机(shutdown) 、或退出图形界面,该文件不会被执行。

17 查询终端的信息

控制台或模拟终端机(GNOME terminal)中运行:
$ echo $(tput longname)
X11 terminal emulator

其余应用:
$ bold=`tput smso`;offbold=`tput rmso`;echo "${bold} Term info : ${offbold} $(tput longname)";unset bold offbold

18 产生随机数的设备(/dev/random)

随机数是供给应用程式随时使用,Linux核心让/dev/random不停地运作产生高质量的随机数。随机数通常取时间种子。如时间延迟行为(击键行为各操作鼠标行为),例子:

gnome-terminal终端机运行:
$ hexdump /dev/random

$ od -t x1 /dev/random

操作测试:
1 首先鼠标和键盘停止操作,观察/dev/random字节流运作。
2 击键或移动鼠标,观察/dev/random字节流的变化。
3 “ Ctrl + C ” 停止显示。

19 Vi 恢复功能

Vi 正在编辑文档时‘当机’,重启系统,重新 Vi 文档时,程式提示‘注意信息’,你可选择ENTER继续编辑文档。除非你删除 ‘.文档名.swap’ (隐藏文件),否则每次Vi 该文档时提示‘注意信息’。

20 非正常关机(不干净)的RH自动修复磁盘

‘当机’、非正常关机,重启RH系统,启动脚本提示自动修复磁盘,提示信息:
Your system appears to have shut down uncleanly
Press Y within 5 seconds to force file system integrity check...

这时你可能反应不过来,或没翻字典查单词,错失5秒内按‘Y’键,你可以选择用启动光盘启动系统,fsck 强制检修系统。

你会因没用到RH智能化服务而耿耿于怀,选择按以下修改:
1 修改等待秒数
编辑/etc/rc.d/rc.sysinit,把 AUTOFSCK_TIMEOUT=5 修改成 AUTOFSCK_TIMEOUT=15

2 添加标志文件autofsck
/etc/sysconfig 目录里增加一个文件 autofsck.加入内容:
AUTOFSCK_DEF_CHECK=yes
PROMPT=yes

非正常关机重启RH系统时‘提示信息’显示成:
Press N within 秒数 seconds to not force file system integrity check...

这时你不必担心按键速度,RH自动修复磁盘。
注:提示按‘N’键,是要求跳过fsck检修。


----------
----------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:23:29 | 显示全部楼层

分析‘系统记录工具’syslog (1)

RH 系统套件 sysklogd-1.4.1-8.i386.rpm 包含 syslog 记录工具,由系统启动时执行。syslog(/etc/rc.d/init.d/syslog)实质是一个脚本,负责初始化 /sbin/klogd 、/sbin/syslogd 守护进程,放在后台运行。

查看 syslogd 和 klogd 当前的系统设置
$ ps -ax
$ ps -ax | sed -n '/[a-z].*logd/p'
553 ? S 0:00 syslogd -m 0
558 ? S 0:00 klogd -x

klogd 负责记录内核信息的守护进程。
‘klogd -x’是省略记录内核与System.map文件的相关信息。System.map包括 kernel 的功能及位置。top、ps命令会去读取该文件来显示系统目前的资讯状态。

syslogd 是某一软体要求 syslog 服务并达成嵌接,进行记录工作的守护进程。
‘syslogd -m 0’:syslogd的 -m 选项是设置两个mark命令消息之间的分钟数(timestamp时间戳)。默认设置mark命令每20分钟会发送一个Log_info优先级的消息。‘syslogd -m 0’是关闭这项功能。

查看系统设置的嵌接文件(/etc/syslog.conf)

syslog 脚本工具提供记录信息的服务,客户程式有目的性地要求享受服务,向‘syslog’申请及注册,并在 /etc/syslog.con f配置相关格式的项目。

/etc/syslog.conf 配置格式: facility.level action
空白行和以#开头的行可以忽略。facility.level字段叫作选择器,选择器是由syslog设备和syslog优先级构成的,与action字段之间应当用标号(Tab)分隔。

syslog.conf 内容是系统默认设置的项目,就是系统套件获得怎样的syslog服务:
$ cat /etc/syslog.conf
--------------------------------------------
# kern.* 是把所有内核消息记录到/dev/console(控制台显示)
# 另外,调试信息也在控制台显示,默认取消这项功能
#kern.* /dev/console

# 除syslog指定设备 mail 、authpriv和cron外
# 所有syslog指定设备的所有优先级的消息都被记录在/var/log/messages文件中
# 注:这样的设置,忽略的设备通常被记录单一的文件
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# authpriv设备上所有优先级的消息都被记录在/var/log/secure文件
authpriv.* /var/log/secure

# mail 设备所有优先级的消息都被记录在/var/log/maillog文件
mail.* /var/log/maillog

# cron 所有优先级的消息都被记录在/var/log/cron文件
cron.* /var/log/cron

# 注:syslog设备(如mail)可以理解成与mail类似的行为
# 优先级的消息是分类‘记录的消息’
# 正在登录(在线)所有人都收到紧急情况消息
# 在各自的终端程序显示(如:tty 、pty)
*.emerg *

# 把uucp和news设备设置成crit优先级或更高的优先级别
# crit优先级是记录消息在软体工具发出友好错误信息之前
uucp,news.crit /var/log/spooler

# 记录启动消息到 /var/log/boot.log 文件
# local7设备是由启动程序指定
local7.* /var/log/boot.log

# 注:syslog设备local[0-7]是和一些专制程序一起使用。
# 例: SSH指定 local5 设备
# sudo 程序默认记录设备local2,可以使用 "--with-logfac=facility"选项来更改
-------------------------------------------

/etc/syslog.conf 配置文件项目"*.info;mail.none;authpriv.none;cron.none[Tab]/var/log/messages",你可以写成 "*.info[Tab]/var/log/messages",这意味邮件收发的行为的消息记录分别写入/var/log/messages和/var/log/maillog 。即重复的记录消息,你会觉得被人嘲笑 at sometimes 。

-----------
-----------
-----------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:32:28 | 显示全部楼层

分析‘系统记录工具’syslog (2)

syslog 设备 (facility)
-----------------------------
authpriv ________ 可能包括特权信息(如用户身份验证的行为)。正常情况下,私人信息(如密码口令)不会被记录。
cron ___________ 跟 cron 和 at 相关的消息。
daemon ________ 跟各种守护进程相关的消息。
kern ___________ 内核消息。这种消息会先经过klogd守护进程。
lpr _____________ 跟打印服务相关的消息。
mail ____________ 跟电子邮件相关的消息。
mark ___________ 用于产生时间信息的一个特殊的syslog设备。syslogd命令的 -m 选项。
news ___________ 新闻服务器的消息。
syslog __________ 由 syslog 产生的消息。
user ____________ 由一个用户程序产生的任何消息。系统设定的默认设备。
uucp ___________ 由 uucp 产生的消息。
local0-local7 _____ 这些设备用于随一些定制程序一起使用。
* ______________ 通配符,除 mark 外的所有设备。
-----------------------------

syslog 优先级 (level)
-----------------------------
emerg _____ 系统不可用。
alert ______ 存在一种需要迅速纠正的情况。
crit _______ 阻止某个工具或子系统功能发挥的一各错误情况。
err _______ 阻止某个工具或子系统组件功能发挥的一种错误情况。
warning ___ 一个警告消息。
notice _____ 具有意义的一种正常情况。
info _______ 信息性消息。
debug _____ 附加性消息,不反映功能情况或问题。
none ______ 无安全级别。通常当设备使用通配符(*)时,用于指定一个设备另外操作。
* _________ 所有优先级别,除了 none 。
-----------------------------

syslog 操作 (action )
-----------------------------
file ______________ 指定记录消息的日志文件。(如/var/log/messages)
terminal 或 printer __ 完全限定的串口或并行设备说明符,如/dev/console,消息将会被记录在这个设备上。
@hostname _______ 消息记录在可识辨(运行syslogd)的远程目的主机。
username _________ 使用write工具发送消息给指定的用户。
named pipe _______ syslog消息记录在一个指定的管道文件。意味着记录将被另一脚本或程序读取。
-----------------------------

注:通常消息记录操作会写入/var目录下的日志文件中。这里日志是作笔记的意思,不等价‘日志文件系统’中日志 。

------
-------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:38:39 | 显示全部楼层

分析‘系统记录工具’syslog 之 syslogd 测试

测试:查看启动消息
启动系统后,more命令分别查看/var/log/messages和/var/log/boot.log,发现启动消息重复,如下:

命令行操作:
$ su -
#

显示最后一次登录日子
# boottime=$(sed -n '$p' /var/log/boot.log | sed 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9] .*//')
注:看来很复杂,预防单号日子如(Oct__4)含两个空格 。

# echo ${boottime}
Oct 11

# grep "^${boottime}.*syslogd startup succeeded" /var/log/boot.log
Oct 11 10:09:17 wei 10 11 10:09:17 syslog: syslogd startup succeeded
# grep "^${boottime}.*syslogd startup succeeded" /var/log/messages
Oct 11 10:09:17 wei 10 11 10:09:17 syslog: syslogd startup succeeded

# unset boottime

为什么 RH 不在 /etc/syslog.conf 中修改成:
*.info;mail.none;authpriv.none;cron.none;local7.none[Tab]/var/log/messages

注:应该有他们的考虑依据


测试:启动消息的优先级
Root权限操作:
# mkdir /root/boottest
# cp /etc/syslog.conf /root/syslog.conf.bak

# vi /etc/syslog.conf
追加下面项目:
---------------------------
# Add
local7.=alert[Tab]/root/boottest/boot.alert
local7.=crit[Tab]/root/boottest/boot.crit
local7.=err[Tab]/root/boottest/boot.err
local7.=warning[Tab]/root/boottest/boot.warning
local7.=notice[Tab]/root/boottest/boot.notice
local7.=info[Tab]/root/boottest/boot.info
local7.=debug[Tab]/root/boottest/boot.debug
---------------------------

[ 注: [Tab] 是 Tab 键 ]

依照 syslog.conf 配置建立日志文件
# touch /root/boottest/boot.{alert,crit,err,warning,notice,info,debug}
[ 注:可以跳过这一步,syslog服务重启后指定的日志文件自动创建 ]

重启syslog服务,注册项目
# /etc/rc.d/init.d/syslog restart

注:观察/root/boottest目录,这时/root/boottest/boot.notice文件被写入。

测试选择器是否正常记录消息(如:local7.debug)
# logger -p local7.debug -t WEI "this is a test"
# cat /root/boottest/boot.debug
Oct 11 13:25:57 wei 10 11 13:25:57 WEI: this is a test

注:/var/log/messages 和 /var/log/boot.log 都被写入。

测试系统启动,日志文件按照优先级分类的情况
# rm -f /root/boottest/*
# reboot

注:正常情况,/root/boottest/boot.notice日志文件被写入,说明notice优先级起作用。

恢复原来设置
/etc/syslog.conf中追加项目内容用‘#’注释掉,或:
# cat /root/syslog.conf.bak > /etc/syslog.conf

# /etc/rc.d/init.d/syslog restart

[ 注:你可以选择加入项目“daemon.debug[Tab]/var/log/daemon.log” ]

----------------
----------------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:46:58 | 显示全部楼层

分析‘系统记录工具’syslog 之 klogd 测试

系统记录工具syslog负责初始化syslogd 、klogd守护进程。klogd 守护进程负责捕获内核消息并选择记录方式。默认设置情况下,klogd 捕获内核消息交给syslogd记录。

1 klogd 捕获内核消息交给syslogd记录

# cat /etc/syslog.conf
-------------------------------
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
# kern.*[Tab]/dev/console
..............................
-------------------------------

默认设置把内核消息注释掉,系统认为个人用户操作,/var/log/dmesg 和 /var/log/messages里的内容已经足够。/var/log/dmesg 里的内容是开机时部分内核消息,跟 klogd 记录方式不同。

"kern.*[Tab]/dev/console" : 把所有内核消息记录到/dev/console(控制台),两字段间用Tab键分隔。

/dev/console (控制台) : 这里以 RH 启动来划分,开机后加载内核,执行INIT程序直到提示输入账号登录前的屏幕界面,即一直打印启动信息的操作平台。
/dev/tty1 (默认登录的虚拟控制台) : 输入账号 、密码登录时及登录后的操作平台。

添加记录内核消息的日志文件
# vi /etc/syslog.conf
-------------------------------
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*[Tab]/dev/console
kern.*[Tab]/var/log/kern.log
..............................
-------------------------------

# reboot

# more /var/log/kern.log

注: 不是进行内核调试,内核消息一般是系统启动时加载内核的消息。

恢复原来设置
删除"kern.*[Tab]/var/log/kern.log"项目或用‘#’注释掉,选择删除/var/log/kern.log文件 。

2 klogd 捕获内核消息发送给指定文件(不经由syslogd处理记录)

klogd -f filename 选项捕获内核消息不需要递交给syslogd守护进程,直接记录到指定的日志文件。

阅读 /etc/rc.d/init.d/syslog 脚本查找修改选项的方法。/etc/sysconfig/syslog 文件是传递变量,从这个文件着手,原文件内容:

# cat /etc/sysconfig/syslog
---------------------------------
# Options to syslogd
# -m 0 disables 'MARK' messages.
# -r enables logging from remote machines
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-m 0"
# Options to klogd
# -2 prints all kernel oops messages twice; once for klogd to decode, and
# once for processing with 'ksymoops'
# -x disables all klogd processing of oops messages entirely
# See klogd(8) for more details
KLOGD_OPTIONS="-x"
---------------------------------

# ps -ax | grep klogd
1789 ? S 0:00 klogd -x
1831 pts/0 S 0:00 grep klogd

编辑/etc/sysconfig/syslog,KLOGD_OPTIONS="-x" 修改成 KLOGD_OPTIONS="-f /var/log/kern-klogd.log"

重启syslog服务
# /etc/rc.d/init.d/syslog restart
Shutting down kernel logger: 。。。。。。。。。。。。。。[ OK ]
Shutting down system logger: 。。。。。。。。。。。。。 [ OK ]
Starting system logger: 。。。。。。。。。。。。。。。。  [ OK ]
Starting kernel logger: 。。。。。。。。。。。。。。。。。 [ OK ]

# ps -ax
# ps -ax | grep klogd
1873 ? S 0:00 klogd -f /var/log/kern-klogd.log

# cat /var/log/kern-klogd.log
klogd 1.4.1, log source = /proc/kmsg started.
Inspecting /boot/System.map-2.4.18-3
Loaded 16039 symbols from /boot/System.map-2.4.18-3.
Symbols match kernel version 2.4.18.
Loaded 497 symbols from 17 modules.

不是调试内核,消息少很多。或者现在重启系统,观察 /var/log/kern-klogd.log 的记录,或跟上例 /var/log/kern.log 文件作一些比较。留意/var/log/messages 有没有相应启动时间的消息的记录 写入 。


补充一个例子:
首先确保在文本模式(黑屏)下操作,若正在 X 下操作,按Ctrl+Alt+Fn转换文本模式。

按魔术组合键 < Ctrl+ScrollLock >, 分别给出当前运行的进程和所有进程的堆栈跟踪。
如 字符[<c0108913>] system_call [kernel] 0x33

然后稍等,输入命令(如 ls)测试是否已经回到正常用户状态。或者按Ctrl+Alt+F7返回 X 下,查看/var/log/kern-klogd.log文件:
# cat /var/log/kern-klogd.log
................................
................................
<4>[system_call+51/56] system_call [kernel] 0x33
<4>
注:已经转换成内核的符号地址

[ 注:选择还原文件,编辑/etc/sysconfig/syslog文件,修改回原来KLOGD_OPTIONS="-x" ]

=======
klogd笔记:
-------------------------
NAME
klogd - Kernel Log Daemon

SYNOPSIS
klogd [ -c n ] [ -d ] [ -f fname ] [ -iI ] [ -n ] [ -o ] [-p ] [ -s ] [ -k fname ] [ -v ] [ -x ] [ -2 ]

DESCRIPTION
klogd 是拦截并且记载 Linux 内核消息的一个系统后台程序。

OPTIONS
-c n ----- 设置日志等级。
              
-d ------- 启用‘调试’模式。

-f file -- 记载消息到指定的文件,而非到 syslog 设备。

-i -I ---- 发送信号到当前运行的klogd后台程序,转换控制符号标志信息的 装载/重新装载。-i 转换信号 实现重

新装载 内核模块标志。-I 转换信号 实现重新装载 静态内核标志和内核模块标志(动态)。

-n ------- 避免 自动后台运行。该选项是处理 klogd 随 init程序启动而运行的情况。

-o ------- 在‘one-shot’模式执行。该功能是 读取并且记载来自 内核消息缓冲区的所有信息。

-p ------- 启用paranoia(妄想狂)功能选项。该选项用在klogd 装载内核模块标志时,能够检测 在内核消息流中。

的Oops字符(装载内核模块出现的问题消息)

-s ------- 该功能实现 强制 klogd使用系统调用接口 应用在内核消息缓冲区。

-k file -- 使用 内核源符号标志信息指定的文件。

-v ------- 打印版本信息并退出

-x ------- 省略 EIP翻译,并且因此不读取 System.map。

-2 ------- 当启用这功能,符号标志有两种格式:一种进行 地址-标志 解析,一种 raw 文本(裸消息)。方便外部程序(例如ksymoops)使用自己的方式处理消息。

------------
------------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:53:47 | 显示全部楼层

ldconfig 命令行用法

ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache] [-c FORMAT] [--format=FORMAT] [-V] [-?|--help|--usage] path...

ldconfig 可用的选项说明如下:

(1) -v或--verbose : 用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字.

(2) -n : 用此选项时,ldconfig 仅扫描命令行指定的目录,不扫描默认目录(/lib,/usr/lib),也不扫描配置文件 /etc/ld.so.conf 所列的目录.

(3) -N : 此选项指示ldconfig 不重建缓存文件(/etc/ld.so.cache).若未用-X 选项,ldconfig照常更新文件的连接.

(4) -X : 此选项指示ldconfig 不更新文件的连接.若未用-N 选项,则缓存文件正常更新.

(5) -f CONF : 此选项指定动态链接库的配置文件为CONF,系统默认为/etc/ld.so.conf.

(6) -C CACHE : 此选项指定生成的缓存文件为CACHE,系统默认的是/etc/ld.so.cache,此文件存放已排好序的可共享的动态链接库的列表.

(7) -r ROOT : 此选项改变应用程序的根目录为ROOT(是调用chroot函数实现的).选择此项时,系统默认的配置文件/etc/ld.so.conf,实际对应的为 ROOT/etc/ld.so.conf.如用-r /usr/zzz 时,打开配置文件/etc/ld.so.conf 时,实际打开的是/usr/zzz/etc/ld.so.conf文件.用此选项,可以大大增加动态链接库管理的灵活性.

(8) -l : 通常情况下,ldconfig 搜索动态链接库时将自动建立动态链接库的连接.选择此项时,将进入专家模式,需要手工设置连接.一般用户不用此项.

(9) -p或--print-cache : 此选项指示ldconfig 打印出当前缓存文件所保存的所有共享库的名字.

(10) -c FORMAT 或 --format=FORMAT : 此选项用于指定缓存文件所使用的格式,共有三种 : old (老格式),new(新格式)和compat(兼容格式,此为默认格式).

(11) -V : 此选项打印出ldconfig 的版本信息,而后退出.

(12) -? 或 --help 或 --usage : 这三个选项作用相同,都是让ldconfig 打印出其帮助信息,而后退出.

例 1 :输出缓存文件中的动态链接库列表
# ldconfig -p
809 libs found in cache `/etc/ld.so.cache'
libzvt.so.2 (libc6) => /usr/lib/libzvt.so.2
libzvt.so (libc6) => /usr/lib/libzvt.so
..............................
..............................

例 2 :
# ldconfig -v
注: ldconfig命令在运行正常的情况下,默认不输出什么东西.本例中用了-v选项,以使ldconfig在运行时输出正在扫描的目录及搜索到的共享库, 用户可以清楚地看到运行的结果.执行结束后,ldconfig将刷新缓存文件/etc/ld.so.cache.

=== >> 摘自《LINUX 下动态链接库的创建与应用》

注:资料下载来自嵌入式资讯网
http://www.embeded.cn/down_list/index_list.asp

----------------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 21:59:37 | 显示全部楼层

ldd 命令行用法如下:

ldd [--version] [-v|--verbose] [-d|--data-relocs] [-r|--function-relocs] [--help] FILE...

各选项说明如下:
(1) --version : 打印 ldd 的版本号.
(2) -v 或 --verbose : 此选项指示ldd 输出关于所依赖的动态链接库的尽可能详细的信息.
(3) -d 或 --data-relocs : 此选项执行重定位,并且显示不存在的函数.
(4) -r 或 --function-relocs : 此选项执行数据对象与函数的重定位,同时报告不存在的对象.
(5) --help : 此选项用于打印出ldd 的帮助信息.

例子:
$ ldd $(which date)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

‘ => ’ 前面是为动态链接程序所需的动态链接库的名字,而‘ => ’后面的是运行时系统实际调用的动态链接库的名字(如果需要的动态链接库在系统中不存在时,‘ => ’后面将显示"not found")。

‘ (0xXXXXXXX) ’用括号括住的数字属于虚拟的执行地址。

例子中 libc.so.6 是基本 C 库,/lib/ld-linux.so.2 是动态装入库 ( 用于动态链接库的装入及运行 ) 。

$ ldd -v $(which date)
列出除 /bin/date 需要的动态链接库外,还列出程序需要的动态链接库版本方面的信息。

$ ldd $(which mozilla)
not a dynamic executable

-----------
-----------
-----------
回复 支持 反对

使用道具 举报

发表于 2006-10-13 22:05:47 | 显示全部楼层

记起有一次操作:

查找内核属于的系统结构 (print the host processor type)
-----------------------------------------------------------

使用PC架构为 K7 (Athlon),平时安装软件都是.i386.rpm居多。系统用久,总是怀疑安装系统时是否安装对应的rpm包(kernel-2.4.18-3.athlon.rpm),uname 命令判断不明确。

uname 命令判断
$ uname -a
Linux wei 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 unknown

打印 机器类型
$ uname -m
i686

注:i686 系统结构最初包括 Intel Pentium II 和 AMD K6 32位微处理器,现在i686机器包括高档PC架构的机器。用这判断 processor type 行不通。

打印 微处理器类型
$ uname -p
unknown

linux (内核)的系统结构最大关系是微处理器类型。uname 程式回应“unknown”,更加怀疑RH安装内核时判断processor type 能力。

rpm 命令判断
$ rpm -qi kernel
显示详细的软件包内容,kernel 编译来源于 "kernel-2.4.18-3.src.rpm",判断不到。

$ rpm -V kernel
.M...... /dev/shm

rpm -V 参数 -V 是要求进行RPM软件包验证,即检查现在软件包组件是否与原始安装软件包相同(文件是否被动过)。相对 kernel 软件包验证出 “.M...... /dev/shm”属于正常。还是判断不到微处理器类型。

使用安装光盘里的kernel软件包逐一验证:
$ ls /mnt/cdrom/RedHat/RPMS/kernel*
/mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.athlon.rpm
/mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.i386.rpm
/mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.i686.rpm
/mnt/cdrom/RedHat/RPMS/kernel-bigmem-2.4.18-3.i686.rpm
/mnt/cdrom/RedHat/RPMS/kernel-pcmcia-cs-3.1.27-18.i386.rpm
/mnt/cdrom/RedHat/RPMS/kernel-smp-2.4.18-3.athlon.rpm
/mnt/cdrom/RedHat/RPMS/kernel-smp-2.4.18-3.i586.rpm
/mnt/cdrom/RedHat/RPMS/kernel-smp-2.4.18-3.i686.rpm

$ rpm -Vp /mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.i386.rpm
..................
..................

$ rpm -Vp /mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.i686.rpm
..................
..................
[ 注:显示大量信息表示不属于这软件包 ]

$ rpm -Vp /mnt/cdrom/RedHat/RPMS/kernel-2.4.18-3.athlon.rpm
.M...... /dev/shm

肯定是这kernel-2.4.18-3.athlon.rpm软件包,是 athlon 微处理器。

$ uname -a|sed 's/unknown/athlon/'
Linux wei 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 athlon

Tips : RH 自动安装套件时能判断微处理器。uname 程式应该能判断才对。

------------
------------
------------
回复 支持 反对

使用道具 举报

发表于 2006-10-29 15:21:47 | 显示全部楼层

小小收集

http://rhlinux.ys168.com 自助小店
LinuxDistribution子目录 linux-logo1.rar , linux-logo2.rar 压缩文件
大约有510多个Linux发行版本的图标

----------
----------
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表