Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2473831
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-08-18 23:15:44


9.1.1. 无法引导入 Red Hat Linux

这个问题通常是由于在安装了 Red Hat Linux 之后安装另一个操作系统造成的。某些操作系统假定你的计算机上没有安装任何其它操作系统,因而覆盖最初包含 GRUB 或 LILO 引导装载程序的主引导记录(MBR)。如果引导装载程序被这种方式覆盖了,除非你进入救援模式并重新配置引导装载程序,你将无法引导 Red Hat Linux。

另一个常见问题出现在使用分区工具来重划分区大小或在安装后从空闲空间中创建新分区从而改变了分区的顺序之后。如果你的 / 分区的分区号码改变了,引导装载程序将无法找到它来挂载这个分区。要解决这个问题,引导入救援模式,若使用 GRUB,修改 /boot/grub/grub.conf 文件,若使用 LILO 则修改 /etc/lilo.conf 文件。你 必须 在修改 LILO 配置文件时还运行 /sbin/lilo 命令。

9.1.2. 硬件或软件问题

这一类包括的情况比较广泛。其中两种可能的情况是硬盘驱动器失效或在引导装载程序的配置文件中指定了无效的设备或内核。如果以上任何一种情况发生了,你将无法引导入 Red Hat Linux。然而,如果你引导入系统恢复模式之一,你也许能够解决这个问题,或至少抢救出你的最重要的文件。

9.1.3. 根口令

如果你忘记了根口令该怎么办?要把它重设为另一个口令,引导入救援模式或单用户模式,并使用 passwd 命令来重设根口令。

9.2. 引导入救援模式

救援模式提供了完全从磁盘、光盘或其它引导方式而不是从系统硬盘驱动器中引导一个小型 Red Hat Linux 环境的能力。

如它的名称所暗示,救援模式是用来把你从某种情况中解救出来的模式。在正常操作中,你的 Red Hat Linux 系统使用位于系统硬盘上的文件来处理一切事务 ? 运行程序;贮存文件;诸如此类。

然而,在有些情况下,你可能无法使 Red Hat Linux 运行得完整到可以访问系统硬盘上文件的程度。使用救援模式,即便你无法从硬盘上运行 Red Hat Linux,你也可以存取贮存在该系统硬盘上的文件。

要引导入救援模式,你必须能够使用以下方法之一来引导系统:

通过从根据 bootdisk.img 映像制作的安装引导盘来引导系统。

通过从安装引导光盘中引导。

通过从 Red Hat Linux 光盘 #1 中引导。

使用以上方法引导后,在安装引导提示下输入以下命令:

linux rescue

你会被提示回答几个基本的问题,包括要使用的语言。它还提示你选择有效救援映像的位置。从 「本地光盘」 、 「硬盘驱动器」 、 「NFS 映像」 、 「FTP」 、或 「HTTP」 中选择。所选位置中必须包含一个有效的安装树,这个安装树必须和你用来引导的光盘 #1 中的 Red Hat Linux 版本相同。如果你使用一个引导光盘或磁盘来启动救援模式,这个安装树必须和创建介质所用的安装树相同。关于如何在硬盘驱动器、NFS 服务器、FTP 服务器、或 HTTP 服务器上设置安装树的信息,请参阅 《Red Hat Linux 安装指南》 。

如果你选择的救援映像不需要网络连接,你会被征询是否要建立网络连接。 如果你想把文件备份到另一台计算机上或从共享网络位置上安装一些 PRM 软件包时,网络连接会很有用。

你还会看到以下消息:

The rescue environment will now attempt to find your Red Hat Linux installation and mount it under the directory /mnt/sysimage. You can then make any changes required to your system. If you want to proceed with this step choose 'Continue'. You can also choose to mount your file systems read-only instead of read-write by choosing 'Read-only'. If for some reason this process fails you can choose 'Skip' and this step will be skipped and you will go directly to a command shell.

如果你选择 「继续」 ,它会试图把你的文件系统挂载到 /mnt/sysimage 目录下。如果它挂载分区失败,它会通知你。如果你选择 「只读」 ,它会试图在 /mnt/sysimage 目录下挂载你的文件系统,但是挂载模式为只读。如果你选择 「跳过」 ,你的文件系统将不会被挂载。如果你任务你的文件系统已损坏,选择 「跳过」 。

一旦你的系统进入了救援模式,在 VC(虚拟控制台) 1 和 VC 2(使用 [Ctrl] - [Alt] - [F1] 组合键来进入 VC 1, [Ctrl] - [Alt] - [F2] 来进入 VC 2)上会出现提示:

-/bin/sh-2.05b#

如果你选择了 「继续」 来自动挂载你的分区,并且它们被成功地挂载了,那么你就会进入单用户模式。

即便你的文件系统被挂载,救援模式中的默认根分区只不过是一个临时的根分区,而不是正常用户模式(运行级别 3 或 5)中的文件系统根分区。如果你选择要挂载文件系统,并且它被成功地挂载了,你可以通过执行以下命令来把救援模式的根分区改变为你的文件系统的根分区:

chroot /mnt/sysimage

如果你需要运行 rpm 之类的命令,改变根分区就会很有用,因为这类命令要求你的根分区被挂载为 / 。要退出 chroot 环境,键入 exit ,你就会返回到提示。

如果你选择 「跳过」 ,你仍可以试图在救援模式中手工挂载分区,方法是:创建一个目录,如, /foo ,然后键入以下命令:

mount -t ext3 /dev/hda5 /foo

在以上命令中, /foo 是你创建的目录, /dev/hda5 是你想挂载的分区。如果分区的类型是 ext2 ,则把 ext3 替换为 ext2 。

如果你不知道分区的名称,使用以下命令来列举它们:

fdisk -l

从提示下,你可以运行许多有用的命令,例如:

list-harddrives ,列举系统中的硬盘驱动器

ssh 、 scp 和 ping ,查看网络是否被启动

dump 和 restore ,用于带有磁带驱动器的用户

parted 和 fdisk ,用来管理分区

rpm ,用于安装或升级软件

joe ,用来编辑配置文件(如果你试图启动其它常用的编辑器,如 emacs 、 pico 或 vi , joe 编辑器仍会被启动。)

注:要创建安装引导盘,插入一张空白磁盘,使用 Red Hat Linux 光盘 1 上的 images/bootdisk.img 文件,并执行命令: dd if=bootdisk.img of=/dev/fd0 。

要创建安装引导光盘,请参阅 《Red Hat Linux 安装指南》 中的说明。

9.3. 引导入单用户模式

单用户模式的优越性之一是你不必使用引导软盘或引导光盘;不过,它仍旧给你提供了把文件系统挂载为只读模式或干脆不挂载这两种选择。

在单用户模式中,你的计算机引导入运行级别 1。你的本地文件系统被挂载,但是你的网络不会被激活。你有一个可用的系统维护 shell。和救援模式不同,单用户模式会自动试图挂载你的文件系统;如果你的文件系统无法被成功挂载, 不要 使用单用户模式。如果你的系统上的运行级别 1 的配置被损坏,你就不能使用单用户模式。

如果你的系统引导了,但是在引导后却不允许你登录,你可以试着使用单用户模式。

如果你使用的是 GRUB,使用以下步骤来引导入单用户模式:

如果你配置了 GRUB 口令,键入 p 并输入口令。

选择带有你想引导的内核版本的 Red Hat Linux ,然后键入 e 来编辑。你会看到用于所选卷标的配置文件中的一个项目列表。

选择起首为 kernel 的行,然后键入 e 来编辑那一行。

转到行尾,然后键入 single (按 [空格] 键,然后键入 single )。按 [Enter] 来退出编辑模式。

回到了 GRUB 屏幕后,键入 b 来引导入单用户模式。

如果你使用的是 LILO,在 LILO 引导提示(如果你使用的是图形化 LILO,你必须按 [Ctrl] - [x] 来退出图形化屏幕后再进入 boot: 提示)后键入:

linux single

9.4. 引导入紧急模式

在紧急模式中,你会被引导入尽可能少的系统环境中。根文件系统将会被挂载为只读模式,而且几乎什么都不会被设置。紧急模式优于单用户模式之处在于:在紧急模式中, init 文件没有被载入。如果 init 被损坏或停止运行,你仍可以挂载文件来恢复在重新安装中会丢失的数据。

