November 2005 Archives

在 Linux 中共享 Windows 系统资源

  在一部电脑上装有Linux和Windows的用户,可能需要在Linux中用到包括软盘、光盘以及Windows分区中的文件,如当你在Windows操作系统中上网,却下载了Linux的应用软件的时候。下面我就向大家详细介绍这方面的知识和具体的应用。



  一、装载(mount)
  (一)准备知识
  在Linux系统中想要使用软驱的话,要先把它们装载到系统中,装载指令mount的格式如下:
  mount -t 文件系统类型 设备文件名 装载目录
  1.文件系统类型
  文件系统类型一般来说就是分区格式,依操作系统的不同而不同。下面将Linux系统支持的文件系统类型择要分列如表一:
  2.设备文件名
  在Linux系统中,各个驱动器设备的命名和Windows中的规则(如A:、C:等)有很大的区别。所有的系统硬件设备都可以在/dev目录下找到对应的设备文件名。例如/dev/mouse就用来表示系统中的鼠标。磁盘驱动器的各个不同分区所对应的设备文件名列表如表二:
  假设第一个IDE硬盘驱动器被分成数个分区,通常,第一个分区可以肯定其设备文件名为/dev/hda1,但其它分区的设备文件名就不是可以依次类推得到的(特别是当用户使用了诸如PTM之类的磁盘分区工具的时候)。如果你想要知道硬盘各分区所对应的设备文件名,可以在控制台下执行cfdisk的指令,则各分区对应的设备文件名就可以一目了然了。
  3.装载目录
  通常我们都会在/mnt目录下面为需要装载的磁盘驱动器创建一个目录,不过这并不意味着它们不可以被装载于其它未被使用的目录中。再者,所谓装载目录,并不是将被装载的磁盘驱动器整个复制到本地,而仅仅是在本地提供一个装载点用以联系其它需要装载的磁盘驱动器。
  Linux系统对字符的大小写是敏感的,但是在Windows中就不是这样。而当你装载一个Windows系统中的驱动器后,对其上的文件操作时,字符的大小写就变得不敏感了,这意味着用户不可以在装载的Windows驱动器的同一目录中建立这么两个文件:ABC.TXT和abc.txt,因为在Windows系统中,它们代表同一个文件。
  (二)装载实例
  1.装载软盘
  首先在/mnt目录下为软磁盘创建一个目录floppy(有时Linux系统在安装的时候已经为你做了这一步):
  mkdir /mnt/floppy
  接着用装载指令将软盘中的内容装载到这一目录中:
  mount -t msdos /dev/fd0 /mnt/floppy
  此后你就可以在/mnt/floppy下完全访问到软磁盘中的内容了。当然你亦可以用vfat这一文件系统类型代替msdos以使你能正确访问到软盘上的长文件名字,或者是用ext2代替它以使你可以访问到Linux文件格式的软盘。
  2.装载FAT 32格式的C盘
  在/mnt目录下为之创建一个目录winc(winc以及其他的装载目录是笔者的假设,你可以用自己喜欢的其他合法字符去命名这些目录):
  mkdir /mnt/winc
  用装载指令将C盘内容装载入该目录:
  mount -t vfat /dev/hda1 /mnt/winc
  3.装载光盘
  在/mnt目录下为你的光盘驱动器创建一个目录cdrom(有的Linux系统安装时已为你完成了这件事):
  mkdir /mnt/cdrom
  如果你的光盘驱动器安装在primary slave上,设备文件名就是/dev/hdb;如果安装在secondary master上,设备文件名就是/dev/hdc。假设你的光盘驱动器挂在secondary master,就用下面的装载指令:
  mount -t iso9600 /dev/hdc /mnt/cdrom
  由于Linux版本的不同,你所用的系统或者会使用这样的指令来装载光盘:
  mount /dev/cdrom
  或mount /mnt/cdrom
  二、卸载(umount)
  如果你已经用指令将软盘装载进相应目录,就不要直接将它们从软驱中取出来,否则可能会导致信息丢失;已经装载的光盘驱动器更是会令面板上的弹出键暂时失效以阻止你将光盘直接取出。
  在你取出它们之前,首先要确定已经没有用户对它们进行访问操作,包括没有工作窗口处在该磁盘驱动器被装载的目录。卸载指令的格式如下:
  umount 卸载目录名
  如用户想要卸载软盘,可以用如下指令:
  umount /mnt/floppy
  三、进阶使用
  (一)为装载指令增加简捷的形式
  用户可以在系统的配置文件/etc/fstab中指定一些常用的需要装载的驱动器,以便用更简捷的指令来装载它们,下面给出一个添加Windows系统的C盘进配置文件的例子:用文件编辑工具vi(也可以用其它你熟悉的文件编辑工具)打开/etc/fstab,我们会看到系统已经为根目录“/”、软磁盘驱动器、光盘驱动器等指定了文件系统类型和设备文件名以及装载目录(可能会因为所用的Linux版本不同,被指定的驱动器会有出入,不过用户可以参照下面的例子做出改动)。你既可以改变它们的预设值,也可以在其中添加新的驱动器。用箭头将光标移到最后一行,将下面一行加入文件:
  /dev/hda1 /mnt/winc vfat defaults 0 0
  如果还想装载硬盘内的其它分区,可以依次加入。完成后保存文件并退出。不要忘记相应的创建目录/mnt/winc。此后你就可以用如下指令装载Windows系统的C盘了:
  mount /mnt/winc
  (二)启动时自动装载磁盘驱动器
  用户可能会希望系统在启动时可以将你惯用的磁盘驱动器(如硬盘中的Windows分区或者是光盘驱动器)自动装载,以减轻每次启动后都要手动装载的麻烦。你可以用以下方法实现自动装载的功能:
  用文件编辑工具打开/etc/fstab,将刚才我们加入的那一行中的defaults改成auto,如:
  /dev/hda1 /mnt/winc vfat auto 0 0
  对于其它想在启动时就装载的磁盘驱动器,都可以将defaults改成auto。需要注意的是,对于硬盘上的Linux分区(包括ext2和swap)并不需要作出这样的改动。
  重新启动系统以后,在/mnt/winc目录下,你就可以看到系统在启动时就装载好的Windows系统的C盘了。
  四、使用Mtools
  在Linux中想要共享Windows系统资源,除了上面介绍的装载(mount)命令之外,还有一组名为Mtools的软件包可以实现这一功能。和大多数实用工具一样,Mtools软件包亦是Linux系统默认的安装套件。你可以在http://mtools.ltnb.lu/下载到它的最新版本mtools-3.9.7.tar.gz。
  (一)Mtools命令
  对于熟悉DOS命令的用户来说,Mtools命令会让他们感觉到像回到了DOS的世界。在下面的表格中我们可以看出它们有多么相似:
  很显然,Mtools命令是简单地在DOS命令前加上了一个m前缀,功能还是和在DOS下一样的。须要注意的是,更改目录路径在DOS命令中可以有cd和chdir两种命令格式,但是在Mtools中只有mcd一种格式。类似的在Mtools中没有对应的命令还有mkdir、rmdir、rename等等。
  (二)mtools.conf文档的配置
  因为Mtools是一个仿真DOS命令的软件包,所以它也保存着DOS系统下的磁盘驱动器概念。Mtools不但可以实现A盘 、B盘、 C盘的概念,对于一些特殊驱动器(如ZIP驱动器)更有专门的命令(mzip)以让用户方便地进行操作。在默认的环境下,A盘和B盘分别对应着两个软盘驱动器(如果有的话),N盘则对应着DOSMU启动盘的镜像文件。
  我们可以通过修改/etc/mtools.conf文档来改变默认的配置,当然在做出修改之前你仍要对Linux下的设备文件名有相当的认识才行(请参考上一期本版有关设备及其文件名的介绍)。假设你的机器有一个1.44MB软驱(A),硬盘挂在第一个IDE接口的主位置上,在第一个分区(C盘)中安装有Windows操作系统,光驱挂在第二个IDE接口的主位置上(D盘),以及SCSI盘等,则可以对mtools.conf文档简单配置如下:
  mtools.conf
  drive a: file=″/dev/fd0″ exclusive 1.44m
  drive c: file=″/dev/hda1″
  drive d: file=″/dev/hdc″
  drive X: file=″/dev/rdsk/c0t5d0s2″ partition=4 scsi=1 nodelay
  (三)Mtools命令的使用
  Mtools的命令系统和DOS有很多相似之处,比如在命令后面可以加不同的参数以实现更为丰富的功能(Mtools命令的参数使用方法是在命令后面加“-<参数>”,你可以把它想象成用“-”代替了DOS命令使用的“/”),可以使用通配符“?”和“*”。更为方便的是,使用Mtools不需要事先装载(mount)和事后卸载(umount)。
  下面我们以目录列表命令mdir为例作说明(想知道其它命令的使用格式和更多的可用参数可以用man 命令查看相关帮助系统)。mdir的功能是对DOS目录和其中的文档进行列表操作。命令格式如下:
  mdir [-/] [-f] [-w] [-a] [-X] msdosfile [msdosfile]
  各命令参数的功能分述如下:
  /:输出当前路径下的所有目录和文档,相当于DOS命令dir中的“s”参数;
  f:列表时不尝试计算当前分区的自由空间,对于大硬盘来说,这样做可以节省一些读入和扫描分区表(FAT)的时间;
  w:列表时在一行中显示多个目录文档,这种输出格式将不显示文档的大小和创建时间,相当于DOS命令dir中的“w”参数;
  a:列出隐藏的目录文档;
  X:简要列表, 列出路径名而不列出其它附加的信息。
  一些具体的应用实例:
  1.列表A盘下的所有目录文档(不包括隐藏的目录文档)
  mdir -/ a:
  2.列表C盘Windows目录下含有“abc”的目录文档
  mdir c:/windows/*abc*
  或者mdir c:\windows\*Abc*
  注:在Mtools命令中,/和\是可以混用的。又因为列表的是DOS系统下的文档,对大小写并不敏感,所以“abc”和“Abc”在这里是等价的。而通配符“*”的用法和DOS命令亦有所不同。
  五、在Windows系统中共享Linux系统的文档
  无论对于刚接触Linux的新手还是对之已经熟悉的高手,恐怕都免不了想在Windows系统中调阅Linux系统的文档。这可以使用在Windows系统下观看Linux分区的小软件(如fsdext2等)。这里再向各位推荐两种可以实现这种功能的小软件。
  (一)Linuxindos
  Linuxindos是一个不到500KB的小程序,笔者找到的版本是Beta 0.9的DEMO版,用户可以在http://best.163.com/~linux/soft/下载试用。程序不需安装就可以在Windows系统下运行,使用也非常简单。
  在Windows系统下将linuxindos.zip解压到硬盘目录,用户就会看到一个带着企鹅图标的可执行程序LiD95Demo.exe。启动程序后,会出现一个接口非常简单的窗口,当用户挑选一个含有Linux系统文档的磁盘驱动器以后,Linux分区中的所有文档就会显示出来,左边窗口列出的是Linux分区中的目录,而右窗口就列出了目录内的文档,感觉就像在Windows的资源管理器中一样。
  (二)Explore2fs
  这是一个更为小巧的自由软件,大小约308KB,用户也可以在http://best.163.com/~linux/soft/下载使用。正如它的名字一样,这是一个有着类似资源管理器窗口的程序,通过它你可以读取Linux系统下的分区。和Linuxindos一样,Explore2fs的主视窗亦分为左右两个,左边显示的是Linux中的目录,而右边显示的就是目录中的文档了,可以简单地将右边视窗中的文档直接拖到Windows系统分区中。
  在右边视窗中选择好文档后,按下鼠标右键可以选择相应的操作,“Export file”是直接导出文档,而“Export to Text”则是除去文档的分隔符后导出和TEXT兼容的文本文档。  (广东 念青)

菜鸟们只需掌握mount与umount就可以了,后面几个嘛...嘿嘿,我也没用过!!!


http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=360

GRUB三步通

朋友,你装好linux后是不是每次启动后系统就默认进入到linux,想让它变成windows吗?请修改你的引导装入器吧(当然它不止这个功能)!由于现在的linux都喜欢用GRUB来引导,LILO已越来越少用了,所以我在这里主要给大家讲讲GRUB这个东东!!

##################
# GRUB的优点 #
##################
GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux 系统。GRUB 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。尽管引导操作系统看上去是件平凡且琐碎的任务,但它实际上很重要。如果引导装入器不能很好地完成工作或者不具有弹性,那么就可能锁住系统,而无法引导计算机。另外,好的引导装入器可以给您灵活性,让您可以在计算机上安装多个操作系统,而不必处理不必要的麻烦。
GRUB 是一个很棒的boot loader。它有许多功能,可以使引导过程变得非常可靠。例如,它可以直接从 FAT、minix、FFS、ext2 或 ReiserFS 分区读取 Linux 内核。这就意味着无论怎样它总能找到内核。另外,GRUB 有一个特殊的交互式控制台方式,可以让您手工装入内核并选择引导分区。这个功能是无价的:假设 GRUB 菜单配置不正确,但仍可以引导系统。哦,对了 -- GRUB 还有一个彩色引导菜单。

更令人惊讶的是,这是一个自由软件!!!



##################
# GRUB菜单 #
##################
先来看一个例子,这是位于/boot/grub/目录下的menu.lst文件。
此文件将在开机是产生一个菜单,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四个选择项。我一共分了8个区,一个fat16(0x6),一个ntfs(0x7),三个ext2fs分区(0x83),一个swap分区(0x82)。ntfs用来装win2000,三个ext2fs装了三个linux,c盘fat16分区没有装任何东西。
#例子由此开始

######################
# #
# 一个GRUB configure 的例子 #
# #
######################

timeout 10
default 2


# --> Debian linux <--

title Debian linux
root (hd0,2)
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro
initrd /boot/initrd-2.2.18.gz


# --> Debian END <--

# --> Windows 菜单选项 <--

title Windows2000
root (hd0,0)
chainloader +1

# --> Winddows 结束 <--

# --> RedHat linux 菜单选项 <--

title RedHat linux
root (hd0,8)
chainloader +1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。

# --> RedHat linux 结束 <--

# --> Mandrake linux 菜单选项 <--

title Mandrake linux
root (hd0,5)
kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro
initrd /boot/initrd-2.4.3-20mdk.img

# --> Mandrake linux 结束 <--


#例子到此结束

以符号井"#"开头的行表示被注释掉,没有任何意义。

timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root 于linux的root分区及其不同,此root非彼root也!

在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。

到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。

知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。
kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro说明/boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。
initrd用来初始的linux image,并设置相应的参数。

是不是感觉很简单啊!再来看一看windows的定义段吧。
这里,我添加了一项来引导 Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧!

######################
# GRUB的交互性 #
######################




GRUB 最好的优点之一就是其强健的设计 -- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装 GRUB。事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub>

欢迎使用 GRUB 控制台。现在,再研究命令:
我将通过GRUB 控制台绕过lilo来启动RedHat linux,

grub> root (h

现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:

grub> root (hd0,

现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

grub> root (hd0, (tab,按tab一下键)
Possible partitions are:
Partition num: 0, Filesystem type is fat, partition type 0x6
Partition num: 2, Filesystem type is ext2fs, partition type 0x83
Partition num: 4, Filesystem type unknown, partition type 0x7
Partition num: 5, Filesystem type is ext2fs, partition type 0x83
Partition num: 6, Filesystem type is fat, partition type 0xb
Partition num: 7, Filesystem type is fat, partition type 0xb
Partition num: 8, Filesystem type is ext2fs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82

如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了
grub> root (hd0,8)
现在已安装了 root 文件系统,到装入内核的时候了

grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro
[Linux-bzImage, setup=0x1200, size=0xe1a30]

您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。


#####################
# GRUB启动盘 #
#####################
要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

将一张空盘插入 1.44MB 软驱,输入:

# mke2fs /dev/fd0
创建了 ext2 文件系统后,需要安装该文件系统:

# mount /dev/fd0 /mnt/floppy
现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

# mkdir /mnt/floppy/boot
# mkdir /mnt/floppy/boot/grub
# cp /boot/grub/stage1 /mnt/floppy/boot/grub
# cp /boot/grub/stage2 /mnt/floppy/boot/grub
再有一个步骤,就能得到可用的引导盘。

在linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。
在 grub> 提示符处,输入:

grub> root (fd0)
grub> setup (fd0)
grub> quit

现在,引导盘完成了。
如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的 GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):

grub> setup (hd0)

如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

grub> setup (hd0,4)

现在,已安装 GRUB。引导系统时,应该立即以 GRUB 的控制台方式结束(如果安装到 MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

小结:在这里只是介绍了 GRUB 的一部分。例如,可以使用 GRUB 来执行网络引导,引导 BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,请阅读 GRUB 出色的 GNU 文档。只要在 bash 提示中输入 "info grub" 就可以阅读该文档。


http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=359

轻松安装、卸载Linux软件(三篇)

以下三篇文章大部分内容是雷同的,懒得整理,所以全放上来了!!



第一篇


Linux下软件的安装与卸载

在Windows下安装软件时,只需运行软件的安装程序(setup、install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall、unware、“卸载”等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击“下一步”就可以了。而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观。其实在Linux下安装和卸载软件也非常简单,同样也有安装向导或解压安装的方式,不相同的只不过是除了二进制形式的软件分发外,还有许许多多以源代码形式分发的软件包,下面就来详细地讲一讲这些软件的安装与卸载:

一、二进制分发软件包的安装与卸载
Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。
1、*.rpm形式的二进制软件包
安装:rpm -ivh *.rpm
卸载:rpm -e packgename
说明:RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作,安装简单,而卸载时也可以将软件安装在多处目录中的文件删除干净,因此推荐初学者尽可能使用rpm形式的软件包。rpm的参数中-i是安装,-v是校验,-h是用散列符显示安装进度,*.rpm是软件包的文件名(这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件);参数-e是删除软件包,packgename是软件包名,与软件包的文件名有所区别,它往往是文件名中位于版本号前面的字符串,例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是软件包文件名,它们的软件包名称分别是apache和apache-devel。更多的rpm参数请自行参看手册页:man rpm。
如果你不喜欢在字符界面下安装或卸载这些软件包,完全可以在X-Window下使用图形界面的软件包管理程序,如glint、xrpm这样的图形接口,或者是KDE的kpackge等,这样对软件包的安装、升级、卸载、验证和查询就可以通过点击鼠标来轻松完成。
2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2
卸载:手动删除
说明:*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除(稍麻烦),想知道解压时向系统中安装了哪些文件,可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压,x是解包,v是校验,f是显示结果,y是调用bzip2解压,t是列出包的文件清单。更多的参数请参看手册页:man tar。
如果你更喜欢图形界面的操作,可以在X-Window下使用KDE的ArK压缩档案管理工具。
3、提供安装程序的软件包
这类软件包已经提供了安装脚本或二进制的安装向导程序(setup、install、install.sh等),只需运行它就可以完成软件的安装;而卸载时也相应地提供了反安装的脚本或程序。例如SUN公司的StarOffice办公软件套件就使用名为setup的安装程序,而且在软件安装后提供反安装的功能,目前这种类型的软件包还比较少,因其安装与卸载的方式与Windows软件一样,所以就无需多讲了。

二、源代码分发软件包的安装与卸载
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。
1、*.src.rpm形式的源代码软件包
安装:rpm -rebuild *.src.rpm
cd /usr/src/dist/RPMS
rpm -ivh *.rpm
卸载:rpm -e packgename
说明:rpm --rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包,然后再安装该二进制包即可。packgename如前所述。
2、*.tar.gz/*.tgz、*.bz2形式的源代码软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解压
然后进入解压后的目录:
./configure 配置
make 编译
make install 安装
卸载:make uninstall 或 手动删除
说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure --prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最难的,它适合于使用Linux已有一定经验的人,一般不推荐初学者使用。

关于Linux下软件的安装与卸载lanche已经讲了这么多,但可能还会有人问怎么知道一个tar.gz/bz2包是二进制文件包呢还是源代码包?如果你用过压缩工具就会明白,压缩包未必就是软件,它也可能是备份的许多图片,也可能是打包在一起的普通资料,要分辨它到底是什么最好的办法就是查看包里的文件清单,使用命令tar ztvf *.tar.gz / tar ytvf *.bz2或者在X-Window下使用图形化的ArK压缩档案管理工具都可以,源代码包里的文件往往会含有种种源代码文件,头文件*.h、c代码源文件*.c、C++代码源文件*.cc/*.cpp等;而二进制包里的文件则会有可执行文件(与软件同名的往往是主执行文件),标志是其所在路径含有名为bin的目录(仅有少数例外)。原来这么简单呀,还不快点自己试试!


第二篇

如何安装Linux的软件

在windows下安装软件大家都觉得很容易,只要双击setup或是install的图标,然后跟着向导一步一步的按提示做就可以了,但是在linux下安装软件就不像windows下那样容易了,有时你找到的是没有编译过的软件源码,那就更加的麻烦了,这里就介绍一下如何安装linux的软件啦!
linux下的软件一般都是经过压缩的,主要的格式有这几种:rpm、tar、tar.gz、tgz等。所以首先拿到软件后第一件事就是解压缩。
一、在xwindow下以rpm格式的软件安装比较容易,只要在把鼠标移到文件上单击右键,在弹出的菜单里会有专门的三项(只有在右键单击rpm文件才会出现)show info,upgrade和install,这三项的意思大家都很清楚了,我就不多说了。rpm格式说了,接着就是tar,tar.gz,tgz等,在xwindow下双击这些格式的文件就会自动解压缩的,是解压缩而不是像rpm那样有install选项的,install文件会在你解压缩后才出现,不过这里我要先说一下,在你双击install前建议先好好看一下readme,因为你所要安装这些软件可能是没有编译的,所以看一下会比较好。
二、说完了xwindow下的安装和解压缩,接着说在文本模式下如何解压缩和安装,还有编译源码了。首先说rpm的,以root身份登陆后(用其他的身份登陆也可以但有些软件就不能被安装)键入rpm -i你所要解压缩的文件+扩展名(当然是rpm)也不是很难吧,这里我要说的是“-i”意思是install,如果你想要卸载或是要执行其他的指令就打rpm --help,看电脑给你的提示吧,为了照顾那些E文不太好的人我这里就写几个常用的参数:-e:卸载相关的应用程序,-U(注意是大写):升级软件包, -pql:列出rpm软件包的相关信息,-qf:查找指定文件属于哪个软件包。至于那些其他格式的软件则可以用gunzip,gzip,tar和unzip等指令来解压缩,然后再运行install。通过解包后会得到一些文件,然后进入刚才解压缩后文件目录用“ls -F -color”指令看一下所得到的文件,一般有两种情况:第一种是文件为已经编译好的程序(无须再编译了)用上面的察看文件命令会以带“*”标记的亮绿色显示;第二种则是需要由你自己编译的源代码。得到的是源代码的话,就需要我们自己编译来得到可运行的程序。编译源代码听到编译是不是就吓到你了呢,其实说穿了也就加上几句话而已,对初学者是有些困难想用好的操作系统就需要学习嘛,等你学会了在MM前露一手的时候想想吧……,在编译之前先要认真的阅读一下readme文档,老鸟们就不需要了吧,等你阅读完了以后就执行
./configure
make
make install(只有Root身份才能执行此命令),编译完成之后便会在当前目录或src子目录下得到软件的可执行程序。
介绍完了,大家是不是觉的RPM的软件安装比较容易一点呢,但我个人意见初学者还是多选择RPM格式以外的软件,因为通过编译软件的源码可以为你以后编译内核打下一定的基础。(上海 张国荣)


第三篇

轻松安装、卸载Linux软件

Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。

软件的安装
Linux下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz;另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发送的;第二种方式则是直接以二进制形式发送的。

对于第一种,安装方法如下:

1.首先,将安装文件拷贝至你的目录中。例如,如果你是以root身份登录上的,就将软件拷贝至/root中。

#cp xxx.tar.gz /root

2.由于该文件是被压缩并打包的,应对其解压缩。命令为:

#tar xvzf filename.tar.gz

3.执行该命令后,安装文件按路径,解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,有“Install”的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。

4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为:#./configure。

5.检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。命令为:#make。

6.成功编译后,键入如下的命令开始安装:

#make install

7.安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:

#make clean
#make distclean

至此,软件的安装结束。

对于第二种,其安装方法要简单得多。

同第一种方式一样,将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下:

#rpm -i filename.i386.rpm

rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。

软件的卸载
1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令:

#rpm -q -a

即可查询到当前系统中安装的所有的软件包。

2.确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入如下命令即可卸载软件:

#rpm -e [package name]

参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载:

#rpm -e [package name] -nodeps

忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用。

补充

如果是以.bin结尾的二进制软件,可以用以下方法安装(以so-6_0-beta-bin-linux-zh-Tw1.bin为例):

在so-6_0-beta-bin-linux-zh-Tw1.bin所在文件夹下运行模拟终端
输入:
./so-6_0-beta-bin-linux-zh-Tw1.bin
并按回车!

当然也可以输入:
./so 再用[Tab]键补全

(./表示当前目录,如果终端不在该软件所在目录下打开,则在软件名前尚需输入相应的路径。)

如果在图形界面,也可直接单击(或双击,视具体的鼠标设置而定)进行安装!


http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=357

Linux操作系统的内核编译内幕详解

  内核简介

  内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

  Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。

  全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。

  想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。

  在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。

  内核版本号

  由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。

  一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。

  开发数就体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(因此,是奇数)。到目前为止,稳定树的最高版本是2.2.16,最新发布的Redhat7.0所采用的就是2.2.16的内核;开发树的最新版本是2.3.99。也许你已经发现和多网站上都有2.4.0-test9-pre7之类的内核,但是这并不是正式版本。内核版本的更新可以访问http://www.kernel.org。

  为什么重新编译内核

  Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

  通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。

  为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

  自己定制编译的内核运行更快(具有更少的代码)

  系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)

  不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

  将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些


  内核编译模式

  要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。

  如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。

  如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。

  内核编译详解

  新版本内核的获取和更新

  Linux内核版本发布的官方网站是http://www.kernel.org,国内各大ftp上一般都可以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内核版本,另外一种是patch文件,即补丁。

  完整的内核版本比较大,比如linux-2.4.0-test8.tar.bz2就有18M之多,网速快的用户可以下载使用。完整内核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。

  patch文件则比较小,一般只有几十K到几百K,极少的会超过1M,网速慢的用户可以使用patch文件来升级内核。但是patch文件是针对于特定的版本的,你需要找到自己对应的版本才能使用。

  编译内核需要root权限,以下操作都假定你是root用户。请把你需要升级的内核拷贝到/usr/src/下(下文中以2.4.0test8的内核的linux-2.4.0test8.tar.gz为例),命令为

#cp linux-2.4.0test8.tar.gz /usr/src

  让我们先来查看一下当前/usr/src的内容,注意到有一个linux的符号链接,它指向一个类似于linux-2.2.14(对应于你现在使用的内核版本号)的目录。首先删除这个链接:

#cd /usr/src
#rm -f linux

  现在解压我们下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,请使用下面的命令:

#tar -xzvf linux-2.4.0test8.tar.gz

  如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的命令

#bzip2 -d linux-2.4.0test8.tar.bz2
#tar -xvf linux.2.4.0.test8.tar

  现在让我们再来看一下/usr/src下的内容,你会发现现在有了一个名为linux的目录,里面就是我们需要升级到的版本的内核的源程序。还记得那个名为linux的链接么?之所以使用那个链接就是防止在升级内核的时候会不慎把原来版本内核的源程序给覆盖掉了。我们也需要同样处理:

#mv linux linux-2.4.0test8
#ln -s linux-2.4.0test8 linux

  这样我们也有了一个名为linux的符号链接,就不用担心以后会把它覆盖掉了(也许你会觉得重新建立linux的符号链接没有必要,但实际上这是必不可少的,下文中会有介绍)。如果你还下载了patch文件,比如patch-2.4.0test8,你就可以进行patch操作(下面假设patch-2.4.0test8已经位于/usr/src目录下了,否则你需要先把该文件拷贝到/usr/src下):

#patch -p0 < patch-2.4.0test8

  现在,我们已经把内核源程序升级到最新版本了,下面就让我们开始内核编译的旅程吧。


       准备工作

  通常要运行的第一个命令是:

#cd /usr/src/linux;make mrproper

  该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。

  确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结构是i386)所需要的真正的include子目录。

  如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创建,按照下面的步骤进行:

# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi

  这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们上面又在/usr/src下"多余"地创建了个名为linux的链接了吧?

  配置

  接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。

  配置内核可以根据需要与爱好使用下面命令中的一个:

#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

  这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令。

  如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。

  选择相应的配置时,有三种选择,它们分别代表的含义如下:

Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块

  如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是make menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。

  用空格键选择时可以发现,中括号里要么是空,要么是"*",而尖括号里可以是空,"*"和"M"这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。

  在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。

  选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面就让我们对常用的选项分别加以介绍。

  1. Code maturity level options

  代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。

  2. Loadable module support

  对模块的支持。这里面有三项:

  Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。

  Set version information on all module symbols:可以不选它。

  Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。


       3. Processor type and features

  CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:

  Processor family:根据你自己的情况选择CPU类型。

  High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。

  Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。

  MTTR support:MTTR支持。可不选。

  Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。

  4. General setup 这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:

  Networking support:网络支持。必须,没有网卡也建议你选上。 PCI support:PCI支持。如果使用了PCI的卡,当然必选。

  PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。

  Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。

  PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。

  System V IPC

  BSD Process Accounting

  Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。

  Power Management support:电源管理支持。 Advanced Power Management BIOS support:高级电源管理BIOD支持。

  5. Memory Technology Device(MTD)

  MTD设备支持。可不选。

  6. Parallel port support

  串口支持。如果不打算使用串口,就别选了。

  7. Plug and Play configuration

  即插即用支持。虽然Linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。

  8. Block devices

  块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:

       Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
       XT hard disk support:
       Compaq SMART2 support:
       Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
       Loopback device support:
       Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。
       Logical volume manager(LVM)support:逻辑卷管理支持。
       Multiple devices driver support:多设备驱动支持。
       RAM disk support:RAM盘支持。

  9. Networking options

  网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP networking哦)就可以了。

  让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos and/or fair queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。

  10. Telephony Support

  电话支持。这个是什么东东?让我查查帮助,原来是Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。


  11. ATA/IDE/MFM/RLL support

  这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

12. SCSI support

  SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了。

  13. IEEE 1394(FireWire)support 这个是什么?低版本的没有见过,看看帮助再说。原来是要Fireware硬件来提高串行总线的性能,我没有,不选了。

  14. I2O device support

  这个也不清楚,帮助里说是这个需要I2O接口适配器才能支持的,在智能Input/Output(I2O)体系接口中使用,又是要硬件,不选了。

  15. Network device support

  网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。

  我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。

  16. Amateur Radio support

  又一个不懂的,应该是配置业余无线广播的吧,没有,不要了。

  17. IrDA(infrared)support

  这个要红外支持,免了。

  18. ISDN subsystem

  如果你使用ISDN上网,这个就必不可少了。自己看着办好了。

  19. Old CD-ROM drivers(not SCSI、not IDE) 做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,反正我是用的IDE的CD-ROM,不选这个。


  20. Character devices

  字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:

  I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux,该项必选。

  Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根据需要选择。

  Joysticks:手柄。即使在Linux下把手柄驱动起来意义也不是太大,游戏太少了。

  Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。

  Video For Linux:支持有关的音频/视频卡。

  Ftape, the floppy tape device driver:

  PCMCIA character device support:

  21. File systems

  文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:

  Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。

  DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。

  ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。

  NTFS file system support:ntfs是NT使用的文件格式。

  /proc file system support:/proc文件系统是Linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。

  还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、Partition Types(分区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两种:NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。

  22. Console drivers

  控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。

  23. Sound

  声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。

  24. USB supprot

  USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持,根据需要自行选择。

  25. Kernel hacking

  配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。

  总算配置完了,现在存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。


       编译

  在繁杂的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。与编译有关的命令有如下几个:

#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a

  第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。建议大家使用make bzImage命令。

  后面三个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。

  严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。

  更新

  经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:

#cp /usr/src/linux/System.map /boot/System.map-2.4.0test8
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.0test8

  以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:

#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.0test8 vmlinuz
#ln -s System.map-2.4.0test8 System.map

  然后修改/etc/lilo.conf:

#vi /etc/lilo.conf

  增加如下一段:

image=/boot/vmlinuz-2.4.0test8
label=linux240
read-only
root=/dev/hda2

  其中root=/dev/hda2一行要根据需要自行加以修改。运行:

#/sbin/lilo -v

  确认对/etc/lilo.conf的编辑无误,现在重新启动系统:

#shutdown -r now

  在机器重启后出现LILO时按TAB键,输入linux240,我们的新内核发挥作用了,好好享受吧。

Linux必须学会的60个命令

| 2 Comments

  Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。

  file


       1.作用:file 通过探测文件内容判断文件类型,使用权限是所有用户。

  2.格式:file [options] 文件名


       3.[options] 主要参数:


       -v:在标准输出后显示版本信息,并且退出。

  -z:探测压缩过的文件类型。

  -L:允许符合连接。

  -f name:从文件 namefile 中读取要分析的文件名列表。

  4.简单说明:使用 file 命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件,还是Shell Script文件,或者是其它的什么格式。file能识别的文件类型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。

  5.应用实例:如果我们看到一个没有后缀的文件grap,可以使用下面命令:

  $ file grap grap:English text 此时系统显示这是一个英文文本文件。需要说明的是,file命令不能探测包括图形、音频、视频等多媒体文件类型。

  mkdir


       1.作用:mkdir命令的作用是建立名称为dirname的子目录,与MS DOS下的md命令类似,它的使用权限是所有用户。

  2.格式:mkdir [options]目录名


       3.[options]主要参数:


       -m,--mode=模式:设定权限<模式>,与chmod类似。

  -p,--parents:需要时创建上层目录;如果目录早已存在,则不当作错误。

  -v,--verbose:每次创建新目录都显示信息。

  --version:显示版本信息后离开。

  4.应用实例:在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”。假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限),那么可以使用以下命令:

  $ mkdir-m 777 tsk


  grep


       1.作用:grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

  2.格式:grep [options]


       3.主要参数:[options] 主要参数:

  -c:只输出匹配行的计数。

  -I:不区分大小写(只适用于单字符)。

  -h:查询多文件时不显示文件名。

  -l:查询多文件时只输出包含匹配字符的文件名。

  -n:显示匹配行及行号。

  -s:不显示不存在或无匹配文本的错误信息。

  -v:显示不包含匹配文本的所有行。

  pattern 正则表达式主要参数:

  :忽略正则表达式中特殊字符的原有含义。

  ^:匹配正则表达式的开始行。

  $:匹配正则表达式的结束行。

  <:从匹配正则表达式的行开始。

  >:到匹配正则表达式的行结束。

  [ ]:单个字符,如[A]即A符合要求。

  [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。

  。:所有的单个字符。

  *:有字符,长度可以为0。

  正则表达式是 Linux/Unix 系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。


  4.应用实例:查询 DNS 服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]{3 }.[0-0{3}。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。

  $grep '[0-9 ]{3 }.[0-0{3}' ipfile 补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持 q 模式范围的应用及与之相对应的一些更加规范的模式。


  dd


       1.作用:dd命令用来复制文件,并根据参数将数据转换和格式化。

  2.格式:dd [options]


       3.[opitions]主要参数:


       bs=字节:强迫ibs=<字节>及obs=<字节>。

  cbs=字节:每次转换指定的<字节>。

  conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。

  count=块数目:只复制指定<块数目>的输入数据。

  ibs=字节:每次读取指定的<字节>。

  if=文件:读取<文件>内容,而非标准输入的数据。

  obs=字节:每次写入指定的<字节>。

  of=文件:将数据写入<文件>,而不在标准输出显示。

  seek=块数目:先略过以obs为单位的指定<块数目>的输出数据。

  skip=块数目:先略过以ibs为单位的指定<块数目>的输入数据。

  4.应用实例

  dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘:

  $ rdev vmlinuz /dev/hda $dd if=vmlinuz of=/dev/fd0

  上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。


  find


       1.作用:find命令的作用是在目录中搜索文件,它的使用权限是所有用户。

  2.格式:find [path][options][expression]
          path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。

  3.主要参数:


       [options]参数:

  -depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。

  -maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。

  -mindepth levels:表示至少查找到开始目录的第level层子目录。

  -mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。

  -version:打印版本。

  [expression] 是匹配表达式,是find命令接受的表达式,find 命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。

  —name:支持统配符*和?。

  -atime n:搜索在过去n天读取过的文件。

  -ctime n:搜索在过去n天修改过的文件。

  -group grpoupname:搜索所有组为grpoupname的文件。

  -user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。

  -size n:搜索文件大小是n个block的文件。

  -print:输出搜索结果,并且打印。


  4.应用技巧 find 命令查找文件的几种方法:

  (1)根据文件名查找例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:

  find /-name lilo.conf
       find命令后的“/”表示搜索整个硬盘。

  (2)快速查找文件根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型 Linux 文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:

  find /etc -name smb.conf 这样,使用“快速查找文件”方式可以缩短时间。

  (3)根据部分文件名查找方法有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:

  find /-name '*abvd*'

  输入这个命令以后,Linux 系统会将在 / 目录中查找所有的包含有 abvd 这4个字符的文件(其中*是通配符),比如 abvdrmyz 等符合条件的文件都能显示出来。

  (4)使用混合查找方式查找文件

  find命令可以使用混合查找的方法,例如,我们想在 /etc 目录中查找大于500000字节,并且在 24 小时内修改的某个文件,则可以使用 -and (与)把两个查找参数链接起来组合成一个混合的查找方式。

  find /etc -size +500000c -and -mtime +1

Oracle中password file的作用及说明

 

在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份的。

口令文件中存放sysdba/sysoper用户的用户名及口令,允许用户通过口令文件验证,在数据库未启动之前登陆,从而启动数据库。

如果没有口令文件,在数据库未启动之前就只能通过操作系统认证.

使用Rman,很多时候需要在nomount,mount等状态对数据库进行处理
所以通常要求sysdba权限如果属于本地DBA组,可以通过操作系统认证登陆
如果是远程sysdba登陆,需要通过passwordfile认证.


1.remote_login_passwordfile = NONE

此时停用口令文件验证,Oracle数据库不允许远程SYSDBA/SYSOPER身份登录
无法通过远程进行数据库起停等操作管理


local:







 

[oracle@jumper oracle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Thu Apr 15 09:58:45 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> alter user sys identified by oracle;

User altered.

SQL> show parameter pass

NAME TYPE VALUE
--------------------- ----------- ------------------------------
remote_login_passwordfile string NONE


remote:







 

E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 -
Production on 星期四 4月 15 09:39:22 2004

Copyright (c) 1982, 2002, Oracle
Corporation. All rights reserved.

SQL> connect sys/oracle@hsjf as
sysdba
ERROR:
ORA-01017: invalid username/password; logon denied



此处实际上是无法通过口令文件验证


2.remote_login_passwordfile = exclusive


 






 



 

SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.

SQL> startup force;
ORACLE instance started.

Total System Global Area 131142648 bytes
Fixed Size 451576 bytes
Variable Size 104857600 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> show parameter pass

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string EXCLUSIVE
SQL> alter user sys identified by oracle;

User altered.


remote:






 



 

E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 -
Production on 星期四 4月 15 09:47:11 2004

Copyright (c) 1982, 2002, Oracle
Corporation. All rights reserved.

SQL> connect sys/oracle@hsjf as
sysdba
已连接。
SQL> show user
USER 为"SYS"
SQL>

 


这实际上就是通过口令文件验证登录的


3.进一步测试

如果此时我们删除passwdfile,sysdba/sysoper将无法认证,也就无法登陆数据库


Server:






 



SQL> !
[oracle@jumper oracle]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ ls orapwhsjf
orapwhsjf
[oracle@jumper dbs]$ mv orapwhsjf orapwhsjf.bak
[oracle@jumper dbs]$




Remote:






 



E:\Oracle\ora92\bin>sqlplus /nolog

SQL*Plus: Release 9.2.0.4.0 - Production on 星期四 4月 15 09:50:14 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> connect sys/oracle@hsjf as sysdba
ERROR:
ORA-01031: insufficient privileges


SQL>




这实际上就是无法通过口令文件验证身份


 


4.如果丢失了passwdfile

如果使用passwdfile却意外丢失,此时将不能启动数据库






 





SQL> startup force;
ORACLE instance started.

Total System Global Area 131142648 bytes
Fixed Size 451576 bytes
Variable Size 104857600 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01990: error opening password file '/opt/oracle/product/9.2.0/dbs/orapw'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3






此时可以通过orapwd重建口令文件来解决
此处我们恢复口令文件既可






 



SQL> !
[oracle@jumper oracle]$ mv $ORACLE_HOME/dbs/orapwhsjf.bak orapwhsjf
[oracle@jumper oracle]$ exit
exit

SQL> alter database open;

Database altered.

SQL>







大致就是如此.


 


5. remote_login_passwordfile = shared


我们看一下Oracle9i文档中的说明:


SHARED


More than one database can use a password file. However, the only user recognized by the password file is SYS.


意思是说多个数据库可以共享一个口令文件,但是只可以识别一个用户:SYS






 



SQL> select * from v$pwfile_users;


USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE


SQL> grant sysdba to eygle;
grant sysdba to eygle
*
ERROR at line 1:
ORA-01994: GRANT failed: cannot add users to public password file


SQL> show parameter password


NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED




我们看到,此时的口令文件中是不能添加用户的.


很多人的疑问在于:口令文件的缺省名称是orapw<sid>,怎么能够共享?


实际上是这样的: Oracle数据库在启动时,首先查找的是orapw<sid>的口令文件,如果该文件不存在,则开始查找,orapw的口令文件
如果口令文件命名为orapw,多个数据库就可以共享.


我们看一下测试:






 


[oracle@jumper dbs]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.3.0 - Production on Tue Jul 6 09:40:34 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 - Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> !
[oracle@jumper dbs]$ ls
hsjf initdw.ora inithsjf.ora init.ora lkHSJF orapwhsjf spfilehsjf.ora
[oracle@jumper dbs]$ mv orapwhsjf orapwhsjf.bak
[oracle@jumper dbs]$ exit
exit

SQL> startup
ORACLE instance started.

Total System Global Area 235999908 bytes
Fixed Size 451236 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
ORA-01990: error opening password file '/opt/oracle/product/9.2.0/dbs/orapw'--这是最后查找的文件
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3




我们建立orapw口令文件,这时候可以打开数据库.






SQL> !
[oracle@jumper dbs]$ ls
hsjf initdw.ora inithsjf.ora init.ora lkHSJF orapwhsjf.bak spfilehsjf.ora
[oracle@jumper dbs]$ cp orapwhsjf.bak orapw
[oracle@jumper dbs]$ exit
exit

SQL> alter database open;

Database altered.

SQL> show parameter passw

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED
SQL>


 


那么你可能会有这样的疑问,多个Exclusive的数据库是否可以共享一个口令文件(orapw)呢?


我们继续这个实验:






SQL> show parameter password

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile string SHARED


[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A


注意这里仅记录着INTERNAL/SYS的口令


REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 时






SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;

System altered.


SQL> startup force;
ORACLE instance started.


Total System Global Area 235999908 bytes
Fixed Size 451236 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> !

[oracle@jumper bin]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
HSJF
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
[oracle@jumper dbs]$ exit
exit


注意这里,以EXCLUSIVE 方式启动以后,实例名称信息被写入口令文件.


此时如果有其他实例以Exclusive模式启动仍然可以使用这个口令文件,口令文件中的实例名称同时被改写.


也就是说,数据库只在启动过程中才读取口令文件,数据库运行过程中并不锁定该文件,类似于pfile/spfile文件.






SQL> select * from v$pwfile_users;

USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE


SQL> grant sysdba to eygle;


Grant succeeded.


SQL> select * from v$pwfile_users;


USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
EYGLE TRUE FALSE


SQL> !
[oracle@jumper bin]$ cd $ORACLE_HOME/dbs
[oracle@jumper dbs]$ strings orapw
]\[Z
ORACLE Remote Password file
HSJF
INTERNAL
AB27B53EDC5FEF41
8A8F025737A9097A
>EYGLE
B726E09FE21F8E83



注意此时可以增加SYSDBA用户,并且这些信息可以被写入到口令文件.


一旦口令文件中增加了其他SYSDBA用户,此文件不再能够被其他Exclusive的实例共享.


实际上,口令文件对于其他用户来说就是启到了一个 sudo 的作用.


6.重建口令文件


如果口令文件丢失,可以使用orapwd可以重建口令文件,语法如下:






[oracle@jumper oracle]$ orapwd
Usage: orapwd file=<fname> password=<password> entries=<users>

where
file - name of password file (mand),
password - password for SYS (mand),
entries - maximum number of distinct DBA and OPERs (opt),
There are no spaces around the equal-to (=) character.


 

使用 Nid 改变数据库名










Use Nid to Change dbname  
    

 

 


Nid是Oracle从9iR2开始提供的工具,可以用来更改数据库名称,而无需通过之前重建控制文件等繁琐方式.
需要说明的是,虽然这个工具来自9iR2,但是仍然可以被用于Oracle8i.



先看一下帮助:






C:\>nid -help
DBNEWID: Release 10.1.0.2.0 - Production
Copyright (c) 2001, 2004, Oracle. All rights reserved.

关键字 说明 (默认值)
----------------------------------------------------
TARGET 用户名/口令 (无)
DBNAME 新的数据库名 (无)
LOGFILE 输出日志 (无)
REVERT 还原失败的更改 否
SETNAME 仅设置新的数据库名 否
APPEND 附加至输出日志 否
HELP 显示这些消息 否


我们通过范例来看一下用法:


1.数据库当前设置







 

 
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string eyglev
global_names boolean FALSE
instance_name string eyglev
lock_name_space string
log_file_name_convert string
oracle_trace_collection_name string
oracle_trace_facility_name string oracled
plsql_native_make_file_name string
service_names string eyglev


2.Shutdown数据库






SQL> connect sys/orasys as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


 


3.Startup mount







 


SQL> startup mount
ORACLE instance started.


Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.


 


4. 使用NID更改






 
SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.

C:\>nid target=sys/orasys dbname=eyglen
DBNEWID: Release 9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

Connected to database EYGLEV (DBID=677189177)

Control Files in database:
E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL
E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL
E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL

Change database ID and database name EYGLEV to EYGLEN? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 677189177 to 3955758099
Changing database name from EYGLEV to EYGLEN
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL - modified
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL - modified
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL - modified
Datafile E:\ORACLE\ORADATA\EYGLEN\SYSTEM01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\UNDOTBS01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\CWMLITE01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\DRSYS01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\INDX01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\ODM01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\TOOLS01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\USERS01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\XDB01.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\EYGLE.DBF - dbid changed, wrote new name
Datafile E:\ORACLE\ORADATA\EYGLEN\TEMP01.DBF - dbid changed, wrote new name
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL01.CTL - dbid changed, wrote new name
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL02.CTL - dbid changed, wrote new name
Control File E:\ORACLE\ORADATA\EYGLEN\CONTROL03.CTL - dbid changed, wrote new name

Database name changed to EYGLEN.
Modify parameter file and generate a new password file before restarting.
Database ID for database EYGLEN changed to 3955758099.
All previous backups and archived redo logs for this database are unusable.
Shut down database and open with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.


 


5.Shutdown database







 


SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.


6.修改初始化参数文件、spfile文件(init.ora/spfile)







 


###########################################
instance_name=eyglen
#instance_name=eyglev

###########################################
db_domain=""
db_name=eyglen
# db_name=eyglev
###########################################


 


7.重建spfile文件
如果你没有使用spfile,当然无需重建,跳至8






 
SQL> startup pfile=E:\Oracle\admin\eyglen\pfile\init.ora
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-01991: invalid password file 'e:\oracle\Ora9iR2\DATABASE\PWDeyglen.ORA'


SQL> CREATE SPFILE='E:\Oracle\Ora9iR2\database\SPFILEEYGLEN.ORA' FROM
2 PFILE='E:\Oracle\admin\eyglen\pfile\init.ora';

File created.


 


8.重建口令文件







 


SQL> host
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.


C:\>orapwd file=E:\Oracle\Ora9iR2\database\PWDeyglen.ORA password=oracle entries=5


 


9.shutdown数据库
如果不使用spfile,则可以跳至10







 


SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.


 


10.Startup mount,resetlogs打开







 

SQL> startup mount
ORACLE instance started.

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> alter database open resetlogs
2 /

Database altered.

SQL>


11.修改后的参数






SQL> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string eyglen
global_names boolean FALSE
instance_name string eyglen
lock_name_space string
log_file_name_convert string
oracle_trace_collection_name string
oracle_trace_facility_name string oracled
plsql_native_make_file_name string
service_names string eyglen


 


12.对数据库做个全备份


附:使用nid更改817的数据库


1. 更改前






SVRMGR> startup mount
已启动 ORACLE 实例。
系统全局区域合计有 61970460个字节
Fixed Size 75804个字节
Variable Size 17645568个字节
Database Buffers 44171264个字节
Redo Buffers 77824个字节
已装入数据库。
SVRMGR> show parameter name
NAME TYPE VALUE
----------------------------------- ------- ------------------------------
db_file_name_convert 字符串
db_name 字符串 vilen
global_names 布尔值 TRUE
instance_name 字符串 vilen
lock_name_space 字符串
log_file_name_convert 字符串
oracle_trace_collection_name 字符串
oracle_trace_facility_name 字符串 oracled
service_names 字符串 vilen
SVRMGR>

 


2. 修改






C:\>nid target=sys/orasys@vilen dbname=vilene
DBNEWID: Release 9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

Connected to database VILEN (DBID=1535443189)

Control Files in database:
C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL
C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL
C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL

Change database ID and database name VILEN to VILENE? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 1535443189 to 681857412
Changing database name from VILEN to VILENE
Control File C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL - modified
Control File C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL - modified
Control File C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL - modified
Datafile C:\ORACLE\ORADATA\VILEN\SYSTEM01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\RBS01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\USERS01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\TEMP01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\TOOLS01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\INDX01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\EQSP01.DBF - dbid changed, wrote new name
Datafile C:\ORACLE\ORADATA\VILEN\PERFSTAT.DBF - dbid changed, wrote new name
Control File C:\ORACLE\ORADATA\VILEN\CONTROL01.CTL - dbid changed, wrote new name
Control File C:\ORACLE\ORADATA\VILEN\CONTROL02.CTL - dbid changed, wrote new name
Control File C:\ORACLE\ORADATA\VILEN\CONTROL03.CTL - dbid changed, wrote new name

Database name changed to VILENE.
Modify parameter file and generate a new password file before restarting.
Database ID for database VILENE changed to 681857412.
All previous backups and archived redo logs for this database are unusable.
Shut down database and open with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.


 


3. 关闭数据库







 


SVRMGR> shutdown immediate
ORA-01109: 数据库未打开
已卸下数据库。
已关闭 ORACLE 实例。


 


4. 修改参数文件







db_name = "vilene"
#db_name = "vilen"


instance_name = vilene
#instance_name = vilen


5. 重建口令文件







 


C:\oracle\database>orapwd file=PWDvilen.ORA password=oracle entries=5


C:\oracle\database>


6. mount数据库






SVRMGR> startup mount
ORACLE instance started.
Total System Global Area 61970460 bytes
Fixed Size 75804 bytes
Variable Size 17645568 bytes
Database Buffers 44171264 bytes
Redo Buffers 77824 bytes
Database mounted.

 


7. 打开数据库







SVRMGR> alter database open resetlogs
2> /
Statement processed.


 


8. 修改后的参数






SVRMGR> show parameter name
NAME TYPE VALUE
----------------------------------- ------- ------------------------------
db_file_name_convert string
db_name string vilene
global_names boolean TRUE
instance_name string vilene
lock_name_space string
log_file_name_convert string
oracle_trace_collection_name string
oracle_trace_facility_name string oracled
service_names string vilen

 


 

http://www.eygle.com/faq/Use.Nid.to.Change.Your.dbname.htm

微软总部大揭密(图片集)

 微软总部对全球软件开发者开说,神秘莫测。那里诞生了王牌产品Windows
、office、.net。这些产品完全改变了计算机使用者的工作状态。人们渴望破译这个所在,就像渴望挑战微软帝国神话一样。这个位于美国西部城市西雅图的园区,里面到底什么样子?魔力究竟何在?
在微软总部110多座办公楼中,微软总部两万余名员工创造着种种技术与商业奇迹。 微软平等,充满激情,以人为本,真实。平等体现在所有员工办公室大小样式完全一致。普通员工如果先到公司,也可以坐在窗外有风景的房间,VP级人物后来的也要坐在没有窗户的房间。下面是微软总部的一些图片。

微软员工办公室
微软员工办公室。这里的所有员工不分级别,办公区大小统一,*窗的办公室分给先来的员工,即便是VP也可能被分到没有窗户的里面。办公室内自己随意布置,一般都有家庭的照片摆放在窗台上,门上写着员工的名字。




盖茨所在办公楼外
微软总部位于美国西雅图市,有110从座办公楼,任何一个办公房间窗外均可见绿草树木。图为比尔.盖茨所在的34号办公楼窗外景象。




办公区的小厨房



接待中心门前



微软接待中心   



微软企业合作伙伴测试设计中心
全球500强中,有25%的企业到这里做现场测试。



图为微软接待中心前台,这里每日8时开始,便有全球各地的来访者陆续到来,直至深夜。



每日有来自全球各地的来访者与合作伙伴。这是5月28日的第一批来访者,他们是微软的合作伙伴。



  这是5月28日早微软最普通的员工走向办公楼的样子。微软强调平等文化,从最普通的员工到比尔.盖茨,穿着与办公环境均无差别。  



合作伙伴放在微软的测试服务器。进入其中的每个企业,需要测试费用100万美元以上。这些全球500强企业对数据的灾难恢复这一项都是感兴趣。图为放置大量精密服务器的房间。帝国获得了感观印象。这里每日8时开始,便有全球各地的来访者陆续到来,直至深夜。  



  这个测试中心共有15名员工。他们的工作是将合作伙伴所需要测试环境搭建完毕,包括卫星环境,地震环境等,都需要模拟无误。


OFFICE产品组办公楼就在这片树木后面。微软总部所有办公场所,均于绿树掩映中。

 


微软接待中心前台一角。

 
  比尔.盖茨办公所在的34号楼。微软总部共有2万余名员工,按不同的职能分布在110座办公楼中。每座办公楼均为三四层的小楼,比尔.盖茨就在这个楼的顶层一间与所有员工同样大小的办公室办公。



 


  图上的这幅画为微软搜集的艺术品。他们认为软件开发人员需要一个良好的环境,包括艺术环境。办公场所到处挂有这样的画作或稀奇古怪的艺术品。



图为微软接待中心前台一角。

 


  微软会议中心,每日都有来自全球各地的合作伙伴前来进行产品测试。图为他们在沟通交流。

 


OFFICE产品组办公楼。微软总部所有办公场所,均于绿树掩映中。