要引导入紧急模式,使用在第 9.3 节中描述的引导单用户的方法。其中有一个例外,把关键字 single 替换成关键字 emergency 。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

171楼 旧帖 06-07-17 23:45

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9控制台访问

当普通用户(非根用户)在本地登录到计算机上,他们被授予两类特殊权限:

他们可以运行某些通常无法运行的程序

他们可以访问某些通常无法访问的文件(通常是用来访问磁盘、光盘等的特殊设备文件)

由于单个计算机有多个控制台,多位用户可以在同一时间内在计算机上本地登录,其中之一必定在访问这些文件的角逐中“获胜”。第一个在控制台登录的用户完全拥有那些文件。一旦第一个用户注销,下一个登录的用户就会拥有这些文件。

与之相反, 每个 在控制台登录的用户都被允许运行通常只限于根用户的程序来完成任务。如果 X 在运行,这些行动可以被包括在图形化用户界面的菜单内。在该发行版本中,可从控制台访问的程序包括 halt 、 poweroff 、和 reboot 。

24.1. 禁用通过 Ctrl-Alt-Del 关机

按照默认设置, /etc/inittab 文件指定你的系统可在控制台使用 [Ctrl] - [Alt] - [Del] 键组合来关闭并重启系统。如果你想完全禁用这项能力,你需要把 /etc/inittab 文件中下面一行变成注释,方法是在句前加一个井号( # ):

ca::ctrlaltdel:/sbin/shutdown-t3-rnow

另外,你可能只是想授予个别非根用户从控制台使用 [Ctrl] - [Alt] - [Del] 来重启系统的权利。你可以通过下面的步骤来把该特权仅限定给某些用户使用:

在上面显示的 /etc/inittab 的那一行中添加 -a 选项,如下所示:

ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now

-a 标志通知 shutdown 命令去寻找 /etc/shutdown.allow 文件,我们在下一步骤中将会创建该文件。

在 /etc 目录中创建一个叫做 shutdown.allow 的文件。 shutdown.allow 文件应该列出允许使用 [Ctrl] - [Alt] - [Del] 来关闭系统的用户名。 /etc/shutdown.allow 文件使用列表格式,每行列出一名用户,如下所示:

stephen jack sophie

根据以上 shutdown.allow 文件的例子,stephen、jack、和 sophie 被允许使用 [Ctrl] - [Alt] - [Del] 来从控制台关闭系统。当这个键组合被使用时, /etc/inittab 中的 shutdown -a 就会查看 /etc/shutdown.allow 中列出的用户(或根用户)是否在虚拟控制台上登录了。如果登录者是其中之一,系统关闭就会继续;否则,系统控制台上就会显示出错误消息。

24.2. 禁用控制台程序访问

为了禁用用户对控制台程序的访问,你应该以根用户身份运行下面的命令:

rm -f /etc/security/console.apps/*

在控制台没有被保护的环境下(BIOS 和引导装载程序的口令没有被设置; [Ctrl] - [Alt] - [Delete] 键组合没有被禁用;电源和重设开关没有被禁用等等),你可能不想允许任何用户在控制台上运行这些默认可以从控制台上使用的命令: poweroff 、 halt 、和 reboot 。

要取消这些能力,以根用户身份运行下面的命令:

rm -f /etc/security/console.apps/poweroff

rm -f /etc/security/console.apps/halt

rm -f /etc/security/console.apps/reboot

24.3. 禁用所有控制台访问

PAM pam_console.so 模块管理控制台文件的权限和验证。如果你想禁用所有的控制台访问,包括程序和文件的访问,把所有 /etc/pam.d 目录中引用 pam_console.so 的句子都改为注释。以根用户使用下面的脚本就可以达到这一目的:

cd /etc/pam.d

for i in * ; do

sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i

done

24.4. 定义控制台

pam_console.so 模块使用 /etc/security/console.perms 文件来判定系统控制台上用户的权限。该文件的语法非常灵活;你可以编辑该文件以便 不再应用这些指示。然而,默认文件中有一行看起来如下:

=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]

当用户登录后,他们会被连接到某种有名称的终端,要么是名称类似 :0 或 mymachine.example.com:1.0 的 X 服务器,要么是类似 /dev/ttyS0 或 /dev/pts/2 的设备。默认设置中,本地虚拟控制台和本地 X 服务器被定义为本地,但是如果你想把和你相邻的位于端口 /dev/ttyS1 上的串线终端也当作本地,你可以把上面一行改为:

=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1

24.5. 使文件可从控制台访问

/etc/security/console.perms 文件中的某段包含以下几行:

=/dev/fd[0-1]*\

/dev/floppy/*/mnt/floppy*

=/dev/dsp*/dev/audio*/dev/midi*\

/dev/mixer*/dev/sequencer\

/dev/sound/*/dev/beep

=/dev/cdrom*/dev/cdroms/*/dev/cdwriter*/mnt/cdrom*

如果有必要,你可以在这段里加入你自己编写的句子。请确定你添加的句中所指代的是正确的设备。譬如,你可以添加以下这一行:

=/dev/scanner/dev/usb/scanner*

(当然,请确定 /dev/scanner 的确是你的扫描仪设备,而不是你的硬盘驱动器。)

这是第一步。第二步是定义如何处置那些文件。在 /etc/security/console.perms 文件的最后一段寻找与以下类似的句子:

0660 0660root.floppy

0600 0640root

0600 0600root.disk

然后,添加和以下类似的一行:

0600 0600 root

当你在控制台登录后,你就会被给予 /dev/scanner 设备的所有权,其权限是 0600(仅可被你读写)。当你注销后,该设备就会被根用户所有,权限依旧是 0600(现在将只能被根用户读写)。

24.6. 为其它应用程序启用控制台访问

如果你想使其它应用程序能被控制台用户访问,你要采取的步骤就会多一些。

首先, 只有 驻留在 /sbin 或 /usr/sbin 中的应用程序才能在控制台上访问,因此你想运行的程序也必须被保存在那两个目录中。满足了上面的条件后,执行下面的步骤:

创建一个从你的应用程序(如以下例子中的 foo )到 /usr/bin/consolehelper 的链接:

cd /usr/bin ln -s consolehelper foo

创建文件 /etc/security/console.apps/ foo :

touch /etc/security/console.apps/ foo

在 /etc/pam.d/ 目录中为 foo 服务创建一个 PAM 配置文件。做到它的简单方法是使用 halt 服务的 PAM 配置文件的副本,如果你想改变行为的话,修改该文件:

cp /etc/pam.d/halt /etc/pam.d/foo

现在,当你运行 /usr/bin/ foo 时,它就会 调用 consolehelper ,该命令会借助 /usr/sbin/userhelper 来验证用户。要验证用户, consolehelper 会询问用户的口令(若 /etc/pam.d/ foo 是 /etc/pam.d/halt 文件的副本的话,否则,它 会仅执行在 /etc/pam.d/ foo 中的命令),然后使用根权限来运行 /usr/sbin/ foo 。

在 PAM 配置文件中,应用程序可以被配置使用 pam_timestamp 模块来记住(缓存)一次成功的尝试。当应用程序被启动并提供了正确的验证后(根口令),一个时间戳文件就会被创建。按照默认设置,成功验证会被缓存五分钟。在这段时期内,在同一会话中运行的其它配置使用 pam_timestamp 的应用程序会自动为该用户验证 ? 用户不必再输入根口令。

该模块被包括在 pam 软件包中。要启用这项功能, etc/pam.d/ 中的 PAM 配置文件必须包括以下几行:

authsufficient/lib/security/pam_timestamp.so sessionoptional/lib/security/pam_timestamp.so

第一个以 auth 开头的行应该在任何 auth sufficient 行之后,以 session 开头的行应该在所有 session optional 行之后。

如果配置使用 pam_timestamp 的从面板上的 「主菜单」 按钮启动的应用程序被成功地验证, 图标就会显示在面板的通知区域(若你运行的是 GNOME 桌面环境)。验证过期后(默认为五分钟),该图标就会消失。

用户可以通过点击图标并选择忘记验证选项来忘记缓存验证。

24.7. floppy 组群

如果由于某种原因,控制台访问对你不适用,你需要给非根用户提供到系统软盘驱动器的访问,这可以通过使用 floppy 组群来达到。使用你选定的工具把用户添加到 floppy 组群就可以了。这里向你提供了一个如何使用 gpasswd 来把用户 fred 添加到 floppy 组群的例子:

[root@bigdog root]# gpasswd -a fred floppy

Adding user fred to group floppy

[root@bigdog root]#

现在,用户 fred 就可以通过控制台访问系统的软盘驱动器了。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

172楼 旧帖 06-07-17 23:45

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9软件包管理

Red Hat Linux 系统上的所有软件都被分成可被安装、升级、或删除的 RPM 软件包。这个部分描述了如何使用图形化和命令行工具来管理 Red Hat Linux 系统上的 RPM 软件包。

32. 使用 RPM 来管理软件包

RPM 软件包管理器(RPM)是开放打包系统,任何人都可以使用。它在 Red Hat Linux,以及其它 Linux 和 UNIX 系统上运行。Red Hat, Inc. 鼓励其它销售商在他们自己的产品上使用 RPM 技术。RPM 按照 GPL 条款被发行。

对于终端用户来说,RPM 简化了系统更新。安装、删除安装、升级 RPM 软件包可以使用简短的命令就可完成。RPM 维护一个已安装软件包和它们的文件的数据库,因此,你可以在系统上使用功能强大的查询和校验。如果你更喜欢图形化界面,你可以使用 软件包管理工具 来执行许多 RPM 命令。详情请参阅 第33章 。

在升级中,RPM 处理配置文件时非常谨慎,因此你决不会丢失你定制的配置 ? 这是你用普通的 .tar.gz 文件所无法达到的。

对于开发者来说,RPM允许你把软件编码和程序打包,然后提供给终端用户。这个进程非常简单,它能从你创建的单个文件或补丁中驱动。这种对你的“纯净”源码、补丁和建构指令的清晰描述减轻了发行软件新版本所带来的维护负担。

注记:因为 RPM 要对你的系统做适当改变,你必须是根用户才能安装、删除、或升级某个 RPM 软件包。

32.1. RPM 的设计目标

为了理解如何使用 RPM,我们应该先来了解 RPM 的设计目标:

可升级性

使用 RPM,你可以不必全盘重装就可以在系统上升级个别组件。当你得到一个基于 RPM 的操作系统的新发行版本(如 Red Hat Linux),你不必重新安装你的系统(基于其它打包系统的操作系统需要重装)。RPM 允许智能化、自动化地就地升级你的系统。软件包中的配置文件在升级中被保留,因此你不会丢失定制的设置。你不需要特殊的升级文件来升级某软件包,因为在系统上安装和升级软件包使用同样的 RPM 文件。

强大的查询功能

RPM 被设计来提供强大的查询功能。你可以在整个数据库中搜索软件包或某些特定文件。你还可以轻易地了解到哪个文件属于哪个软件包,软件包来自哪里。RPM 软件包的文件包括在被压缩的归档中,其中有定制的二进制档头,该档头内包含关于软件包及其内容的信息,允许你快速简捷地查询个体软件包。

系统校验

另一项强大的功能是软件包校验。如果你担心你可能删除了某软件包上的一个重要文件,只需校验该软件包即可。任何异常情况都会向你通知。到时,你可以在必要时重装该软件包。你修改过的配置文件在重装中会被保留。

纯净源码

一个重要的设计目标是允许使用与软件的原创者所发行源码一致的“纯净”软件源码。使用 RPM,你会有纯净源码、使用过的补丁、以及完整的建构指令。这是一个重要的优越性。首先,如果程序的新版本被推出,你不必从头开始编译。你可以看一看补丁来判定你 可能 需要做什么。使用这种技术,所有内编译的默认值,以及为正确建构软件而进行的任何改变都一目了然。

保持源码纯净的目的似乎只对开发者来说是重要的,但是它也会给终端用户带来高质量的软件。我们想在此感谢 BOGUS 的发行人员,感谢他们最先开创了纯净源码这一概念。

32.2. 使用 RPM

RPM 有五种基本操作模式(不包括软件包建构):安装、删除安装、升级、查询和校验。本章节包括对每一模式的总览。想了解完整的选项和细节,请使用 rpm --help 命令,或阅读 第 32.5 节 中关于 RPM 的信息。

32.2.1. 寻找 RPM 软件包

在使用 RPM 之前,你必须知道要到哪里去寻找它们。在互联网上搜索会返回许多 RPM 仓库,但是如果你要找的是由 Red Hat 建构的 RPM 软件包,你可以在下面几个地方找到它们:

Red Hat Linux 光盘

Red Hat 勘误网页:

Red Hat FTP 镜像网站:

Red Hat 网络 ? 关于 Red Hat 网络的详情,请参阅第34章。

32.2.2.安装

典型的 RPM 软件包名称类似于 foo-1.0-1.i386.rpm 。该文件名包括软件包名称( foo )、版本( 1.0 )、发行版本( 1 )、以及体系( i386 )。安装软件包简单之极,登录为根用户,然后在 shell 提示下键入下面的命令:

rpm -Uvh foo-1.0-1.i386.rpm

如果安装成功,你会看到如下所示的输出:

Preparing... ########################################### [100%]

1:foo ########################################### [100%]

如上面所示,RPM 显示软件包的名称,然后在软件包被安装时在屏幕上打印井号来显示安装进度。

从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。如果签名校验失败,你就会看到如下所示的错误消息:

error: V3 DSA signature: BAD, key ID 0352860f

如果它是新的、只针对文件头的签名,你会看到如下所示的错误消息:

error: Header V3 DSA signature: BAD, key ID 0352860f

如果你没有安装合适的钥匙来校验签名,消息中就会包含 NOKEY ,如:

warning: V3 DSA signature: NOKEY, key ID 0352860f

关于校验软件包签名的详细信息,请参阅第 32.3 节。

注记:如果你要安装内核软件包,你应该使用 rpm -ivh 。详情请参阅第30章。

虽然安装软件包旨在简单易行,但是你有时也会看到错误。

32.2.2.1.软件包已安装

如果某软件包的同一版本已经安装,你就会看到:

Preparing... ########################################### [100%]

package foo-1.0-1 is already installed

如果你在软件包已安装的情况下仍打算安装同一版本的软件包,你可以使用 --replacepkgs 选项,它告诉 RPM 来忽略这个错误:

rpm -ivh --replacepkgs foo-1.0-1.i386.rpm

如果从 RPM 安装的文件被删除了,或者你想安装 RPM 中的最初配置文件,该选项就会很有用。

32.2.2.2.文件冲突

如果你试图安装的软件包中包含已被另一个软件包或同一软件包的早期版本安装了的文件,你会看到:

Preparing... ########################################### [100%]

file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20

要使 RPM 忽略这个错误,使用 --replacefiles 选项:

rpm -ivh --replacefiles foo-1.0-1.i386.rpm

32.2.2.3.未解决的依赖关系

RPM 软件包可能“依赖”于其它软件包,这意味着它们需要安装其它软件包才能正确运行。如果你试图安装具有未解决依赖关系的软件包,你会看到:

Preparing... ########################################### [100%]

error: Failed dependencies:

bar.so.2 is needed by foo-1.0-1

Suggested resolutions:

bar-2.0.20-3.i386.rpm

如果你安装的是 Red Hat,它通常会向你建议解决依赖关系所需的软件包。在 Red Hat Linux 光盘或 Red Hat FTP 站点(或镜像)上找到这个软件包,使用以下命令来添加:

rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm

如果这两个软件包都安装成功,你会看到:

Preparing... ########################################### [100%]

1:foo ########################################### [ 50%]

2:bar ########################################### [100%]

如果它不向你建议解决依赖关系所需的软件包,你可以试用 --redhatprovides 选项来判定哪个软件包包含所需的文件。你需要安装 rpmdb-redhat 软件包才能使用这个选项。

rpm -q --redhatprovides bar.so.2

如果包含 bar.so.2 的软件包在来自 rpmdb-redhat 软件包的安装了的数据库中,该软件包的名称就会被显示:

bar-2.0.20-3.i386.rpm

如果你想强制安装(不是好办法,因为软件包可能不能够正确运行),使用 --nodeps 选项。

32.2.3.删除安装

删除软件包和安装软件包一样简单。在 shell 提示下键入下面的命令:

rpm -e foo

注记: 注意,我们使用软件包 名称 foo ,而不是原始的软件包 文件 foo-1.0-1.i386.rpm 。要删除某软件包,你需要把 foo 换成原始软件包的实际名称。

你在删除安装某软件包时也会遇到依赖关系错误,当另一个已安装的软件包依赖于你试图删除的软件包时,依赖关系错误就会发生。例如:

Preparing... ########################################### [100%]

error: removing these packages would break dependencies:

foo is needed by bar-2.0.20-3.i386.rpm

要使 RPM 忽略这个错误,并强制删除该软件包(不是个好办法,因为依赖于它的软件包可能无法正常运行),使用 --nodeps 选项。

32.2.4.升级

升级软件包和安装类似。在 shell 提示下键入以下命令:

rpm -Uvh foo-2.0-1.i386.rpm

你在上面的例子里看不到的是,RPM 自动删除 foo 软件包的任何老版本。事实上,你可能想一直使用 -U 来安装软件包,因为即便没有安装软件包的任何先前版本,它也可以用来安装该软件包。

因为 RPM 对软件包和配置文件执行智能升级,你可能会看到和下面相似的消息:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

这条消息意味着你对配置文件所作的改变可能不会和软件包中的新配置文件“前向兼容”,因此,RPM 保存了你的原始文件,并安装了一个新文件。你应该调查一下这两个配置文件的区别,然后尽快地解决这些区别来确保系统继续正确运行。

升级实际上是删除和安装的组合,因此,在 RPM 升级中,你除了遇到删除和安装中会遇到的错误外,还会看到另一个错误。如果 RPM 认为你试图升级到软件包的 老 版本,你会看到:

package foo-2.0-1 (which is newer than foo-1.0-1) is already installed

要使 RPM 强制“升级”,使用 --oldpackage 选项:

rpm -Uvh --oldpackage foo-1.0-1.i386.rpm

32.2.5.刷新

刷新软件包和升级软件包相似。在 shell 提示下键入以下命令:

rpm -Fvh foo-1.2-1.i386.rpm

RPM 的刷新选项比较在命令行上指定的软件包的版本和你的系统上已安装的版本。当 RPM 的刷新选项处理的版本比你已安装的版本更新,它就会被升级到更新的版本。然而,如果某软件包先前没有安装,RPM 的刷新选项将不会安装该软件包。这和 RPM 的升级选项不同,因为不管该软件包的老版本是否已被安装,升级选项 都会 安装该软件包。

RPM 的刷新选项可以用于单个软件包或一组软件包。如果你刚刚下载了大量不同的软件包,你只想升级那些已安装在你的系统上的软件包,刷新即可达到目的。如果使用刷新,你不必在使用 RPM 前从下载的软件包组中删除不必要的软件包。

在这种情况下,你单使用下面的命令就可以了:

rpm -Fvh *.rpm

RPM 将只会自动升级那些已经在系统上安装的软件包。

32.2.6.查询

使用 rpm -q 命令来查询安装的软件包的数据库。 rpm -q foo 命令会显示安装的软件包 foo 的名称、版本、和发行号码:

foo-2.0-1

注记:注意,我们使用的是软件包 名称 foo 。要查询软件包,你需要把 foo 换成实际软件包名称。

与其指定软件包名称,你可以和 -q 一起使用下列选项来指定你要查询的软件包。它们叫做 软件包指定选项 。

-a 查询所有已安装的软件包。

-f 会查询拥有 的软件包。当指定文件时,你必须指定文件的完整路径(如 /usr/bin/ls )。

-p 查询软件包

指定被查询的软件包要显示哪些信息的方法多种多样。以下选项用来选择你要搜索的信息类型。它们叫做 信息选择选项 。

-i 显示软件包信息,包括名称、描述、发行版本、大小、制造日期、生产商,以及其它杂项。

-l 显示软件包所含的文件列表。

-s 显示软件包中所有文件的状态。

-d 显示被标记为文档(man 页、info 页、README 等等)的文件列表。

-c 显示被标记为配置文件的文件列表。你在安装后改变这些文件来使软件包适用于你的系统(譬如, sendmail.cf 、 passwd 、 inittab 等等)。

对于用来显示文件列表的选项,你可以在命令后添加 -v 来用你熟悉的 ls -l 格式来显示文件列表。

32.2.7.校验

校验软件包比较从某软件包安装的文件和原始软件包中的同一文件的信息。它校验每个文件的大小、MD5 值、权限、类型、所有者、以及组群。

rpm -V 命令校验软件包。你可以查询任何 软件包选择选项 列举的条目来指定要校验的软件包。校验的最简单用法是 rpm -V foo ,它校验所有在 foo 软件包内的文件是否和最初安装时一样。例如:

要校验包含某一特定文件的软件包:

rpm -Vf /bin/vi

要校验所有安装了的软件包:

rpm -Va

要根据 RPM 软件包文件来校验安装了的软件包:

rpm -Vp foo-1.0-1.i386.rpm

如果你怀疑 RPM 数据库已被损坏,该命令就会很有用。

如果一切都被校验正确,就不会有输出。如果出现矛盾,它们就会被显示。输出的格式为包括八个字符的字符串( c 代表配置文件),然后是文件名称。这八个字符的每个字符都代表一种文件属性的比较结果,所比较的是文件的属性和 RPM 数据库中记录的属性。单用一个 . (点)意味着测试通过。下列字符代表某类测试失败:

5 ? MD5 校验和

S ? 文件大小

L ? 符号链接

T ? 文件修改时间

D ? 设备

U ? 用户

G ? 组群

M ? 模式(包括权限和文件类型)

? ? 不可读文件

如果你看到任何输出,最好开动脑筋来判断是应该删除还是重新安装该软件包,或用另一种方法来解决这个问题。

32.3.检查软件包的签名

如果你想校验某软件包是否被损坏或篡改过,只需检查 md5sum。在 shell 提示下键入下面的命令(把 coolapp 换成 RPM 软件包的文件名):

rpm -K --nogpg

你会看到消息“ : md5 OK ”。这条消息意味着文件在下载中没有被损坏。要看到更详细的消息,把命令中的 -K 换成 -Kvv 。

另一方面,创建软件包的开发者是不是值得信任?如果该软件包使用开发者的 GnuPG 钥匙(key) 被 签名(signed) ,你就会知道这位开发者的身份确实如他们所言。

RPM 软件包可以使用 Gnu 隐私卫士 (或称 GnuPG )来签名,从而帮助你肯定下载软件包的可信任性。

GnuPG 是安全通讯工具;它是 PGP(一种电子隐私程序)加密技术的完全和免费的替换品。使用 GnuPG,你可以验证文档的有效性,在其它通讯者之间加密或解密数据。GnuPG 还具有解密和校验 PGP 5. x 文件的能力。

在 Red Hat Linux 的安装过程中,GnuPG 被默认安装。这样,你便可以立即开始使用 GnuPG 来校验你从 Red Hat 收到的软件包。首先,你需要导入 Red Hat 的公钥。

32.3.1.导入钥匙

要校验 Red Hat 软件包,你必须导入 Red Hat GPG 公钥。要导入公钥,在 shell 提示下执行以下命令:

rpm --import /usr/share/rhn/RPM-GPG-KEY

要显示用来校验 RPM 而安装的钥匙列表,执行以下命令:

rpm -qa gpg-pubkey*

对于 Red Hat 公钥而言,其输出应包括:

gpg-pubkey-db42a60e-37ea5438

要显示关于某一指定钥匙的细节,使用 rpm -qi ,其后跟随前一命令的输出:

rpm -qi gpg-pubkey-db42a60e-37ea5438

32.3.2.校验软件包的签名

导入了建构者的 GnuPG 公钥后,要检查 RPM 文件的 GnuPG 签名,使用以下命令(把 换成 RPM 软件包的名称):

rpm -K

如果一切顺利,你会看到这条消息: md5 gpg OK 。这意味着软件包的签名已被校验,该软件包没有被损坏。

窍门:关于 GnuPG 的详细信息,请参阅附录 B。

32.4.用 RPM 在朋友面前大显身手

RPM 对于管理系统、诊断和修正问题都极有用途。要理解它的选项的最佳途径是通过示范。

可能你不小心删除了一些文件,却不能肯定删除了哪些文件。如果你想校验整个系统来看一看缺少哪些文件,你可以试一试下面的命令:

rpm -Va

如果缺少某些文件或它们似乎被损坏,你可能应该重新安装该软件包或删除安装然后再重新安装该软件包。

有时候,你可能会看到不认识的文件。要发现哪个软件包拥有它,你可以输入:

rpm -qf /usr/X11R6/bin/ghostview

它的输出和以下相似:

gv-3.5.8-22

我们可以在以下的假想情况下组合以上的两个例子。假设你的 /usr/bin/paste 出了问题,你想校验拥有该程序的软件包,但是你不知道哪个软件包拥有 paste 。你只需输入以下命令就可以了:

rpm -Vf /usr/bin/paste

这样,适当的软件包就会被校验。

你想知道关于某一特定的程序的详细信息吗?你可以试用下面的命令来查找拥有该程序的软件包所附带的文档:

rpm -qdf /usr/bin/free

它的输出和以下相似:

/usr/share/doc/procps-2.0.11/BUGS

/usr/share/doc/procps-2.0.11/NEWS

/usr/share/doc/procps-2.0.11/TODO

/usr/share/man/man1/free.1.gz

/usr/share/man/man1/oldps.1.gz

/usr/share/man/man1/pgrep.1.gz

/usr/share/man/man1/pkill.1.gz

/usr/share/man/man1/ps.1.gz

/usr/share/man/man1/skill.1.gz

/usr/share/man/man1/snice.1.gz

/usr/share/man/man1/tload.1.gz

/usr/share/man/man1/top.1.gz

/usr/share/man/man1/uptime.1.gz

/usr/share/man/man1/w.1.gz

/usr/share/man/man1/watch.1.gz

/usr/share/man/man5/sysctl.conf.5.gz

/usr/share/man/man8/sysctl.8.gz

/usr/share/man/man8/vmstat.8.gz

你可能会发现一个新的 RPM,但是你不知道它的用途。要寻找关于它的信息,使用下面的命令:

rpm -qip crontabs-1.10-5.noarch.rpm

它的输出看起来和以下相似:

Name : crontabs Relocations: (not relocateable)

Version : 1.10 Vendor: Red Hat, Inc.

Release : 5 Build Date: Fri 07 Feb 2003 04:07:32 PM EST

Install date: (not installed) Build Host: porky.devel.redhat.com

Group : System Environment/Base Source RPM: crontabs-1.10-5.src.rpm

Size : 1004 License: Public Domain

Signature : DSA/SHA1, Tue 11 Feb 2003 01:46:46 PM EST, Key ID fd372689897da07a

Packager : Red Hat, Inc.

Summary : Root crontab files used to schedule the execution of programs.

Description :

The crontabs package contains root crontab files. Crontab is the

program used to install, uninstall, or list the tables used to drive the

cron daemon. The cron daemon checks the crontab files to see when

particular commands are scheduled to be executed. If commands are

scheduled, then it executes them.

也许你想指定 crontabs RPM 会安装哪些文件。你可以输入下面的命令:

rpm -qlp crontabs-1.10-5.noarch.rpm

它的输出看起来和下面相似:

Name : crontabs Relocations: (not relocateable)

Version : 1.10 Vendor: Red Hat, Inc.

Release : 5 Build Date: Fri 07 Feb 2003 04:07:32 PM EST

Install date: (not installed) Build Host: porky.devel.redhat.com

Group : System Environment/Base Source RPM: crontabs-1.10-5.src.rpm

Size : 1004 License: Public Domain

Signature : DSA/SHA1, Tue 11 Feb 2003 01:46:46 PM EST, Key ID fd372689897da07a

Packager : Red Hat, Inc.

Summary : Root crontab files used to schedule the execution of programs.

Description :

The crontabs package contains root crontab files. Crontab is the

program used to install, uninstall, or list the tables used to drive the

cron daemon. The cron daemon checks the crontab files to see when

particular commands are scheduled to be executed. If commands are

scheduled, then it executes them.

以上不过是几个例子。随着你的使用经验的增加,你会发现更多 RPM 的用途。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

173楼 旧帖 06-07-17 23:45

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9升级内核

为了确保内核的完整性和对它所支持的硬件的兼容性,Red Hat Linux 内核由 Red Hat 内核小组定制建构。在内核被 Red Hat 发行之前,它一定要通过一系列严格的质量保证测试。

Red Hat Linux 内核使用 RPM 格式打包,因而它们易于升级和校验。例如,由 Red Hat, Inc. 发行的 kernel RPM 软件包被安装后, initrd 映像会被创建;这样,在你安装了不同的内核后,你就没必要使用 mkinitrd 命令。如果你安装了 GRUB 或 LILO 的话,它还会修改引导装载程序的配置文件来包括这个新内核。

本章仅讨论在 x86 系统上升级内核的必要步骤。

警告: 建构你自行定制的内核是不被 Red Hat Linux 安装支持组支持的。关于从源码中建构定制内核的详情,请参阅 附录 A 。

30.1. 2.4 版本的内核

Red Hat Linux 随带定制的 2.4 内核,它包括以下功能:

内核源码的目录是 /usr/src/linux-2.4/ ,而不是 /usr/src/linux/ 。

对 ext3 文件系统的支持。

对多重处理器(SMP)的支持。

对 USB 的支持。

对 IEEE 1394 设备(又称 FireWire ?)的初步支持。

30.2. 准备升级

在你升级内核之前,你应该先采取几项预防措施。第一步是确定你有一张适用于你的系统的可运行的引导盘以防万一出现问题。如果引导装载程序没有被正确配置来引导新内核,除非你有引导盘,否则就无法引导系统。

要创建引导盘,在 shell 提示下登录为根用户,然后键入以下命令:

/sbin/mkbootdisk `uname -r`

窍门:请参考 mkbootdisk 的说明书页(man)来阅读更多选项。

在继续前,使用引导盘来重新引导你的机器以校验该软盘的可运行性。

但愿你不必使用引导盘,但是你应该把它存放在一个安全的地方以防万一。

要判定你已安装了哪些内核软件包,在 shell 提示下执行下面的命令:

rpm -qa | grep kernel

依据你执行的安装类型而定(你的版本号码和软件包可能不同),该命令的输出会包括某些或全部在下面列出的软件包:

kernel-2.4.20-2.47.1

kernel-debug-2.4.20-2.47.1

kernel-source-2.4.20-2.47.1

kernel-doc-2.4.20-2.47.1

kernel-pcmcia-cs-3.1.31-13

kernel-smp-2.4.20-2.47.1

从输出中,你可以判定你需要下载哪些软件包来执行内核升级。对于单处理器系统而言,只有 kernel 软件包是必需的。

如果你的计算机不只有一个处理器,你需要包括支持多处理器的 kernel-smp 软件包。强烈建议你仍安装 kernel 软件包,以防万一多处理器内核不能在你的系统中正确运行。

如果你的计算机的内存超过了 4GB,你必须安装 kernel-bigmem 软件包才能使系统使用多于 4GB 的内存。强烈建议你仍旧安装 kernel 软件包以用于调试。 kernel-bigmem 软件包仅为 i686 体系建构。

如果你需要 PCMCIA 支持(例如在便携电脑上), kernel-pcmcia-cs 软件包就必不可少。

除非你想重新编译内核,或把系统用于内核开发,你不需要 kernel-source 软件包。

kernel-doc 软件包包括内核开发文档,它不是必需的。如果你的系统被用于内核开发,则推荐你安装它。

kernel-util 软件包包括能够用来控制内核或系统硬件的工具程序,它也不是必需的。

Red Hat 建构的内核为不同的 x86 版本做了优化。选项有:用于 AMD Athlon ? 和 AMD Duron ? 系统的 athlon ;用于 Intel ? Pentium ? II、 Intel ? Pentium ? III、和 Intel ? Pentium ? 4 系统的 i686 ;用于 Intel ? Pentium ? 和 AMD K6 ? 系统的 i586 。如果你不知道你的 x86 系统的版本,使用为 i386 版本建构的内核;它是为所有基于 x86 的系统建构的。

RPM 软件包的 x86 版本被包括在文件名中。例如: kernel-2.4.20-2.47.1.athlon.rpm 是为AMD Athlon ? 和 AMD Duron ? 系统优化的, kernel-2.4.20-2.47.1.i686.rpm 是为 Intel ? Pentium ? II、 Intel ? Pentium ? III、和 Intel ? Pentium ? 4 系统优化的。在你判定了软件包之后,你需要升级 内核,为 kernel 、 kernel-smp 、和 kernel-bigmem 软件包选择正确的体系。其它软件包使用 i386 版本。

30.3. 下载升级了的内核

要判定是否有可用于你的系统的升级内核,方法有好几种。

进入 网站,选择你使用的 Red Hat Linux 版本,然后查看它的勘误。内核勘误通常在 安全顾问(Security Advisories) 部分下。从勘误列表中 点击内核勘误来查看它的详细勘误报告。在勘误报告中,有一个需要的 RPM 列表,以及从 Red Hat FTP 站点下载它们的链接。你还可以从 Red Hat FTP 的 镜像站点中下载它们。镜像站点的列表在 中。

使用 Red Hat 网络来下载内核 RPM 软件包并安装它们。Red Hat 网络能够下载最新的内核、升级系统上的内核、如果必要,创建初始 RAM 映像,并配置引导装载程序来载入新内核。要获取更多信息,请参阅 上的 Red Hat 网络 User Reference Guide 。

如果你从 Red Hat Linux 的勘误网页上下载了 RPM 软件包,或只使用了 Red Hat 网络来下载软件包,继续阅读 第 30.4 节 。如果你使用了 Red Hat 网络来下载并安装更新了的内核,遵循 第 30.5 节 和 第 30.6 节 中的说明。只不过,不要把内核改成默认引导项,因为 Red Hat 网络会自动把默认内核改成最新版本。

30.4. 执行升级

检索到所有必要的软件包后,你就可以开始升级现存内核了。在 shell 提示下登录为根用户,转换到包含内核 RPM 软件包的目录中,遵循以下步骤:

重要:强烈建议你保留旧内核,以防万一新内核出现问题。

使用 rpm 命令的 -i 选项来保留就内核。如果你使用了 -U 选项来升级 kernel 软件包,它会覆盖当前安装了的内核。该命令为(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-2.4.20-2.47.1.i386.rpm

如果系统是多处理器系统,还需安装 kernel-smp 软件包(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-smp-2.4.20-2.47.1.i386.rpm

如果系统是基于 i686 的,并包含超过 4GB 的内存,还需安装为 i686 体系建构的 kernel-bigmem 软件包(内核版本和 x86 版本会有所不同):

rpm -ivh kernel-bigmem-2.4.20-2.47.1.i686.rpm

如果你打算升级 kernel-source 、 kernel-docs 、或 kernel-utils 软件包,你可能不需要保留老版本。使用下面的命令来升级这些软件包(版本会有所不同):

rpm -Uvh kernel-source-2.4.20-2.47.1.i386.rpm

rpm -Uvh kernel-docs-2.4.20-2.47.1.i386.rpm

rpm -Uvh kernel-utils-2.4.20-2.47.1.i386.rpm

如果系统需要 PCMCIA 支持(例如便携电脑),你还需要安装 kernel-pcmcia-cs 并保留老版本。如果你使用了 -i 选项,它可能会返回冲突,因为老内核需要该软件包来引导带有 PCMCIA 支持的系统。要绕过这个问题,使用 --force 选项,如下所示(版本会有所不同):

rpm -ivh --force kernel-pcmcia-cs-3.1.24-2.i386.rpm

下一步是校验初始 RAM 磁盘映像是否被创建。详情请参阅 第 30.5 节 。

30.5. 校验初始 RAM 磁盘映像

如果系统使用 ext3 文件系统或 SCSI 控制器,你就需要初始 RAM 磁盘。初始 RAM 磁盘的目的是允许模块化的内核在它能够进入模块通常驻留的设备之前具备进入内核需要从该设备引导的模块的能力。

初始 RAM 磁盘通过使用 mkinitrd 命令来创建。然而,如果内核及其相关文件是从 Red Hat, Inc. 发行的 RPM 软件包中安装或升级的话,这个步骤会被自动执行;因此,它不必被手工进行。要校验它是否被创建了,使用 ls -l /boot 命令来确定 initrd-2.4.20-2.47.1.img 文件被创建了(版本应该匹配刚刚安装了的内核的版本)。

下一步是校验引导装载程序已被配置来引导新内核。详情请参阅 第 30.6 节 。

30.6. 校验引导装载程序

如果你安装了 GRUB 或 LILO 引导装载程序, kernel RPM 软件包配置它们来引导刚刚安装的内核,但是它并不配置引导装载程序默认引导新内核。

确认一下引导装载程序已被配置成引导新内核总是值得提倡的。这是至关重要的一步。如果引导装载程序被配置得不正确,你将无法引导你的系统。若这种情况发生了,使用你从前创建的引导盘来引导你的系统,然后再试图配置你的引导装载程序。

30.6.1. GRUB

如果你选择了 GRUB 作为引导装载程序,请确认 /boot/grub/grub.conf 文件中包含的 title 部分中的版本与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smp 和/或 kernel-bigmem ,你也会看到这个部分):

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/hda2

# initrd /initrd-version.img

#boot=/dev/hda

default=3

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.4.20-2.47.1)

root (hd0,0)

kernel /vmlinuz-2.4.20-2.47.1 ro root=LABEL=/

initrd /initrd-2.4.20-2.47.1.img

title Red Hat Linux (2.4.20-2.30)

root (hd0,0)

kernel /vmlinuz-2.4.20-2.30 ro root=LABEL=/

initrd /initrd-2.4.20-2.30.img

如果你创建了单独的 /boot 分区,到内核与 initrd 映像的路径是相对于 /boot 分区而言的。

注意,默认引导项目没有被设置为新内核。要配置 GRUB 来默认引导新内核,把 default 变量的值改成包含新内核的 title 部分的号码。这个号码从 0 开始。例如,如果新内核是第二个 title 部分,把 default 设置为 1 。

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

30.6.2. LILO

如果你选择了 LILO 作为引导装载程序,请确认 /etc/lilo.conf 文件中包含的 image 部分中的版本与你刚刚安装的 kernel 软件包的版本相同(如果你安装了 kernel-smp 和/或 kernel-bigmem ,你也会看到这个部分):

prompt

timeout=50

default=2.4.20-2.30

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

message=/boot/message

linear

image=/boot/vmlinuz-2.4.20-2.47.1

label=2.4.20-2.47.1

initrd=/boot/initrd-2.4.20-2.47.1.img

read-only

append="root=LABEL=/"

image=/boot/vmlinuz-2.4.20-2.30

label=2.4.20-2.30

initrd=/boot/initrd-2.4.20-2.30.img

read-only

append="root=LABEL=/"

注意,默认引导项目没有被设置为新内核。要配置 LILO 来默认引导新内核,把 default 变量的值改成包含新内核的 image 部分中的 label 的值。以根用户身份运行 /sbin/lilo 命令来启用改变。运行后,其输出会与如下相似:

Added 2.4.20-2.47.1 * Added linux

2.4.20-2.47.1 后面的 * 意味着那部分中的内核是 LILO 会默认引导的内核。

你可以重新引导计算机来开始测试这个新内核,观察屏幕上的消息来确保硬件被正确地检测到了。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

174楼 旧帖 06-07-17 23:46

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9实现磁盘配额

除了监视系统上使用的磁盘空间,你还可以通过实现磁盘配额来限制磁盘空间,因此当用户使用了过多的磁盘空间或分区将要充满时,系统管理员就会接到警告。

磁盘配额可以为个体用户配置也可以为用户组配置。这种灵活性既能够给每个用户分配一个较小的配额来处理“个人”文件(如电子邮件和报告),又允许了他们正从事的项目能够拥有较大的配额(假定项目有自己的组群)。

除此以外,配额不仅能够被设置成对所用磁盘块数量的控制,还能够被设置成对内节点数量的控制。由于内节点包含文件相关的信息,对内节点的控制能够控制可被创建的文件数量。

要实现磁盘配额, quota RPM 必须在系统上被安装。 关于安装 RPM 软件包的详情,请参阅 第 V 部分 。

6.1. 配置磁盘配额

要实现磁盘配额,请使用以下步骤:

修改 /etc/fstab 来启用每个文件系统的配额

重新挂载文件系统

创建配额文件,重新生成磁盘用量表

分配配额

以上步骤在下面各节中被详细讨论。

6.1.1. 启用配额

以根用户身份使用你喜欢的编辑器来给需要配额的文件系统添加 usrquota 和(或) grpquota 选项:

LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda2 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 00

在上面的例子中, /home 文件系统上启用了用户和组群配额。

6.1.2. 重新挂载文件系统

添加了 userquota 和 grpquota 选项后,重新挂载每个相应 fstab 条目被修改的文件系统。如果某文件系统没有被任何进程使用,使用 umount 命令后再紧跟着 mount 命令来重新挂载这个文件系统。如果某文件系统正在被使用,要重新挂载该文件系统的最简捷方法是重新引导系统。

6.1.3. 创建配额文件

重新挂载了每个启用了配额的文件系统后,系统现在就能够使用磁盘配额了。不过,文件系统本身尚且不能支持配额。下一步是运行 quotacheck 命令。

quotacheck 命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表。该表会被用来更新操作系统的磁盘用量文件。此外,文件系统的磁盘配额文件也被更新。

要在文件系统上创建配额文件( aquota.user 和 aquota.group ),使用 quotacheck 命令的 -c 选项。例如,如果用户和组群配额都为 /home 分区启用了,在 /home 目录下创建这些文件:

quotacheck -acug /home

-a 选项意味着在 /etc/mtab 中所有挂载了的非 NFS 文件系统都会被检查来决定是否启用了配额。 -c 选项指定每个启用了配额的文件系统都应该创建配额文件, -u 选项指定检查用户配额, -g 选项指定检查组群配额。

如果 -u 或 -g 选项被指定,只有用户配额文件被创建。如果只指定了 -g 选项,只有组群配额文件会被创建。

文件被创建后,运行以下命令来生成每个启用了配额的文件系统的当前磁盘用量表:

quotacheck -avug

所用选项如下:

a ? 检查所有启用了配额的在本地挂载的文件系统

v ? 在检查配额过程中显示详细的状态信息

u ? 检查用户磁盘配额信息

g ? 检查组群磁盘配额信息

quotacheck 运行完毕后,和启用配额(用户和/或组群)相应的配额文件中就会写入用于每个启用了配额的文件系统(如 /home )的数据。

6.1.4. 为每用户分配配额

最后一步是使用 edquota 命令分配磁盘配额。

要为用户配置配额,以根用户身份在 shell 提示下执行以下命令:

edquota username

为每个你想实现配额的用户执行该步骤。例如,如果在 /etc/fstab 中为 /home 分区( /dev/hda3 )启用了配额,执行了 edquota testuser 命令后,系统默认的编辑器中就会有如下显示:

Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 440436 0 0 37418 0 0

注记:edquota 使用 EDITOR 环境变量所定义的文本编辑器。要改变这个编辑器,把 EDITOR 环境变量设置为到你选中的编辑器的完整路径。

第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数。随后的两列用来设置用户在该文件系统上的软硬块限度。 inodes 列显示了用户当前使用的内节点数量。最后两列用来设置用户在该文件系统上的软硬内节点限度。

硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。

软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为 过渡期(grace period) 。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。

如果以上值中的任何一个被设置为 0,那个限度就不会被设置。在文本编辑器中,改变想要的限度。如:,

Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 440436 500000 550000 37418 0 0

要校验用户的配额是否被设置,使用以下命令:

quota testuser

6.1.5. 为每组群分配配额

配额还可以根据组群来分配。例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):

edquota -g devel

以上命令在文本编辑器中显示现存的组群配额:

Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/hda3 440400 0 0 37418 0 0

修改限度,保存文件,然后配置配额。

要校验组群配额是否被设置,使用以下命令:

quota -g devel

6.1.6. 为每文件系统分配配额

要根据每个启用了组群的文件系统来分配配额,使用以下命令:

edquota -t

和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:

Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda3 7days 7days

改变块过渡期或内节点过渡期,保存对文件的改变,然后退出文本编辑器。

6.2. 管理磁盘配额

如果配额被实现,它们就需要被维护 ? 主要维护方式是观察。查看配额是否被超出并确保配额的正确性。 当然,如果用户屡次超出他们的配额或者持续地达到他们的软限, 系统管理员就可以根据用户类型和磁盘空间对他们工作的影响来做出几种决策。管理员可以帮助用户来检索对磁盘空间的使用,也可以按需要增加用户的配额。

6.2.1. 报告磁盘配额

创建磁盘用量报告需要运行 repquota 工具。例如, repquota /home 命令会生成以下输出:

*** Report for user quotas on device /dev/hda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 tfox -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0

要查看所有启用了配额的文件系统的磁盘用量,使用以下命令:

repquota -a

这份报告虽然看起来很简单,有几点仍需要做一下说明。显示在每个用户后面的 -- 是一种判断用户是否超出其块限度或内节点限度的快速方法。如果任何一个软限被超出,相应的 - 行就会被 - 代替;第一个 - 代表块限度,第二个代表内节点限度。

grace 列通常是空白。如果某个软限被超出,这一列就会包含过渡期中的剩余时间。如果过渡期已超过了,其中就会显示 none 。

6.2.2. 保持配额的正确性

当某文件系统没有被完整地卸载(如,由于系统崩溃),这就有必要运行 quotacheck 。不过,即便系统没有崩溃, quotacheck 也可以被定期经常运行。定期运行以下命令来保持配额的正确性(所用选项在 第 6.1.1 节 中被描述):

quotacheck -avug

要定期运行它的最简单方法是使用 cron 。以根用户身份,你既可以使用 crontab -e 命令来调度定期的 quotacheck ,也可以在以下目录之一内放置一个运行 quotacheck 的脚本(使用最时候你需要的间隔期间):

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.monthly

最精确的配额统计数据可以在所分析的文件系统没有被活跃使用时获得。因此,cron 任务应该在文件系统被最少使用时调度。如果这一时间在使用配额的文件系统中并不统一,则使用多个 cron 任务在不同的时间为每个文件系统运行 quotacheck 。

6.2.3. 启用和禁用

你可以不必把配额设置为 0 来禁用它们。要关闭用户和组群配额,使用以下命令:

quotaoff -vaug

如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。

要重新启用配额,使用带有同样选项的 quotaon 命令。

例如,要为所有文件系统启用用户和组群配额:

quotaon -vaug

要为指定文件系统(如 /home )启用配额:

quotaon -vug /home

如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

175楼 旧帖 06-07-17 23:46

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat linux 9守护进程一览

Anacron 不考虑系统sowntime期间的crom服务

Amd 自动安装MFS守护进程

Apmd 高级电源管理

Atd 用于at和batch的服务

Arpwatch 记录日志并构件一个在LAN借口上看到的以太网地址和IP地址对数据库

Autofs 自动安装管理进程automount,与MFS相关,依赖于MIS

Bootparamd 引导参数服务器,为LAN上的无盘工作站提供引导运行服务

Dhcpd 启动一个DHCP服务器

Gated 网关路由守侯进程,使用动态OSPF路由选择协议

Gpm 提供字符模式下对鼠标的支持

Httpd WWW服务器

Identd AUTH服务,在提供用户信息方面与finger类似

Innd USENET新闻服务器

Iptables 自动操作iptables

Isdn 用于启动和终止ISDN服务

Keytable 用于装载键盘镜象

Kudzu 硬件探测器

Dupsd 打印服务器

Mysqld 一种数据库服务器

Named DNS服务器

Netfs 安装和卸载NFS、SAMBA和NETWARE网络文件系统

Network 激活已配置网络借口的脚本程序

Nfs 打开NFS服务

Nfslock MFS锁定

Portmap 安装PCMCIA卡

Postgresql 一种SQL数据库服务器

Pppoe 连接ADSL

Random 提供高质量的随机树生成

Routed 路由守侯进程,使用动态RIP路由选择协议

Rstatd 一个为LAN上的其他机器收集和提供系统信息的守侯程序

Ruserd 远程用户定位服务进程,基于RPC的服务,允许拥护给每个注册到LAN机器上的其他终端写消息

Rwhod 激活RWHOD服务进程,支持LAN的RWHO和RUPTIME服务

Sendmail 邮件服务器

Snmd 本地简单网络管理服务进程

Squid 代理服务器

Sshd OPENSSH服务器

Syslog 一个让系统引导时启动SYSLOG和KLOGD系统日志

守侯进程的脚本

Xfs X WINDOW字型服务器

Xinetd 支持多种网络服务的核心守侯程序

Xntpd 网络时间服务器

Ypbind 为NIS客户激活YPBIND服务进程

Yppasswdd NIS口令服务器

Ypserv NIS主服务器

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

176楼 旧帖 06-07-17 23:46

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9忘记root密码

救命!我忘了我的root口令。现在我该怎么登录?

  你可以使用单用户 Linux 模式来登录,然后创建一个新的root口令。

  要进入单用户模式,重新引导计算机。如果你使用的是默认的引导装载程序 GRUB ,你可以执行下列步骤来进入单用户模式:

  在引导装载程序菜单上,键入 [e] 来进入编辑模式。

  你会面对一个引导项目列表。查找其中类似以下输出的那一行:

   kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2

  按箭头键直到这一行被突出显示,然后按 [e] 。

  按一下空格键来添加一个空格,然后添加 single 来通知 GRUB 引导单用户 Linux 模式。按 [Enter] 键来使编辑结果生效。

  你会被带回编辑模式屏幕,从这里,按 [b] ,GRUB 就会引导单用户 Linux 模式。载入结束后,你会面对一个类似以下的 shell 提示:

   sh-2.05#

  现在,你便可以改变root命令,键入:

   sh-2.05# passwd root

  你会被要求重新键入口令来校验。结束后,口令就会被改变,你便可以在提示下键入 reboot 来重新引导;然后,象平常一样登录为根用户。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

177楼 旧帖 06-07-17 23:46

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9下常见问题

本章回答一些关于使用 Red Hat Linux 的最常见的问题。当你渐渐熟悉你的系统之后,你可能会提出这些疑问。从恢复忘记的口令到排除软件包安装中出现的障碍,本章会逐步地引导你完成一些常见的任务,使你能够得心应手地使用你的系统。

1. localhost 登录和口令

我已经安装了 Red Hat Linux。重新引导后,我得到了一条告诉我需要一个 localhost 登录和口令的消息。它们是什么?

除非你为你的计算机指定了一个主机名,或从网络中收到了这项信息,你的 Red Hat Linux 安装会默认把你的机器称作 localhost.localdomain 。

你得到的这条初始崾臼窃谇肽阍谀愕南低成系锹肌H绻?闶褂?设置代理 创建了一个用户账号,你可以使用那个用户名和口令来登录。如果你没有创建用户账号,那么,你可以登录为超级用户,又称 root (根)。根口令是你在安装时指派的系统口令。

极力推荐你至少创建一个用户帐号来用于 Red Hat Linux 系统的常规使用。你可以在登录为根用户后使用 用户管理器 图形化工具或 useradd shell 提示工具来创建新用户。详情请参阅 第 1.6 节 。

2. 安装 RPM 时的错误消息

我该怎样从光盘或互联网上安装 RPM?在使用 rpm 命令的时候,我不断收到错误消息。

如果你收到的错误消息类似于 failed to open /var/lib/rpm/packages.rpm ,那是因为你没有安装 RPM 文件的正确权限。

在安装软件的时候,你通常需要进行只有根用户才能执行的影响整个系统的改变,例如在你的用户主目录之外创建新目录或改变系统的配置。如果你使用的是你的普通用户帐号,你将默认不具备进行这些改变的权限。

你必须是根用户才能安装 RPM 文件。在 shell 提示下,运行下面的命令来转换成根用户:

su

在提示后输入根口令之后,你应该能够顺利地安装 RPM 文件。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

178楼 旧帖 06-07-17 23:47

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9下快速寻找命令

昨天我在看一个说明书(man)页,但是我想不起我所阅读的命令的名称,而且我没把它笔录下来,我怎么样才能重新找到这个说明书(man)页呢?

你用过的命令很可能会储存在一个叫做 .bash_history 的文件中。默认情况下,这个文件记载你在 shell 提示下键入的最后 500 个命令。

你可以在 shell 提示下键入 history 来把命令历史匆匆掠过,但是输出结果滚动的太快,你无法阅读每一行。

查看 .bash_history 的另一种方法是使用一个 less 之类的工具。在 shell 提示下键入 less .bash_history ,结果就会被一页一页地显示。要向前翻阅,按 [Space] 键;要向后翻阅,按 [b] 键,要退出,按 [q] 键。

在 .bash_history 中一页一页地翻查命令有时是一个冗长的过程。另外的办法是使用 grep 来搜索文件的关键字。 grep 是功能强大的搜索工具。

假设你前一天在阅读 man 页,却想不起那个命令的名称,要搜索这个命令,键入:

history | grep man

你会看到一个列表,其中列出了所有带 man 的项目。

红联Linux论坛:

__________________

希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐

---------------------------------------------

http://tzhsuccess.itpub.net

向版主反映这个帖子 查看tzhsuccess 的IP地址

179楼 旧帖 06-07-17 23:47

[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复

tzhsuccess

高级会员

注册日期: 2004 Apr

来自: 太?系-?子座

技术贴数:7934

论坛积分:31670

论坛排名:67

论坛徽章:23

会员2006贡献徽章 行业板块每日发贴之星 ERP板块每日发贴之星

RedHat Linux 9下启动应用程序

我安装了一个从互联网上下载的应用程序,一切似乎都正常,但在我键入它的名称后,却总是得到一个“command not found”消息。我知道我键入的名称是正确的,它为什么无法启动呢?

如果你想从 shell 提示下启动一个应用程序却不奏效,试着在应用程序的可执行名称前面添加一个 ./ (譬如 /usr/local/bin/my-executable )。

假设你下载了 setiathome 客户应用程序,你想试用它,并且你遵循了安装软件的所有指令,在你的主目录中创建了一个叫做 seti/ 的子目录。现在,使用该可执行文件的完整路径来启动这个应用程序,如下所示:

/home/joe/seti/setiathome

你之所以要使用完整路径名来启动程序是由于,可执行文件没有被放置在你的用户 shell 环境所知的目录中(如 /usr/local/bin )。

你可以定制该设置,因此你便不必每次都键入应用程序的完整路径名。要达到这个目的,你必须编辑你的 PATH 变量。

16.3.1. 编辑你的 PATH

如果你需要频繁地启动位于 shell 搜索的路径之外的程序,你就得编辑你的用户 shell 配置文件来添加包含你想运行的文件的目录。你可以通过在你的 PATH 环境变量中添加该目录来达到这个目的。

小心:这里的说明 仅仅 是用于普通用户帐号的。请避免修改根用户的 .bash_profile 之类的文件,因为它会造成潜在的安全危险。

在 shell 提示下启动一个文本编辑器,如 gedit 或 vi 。你可以键入下面的命令来打开叫做 .bash_profile 的文件:

gedit .bash_profile

你将会看到一条 PATH 声明,与下面的输出相似。

PATH=$PATH:$HOME/bin:/usr/local/bin:

在声明的结尾处,添加 $HOME/seti ,如下所示:

PATH=$PATH:$HOME/bin:/usr/local/bin/:$HOME/seti:

保存文件并退出文本编辑器。

这时,你便可以键入下面的命令来使 .bash_profile 中的改变立即生效:

source .bash_profile

通过在你的 .bash_profile 文件中添加路径,你可以在这些路径中保存工具和程序而不必在命令前键入 ./ 来执行它。

阅读(1859) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~