cnhnln 发表于 2006-2-27 23:57:55

GRUB三步通
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

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


   您已经安装了 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\" 就可以阅读该文档。
   有用的一些信息:xosl是一个支持鼠标的图形界面boot loader,可以于system command和boot manager相比网址是http://www.xosl.org

GRUB的下载:ftp://alpha.gnu.org/gnu/grub/



--



cnhnln 发表于 2006-2-27 23:58:32

Linux init详解
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux init详解

  一、什么是INIT:
  init是Linux系统操作中不可缺少的程序之一。
  所谓的init进程,它是一个由内核启动的用户级进程。

  内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。



  内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

  二、运行级别
  那么,到底什么是运行级呢?
  简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。
  不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)
  # 0 - 停机(千万不能把initdefault 设置为0 )
  # 1 - 单用户模式
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 (xwindow)
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )
  这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d
目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d
目录。(这里的n 就是运行级0-6)
  三、运行级别的配置
  运行级别的配置是在/etc/inittab行内进行的,如下所示:
  12 : 2 : wait : / etc / init.d / rc 2
  第一个字段是一个任意指定的标签;
  第二个字段表示这一行适用于运行那个级别(这里是2);


  第三个字 段表示进入运行级别时,init应该运行第四个字段内的命令一次,而且init应该等待该命令结束。/etc/init.d/rc命令运行启动和终止输入以便进入运行级别2时所需的任何命令。



  第四个字段中的命令执行设置运行级别时的一切“杂活”。它启动已经没有运行的服务,终止不应该再在新运行级别内运行的服务。根据Linux版本的不同,采用的具体命令也不同,而且运行级别的配置也是有差别的。

  init启动时,它会在/etc/inittab内查找一个代码行,这一行指定了默认的运行级别:
  id : 2 : initdefault :
  你可以要求init在启动时,进入非默认运行级别,这是通过为内核指定一个“single”或“emergency”
命令行参数来实现的。比如说,内核命令行参数的指定可通过LILO来执行。这样一来,你就可以选择单用户模式了(即运行级别1)。
  系统正在运行时,telinit命令可更改运行级别。运行级别发生变化时, init 就会从/etc/inittab运行相应的命令。

  四、/etc/inittab中的特殊配置
  /etc/inittab中,有几个特殊的特性,允许init重新激活特殊事件。这些特殊特性都是用第三个字段中的特殊关键字标记出来的。比如:

  1. powerwait
  允许init在电源被切断时,关闭系统。其前提是具有U P S和监视U P S并通知init电源已被切断的软件。

  2. ctrlaltdel


  允许init在用户于控制台键盘上按下C t r l + A l t + D e l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将C
t r l + A l t + D e l组合键配置为别的行为,比如忽略等。
  3. sysinit
  系统启动时准备运行的命令。比如说,这个命令将清除/tmp。
  上面列出的特殊关键字尚不完整。其他的关键字及其使用详情,可参考你的inittab手册页。
  五、在单用户模式下引导


  一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。



  一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行,
init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。


  有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。

  如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f
s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。
  由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L
I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。

  不同的运行级有不同的用处,也应该根据自己的不同情形来设置。
  例如,如果丢失了root口令,那么可以让机器启动进入单用户状态。在启动后的 lilo 提示符下输入:
  init=/bin/sh rw 使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你可以使用passwd
程序来改变root口令,然后启动到一个新的运行级。




--



cnhnln 发表于 2006-2-27 23:58:51

linux常用命令索引
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

linux常用命令索引


  在Linux中有近千条的命令,由于篇幅的关系,不可能将所有的命令全部列出。本附录只是对一些常用的命令进行介绍。读者在使用没有列出的命令时,如果有任何疑问,可以使用“command--help”获得该命令的在线帮助,或着查看相关的manpages获得更详细地使用说明。
alias
用一个简单的名字来代替一条复杂的命令(起别名),如果忽略了命令名,则打印所有已定义的命令的别名。
语法:
alias[参数]aliasname=’命令’
-t为Linux命令创建一个可跟踪的别名。
-x输出别名,使之在shell脚本中使用。
ash
由KennethAlmquist在1989年编写,它的很多特性接近于SYSTEMV的shell。
语法:
ash[-eflijnsxz][+eflijnsxz][-c命令][参数]
-c若使用-c参数,则ash在执行完这条命令后退出。


-s若用-s参数,则ash从标准输出中读入命令,如果不跟-c-s参数则ash以所跟的第一个参数为文件名,从此文件中读入命令,直接输出到exit。如果参数0的第一个字符是“-”则ash确定为loginshell,ash将从/etc/profile或用户目录中的.profile读入相应的设置和环境变量。
-e执行命令后返回值为非零值时退出ash。
-f关闭ash自动产生文件名的功能。
-j打开伯克利Unix风格的工作控制。
-n读入命令但不执行。
banner
在输出行中打印高质量的标题,如果输出要打印的文字,则其等待从标准输入中输入一行文字。
语法:
/usr/games/banner[-wn]msg
-w宽度。输出宽度从132到n,n默认值为80列
bash
是目前广泛使用的一种shell,同sh兼容,并且包含了ksh和csh中一些有用的特性。
语法:
bash[参数][文件名]
-c字符串从字符串中读入命令,如果字符串后还有变量则被设定为从$0开始的位置参数。
-i交互式的执行命令。例如:rm–i。
-s从标准输入中读命令,直到输入exit。
-表示参数执行完毕,并且屏蔽此后所跟的参数,后面的所有变量都被看作是文件名。
-norc如果bash是交互的,则不执行个人初始化文件~/.bashrc,如果bash作为shell来运行,这个参数缺省是关闭的。


-noprofile不执行系统范围内的启动文件,也不执行个人启动文件~/.bash_profile、~/bash_login或~/.profile,缺省情况下,bash作为登录shell时以这些文件作为启动文件。
-rcfile文件名如果bash是交互的,则以此文件作为bash的启动文件。
-version在bash开始时显示此bash的版本号。
-quiet不显示版本号或其它信息,这是默认值。
-login激活bash伪装为登录shell。
-posix改变bash的行为,使其符合Posix1003.2规定的标准。
cal
显示一个日历。对于查询某年某月某日的用户来说是非常有用的。
语法:
cal[-jy][月年]
-jx显示julian日期(日子是从1月1日开始累加的)
-y显示今年的日历。


年份必需写全,“cal99”是不正确的,应该写为“cal1999”。月份必须是1-12之间的数字或英文全称。不加任何参数则输出本月日历。
cat
将文件连接到一起,用“>”操作将几个文件组合成一个新的文件,或者是用“>>”把文件追加到已存文件的后面。
语法:
cat[参数]filelist
-e打印一个$来表示每行的结尾,这个选项只有与-v选项一起使用才有效。
-v显示控制字符或其它不可打印的字符。
-s隐去不可读文件的信息。
-t把每个tab打印为^l,并把Formfeed用^L填充
-u无缓冲的打印输出。
filelist用于结合文件的可选列表。
cd
改变当前工作目录。
语法:
cd目录名
如果后面不加目录名,则返回用户的根目录,此外用户必须拥有进入该目录的权限。
chgrp


该变文件的组所有权。一些chgrp命令的选项有长短两种选项格式。我们这里只列出这些选项的短表示方式。详细资料请参看manpages。
语法:
chgrp[参数]组文件
-c只有在文件的所有权确实改变时才进行详细地说明。
-f不打印所有权不能该变的文件的错误信息。
-v详细说明所有权的变化。
-R递归改变目录及其内容的所有权
--help在标准输出上打印使用信息并退出。
--version在标准输出行上打印版本信息并退出。
group要改变的组。可以是GID,也可以是有效组名。
files要改变组所有权的文件列表,以空格分开。
若不是文件的所有者或root,则不能修改文件的组所有权。
chmod


改变文件的模式。文件模式控制了与该文件相关的访问权限,Linux有三个安全级别:所有者级、组访问级和其它用户级。在这三个级中,有三种权限:读、写和执行。对于标准文件,读权限意味着可以浏览文件的内容,写权限可以修改文件,执行权限可以运行该文件。目录形式有所不同。读权限可以浏览该目录下的内容,写权限可以在目录下创建文件或删除文件。执行权限意味着可以从一个目录转变到另一个目录。
语法:
chmod[参数]保护模式文件或目录
-c只有在文件的权限确实改变时才进行详细地说明。
-f不输出权限不能改变的错误信息。
-v详细说明权限的变化。
-R改变本目录及其所有子目录的文件的权限。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
保护模式格式为[[+-=]…][,…]
cp
拷贝文件。
语法:
cp[参数]源文件目标文件或目录
-a在备份中尽可能的保留源文件的结构和属性。
-b做将要覆盖或删除文件的备份。
-d将符号链接作为符号链接拷贝,而不拷贝它们所链接的文件。并在备份中保留源文件间固有的链接关系。
-f删除已存在的目标文件。
-i提示是否覆盖已存在的目标文件。
-l形成固有链接以替代非目录的拷贝。
-P通过加入目标目录分支和指定的源文件名形成每个目标文件名。给cp的最后一个变量必须是已存在的目录名。
-p保留原先文件的所有者、组、权限和时间标志。
-r递归拷贝目录。
-s建立符号连接,替代非目录文件拷贝。
-v在拷贝前打印每个文件名。
-R同-r
--help在标准输出上打印帮助信息并退出。
--version在标准输出上打印版本信息并退出。
crontab
操作每个用户的守护程序和该执行的时间表。
语法:
crontabfile[-uuser]用指定的文件替代目前的crontab。
crontab–[-uuser]用标准输入代替当前的crontab
crontab–l列出用户目前的crontab
crontab–e编辑用户目前的crontab
crontab–d删除用户目前的crontab
crontab–cdir指定crontab的目录
crontab文件的格式是:MHDmdcmd
M分钟(0-59)。
H小时(0-23)。
D天(1-31)。
m月(1-12)。
d一星期内的一天(0-6,0为星期日)。
cmd要运行的程序。
date
显示系统的时间和日期,root可以使用该命令来设置日期和时间。用户可以控制日期如何显示。
语法:
dateMMDDhhmmyy或date+formate
MM月(0-12)。
DD日期(1-31)。
hh小时(00-23)。
mm分钟(00-59)。
yy年(00-99)。
+format由%和紧跟其后的下列字符组成:
n插入一行。
t插入tab。
m月份(数字)。
d日期(数字)。
y年份的最后两位。
Dnn/dd/yy格式的日期。
I小时。
M分钟。
s秒。
W星期(0-6,0为星期日)
dd
拷贝一个文件
语法:


dd[-help][-version]


[conv={ascii,ebcdic,ibm,block,unblock,lcase,ucase,
swab,noerror,notrunc,sync}]
if=file以file作为源文件代替标准输入。
of=file以file作为目标文件代替标准输出。
ibs=bytes一次读bytes个byte。
obs=bytes一次写bytes个byte。
cbs=bytes一次读写bytes个byte,这个参数将改写ibs和obs的值。
skip=blocks在开头忽略blocks个ibs大小的块。
seek=blocks在开头忽略blocks个obs大小的块。
count=blocks只拷贝blocks个ibs大小的块。


conv=conversion[,conversion...]转换文件,可转换的文件格式有ascii,ebcdic,ibm,block,unblock,lcase,ucase,swab,noerror,notrunc,sync。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
df
检查磁盘剩余空间
语法:
df[参数]
-a列出block为零的文件系统缺省是不列出的。
-i用inode的使用情况来代替block的使用情况。
-k以K为单位输出block(默认是512bytes)。
-P使用Posix格式输出。
-T输出每个文件系统的类型。
-t只输出列出在fstype中的类型的文件系统。
-x只输出不在fstype中的类型的文件系统。
-v无用,只是为了和SystemV版本的df兼容。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
diff
比较两个文本文件的不同
语法:
diff[参数]源文件目标文件
-a将所有文件当做文本文件来处理。
-b忽略空格造成的不同。
-B忽略空行造成的不同。
-q只报告何处不同,不报告具体信息。
-c使用纲要输出格式。
-e输出ed可以编辑的格式。
-f输出同-e类似的反序格式。
-H利用试探法加速对大文件的搜索。
-i忽略大小写的变化。
-l用pr对输出分页。
-n输出RCS格式。
-r比较目录时比较所有的子目录。
-v在标准输出上输出版本信息并退出。
du
报告磁盘空间使用情况
语法:
du[参数]
-a显示文件的总合。
-b以byte为单位输出所占空间的大小。
-c在处理完所有的参数后给出所有这些参数的总计。
-k以kilobytes为单位输出所占空间的大小。
-l统计所有文件的大小即使它已经在另一个连接中被统计过了。
-s对每个参数只显示总合。
-x–onefilesystem忽略不在本文件系统上的目录。
-D不统计命令行参数的符号链接的文件。
-L不统计符号链接的文件。
-S单独统计每个目录的大小,不包括子目录的大小。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
echo
本命令传给它的参数在标准输出上显示。
语法:
echo[参数]字符串
-a不输出新行。
-e使用echo显示下列Esc字符。
\\a警告(响铃)。
\\b退格。
\\c在行尾不另起一行。
\\f换页。
\\n换行。
\\r回车。
\\t制表符。
\\V垂直制表符。
\\\\反斜杠。
\\nnn字符的八进制码是nnn。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
env
修改命令执行环境,不影响当前环境。也可显示当前环境。
语法:
env[参数]变量命令
-u从原环境中删除变量
-i开始一个空环境,忽略原环境的所有设置。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
file
检查文件的类型
语法:
file[参数][-fnamefile][-mmagicfile]文件名
-v在标准输出上输出版本信息并退出。
-mmagicfile指定用来代替/etc/magic的新文件。
-z检查压缩过的文件。
-c输出正在处理的magicfile的分析表格,常同-m参数联合起来使用测试新的magicfile文件。
-fnamefile从文件namefile中读取要分析的文件名列表。
-L允许符号链接。
文件名要分析的文件名。
find
搜索特定的文件
语法:
find[路径..][匹配表达式]
路径要搜索的目录。
匹配表达式要搜索的文件匹配标准或说明。
-name文件名告诉find要查找的文件。
-perm模式匹配所有符合指定数值模式值的文件,如果模式前面是“-”号,则搜索所有除这个模式以外的所有模式。
-sizen匹配大小为n个block的文件名。
-user用户名搜索所有属主为用户名的文件。
-group组名搜索所有属主为组名的文件。
-atimen搜索在n天前访问过的文件。
-mtimen搜索在n天前修改过的文件。
-exec命令对每个匹配的文件执行命令,标志{}用于指定命令执行时文件名出现的地方,命令必须终止于符号“\\;”。
-print将搜索结果输出到标准输出。
finger
显示系统中用户的信息。
语法:
funger[参数]用户名
-b在输出结果中略去用户的home和shell。
-f隐藏头部几行。
-l强迫长输出。
-p不打印.plan文件。
-q显示用户的快速列表。
-s显示一个短格式。
user指定登录名、实际名和姓。
fortune
输出一段寓言或谚语
语法:
fortune
grep
在文件中搜索匹配的行并输出。
语法:
grep[-]num][-][-e]正确表达式|-ffile][文件名]
-Anum输出匹配行后的num行。
-Bnum输出匹配行前的num行。
-V输出版权信息。
-ffile从文件中读入表达式。
-q不输出。
-s不输出错误信息。
gzexe
将可执行文件压缩成较小的可执行文件。
语法:
gzexe[文件名...]
-d解压缩
gzip
压缩或解压缩文件
语法:
gzip[参数]文件名。
-d解压缩。
-h显示帮助信息并退出。
-t检验压缩文件。
-V显示版权信息并退出。
-v输出压缩信息。
-##为0-9的数字,数字越小速度越快,但是压缩比越小。
-c压缩结果输出到标准输出,如不加-c参数,则gzip将压缩为.gz文件并删除源文件。
head
显示文件的前几行。
语法:
head[参数]文件
-cN输出文件的前N个字节。
-nN输出文件的前N行。
-q不输出文件名的信息。
-v输出文件名的信息。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
id
显示用户的系统标志,报告用户名、用户号(ID)、组名和组号(GID)。
语法:
id[参数]
-g只显示组号。
-G只显示次要组。
-u只显示用户号。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
kill
终止当前进程。
语法:
kill[信号]进程号


信号送入可选信号,缺省值为SIGTERM。其它两个常用值,一个是SIGHUP,是调制解调器通过电话挂起的设备;另一个是SIGKILL,不能被进程忽略。
-l显示可用kill传送的信号名称表。
less
按页显示文件。类似于more,但允许在文件中前后移动。
语法:
less[参数]文件名
-?输出less可以接受的命令选项。
-a在屏幕上输出最后一行之后开始查询。
-c从顶行向下全屏重写。
-C与-c同,但写之前清屏。
-e第二次到文件尾部时退出less。默认的退出方法是按“q”键。
-E第一次到文件尾后自动退出less。
-i查询时忽略大小写。
-n去掉行号。
-ofile将输出拷贝到文件。
-q不输出响铃。
-Q同-q。
-s将多个空行压缩成一个空行。
-xn每次按制表符走n格,n的默认值是8。
ln
在文件间建立链接。
语法:
ln[参数]源文件目标文件
-b为删除的文件建立备份。
-d,-F允许root建立硬连接。
-f删除目标文件。
-i在删除文件时给出提示。
-n如果目标文件是一个目录的符号链接,则代替此符号链接,而不是在这个目录中做链接。
-s用符号链接代替硬连接。
-v输出每个要连接的文件的文件名。
--help在标准输出上输出帮助信息然后退出。
--version在标准输出上输出版本信息然后退出。
ls
列出目录中的内容。
语法:
ls[参数][目录]
-A显示所有文件,包括隐藏文件(以“.”开头的文件,但不列出当前目录“.”和上级目录“..”。
-a显示所有文件,包括“.”和“..”目录。
-c按列列出文件。
-x按行列出文件。
-d只列出目录名;不列出它的内容。
-l给出文件的长列表。包括权限、所有权、大小、文件名、最后修改时间等等。
mail
阅读和发送邮件给其它的用户
语法:
mail[参数][用户名]
-?输出该命令的一个摘要。
-e检查收件箱中的邮件。
-ffile打开文件来阅读邮件,如果没有指定文件,则使用mbox文件。
-F把发送邮件保存在和第一个收到信息同名的文件中去。
-H显示邮件箱中内容的头部信息概要。
-sSubject把邮件头部中的主题栏设置为Subject。
-u阅读用户的收件箱。
man
显示具有一定格式的在线手册。
语法:
man[参数]查询名
-a显示匹配查询名的所有信息。
-b在输出中留空行。
-ddir把指定目录dir加到搜索路径中。
mcopy
从DOS文件系统拷贝文件或把文件拷贝到DOS文件系统。
语法:
mcopy[参数]源文件目标文件
-t文本文件传输。Mcopy将回车/换行翻译成换行。
-n当覆盖一个已存在的文件时不警告用户。
-m保存文件修改时间。
mdir
显示MS-DOS目录的内容。
语法:
mdir[-w]目录名
-w用没有文件大小和建立日期的宽格式显示目录。
mesg
选择接收或不接收其它用户发送来的信息。
语法:
mesg


此命令用来控制接收其它用户利用talk或write向用户发出的信息,如果不想接收的话,使用mesgn就可以不接受别的用户向用户的终端发送过来的信息。
mkdir
建立新的目录
语法:
mkdir[参数]目录名
-mmode为新目录设置访问的模式。
-p如果父目录不存在,创建所有的父目录。
more
分屏显示文件。按Enter键显示下一行,按空格键显示下一屏。
语法:
more[参数][文件名]
-c按页显示文件时,清空每个窗口而非卷动,因为这要快一些。
-f统计逻辑行数而非屏幕行数。
-l略过from-feed字符。
-r强制以“^X”来显示控制字符。
-s把多行空白用一行显示。
mv
移动或更名文件和目录
语法:
nv[参数]源文件目标文件
-b为移动的文件制作备份。
-f强制覆盖已有文件。
-i在覆盖已有文件前提示用户。
-u在目标文件的时间比原文件新时不覆盖目标文件。
-v在移动文件时输出相关信息。
passwd
设置用户口令。
语法:
passwd[参数]用户名
-l屏蔽一个用户的帐号
-n设定用户只有在min天后才可以修改密码。
-s显示口令信息,如用户名、口令状态、最后改动时间。
-w在max天后用户需要修改密码。
-x设置用户密码有效的最长时间。
ps
报告进程状态。由于进程在执行中运行得很快,本报告只能反映查询瞬间的状态。
语法:
ps[参数]
-l给出长列表。
-u显示用户名和起始时间。
-j按作业格式进行输出。
-s按信号格式进行输出。
-v按虚拟内存格式显示。
-m显示内存信息。
-a显示其它用户的进程。
-x显示不带控制终端的进程。
-S增加子CPU时间和页面出错。
-c从内核的task_structune上列出命令行。
-e显示环境。
-w用宽格式输出。
-h不显示题头。
-r只显示正在运行的进程。
-n为USER和WCHAN提供数字输出。
-txx只显示受tty.xx控制的进程。
下面为所显示报告的各列及其说明:
PID进程号。
PRI进程优先级。
NILinux进程的nice值。负值意味着占用较小的CPU时间。
SIZE虚拟映像的大小,大小的计算为文本+数据+栈。
RSS驻留空间的大小。显示当前常驻内存的程序的K字节数。
WCHAN进程等待的内核时间的名称。
STAT进程的状态,用下面代码中的一个给出。
R可执行的。
S睡眠状态。
D不间断睡眠。
T停止或跟踪。
Z僵持。
W进程没有驻留页。
TT控制进程的tty名称。
PAGEIN造成从磁盘读取页出错页面号。
TRS文本驻留大小。
SWAP交换设备上的K字节数。
pwd
显示正在工作或当前的目录名。
pwd[参数]
--help在标准输出上输出帮助信息然后退出。
--version在标准输出上输出版本信息然后退出。
rcp
远程拷贝命令。
语法:
rcp[参数]主机名:文件1主机名文件2
-r如果源文件是目录,则拷贝所有子目录,目标文件也必须是目录。
-p尽量保持文件的修改时间和访问权限。
-k要求rcp获得外部许可。
-x给拷贝的数据流用DES方法加密。
reset
将终端复位。


如果由于某种原因终端在使用的过程中花掉了,这时使用reset就可以恢复。Reset调用tput函数,向终端发出复位信号。如果屏幕被Ctrl+s锁住了,可以使用Ctrl+q解除锁定。
rm
删除一个或多个文件。
语法:
rm[参数]文件或目录
-f忽略不存在的文件,并且不给用户任何提示。
-i在删除每个文件时提示用户。
-r删除目录。
-v删除每个文件时输出文件信息。
--help在标准输出上输出帮助信息然后退出。
--version在标准输出上输出版本信息然后退出。
rmdir
删除空目录。
语法:
rmdir[参数]目录列表
sdiff
产生文件1和文件2的并排比较,输出为:
texttext相同行。
text<行只存在于文件1中。
>text行只存在于文件2中。
text|text行不同。
语法:
sdiff[参数]文件1文件2
-wwidth指定输出行宽度为width个字符。
-l相同的行只输出在输出的左边。
-s不显示相同的行。
文件1输出中处于左边的文件。
文件2输出中处于右边的文件。
set
显示shell变量的值
setcolor
设置屏幕的颜色和其它的属性。
语法:
-bcolor把背景颜色设置为color。
-gcolor1color2把前景颜色设置为color1,背景颜色设置为color2。
-n把屏幕复位为默认值白色前景黑色背景。
-rcolor1color2设置屏幕的反转显示前景为color1,反转显示背景为color2。
-ocolor设置边框为color。
sync
清空Linux文件系统的缓冲区。


在系统的CPU停止工作以前必须调用该命令来将系统的缓冲区写入硬盘。Reboot和halt命令都调用该命令来清空缓冲区。Linux的优点之一就是磁盘存取速度很快,这是因为它将不用的内存都拿来当缓冲,这样系统在关机之前必须将缓冲清空,否则就会丢失数据。
su
改变用户的ID或变成root
语法:
su用户名
tail
显示文件的最后一部分。
语法:
tail[参数]文件名


tail默认显示文件列表中每个文件的后10行,如果没有文件名或文件名为“-”则其从标准输入中读取文件,如果有多个文件则其会在文件前面加上“==>文件名<==”以便区别。
-cN显示文件后部的N比特大小的部分,N后面可以跟bkm参数。
b512比特的块。
k1k的块。
m1M的字节块。
-f如果文件的大小在增长的话,tail将跟随文件的增长而显示。
-l,-nN显示文件的尾部N行。
-v一直输出“==>文件名<==”形式的文件。
--help在标准输出上显示帮助信息然后退出。
--version在标准输出上显示版本信息然后退出。
tar
从一个打包介质中拷贝文件或恢复文件。如果files是目录,则整个子目录都一起操作,参数不需在文件之前。
语法:
tar[参数]文件
-A向归档文件中追加另一个tar文件。
-c建立新的归档文件。
-d将归档文件和系统文件进行比较。
--delete从归档文件中删除文件。
-r向归档文件末尾追加文件。
-t对归档文件列目录。
-u只追加比归档文件中的文件更新的文件。
-x从归档文件中解开文件。
-bN块的大小为N乘以512比特。
-B为兼容BSD而设。
-CDIR将目录名改为DIR。
--checkpoint在读归档文件时输出文件名。
-v处理时显示文件名。
tcsh


是类似bash的命令解释程序,是通用Cshell的扩展。与bash一样,tcsh自己是完整的程序编辑语言,具体信息请查看mannpages。
tee
从标准输入中读取向标准输出或其它文件中写入。
语法:
tee[参数]文件
-a把输出附加到文件中,而不是覆盖它们。
-i忽略所有的中断。
-u使输出没有缓冲。
--help在标准输出上输出帮助信息然后退出。
--version在标准输出上输出版本信息然后退出。
test


最常见于if语句和while。If语句和while是shell的控制结构。在Bourneshell中编程使用。当要检测的结果为真时,test返回0,退出。
语法:
test[表达式]
-b文件名如果文件存在且为块文件则为真。
-c文件名如果文件存在且为字符文件则为真。
-d文件名如果文件存在且为目录则为真。
-e文件名如果文件存在则为真。
-f文件名如果文件存在且为普通文件则为真。
-g文件名如果文件存在且为设置组则为真。
-k文件名如果文件是真实文件则为真。
-L文件名如果文件存在且为符号连接文件则为真。
-p文件名如果文件存在且为管道文件则为真。
-r文件名如果文件存在且为可读文件则为真。
-s文件名如果文件存在且比上一个文件大则为真。
-S文件名如果文件存在且为socket文件则为真。
-t如果fd在一个端口上打开则为真。
-u文件名如果文件存在且为其设置用户ID的位为1则为真。
-w文件名如果文件存在且可写则为真。
-x文件名如果文件存在且可执行则为真。
-O文件名如果文件存在且其属主为有效用户则为真。
-G文件名如果文件存在且属主为有效组则为真。
文件1–nt文件2如果文件1比文件2新则为真。
文件1–ot文件2如果文件1比文件2旧则为真。
文件1–ef文件2如果文件1比文件2在相同的设备上并且有相同的inode则为真。
-z字符串如果字符串长度为0则为真。
-n字符串如果字符串长度不为0则为真。
字符串1=字符串2如果两个字符串相等则为真。
字符串1!=字符串2如果两个字符串不相等则为真。
!表达式如果表达式为假则为真。
表达式1–a表达式2:表达式1和表达式2都为真则返回真。
表达式1-o表达式2:表达式1或表达式2只要有一个为真就返回真。
time
确定程序执行多长时间。
语法:
time命令
time报告了三个不同时间:
real从开始命令起全部占用的时间,有时被称为“挂钟”时间。
user花费CPU外部系统时间的时间总和。
sys花费内核时间的总和,就是花费在满足系统需要的时间的总和。
所有CPU时间是user+sys时间的总和,这与real时间的不同之处在于real包含CPU花费在其它任务上的时间。
top
显示系统的最高进程。


该命令可以即时显示当前系统占用CPU时间的进程,它同时提供一个交互的界面让用户可以观察系统进程情况,并按照CPU使用情况、占用内存大小、运行时间来对进程排序,这是系统管理的一项必不可少的工具。
语法:
top[参数]
d设定刷新屏幕的时间间隔。
q此选项使top刷新时间为零,如果超级用户使用这个选项的话,则top以最高优先级运行。
S设定累积模式,即对外界输入不作任何反应。
i忽略死进程和僵尸进程。
c显示命令行。
在运行top时按下“h”键就可以观看top交互命令的帮助。
tr


将文件中的字符从一种形式翻译或变换成另一种形式。例如,可以用tr将所有制表符该为空格。本命令用相对简单的结构能够做比较有力的字符处理。
语法:
tr[参数]源字符串目标字符串


-c通常tr命令用目标串中的字符替换源串字符,在输出部分显示文件发生替换的原始内容。本选项限定指定的源串字符输出,并有效地附加字符到目标串。
-d删除源串中指定的字符。
-s去除目标串中指定的在输出时产生的重复字符,在输出中只剩下一个重复的字符。
tty
报告当前登录的终端设备名或检测标准输入是否是终端。
语法:
tty–s
-s本选项测试标准输入是否是终端,不产生输出。若标准输入是终端,则结果为0,否则为1。
mount unmount
mount安装一个文件系统。
umount卸下一个文件系统。
语法:
mount–a[参数][文件系统类型]
-V输出版权信息。
-h输出帮助信息。
-v校验模式。
-amount在文件/etc/fstabb中定义的所有文件系统。
-F同-a连用,并行mount所有的文件系统。
-f与-v连用,不做真实mount过程只是检查输出。
-n安装文件系统后不写入/etc/mtab。
-r将文件系统安装为只读模式。
-w将文件系统安装成读写模式。


-tvfstype指定文件系统的类型。如:minix,ext,ext2,xiafs,hpfs,msdos,umsdos,vfat,nfs,iso9660,smbfs等等
-o设定mount的一些参数。
async文件系统必须被异步写入。
atime每次访问时将i节点的访问时间更新。
auto自动选择文件系统的类型。
defaults使用默认选项suid,dev,exec,auto,nouser与async等。
dev解释文件系统上的特殊设备文件。
exec允许运行文件系统上的可执行文件。
noatime每次访问时不将i节点的访问时间更新。
noauto禁止自动选择文件系统类型。
nodev禁止解释文件系统上的特殊设备文件。
noexec禁止运行文件系统上的可执行文件。
nosuid禁止设定用户ID位和设定组位起作用。
nouser禁止非root用户使用。
remount重新mount一个已mount的文件系统。
ro将文件系统mount为只读模式。
rw将文件系统mount为读写模式。
suid允许设定用户ID位和设定组位起作用。
sync文件系统必须被同步写入。
user允许非超级用户使用。
uname
显示系统信息。
语法:
uname[参数]
-m显示计算机硬件种类。
-n显示计算机的网络节点名。
-r显示操作系统发布版本。
-s显示操作系统名称。
-v显示操作系统发行的版本。
-a显示上面所有的信息。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
wall
向所有的用户发布信息。
语法:
wall文件名


wall将给定文件名输出到所有登录用户的屏幕上,如果不给出文件名则以标准输入作为输入,以Ctrl-D作为文件结束符。只有root才能向那些设为屏蔽信息状态的用户的屏幕上输出信息。
wc
统计文件中字符、字和行的数量。
语法:
wc[参数]文件
-c只输出字节数。
-w只输出单词数。
-l只输出行数。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
who
查看当前系统上的用户和其它用户及登录信息。
语法:
who[参数]utmp式的文件
utmp式的文件这是一个二者挑一的文件,读取它可以获得登录信息,通常是/var/log/wtmp。
-m同whoami和“whoami”
-q只输出用户的登录名和正在使用的用户数目。
-i输出用户发呆时间,“.”表示用户没有发呆,“old”表明用户发呆超过24小时。
-H输出报头。
-w,-T输出用户的信息屏蔽状态。
+可写。
-不可写。
?不能发现终端设备。
--help在标准输出上输出帮助信息并退出。
--version在标准输出上输出版本信息并退出。
write
向另一个用户发送信息。
如果用户不是root,则不能对设定messagen的用户发送信息,输入完毕后,使用Ctrl-D结束。
zcat
解压缩一个文件(以.z结尾)内容,而不改变压缩文件本身。
语法:
zat文件.z


--



cnhnln 发表于 2006-2-27 23:59:30

Linux启动过程综述
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux启动过程综述 作者:杨沙洲

  内容:
  一. Bootloader
  二.Kernel引导入口
  三.核心数据结构初始化--内核引导第一部分
  四.外设初始化--内核引导第二部分
  五.init进程和inittab引导指令
  六.rc启动脚本
  七.getty和login
  八.bash
  附:XDM方式登录 作者:杨沙洲
  本文以Redhat 6.0 Linux 2.2.19 for Alpha/AXP为平台,描述了从开机到登录的
Linux 启动全过程。该文对i386平台同样适用。
  一. Bootloader
在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引 导,另一种是由Firmware直接引导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘
驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等), firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设置;而SRM则具
有功能强大的命令行界面,用户可以在控制台上使用boot等命令引导系统。ARC有分区 (Partition)的概念,因此可以访问到分区的首扇区;而SRM只能将控制转给磁盘的首扇区。
两种firmware都可以通过引导MILO来引导Linux,也可以直接引导Linux的引导代码。
“arch/alpha/boot”下就是制作Linux Bootloader的文件。“head.S”文件提供了对
OSF PAL/1的调用入口,它将被编译后置于引导扇区(ARC的分区首扇区或SRM的磁盘0扇区), 得到控制后初始化一些数据结构,再将控制转给“main.c”中的start_kernel(),
start_kernel()向控制台输出一些提示,调用pal_init()初始化PAL代码,调用openboot() 打开引导设备(通过读取Firmware环境),调用load()将核心代码加载到START_ADDR(见
“include/asm-alpha/system.h”),再将Firmware中的核心引导参数加载到ZERO_PAGE(0) 中,最后调用runkernel()将控制转给0x100000的kernel,bootloader部分结束。

“arch/alpha/boot/bootp.c”以“main.c”为基础,可代替“main.c”与“head.S”
生成用于BOOTP协议网络引导的Bootloader。
Bootloader中使用的所有“srm_”函数在“arch/alpha/lib/”中定义。


以上这种Boot方式是一种最简单的方式,即不需其他工具就能引导Kernel,前提是按照 Makefile的指导,生成bootimage文件,内含以上提到的bootloader以及vmlinux,然后将
bootimage写入自磁盘引导扇区始的位置中。


当采用MILO这样的引导程序来引导Linux时,不需要上面所说的Bootloader,而只需要 vmlinux或vmlinux.gz,引导程序会主动解压加载内核到0x1000(小内核)或0x100000(大
内核),并直接进入内核引导部分,即本文的第二节。
对于I386平台
i386系统中一般都有BIOS做最初的引导工作,那就是将四个主分区表中的第一个可引导 分区的第一个扇区加载到实模式地址0x7c00上,然后将控制转交给它。



在“arch/i386/boot”目录下,bootsect.S是生成引导扇区的汇编源码,它首先将自己 拷贝到0x90000上,然后将紧接其后的setup部分(第二扇区)拷贝到0x90200,将真正的内核
代码拷贝到0x100000。以上这些拷贝动作都是以bootsect.S、setup.S以及vmlinux在磁盘上 连续存放为前提的,也就是说,我们的bzImage文件或者zImage文件是按照bootsect,setup,
vmlinux这样的顺序组织,并存放于始于引导分区的首扇区的连续磁盘扇区之中。


bootsect.S完成加载动作后,就直接跳转到0x90200,这里正是setup.S的程序入口。 setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到
0x90000-0x901FF内存中,这个地方正是bootsect.S存放的地方,这时它将被系统参数覆盖。 以后这些参数将由保护模式下的代码来读取。



除此之外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最 后,setup.S将系统转换到保护模式,并跳转到0x100000(对于bzImage格式的大内核是
0x100000,对于zImage格式的是0x1000)的内核引导代码,Bootloader过程结束。
对于2.4.x版内核
没有什么变化。
  二.Kernel引导入口


在arch/alpha/vmlinux.lds的链接脚本控制下,链接程序将vmlinux的入口置于 \"arch/alpha/kernel/head.S\"中的__start上,因此当Bootloader跳转到0x100000时,
__start处的代码开始执行。__start的代码很简单,只需要设置一下全局变量,然后就跳转 到start_kernel去了。start_kernel()是\"init/main.c\"中的asmlinkage函数,至此,启
动过程转入体系结构无关的通用C代码中。
对于I386平台
在i386体系结构中,因为i386本身的问题,在\"arch/alpha/kernel/head.S\"中需要更多的设置,但最终也是通过call
SYMBOL_NAME(start_kernel)转到start_kernel()这个体系结构无关的函数中去执行了。


所不同的是,在i386系统中,当内核以bzImage的形式压缩,即大内核方式 (__BIG_KERNEL__)压缩时就需要预先处理bootsect.S和setup.S,按照大核模式使用$(CPP)
处理生成bbootsect.S和bsetup.S,然后再编译生成相应的.o文件,并使用 \"arch/i386/boot/compressed/build.c\"生成的build工具,将实际的内核(未压缩的,含
kernel中的head.S代码)与\"arch/i386/boot/compressed\"下的head.S和misc.c合成到一起,其中的head.S代替了\"arch/i386/kernel/head.S\"的位置,由Bootloader引导执行
(startup_32入口),然后它调用misc.c中定义的decompress_kernel()函数,使用 \"lib/inflate.c\"中定义的gunzip()将内核解压到0x100000,再转到其上执行
\"arch/i386/kernel/head.S\"中的startup_32代码。
对于2.4.x版内核
没有变化。
  三.核心数据结构初始化--内核引导第一部分

start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。 这些动作有的是公共的,有的则是需要配置的才会执行的。

在start_kernel()函数中,
输出Linux版本信息(printk(linux_banner))
设置与体系结构相关的环境(setup_arch())
页表结构初始化(paging_init())
使用\"arch/alpha/kernel/entry.S\"中的入口点设置系统自陷入口(trap_init())
使用alpha_mv结构和entry.S入口初始化系统IRQ(init_IRQ())
核心进程调度器初始化(包括初始化几个缺省的Bottom-half,sched_init())
时间、定时器初始化(包括读取CMOS时钟、估测主频、初始化定时器中断等,time_init())
提取并分析核心启动参数(从环境变量中读取参数,设置相应标志位等待处理,(parse_options())
控制台初始化(为输出信息而先于PCI初始化,console_init())
剖析器数据结构初始化(prof_buffer和prof_len变量)
核心Cache初始化(描述Cache信息的Cache,kmem_cache_init())
延迟校准(获得时钟jiffies与CPU主频ticks的延迟,calibrate_delay())
内存初始化(设置内存上下界和页表项初始值,mem_init())
创建和设置内部及通用cache(\"slab_cache\",kmem_cache_sizes_init())
创建uid taskcount SLAB cache(\"uid_cache\",uidcache_init())
创建文件cache(\"files_cache\",filescache_init())
创建目录cache(\"dentry_cache\",dcache_init())
创建与虚存相关的cache(\"vm_area_struct\",\"mm_struct\",vma_init())

块设备读写缓冲区初始化(同时创建\"buffer_head\"cache用户加速访问,buffer_init())
创建页cache(内存页hash表初始化,page_cache_init())
创建信号队列cache(\"signal_queue\",signals_init())
初始化内存inode表(inode_init())
创建内存文件描述符表(\"filp_cache\",file_table_init())
检查体系结构漏洞(对于alpha,此函数为空,check_bugs())
SMP机器其余CPU(除当前引导CPU)初始化(对于没有配置SMP的内核,此函数为空,smp_init())
启动init过程(创建第一个核心线程,调用init()函数,原执行序列调用cpu_idle() 等待调度,init())
至此start_kernel()结束,基本的核心环境已经建立起来了。
对于I386平台
i386平台上的内核启动过程与此基本相同,所不同的主要是实现方式。
对于2.4.x版内核
2.4.x中变化比较大,但基本过程没变,变动的是各个数据结构的具体实现,比如Cache。
  四.外设初始化--内核引导第二部分
init()函数作为核心线程,首先锁定内核(仅对SMP机器有效),然后调用 do_basic_setup()完成外设及其驱动程序的加载和初始化。过程如下:

总线初始化(比如pci_init())
网络初始化(初始化网络数据结构,包括sk_init()、skb_init()和proto_init()三部分,在proto_init()中,将调用protocols结构中包含的所有协议的初始化过程,sock_init())

创建bdflush核心线程(bdflush()过程常驻核心空间,由核心唤醒来清理被写过的内存缓冲区,当bdflush()由kernel_thread()启动后,它将自己命名为kflushd)

创建kupdate核心线程(kupdate()过程常驻核心空间,由核心按时调度执行,将内存缓冲区中的信息更新到磁盘中,更新的内容包括超级块和inode表)

设置并启动核心调页线程kswapd(为了防止kswapd启动时将版本信息输出到其他信息中间,核心线调用kswapd_setup()设置kswapd运行所要求的环境,然后再创建
kswapd核心线程)
创建事件管理核心线程(start_context_thread()函数启动context_thread()过程,并重命名为keventd)

设备初始化(包括并口parport_init()、字符设备chr_dev_init()、块设备 blk_dev_init()、SCSI设备scsi_dev_init()、网络设备net_dev_init()、磁盘初始化及分区检查等等,device_setup())

执行文件格式设置(binfmt_setup())
启动任何使用__initcall标识的函数(方便核心开发者添加启动函数,do_initcalls())
文件系统初始化(filesystem_setup())
安装root文件系统(mount_root())
至此do_basic_setup()函数返回init(),在释放启动内存段(free_initmem())并给内核解锁以后,init()打开/dev/console设备,重定向stdin、stdout和stderr到控制台,最后,搜索文件系统中的init程序(或者由init=命令行参数指定的程序),并使用
execve()系统调用加载执行init程序。


init()函数到此结束,内核的引导部分也到此结束了,这个由start_kernel()创建的第一个线程已经成为一个用户模式下的进程了。此时系统中存在着六个运行实体:



start_kernel()本身所在的执行体,这其实是一个\"手工\"创建的线程,它在创建了init()线程以后就进入cpu_idle()循环了,它不会在进程(线程)列表中出现

init线程,由start_kernel()创建,当前处于用户态,加载了init程序
kflushd核心线程,由init线程创建,在核心态运行bdflush()函数
kupdate核心线程,由init线程创建,在核心态运行kupdate()函数
kswapd核心线程,由init线程创建,在核心态运行kswapd()函数
keventd核心线程,由init线程创建,在核心态运行context_thread()函数
对于I386平台
基本相同。
对于2.4.x版内核
这一部分的启动过程在2.4.x内核中简化了不少,缺省的独立初始化过程只剩下网络 (sock_init())和创建事件管理核心线程,而其他所需要的初始化都使用__initcall()宏
包含在do_initcalls()函数中启动执行。
  五.init进程和inittab引导指令

init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空 间内加载init程序,它的进程号是1。
init程序需要读取/etc/inittab文件作为其行为指针,inittab是以行为单位的描述性(非执行性)文本,每一个指令行都具有以下格式:



id:runlevel:action:process其中id为入口标识符,runlevel为运行级别,action为动作代号,process为具体的执行程序。

id一般要求4个字符以内,对于getty或其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。



runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留,0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。



在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。



initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活 以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级
别。如果没有inittab文件,或者其中没有initdefault项,init将在控制台上请求输入 runlevel。


sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel,其余的action(不含initdefault)都与某个runlevel相关。各个action的定义在inittab的man手册中有详细的描述。

在Redhat系统中,一般情况下inittab都会有如下几项:
id:3:initdefault:
#表示当前缺省运行级别为3--完全多任务模式;
si::sysinit:/etc/rc.d/rc.sysinit
#启动时自动执行/etc/rc.d/rc.sysinit脚本
l3:3:wait:/etc/rc.d/rc 3
#当运行级别为3时,以3为参数运行/etc/rc.d/rc脚本,init将等待其返回
0:12345:respawn:/sbin/mingetty tty0
#在1-5各个级别上以tty0为参数执行/sbin/mingetty程序,打开tty0终端用于
#用户登录,如果进程退出则再次运行mingetty程序
x:5:respawn:/usr/bin/X11/xdm -nodaemon
#在5级别上运行xdm程序,提供xdm图形方式登录界面,并在退出时重新执行

  六.rc启动脚本
上一节已经提到init进程将启动运行rc脚本,这一节将介绍rc脚本具体的工作。


一般情况下,rc启动脚本都位于/etc/rc.d目录下,rc.sysinit中最常见的动作就是激活交换分区,检查磁盘,加载硬件模块,这些动作无论哪个运行级别都是需要优先执行的。仅当rc.sysinit执行完以后init才会执行其他的boot或bootwait动作。



如果没有其他boot、bootwait动作,在运行级别3下,/etc/rc.d/rc将会得到执行,命令行参数为3,即执行/etc/rc.d/rc3.d/目录下的所有文件。rc3.d下的文件都是指向/etc/rc.d/init.d/目录下各个Shell脚本的符号连接,而这些脚本一般能接受start、stop、restart、status等参数。rc脚本以start参数启动所有以S开头的脚本,在此之前,如果相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先启动K开头的脚本,以stop作为参数停止这些已经启动了的服务,然后再重新运行。显然,这样做的直接目的就是当init改变运行级别时,所有相关的服务都将重启,即使是同一个级别。

rc程序执行完毕后,系统环境已经设置好了,下面就该用户登录系统了。
  七.getty和login
在rc返回后,init将得到控制,并启动mingetty(见第五节)。mingetty是getty的简化,不能处理串口操作。getty的功能一般包括:

打开终端线,并设置模式
输出登录界面及提示,接受用户名的输入
以该用户名作为login的参数,加载login程序
缺省的登录提示记录在/etc/issue文件中,但每次启动,一般都会由rc.local脚本根据系统环境重新生成。
注:用于远程登录的提示信息位于/etc/issue.net中。
login程序在getty的同一个进程空间中运行,接受getty传来的用户名参数作为登录的用户名。


如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。



只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。



当用户登录通过了这些检查后,login将搜索/etc/passwd文件(必要时搜索 /etc/shadow文件)用于匹配密码、设置主目录和加载shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/sh。在将控制转交给shell以前,
getty将输出/var/log/lastlog中记录的上次登录系统的信息,然后检查用户是否有新邮件(/usr/spool/mail/{username})。在设置好shell的uid、gid,以及TERM,PATH
等环境变量以后,进程加载shell,login的任务也就完成了。
  八.bash
运行级别3下的用户login以后,将启动一个用户指定的shell,以下以/bin/bash为例继续我们的启动过程。


bash是Bourne Shell的GNU扩展,除了继承了sh的所有特点以外,还增加了很多特性和功能。由login启动的bash是作为一个登录shell启动的,它继承了getty设置的TERM、PATH等环境变量,其中PATH对于普通用户为\"/bin:/usr/bin:/usr/local/bin\",对于root
为\"/sbin:/bin:/usr/sbin:/usr/bin\"。作为登录shell,它将首先寻找/etc/profile
脚本文件,并执行它;然后如果存在~/.bash_profile,则执行它,否则执行 ~/.bash_login,如果该文件也不存在,则执行~/.profile文件。然后bash将作为一个交互式shell执行~/.bashrc文件(如果存在的话),很多系统中,~/.bashrc都将启动
/etc/bashrc作为系统范围内的配置文件。


当显示出命令行提示符的时候,整个启动过程就结束了。此时的系统,运行着内核,运行着几个核心线程,运行着init进程,运行着一批由rc启动脚本激活的守护进程(如
inetd等),运行着一个bash作为用户的命令解释器。
  附:XDM方式登录
如果缺省运行级别设为5,则系统中不光有1-6个getty监听着文本终端,还有启动了一个XDM的图形登录窗口。登录过程和文本方式差不多,也需要提供用户名和口令,XDM
的配置文件缺省为/usr/X11R6/lib/X11/xdm/xdm-config文件,其中指定了 /usr/X11R6/lib/X11/xdm/xsession作为XDM的会话描述脚本。登录成功后,XDM将执行这个脚本以运行一个会话管理器,比如gnome-session等。

除了XDM以外,不同的窗口管理系统(如KDE和GNOME)都提供了一个XDM的替代品,如gdm和kdm,这些程序的功能和XDM都差不多。



--



cnhnln 发表于 2006-2-28 00:00:01

LINUX文件格式简介
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

LINUX文件格式简介


⊙ *.001, *.002 ....
大致上有以下几种可能,必须先分辨是哪种,再用对应的程序解:
1. ARJ 可以指定而造出 .001, .002 的文件
用 arj 解
2. DOS backup 造出的文件是 .001 .002
用 restore 解
3. AIN 分片压缩的档名是 .AIN, .001, .002
用 AIN 解
⊙ *.aif
MAC 上常用的音效档。PC上可用 plany 播放
⊙ *.arc
压缩档,可用 pkunpak 解压及 pak.exe 来解压;
⊙ *.arj, *.a01, *.a02 ...

这是一种压缩档,用arj 可以压缩并解压。
*.a01 等是使用arj 的分片功能时分出来的文件。
⊙ *.au
SUN 的音效档,在PC 上可用 plany 放出
⊙ *.avi
avi 是microsoft 定的一种动画档,其标准为影像加声音。
Win95 下可直接执行媒体播放程序播放。
⊙ *.bat
DOS 的 batch档,其内容为一般的文字档
⊙ *.bmp (Windows Bitmap Format)

图形档,大部份秀图程序都有支持

⊙ *.cap
画面狩猎者的输出格式,可以在原版画面狩猎者的说明书
中找到完整说明。
⊙ *.cdr (Corel DRAW)

Corel DRAW图形档
⊙ *.cmf (Creative Music File)

Creative 公司所使用类似MIDI的格式。
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/cmfved10.zip
⊙ *.com
DOS 的可执行档
⊙ *.cru (crush)

压缩格式。
⊙ *.dbf (dBase file)

可到 simtel 的 dbase 目录找到相关软体。
⊙ *.dcf (Disk Copy Fast)
Disk Copy Fast造出的Image File!可用dcf来解!!
⊙ *.ddi
diskdupe 做出来的 disk image 档
可用 x2file 来解。
⊙ *.dib
图形格式,类似 *.bmp,通常可以处理 *.bmp 的程序都可以用来处理
*.dib。
⊙ *.dl
一种动画格式,可以用 dl-view 来看。
ftp://softu1.ncu.edu.tw/pub5/News/oldexe/dl-view.exe
⊙ *.dsk
diskrw 造出来的 disk image 档。
ftp://ftp.fcu.edu.tw/pub4/CDROM/simtel2/disc2/diskutil/dskrw237.zip

⊙ *.dxf (Autodesk Drawing
Exchange Format)
AutoCAD 2-d 图形档
⊙ *.eps
Encapsulated PostScriptd
⊙ *.exe
DOS 的可执行档
⊙ *.F
一种压缩格式!
ftp://ftp.edu.tw/USENET/comp.sources.misc/volume35/freeze
⊙ *.fli, *.flc
一种动画格式,*.fli 规格是小於 320*200*256色的,*.flc为
fli 的扩充规格,在dos 下可以用 aaplay , display 播放


⊙ *.gif (Graphics Interchange Format)

CompuServe 定图形档,大部份秀图程序都有支持
⊙ *.gl
一种动画格式,可以用 grasp4 来看。
ftp://ftp.edu.tw/PC/garbo/animation/grasp4.zoo
⊙ *.gz
压缩档,在unix 上可用 \"gzip -d 档名\" 解开
ftp://ftp.edu.tw/Chinese/ifcss/software/dos/utils/gzip124.exe(for
dos)
⊙ *.ha
压缩档。DOS 下用 HA 来压缩/解压。
ftp://ftp.edu.tw/PC/garbo/arcers/ha098.zip
⊙ *.hap
压缩档,压缩率稍比 zip 好一点,目前只有 dos 的程序。
ftp://ftp.edu.tw/PC/Simtel/msdos/archiver/hap305bp.zip
⊙ *.hpk
压缩档。DOS下用 hpack 来压缩/解压。
ftp://ftp.edu.tw/PC/Simtel/msdos/archiver/hpack78.zip
⊙ *.hqx
hqx是MAC 上一种编码格式,主要是把8bits 的文件编为7bits,以利
传输。在PC 上可以用BINHEX 解开。
ftp://ftp.edu.tw/PC/Simtel/msdos/mac/binhex13.zip
⊙ *.html, *.htm (Hyper Text
Markup Language)
WWW 用的标准格式,在PC 上可以利用底下几个程序来读
ftp://ftp.edu.tw/WWW/client/doslynx(for dos, 只有文字,没有图形)
ftp://ftp.edu.tw/WWW/netscape/navigator/2.02/windows/n16e202.exe

ftp://ftp.edu.tw/WWW/netscape/navigator/2.02/windows/n32e202.exe

⊙ *.ico
Windows Icon files
⊙ *.iff
图形档,Amiga Images, Deluxe Paint 使用
⊙ *.img
① hd-copy 做出来的 disk image 档。
ftp://ftp.cis.nctu.edu.tw/Msdos/diskutil/hd-cp20a.zip
② 图形档 (GEM Images)
⊙ *.jis
JIS (ジ□ス) = Japanese Industrial Standard 日本工业规格
JIS 在这指的应该是日本用的一种文字内码,一般的 *.jis
都是文字档,可以用南极星来编修。
ftp://ftp.edu.tw/PC/Simtel/msdos/editor/njj30*
⊙ *.jpg
图形档(JFIF),可以用qpeg,display 来看
⊙ *.lbm
图形档, Deluxe Paint使用,编码方式类似 *.iff
⊙ *.lzh
压缩档,可用 lha 压缩及解压
ftp://ftp.edu.tw/PC/garbo/arcers/lha255e.exe
⊙ *.mag
日本常用的一种图形档。 PC 上可以用 gv,display 来看
ftp://ftp.edu.tw/PC/garbo/graphics/disp189a.zip
ftp://ftp.edu.tw/Graphics/Anime/Software/ImageViewer/gv057.zip
⊙ *.mid
midi 音效档
⊙ *.mod
类似midi 音效档。
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/mp219b.zip
⊙ *.mov
Quick Time 的文件,一种动画格式,为Apple 公司规画,在PC 上
可以找 Quick Time for Windows (qtw) 来看!
ftp://ftp.tem.nctu.edu.tw/Windows/multimed/qtw203.exe
ftp://ftp.cis.nctu.edu.tw/OS/Windows/95/multimedia/graphic/qt32inst.exe

⊙ *.mp2, *.mpa (Mpeg Audio Layer
2)
一般可以放mpeg 文件的player 大多可以播放。
Dos:
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/ampeg43.zip
(可在.wav,.pcm<->.mp2转换)
Windows:
ftp://ftp.cis.nctu.edu.tw/Windows/3.x/graphics/softpeg13.zip
ftp://ftp.cis.nctu.edu.tw/Windows/95/multimedia/graphic/mpw32-5n.zip

⊙ *.mp3 (Mpeg Audio Layer 3)

Windows:
ftp://ftp.thu.edu.tw/upload/win95/winplay3.zip
⊙ *.mpg
一种动画格式,包含声音及影像,包含声音的方法有两种,一种是
直接放在 .mpg里,一种是另外用 .wav档储存。
ftp://ftp.edu.tw/mirror/Cica/win3/desktop/vmpeg12a.zip(For Dos)

Windows:
ftp://ftp.cis.nctu.edu.tw/OS/Windows/3.x/graphics/softpeg2.zip
ftp://ftp.cis.nctu.edu.tw/OS/Windows/3.x/graphics/xing21.zip
⊙ *.msl
一种动画格式,内含声音影像。
ftp://ftp.edu.tw/Graphics/Anime/Software/ImageViewer/playmsl.exe
(Dos/V)
ftp://ftp.edu.tw/Graphics/Anime/Software/ImageViewer/Maslv41.lzh
(Win3.1)
ftp://ftp.edu.tw/Graphics/Anime/Software/ImageViewer/Masl32.lzh
(Win95)
⊙ *.pak
压缩档, 由 pak.exe 产生、解压。
ftp://ftp.edu.tw/PC/garbo/arcers/pak251.exe
⊙ *.pcc
图形档, 参见 *.pcx
⊙ *.pcd
图形档(Kodak PhotoCD)
⊙ *.pcx (ZSoft Paint)

图形档,大部份秀图程序都有支持
⊙ *.pdf (Portable Document
Format)
Adobe 制订的文件档。可用 acroread.exe 来读取。
ftp://ftp.tku.edu.tw/pc/winsock/WWW/Plug-in/AcrobatAmber
⊙ *.pic
图形档 (Lotus 1-2-3 Pictures)
⊙ *.png (Portable Network
Graphics)
图形档。为取代 GIF 而制订的图形档格式。
QPV, display, gwswin 等软件都有支持。
⊙ *.ppm (Portable Pixmap)

图形档。
⊙ *.ps
post script,一种page description language,如果你使用的列表机
有支持PS 格式的话,直接列印就好了。不然PC 上可以抓ghostview,
ghostscript 等东西来用。
ftp://ftp.edu.tw/PC/Simtel/msdos/postscrp/gs*for dos
ftp://ftp.cis.nctu.edu.tw/OS/Windows/misc/postscript/*for win
ftp://ftp.edu.tw/Windows/Windows95/Cica/miscutil/rops3244.zip
⊙ *.psd
PhotoShop 标准档。Shareware 中 Paint Shop Pro 可以读非
Multi-layer的*.psd。
ftp://ftp.cis.nctu.edu.tw/OS/Windows/3.x/graphics/psp311.zip
⊙ *.rar
压缩档。可以用 rar 来压缩解压。
ftp://ftp.cis.nctu.edu.tw//Msdos/archiver/rar/rar200/rar200.exe

⊙ *.ras (Sun Raster files)
图形档
⊙ *.raw
图形档(Raw GrayScale)
⊙ *.rcp
一种 Midi 音效档
⊙ *.rle
压缩过的 *.bmp(Run Length Compressed)
⊙ *.rtf
Rich Text Format
⊙ *.s3m
S3M 是由 Future Crew 所设计的一种音乐档格式,可用 iplay 来播放。
ftp://ftp.edu.tw/PC/garbo/sound/iplay121.zip
⊙ *.sdn (Software Distribution
Network 组织)
以前是采用 pak.exe 来压缩, 自 1994 以後改用 arj.exe 来压。
⊙ *.sit
Mac 上的 Stuff It 压出来的东西,压缩采用的方法是把文件集中起
来,然後用 RLE, Huffman, LZW 等方法压缩起来。底下是两个 PC
上的解压程序。
ftp://ftp.edu.tw/PC/garbo/arcers/unsit30.zip
ftp://ftp.edu.tw/PC/garbo/arcers/unstufit.zoo
⊙ *.snd
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/plany15.zip(dos)
ftp://ftp.edu.tw/PC/ncsa/Windows/Mosaic/viewers/wplny12a.zip(win)

⊙ *.sqz
ftp://ftp.edu.tw/PC/Simtel/msdos/archiver/sqz1083e.exe
⊙ *.tar
为了备份方便而把所有文件放在一起的文件,在unix 上可直接下指
令`tar -xf 档名` 来解开
ftp://ftp.edu.tw/PC/Simtel/msdos/archiver/tar4dos.zip
⊙ *.tar.gz
先解开 *.gz 再把解开的 *.tar 解开。
如果是用 GNU 的tar 的话可直接用 \"tar -zxvf *.tgz\" 来解开。
⊙ *.td0
*.td0 是由 teledisk 造出来的disk image 档。
ftp://ftp.tem.nctu.edu.tw/Msdos/arcers/teled215.zip
⊙ *.tga (Truevision (Targa)
File Format)
图形档,svga, vpic, cshow, qpeg 都有支持
⊙ *.tgz
*.tgz就是*.tar.gz,先解 *.gz 再把解开的 *.tar 解开。
如果是用 GNU 的tar 的话可直接用 \"tar -zxvf *.tgz\" 来解开。
⊙ *.tif, *.tiff (Tag Image
File Format)
图形档, cshow、display 及一些影像绘图软件都有支持。
⊙ *.ttf
Windows True Type Font
⊙ *.u01 *.u02 .....
这是 unpack 造出来的,用 pack 可以合起来。
unpack 是把一个大文件分成数个小档的程序。
ftp://ftp.edu.tw/Chinese/Taiwan-netinfo/SEEDNET/success/apart/pack.exe

⊙ *.uc2
压缩档(UltraCompressor II)。PC 上用 uc2 压缩/解压。
ftp://ftp.edu.tw/PC/Simtel/msdos/archiver/uc2r3.exe
⊙ *.uue, *.uud
可能是由 uuencode 造出的文件,在unix 上可用 uudecode
来解码,在dos 上可以抓底下的程序来用。
ftp://ftp.edu.tw/PC/garbo/decode/uuexe651.zip
⊙ *.voc
一种音效档,可用 plany 放。
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/plany15.zip(dos)
ftp://ftp.edu.tw/PC/ncsa/Windows/Mosaic/viewers/wplny12a.zip(win)

⊙ *.wav
一种音效档,可用plany 放出。
ftp://ftp.edu.tw/PC/Simtel/msdos/sound/plany15.zip(dos)
ftp://ftp.edu.tw/PC/ncsa/Windows/Mosaic/viewers/wplny12a.zip(win)

⊙ *.win
图形档,类似 *.tga
⊙ *.wmf
Windows Metafiles
⊙ *.xbm (X BitMap)

ftp://ftp.edu.tw/PC/garbo/graphics/disp189a.zip
⊙ *.xmi
音效档。
ftp://ftp.cis.nctu.edu.tw/Ultrasound/submit/xmi2mid.zip
⊙ *.z
参见 *.gz
⊙ *.Z
压缩档,在unix 上用 uncompress 解开
⊙ *.zip
这是一种压缩档,可以用 pkunzip 来解压,用 pkzip 可以造出这种档。
ftp://ftp.edu.tw/PC/Simtel/msdos/zip/pkz204g.exe
⊙ *.zoo
这是一种压缩档。由 zoo 这个程序来处理。
ftp://ftp.edu.tw/PC/Simtel/msdos/zoo/zoo210.exe



--



cnhnln 发表于 2006-2-28 00:00:39

Linux下软件安装方法
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux下软件安装方法


对于Linux初学者来说,安装一个很小的软件恐怕都是一件很让人头疼的事,因为在Linux下安装软件不像在 Windows中那样简单。在Linux中大多数软件提供的是源代码,而不是现成的可执行文件,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。多数初学者往往不知道该如何进行配置和编译就盲目地运行一些有执行属性的文件或者机械地运行“make”、“make
install”之类的命令。结果呢?是软件没装成,自己急出一身汗,后果严重的还会破坏系统的稳定性。下面笔者将安装软件方面的一些规律写出来与大家分享。

  目前流行的软件包有两种比较常见的形式,一种是RPM包的形式,另一种是压缩成*.tar.gz的形式。本文将讨论这两种形式的软件包在文本环境和图形环境(X
Window)下不同的安装方法。

  文本环境下的软件安装
  一、安装简便的RPM包
  RPM是RedHat Package Manager的缩写,它只能使用在安装了RPM软件的系统中,RedHat Linux和Turbo
Linux中已经使用了它。这种结构的包使用起来还是很方便的,只要记住几条简单的命令和参数就可以方便地使用:
  #〉rpm filename.rpm
  其中常用的options包括:
  -i: 安装软件
  -e: 卸载软件
  -q:查看软件安装的信息和状态
  -U: 升级现有软件
  例如安装软件时,可以使用如下命令:“rpm -i filename.rpm”,软件安装在什么地方、是怎么安装的都不需要用户操心,RPM可以帮助用户管理。由于RPM使用方便,很多软件都有RPM版本。如果想使用RPM形式的软件就要首先下载一个RPM管理软件。在ftp://ftp.rpm.org/pub/rpm/dist/rpm-version

  二、安装需要编译的.tar.gz包
  由于RPM包使用的局限性(必须安装RPM),目前更多的软件使用的是源代码形式的.tar.gz包。这种软件的安装通常要经过解压缩、软件配置、软件编译及安装的过程。

  解压缩通常有两种命令方法:一种是“gunzip filename-VERSION-OS.tar.gz | tar xvf -”,它实质是两条命令“gunzip
filename-VERSION-OS.tar.gz”和“tar xvf filename-VERSION-OS.tar”;另一种是“tar
xzvf filename-VERSION-OS.tar.gz”。 一般来说在软件解压缩后会生成一个目录filename-VERSION-OS。

  软件的配置、编译、安装是最让初学者望而生畏的事了,但笔者认为掌握一些规律还是不难的。一般来说,在解压缩生成的目录中都会有名为Readme、Rnstall或Readme.install之类的文件。这些文件通常会对软件的功能、特性、版权许可、安装以及相关知识加以介绍,并且会提到关于安装的方法和步骤。举例来说:在apache_1.3.6的install文件中说明了如下内容(此处只列出总的条目,具体内容省略):

  Installing the Apache 1.3 HTTP server with APACI
  ==============================
  1.Overview for the impatient(概括说明配置的全过程)
  $./configure--prefix=PREFIX
  $make
  $make install
  $PREFIX/bin/apachectl start
  2.Requirements(需要的条件)
  3.Configuring the source tree(配置的参数说明)
  4.Building the package(编译软件的方法)
  5.Installing the package(安装软件的方法)
  6.Testing the package(软件测试)
  理解并能熟练使用这些说明文件后,就可以利用一些规律来安装大多数的软件。对于那些没有说明文件的软件(当然这种情况比较少见),这些规律通常也是适用的。一般来说,与安装软件有直接关系的文件只有两个:configure
、Makefile。
  其中,configure文件具有可执行的属性,是用来配置软件的,它的参数比较多,用法也比较灵活。当然,不同的软件参数也不相同,这时候就需要借助它的help参数,运行下面的命令就会让你感到豁然开朗:

  #〉 ./configure -help

  Usage: configure

  Options:

  General options:
  --quiet, --silent do not print messages
  --verbose,-v print even more messages
  --sha [=DIR] switch to a shadow tree (under DIR) for
building
  Stand-alone options:
  --help,-h print this message
  --show-layout print installation path layout (check
and debug)

  图1 Gnome运行界面
  Installation layout options:
  --with-layout=ID use installation path layout ID
(from file F)
  --target=TARGET install name-associated files using
basename TARGET
  ……


  接下来,就可以运行“./configure ”来配置该软件。注意,命令行中的“./”非常重要,它告诉系统要运行的命令就在当前目录下(否则系统就会到$path变量指定的路径下去执行命令)。执行命令后可以生成Makefile文件或者修改已有的文件配置。

  Makefile文件通常是用来编译和安装软件的。运行make命令时系统会自动根据Makefile文件中的设置对软件进行编译和安装。make命令有时还可以带一些参数,如:all、build、config、install等。具体要带哪个参数可以参看Makefile文件。在Linux中绝大部分文件是文本文件,Makefile就是一个shell程序(Linux中shell程序与DOS中的批处理文件有很多相似之处,当然功能要强得多),很容易读懂,尤其是编译时可带的参数都会明确写出,例如:

  ##========================
  ## Targets
  ##========================
  # default target
  all: build
  ##------------------------
  ## Build Target
  ##------------------------
  # build the package
  build:
  ……
  # the non-verbose variant for package maintainers
  build-quiet:
   @$(MAKE) -f $(TOP)/$(MKF) $(MFLAGS) $(MFWD) QUIET=1
build
  # build the additional support stuff
  build-support:
  ……
  ##------------------------
  ## Installation Targets
  ## -----------------------
  # the install target for installing the complete Apache

  # package. This is implemented by running subtargets
for the
  # separate parts of the installation process.
  install:
  ……
  # the non-verbose variant for package maintainers
  install-quiet:
   @$(MAKE) -f $(TOP)/$(MKF) $(MFLAGS) $(MFWD) QUIET=1
install
  # create the installation tree
  install-mktree:
  ……


  上面这段代码是apache_1.3.6的Makefile文件的一部分,从这段程序可以看出all参数表示完全编译(缺省参数)。此外,编译时还可以带build、build-quiet、build-surpport等参数;安装时可以带install、install-quiet、install-surpport等参数。它们的功能分别在“#”表示的注释中进行

  说明。需要额外说明的是,有些软件(例如Linux的内核升级程序)不用configure命令来配置软件,而是用make config来完成这项工作,所以,具体使用哪种方法要具体问题具体分析。

  图形界面下的软件安装

  在图形环境下,同样可以弹出一个仿真终端以文本的方法来安装软件,但那样就太笨了,因为在X Window中有一些简单的方法可以帮您完成软件安装。下面笔者以RedHat
6.0为例做介绍。
  一、图形界面下安装.tar.gz包
  在X Window下,安装这种形式的包简化程度并不大,只是在解压缩软件时方便一些。用鼠标左键双击要安装的软件包,系统就会自动生成一个目录——filename.tar.gz#utar,在这个目录下就有你要解压缩的内容——filename目录。将该目录拷贝到你要解压缩的目录下,解压缩的工作就这样简单地完成了。不过,剩下的工作还要弹出一个仿真终端以文本的方法来完成。

  二、图形界面下安装RPM包
  在X Window中你要安装、升级、卸载和查询一个RPM软件包实在是太容易了。以Redhat 6.0为例,它的X Window中有一个Gnome
RPM软件可以完成上面提到的一切工作。


  点击“Start”→“System”→“GnomeRPM”,可以运行该软件。它将安装好的RPM包形式的软件按照功能分在Amusements、Application、Development、Document、Extension、Extentions、Networking、System
Environment、UserInterface、X11等几个树形目录中,每个目录中有相应的文件图标和名称。要安装或升级软件,只要点击工具栏的相应按钮就会弹出打开文件的对话框,选中你要安装的RPM文件,单击“OK”按钮,一切大功告成;卸载软件时,需要根据分类找到该软件的图标,点击右键,选Uninstall就可以了。如果你会在Win
95/98中查找文件的话,在Linux中查找已经安装的软件也就不难了。这个软件可以到下面的站点下载:ftp.gnome.org/pub/GNOME/stable/

  sources/gnorpm。

  几点注意事项
  一、安装方法的适用范围
  上面提到的软件安装方法并不是在任何版本的Linux上都适用。笔者认为,.tar.gz包的安装方法适用于各种版本的Linux,而RPM包则有一定的局限性。

  目前常见的各种Linux发行版本中,如:Redhat 6.0、Turbo Linux 3.0.2、Xteam 3.0等都支持RPM包。如果你想知道你使用的Linux是否支持RPM包,只要运行一下“rpm
--help”命令就知道了。不过,对于不支持RPM包的版本,可以安装一个RPM管理软件。
  二、容易出现的问题
  在安装软件时,一定要保证你对用到的软件包有访问权限。当然如果你是root就没问题了。但如果你真的是root你就需要注意另一个问题,由于root的权限过高,所以在安装软件时,要防止对系统其它软件造成误操作(在使用rm
等“危险”命令时,尤其要注意)。
  另一个容易出现的问题是,在卸载RPM包的软件时要慎重,因为很多软件之间是相互关联的,你卸载的软件很可能是其它软件要用到的,要防止由于卸载了一个软件而影响另一个软件的正常使用。所以笔者建议,初学者对于与系统运行有关的软件尽量不要删除(对于游戏、应用软件一类的软件不必有太多顾虑)。等你成为一名经验丰富的系统管理员时,你就能灵活地处理这些问题了。


--



cnhnln 发表于 2006-2-28 00:01:38

Linux与其他操作系统的区别
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux与其他操作系统的区别

  Linux可以与MS-DOS、OS/2、Windows等其他操作系统共存于同一台机器上。它们均为操作系统,具有一些共性,但是互相之间各有特色,有所区别。

  目前运行在PC机上的操作系统主要有Microsoft的MS-DOS、Windows、Windows NT、IBM的OS/2等。早期的PC机用户普遍使用MS-DOS,因为这种操作系统对机器的硬件配置要求不高,而随着计算机硬件技术的飞速发展,硬件设备价格越来越低,人们可以相对容易地提高计算机的硬件配置,于是开始使用Windows、Windows
NT等具有图形界面的操作系统。Linux是新近被人们所关注的操作系统,它正在逐渐为PC机的用户所接受。那么,Linux与其他操作系统的主要区别是什么呢?下面从两个方面加以论述。

  首先看一下Linux与MS-DOS之间的区别.在同一系统上运行Linux和MS-DOS已很普遍,就发挥处理器功能来说,MS-DOS没有完全实现x86处理器的功能,而Linux完全在处理器保护模式下运行,并且开发了处理器的所有特性。Linux可以直接访问计算机内的所有可用内存,提供完整的Unix接口。而MS-DOS只支持部分Unix的接口。

  就使用费用而言,Linux和MS-DOS是两种完全不同的实体。与其他商业操作系统相比,MS-DOS价格比较便宜,而且在PC机用户中有很大的占有率,任何其他PC机操作系统都很难达到MS-DOS的普及程度,因为其他操作系统的费用对大多数PC机用户来说都是一个不小的负担。Linux是免费的,用户可以从internet上或者其他途径获得它的版本,而且可以任意使用,不用考虑费用问题。

  就操作系统的功能来说,MS-DOS是单任务的操作系统,一旦用户运行了一个MS-DOS的应用程序,它就独占了系统的资源,用户不可能再同时运行其他应用程序。而Linux是多任务的操作系统,用户可以同时运行多个应用程序。

  再看一下Linux与OS/2、Windows、Windows NT之间的区别。
  从发展的背景看,Linux与其他操作系统的区别是,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows NT等,都是自成体系,无对应的相依托的操作系统。这一区别使得Linux的用户能大大地从Unix团体贡献中获利。因为Unix是世界上使用最普遍、发展最成熟的操作系统之一,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。无论是Unix的作者还是Unix的用户,都认为只有Unix才是一个真正的操作系统,许多计算机系统(从个人计算机到超级计算机)都存在Unix版本,Unix的用户可以从很多方面得到支持和帮助。因此,Linux做为Unix的一个克隆,同样会得到相应的支持和帮助,直接拥有Unix在用户中建立的牢固的地位。

  从使用费用上看,Linux与其他操作系统的区别在于Linux是一种开放、免费的操作系统,而其他操作系统都是封闭的系统,需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。有来自很多软件商的多种Unix实现,Unix的开发、发展商以开放系统的方式推动其标准化,但却没有一个公司来控制这种设计。因此,任何一个软件商(或开拓者)都能在某种Unix实现中实现这些标准。OS/2和Windows
NT等操作系统是具有版权的产品,其接口和设计均由某一公司控制,而且只有这些公司才有权实现其设计,它们是在封闭的环境下发展的。


--



cnhnln 发表于 2006-2-28 00:02:19

linux完全汉化汉化
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

linux完全汉化汉化


  由于linux版本众多,在这里我就以我汉化RedHat7.3 的过程为例,我将在不久的以后专门制作一个关于汉化的CHM文档。在Linux 的字体已经比较漂亮,中文字体用宋体,英文用 Windows 2000 的 Tahoma 字体。为了做到这点,我将宋体和Tahoma“合并”为一个新的字体-simsuntahoma,另外,为了使用 qterm 上 BBS 好看,还单独做了宋体。


  (1) 安装时将简体中文选上(为了能够浏览繁体的网站,建议将繁体中文也选上(我建议不选,因为我的经验是选上后中文会有乱码----转载者注),将默认语言设置为简体中文,默认桌面系统为 KDE。


  (2) 从 Windows 下拷出 simsun.ttc,tahoma.ttf,tahomabd.ttf到/usr/share/fonts/zh_CN/TrueType/simsuntahoma 目录,将 simsun.ttc 改名为 simsun.ttf 在该目录下建立 fonts.dir,内容如下:
25
simsun.ttf -misc-fixed-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-simsuntahoma-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:simsun.ttf -misc-simsuntahoma-medium-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:simsun.ttf -misc-simsuntahoma-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
ab=y:simsun.ttf -misc-simsuntahoma-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:ab=y:simsun.ttf -misc-simsuntahoma-bold-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:ab=y:simsun.ttf -misc-simsuntahoma-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
tahoma.ttf -misc-simsuntahoma-medium-r-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:tahoma.ttf -misc-simsuntahoma-medium-i-normal--0-0-0-0-p-0-iso8859-1
tahomabd.ttf -misc-simsuntahoma-bold-r-normal--0-0-0-0-p-0-iso8859-1
ai=0.3:tahomabd.ttf -misc-simsuntahoma-bold-i-normal--0-0-0-0-p-0-iso8859-1
ai=-0.4:simsun.ttf -misc-simsuntahoma-medium-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.4:ab=y:simsun.ttf -misc-simsuntahoma-bold-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:simsun.ttf -misc-simsuntahoma-medium-ro-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:ab=y:simsun.ttf -misc-simsuntahoma-bold-ro-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-simsuntahoma-medium-r-normal--0-0-0-0-c-0-gbk-0
ai=0.2:simsun.ttf -misc-simsuntahoma-medium-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:simsun.ttf -misc-simsuntahoma-medium-i-normal--0-0-0-0-c-0-gbk-0
ab=y:simsun.ttf -misc-simsuntahoma-bold-r-normal--0-0-0-0-c-0-gbk-0
ai=0.2:ab=y:simsun.ttf -misc-simsuntahoma-bold-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:ab=y:simsun.ttf -misc-simsuntahoma-bold-i-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:simsun.ttf -misc-simsuntahoma-medium-ri-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:ab=y:simsun.ttf -misc-simsuntahoma-bold-ri-normal--0-0-0-0-c-0-gbk-0
ai=-0.2:simsun.ttf -misc-simsun-mediumtahoma-ro-normal--0-0-0-0-c-0-gbk-0
ai=-0.2:ab=y:simsun.ttf -misc-simsuntahoma-bold-ro-normal--0-0-0-0-c-0-gbk-0
  然后 cp fonts.dir fonts.scale,或者 cat fonts.dir > fonts.scale


  (3) 将 simsun.ttf 复制到 /usr/share/fonts/zh_CN/TrueType/simsun目录,类似地,建立 fonts.dir 文件,内容如下:
31
simsun.ttf -misc-fixed-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-gb2312.1980-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-gb2312.1980-0
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-gb2312.1980-0
sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-iso8859-1
ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-iso8859-1
ai=0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-iso8859-1
ai=0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-iso8859-1
ai=0.2:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-iso8859-1
ai=0.4:ab=y:sw=1:bw=0.5:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-iso8859-1
ai=-0.2:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-iso8859-1
ai=-0.4:sw=1:bw=0.5:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-iso8859-1
ai=-0.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.4:ab=y:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-gb2312.1980-0
ai=-0.2:ab=y:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-simsun-medium-r-normal--0-0-0-0-c-0-gbk-0
ai=0.2:simsun.ttf -misc-simsun-medium-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:simsun.ttf -misc-simsun-medium-i-normal--0-0-0-0-c-0-gbk-0
ab=y:simsun.ttf -misc-simsun-bold-r-normal--0-0-0-0-c-0-gbk-0
ai=0.2:ab=y:simsun.ttf -misc-simsun-bold-o-normal--0-0-0-0-c-0-gbk-0
ai=0.4:ab=y:simsun.ttf -misc-simsun-bold-i-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:simsun.ttf -misc-simsun-medium-ri-normal--0-0-0-0-c-0-gbk-0
ai=-0.4:ab=y:simsun.ttf -misc-simsun-bold-ri-normal--0-0-0-0-c-0-gbk-0
ai=-0.2:simsun.ttf -misc-simsun-medium-ro-normal--0-0-0-0-c-0-gbk-0
ai=-0.2:ab=y:simsun.ttf -misc-simsun-bold-ro-normal--0-0-0-0-c-0-gbk-0
  cp fonts.dir fonts.scale 或者 cat fonts.dir > fonts.scale,生成fonts.scale
  (4) 进入 /etc/X11 目录,修改 XF86Config-4文件,
  a. 找到 FontPath 行,在 FontPath \"unix/:7100\" 一行前面(注意要在这个前面)加上 FontPath \"/usr/share/fonts/zh_CN/TrueType/simsuntahoma\",
FontPath \"/usr/share/fonts/zh_CN/TrueType/simsun\"
  b. 找到 modules 段,在这些 Load 行里面加上一行 Load \"xtt\",注意,这个也要放在第一行。如果有Load \"type1\", Load \"freetye\" ,注释掉。
  (5) 到这里,系统就多了 simsuntahoma和 simsun 字体了,而且还有粗体和斜体。在 KDE 控制中心内,观感-->字体内改所的有字体为 simsuntahoma,字号 12,这样系统 的中文就变成了宋体,而英文则变成了Tahoma 字体,相当 PP.
  (6) 下面谈谈应用程序的汉化问题:

  a. 为了让 qterm 能够显示漂亮的宋体,有了前面的基础就好办了。在主目录下.bashrc 文件加入:
  export LANG=zh_CN.gb2312
  export LC_ALL=zh_CN.gb2312
  然后在站点属性里面设置字体为 simsun(注意,这里不要用simsuntahoma),这样就可以开开心心地上 BBS 了,爽~
  b. 像 xmms 这种程序,字体需要 fixed 的,修改/etc/gtk/gtkrc.zh_CN 就可以了,将其中的fontset 改为
fontset = \"-misc-fixed-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0,\\
-misc-simsuntahoma-medium-r-normal--0-0-0-0-p-0-iso8859-1\"
这样在 xmms 里面就可以看到 pp 的中文菜单了 :P,另外,为了让 xmms 正确显示中文歌名,需要到参数设置里面将字体设置为
  -misc-simsun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
  确定以后,你会发现歌名都正确显示了,而且比较 PP
  c. Mozilla 中文支持:
  首先选择 Edit--Preferences,弹出对话框,选择 Appearance--Fonts,在
Language Encoding 中选择 Simplified Chinese,然后将 Serif、Sans Serif、
Monospace 都选择misc-simsun-gb2312.1980-0 字体,字号设为 14。
  有些站点可以自动识别语言。这可以通过以下方法实现:Navigator--Languages--Add...
,选择 Chinese/China , 点击Move Up,将中文语言放在最上面。
  最后点OK完成配置,然后退出Mozilla。(注意:这一点很重要,因为mozilla退出时会改写配置文件。如果没有退出mozilla做以下操作将无效!)
  cd /usr/lib/mozilla/defaults/pref,编辑unix.js
  找到这样两行
  pref(\"font.min-size.variable.zh-CN\", 16);
  pref(\"font.min-size.fixed.zh-CN\", 16);
  改为
  pref(\"font.min-size.variable.zh-CN\", 12);

  pref(\"font.min-size.fixed.zh-CN\", 12);
  这样可以使网页看上去美观多了。
  最后是对输入法的配置
  cd ~/.mozilla
  在里面找到pref.js文件,在文件最后加上这样一行
  pref(\"xim.input_style\", \"over-the-spot\");

  然后运行 Mozilla,就可以显示效果很好的中文网页了!显示效果一点不比 IE 5.0差。
  为了方便中文识别,可以选择View--Character Coding--Auto-Detect--Simplified Chinese 以后 Mozilla 会自动识别中文代码页面。
  (7) 到这里,KDE 就相当 PP 了,感谢SMTH 的 fiasco 和 benben00 的帮助,参考了http://www.linuxaid.com.cn及 http://www.linuxeden.com 的相关教程。



--



cnhnln 发表于 2006-2-28 00:04:23

linux完全安装手册
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

linux完全安装手册


  Linux的版本有很多,这里我们仅以Redhat 7.2为例来介绍Linux的安装。
  Red Hat图形安装界面(Graphical mode) 使用光盘或是boot.img启动盘启动之后,您会看到Red Hat启动选单,上面的信息告诉您只要是Red
Hat 3.03以后的版本,都可以直接升级成Red Hat 7.2版,另外Red Hat提供一些功能键F1一F5,可以观看不同安装模式的on-line
HELP,最下面会出现LILO boot:提示符号,您可以在此输入某些关键字选择安装模式或加入设置Kemel参数,例如:内定安装模式就是graphical
mode,采用图形操作界面安装Red Hat,直接按“ENTER”即可进入;text mode(boot:text)就是传统的文字选单安装模式:另外有exprt
mode(boot:expert,专家模式)等三种. 至于rescue mode(boot:linux rescue)使系统修复模式,此种模式是用来为维护安装好的linux系统,我们初次安装Linux系统自然不能选择这种模式。最后一项DriverDisk(boot:linux
dd)则是专为拥有特殊硬件的电脑设计的安装模式,若boot.img制作的磁盘没有办法正确搜索到所有的硬件,则可以改采用此种安装法,因为driver
disk含有特殊硬件的驱动程序。但是Driver Disk安装法必须另外制作driver disk磁盘,该磁盘的image file放置在CD1的images/drivers.img,也就是说您必须同时制作boot.img和drivers.img这两张盘,才可以选择linux
dd这种安装模式。一般若没什么特别需要,请采用fraphicalmode图形安装模式,按“ENTER”启动Linux吧!不过在此必须要注意的是,若您的显卡XFree86
X Server不支持,则无法启动图形安装模式,此时Red Hat会自动切换到text mode,不过安装方法是完全一模一样的,请不用担心。还有若您内存大于128MB,而Linux没有完全正确搜索的话,可指定内存大小给Kernel.例如:boot:linux
mem=128M expert。一切准备就绪后,接着请参考下列步骤,一步步做下去,您会发现安装RedHat是如此简单快速。进入比Red Hat安装画面后,若PC有安装SCSI卡,则会自动驱动这块SCSI卡;若没有,则会直接启动X
Window System进行安装。启动安装程序后,您可利用功能键切换各终端机,查看各种安装信息,例如:Ctrl+Alt+F7就是最主要的安装画面,您可以切换到Console
1看RedHat安装信息。
Console 1:Ctrl+Alt+F1 installation dialog
Console 2:Ctrl+Alt+F2 shell prompt
Console 3:Ctrl+Alt+F3 install log (messages from installation program)

Console 4:Ctrl+Alt+F4 system-related messages(messages from the kernel,etc.)

Console 5:Ctrl+Alt+F5 other messages
Console 7:Ctrl+Alt+F7 X graphical display
  Stepl.选择语系
  Red Hat有提供多国语言的安装界面,但是都是英语系或欧洲语系国家,并没有提供中文的安装界面,所以请选择English。如图是选择Red
Hat语系画面,画面左边是网上辅助说明,若不想看可以单击Hide Help将此Online Help隐藏;右半部则是语系选单,单击确定之后,单击Next继续进行安装。而这个GUI按装界面除了可以用鼠标操作外,也可使用键盘的Tab切换选项,用“Enter键确定。


  Step 2.选择键盘
  键盘一般都兼容于U.S.Englishl01键的键盘,所以就选内定值PC即可,如图。若是此时选择了错误的键盘模式,可以立即单击设,或者在完成Red
Hat Unux安装之后,以rodt身份登录,执行/u或是setup重新设置。

  Step 3.选择鼠标
   鼠标一般都是两键/三键的PS/2、Bus Mouse或是Serial鼠标,如图2—5选择鼠标种类与连接端口。若您使用PS/2或Bus
Mouse,则不必选择连接端口;使用Serial鼠标则必须设置正确的连接端口,例如:CoM1 port在Linux系统看来就是ttyS0这个装置名称,COM2
port就是ttyS1,请选择正确连接端口才能运行正常。最下面有个Emulate 3 Buttons可以让两键的鼠标左右键一起按时,模拟三键鼠标的中键。同样,若设置鼠标错误;可在安装之后,执行/usr/sbin/mouseconfig重新设置。假若您是左撇子或惯用左手鼠标,可以在安装好Red
Hat之后,执行gpm-b 321,设置鼠标为左手鼠标。

  Step4.Red Hat安装欢迎画面
看到可爱的小红帽欢迎画面了吧!这里简介安装方法详细记录在Red Hat Linux Installation Guide, 有HTML和PostScript两种文件格式,
并可从http://www.redhat.com网站取得,其实一般Red Hat光盘的doc/目录都有安装手册。另外看到画面下面有System
Installer的字眼吧!Linux又这么漂亮的安装画面都是归功于RedHat公司编写loader安装程序的功劳(该程序在/sbin/loader)。红的帽子Linux(PC机用的免费UNIX操作系统)。请在左产品上的信息读完帮助正文。在屏幕的底部的左角有一个隐藏的帮助的按钮。帮助屏幕在没有特别指定的情况下是开着。如果你不想看帮助信息,可以单击隐藏帮助。继续单击下一步。

  Step 5.选择Red Hat安装模式(请特别小心,以免数据全毁)

   Red Hat的安装模式分四种:Workstation Server laptop Custom.这里你必须千万小心,因为选择Workstation
或Server的话, Red Hat会自动的帮您分割并格式化硬盘,若数据全毁的话,后悔就来不及了。但是若您预备使用完整的一个硬盘来安装 Red
Hat,并不怕任何格式化的话,则安装和设置会异常顺利。

  下面是 Red Hat将安装模式分乘此三者的目的:
   Workstation
   选择GNOME(GNU Network Object Model Environment)Workstation或是KDE(KDesktop

Envirnment)Workstation的用户,打算将安装好的Linux当workstation使用,X 图形桌面集成环境有GNOME和KDE两种可供选择,但因为该PC只是相当单纯的工作站,所以不会安装任何的网络服务器(例如:web、FTP、News
server等等),并且Workstation模式会把硬盘上的所有Linux partition全部移除,并重新划分成三个partition:64MB
SWAP partition、/boot(16MB)与/(所有剩余硬盘空间,需要大于900MB。请注意:使用Workstation模式硬盘空间建议至少有1GB)。而后续的安装步骤:硬盘分割、格式化硬盘、选择安装软件套件、设置LILO多重启动系统,全由Red
Hat安装程序包办。不过您也不要太担心,不用怕误选Workstation之后,马上就格式化硬盘了,因为后续画面是Automatic Partitioning,有Remove
data与Manually Partition with DiskDruid/fdisk格式化硬盘的选项,如图所示。只要不选择Remove
data, Red Hat就不会自动帮您分割硬盘,但是确定Linux partition硬盘数据不要的情况下,选择Remove data安装会更顺利。另外可让您更放心的一点是,选择Workstation安装模式,绝对不会删除任何的DOS/Windows
9x/windows2000 partition,因此若您的系统已经预先安装Windows98/2000,您只要选择Workstation自动安装模

式,在Linux安装完成之后,还会自动帮您设置LILO成为Windows/Linux多重启动模式,让您可以选择使用Windows或是Linux启动,所以强烈建议初次安装者,选择此种模式安装Linux。

   Server
   选择Server安装模式的话,请确定您预计安装Red Hat Linux的此个硬盘数据是完全不要的,因为此模式会将硬盘上的所有Partition全部移除!不会橡Workstation模式那么客气只移除Linux
partition了,无论是DOS、Windows 9x/NT partition、OS/2全部都删除。然后将硬盘划分为64MB SWAP
partition/256MB、/usr至少512MB、/home至少512MB、/var 256MB五个partition。一般情况下,若您硬盘很大,多余的硬盘空间都由/usr与/home两个partition平分,而且您要注意的是,至少拥有1.7GB的硬盘空间才可以采用Server模式安装,而除了硬盘分割方式不同外,Workstation与Server的后续安装步骤都是一样的。而另外一点Workstation与Server安装模式不同的地方为,Server模式不会安装任何的图形界面程序,
目的是为了让各类网络服务器发挥最大的性能,而不要将系统资源消耗在无谓的 X Window System上。至于server模式划分这么多Partition将数据个别分开放置的目的是:除了可以有效提升server的网络服务器运行性能外,还可以降低数据毁损风险与降低系统重建的复杂度。若读者您不知道这些partition名称为什么是/usr、/home之类的目录名称的话,请阅读第3章与第4章,或暂时先不要了解也没关系。

   Custom
   Custom安装模式就是凡事自己来,分割硬盘、配置各partition空间大小、格式化硬盘、选择软件套件、多重启动程序LILO的设置全由自己设置。接下来的安装模式教学,是采用Custom选项安装
Red Hat,因为这样才能完整讲解到Red Hat的所有安装设置,让您成为Red Hat Linux的主人。另外若您是第一次安装Red Hat,还是建议您可以先使用workstation自动安装模式,待成功安装过一次后,再自己尝试使用Custom安装模式,如此在学习Linux安装上,可能会较为顺畅。

   Upgrade
   若您先前已经安装过Red Hat 3.03至6.2的旧版本,都可以选用这个选项升级,Red Hat安装程序会完全保留系统的旧有配置文件,并把文件名附加上.rpmsave的副文件名,例如:/etc/profile就被改成/etc/profile.rpmsave,并且完整的Red
Hat升级信息会被记录在/tmp/upgrade.log以供您参考。
  Step 6.分割硬盘
  选择Custom之后,可以马上看到所有硬盘的Partition情况,如图所示。所谓的mount
Point就是Linux会将这个partition,mount在您指定的系统目录,要存取这个partition其实就是对这个目录做存取,例如/dev/hdal挂接在/win98,表示安装好Linux之后,IDE
I Master硬盘的第一个partition,会mount在/win98这个目录。这点观念与DOS/Windows的C盘、D盘观念是完全不同的,另一个重要观念是Linux将所有电脑硬件都视为一个装置文体,如hda代表第一条IDE排线上的Master硬盘。


  自动分割机械分割

  分割硬盘非常简单,只要单击Add就可以新增Partition,选Edit可以编辑己存在Partition的Mount
point,Delete当然就是删除Partition了。



  Reset则可以让您划分错误时,回复到原始状态,因为真正的Partition Table要等到软件安装步骤后才会真正储存起来。最后有一个选项Make
RAID Device因为是要做partition或磁盘的备份,所以必须有两个硬盘以上才可以制作,除非是重要的Server架设,否则读者一般安装不需要使用Software
RAID功能。图2-10是选择Add partition之后的对话框,Mount Point可以是斜线(/)加任意名称,其实斜线(/)是root
partition的意思,一个Linux系统有/与SWAP partition两个Partition就可以运行了。但建议您采用Server安装模式的分割方法:/boot(16MB)、/(256MB)、/usr(建议2GB,视安装软件数目多少决定)、/home(依用户人数多少决定,0~无穷大)、/var(256MB)、SWAP
partition建议128MB以上,最大不要超过256MB,否则浪费。总共必须分割六个partition,决定好mount之后,再在Size(Megs)输入该Partition的空间大小,以MegaBytes为单位,下面Grow
fill todisk是用掉所有硬盘空间的意思,通常在您分割到最后一个Partition时,就可以随便输入Size(Megs)的值,然后选择Grow
fill to disk,便会自动用掉剩余的硬盘空间。最后有一个重要的选项
是Partition Type,所有的Partition都是Linux Native的Ext2文件系统,只有SWAP那个Partition必须选择为Linux
SWAP,而且SWAP是不需要mount point的,因为它是虚拟内存。

  全部Partition规划好之后,下一个画面会让您选择哪几个Partition需要格式化,请将刚刚前面所规划的Partition全部格式化。

  Step 7.安装LILO(Linux Loader)
  LILO除了用来载入Linux Kernel启动系统之外,还有一个重要功能就是可以当作多重启动程序,DOS、Windows9x/2000/NT、OS2、FreeBSD、Solaris等等常见的操作系统都可以使用LILo启动。


  此选单最上面有个Creator boot disk选项指定要制作启动盘,还有一个Do notinstall
LILO,请不要选择。因为若您不安装LILo就无法直接从硬盘开启Linux,所以建议一定要安装。接着的选项是指定LILO安装位置
  MBR:MBR位于Master硬盘、第0磁柱(cylinder)、第0磁头内的第一个扇区(sector),电脑启动电源后,BIOS会读取这区域去启动操作系统,所以将LILO安装这里可以作为多重启动系统,例如选择用Linux、Windows
9x/NT、DOS或其他OS启动。boot:所谓的boot partition(superblock),就是硬盘每个Partition的第一个sector。把LILO装在Linux的/(root)boot
partition,可以使用其他的多重启动系统如: System Commander、OSBS、Spfdisk或其他partition上的LILO来启动。而画面的最下面是显示可以启动的Partition有哪些,您可以自己指定启动系统选项(boot
label)以及预设的启动系统(排在第一个的OS)。
  Step 8引导装入程序口令构造

  Step 9.TCP/IP
  Red Hat会自动检测您的网卡并进入TCP/IP网络设置。您必须输入下列网络设置值(以笔者的机器当范例):最后面的第二台与第三台name
server两项,若您不知道或没有,则可以不用填。若您根本没有固定IP而是使用Intranet,例如:modem用户,则IP Address请使用Intermet保留区段192.168.xxx.xxx,hostname可以随便您填,Gateway与DNS则填写所使用ISP提供的服务器。


  Step 10.Internet 防火墙构造
Red Hat Linux(PC机用的免费UNIX操作系统)向改良的系统安全提供Internet 防火墙保护。在你的计算机和网络之间,网络上的用户能在你的计算机上接近Internet
防火墙。
  Step 11.选择语言支持
  Red Hat Linux能在你的系统上安装语言,你可以选择全部安装或只选择china,如果你选择安装其他的语言,你能在安装后面改变你的语言设置。

  Step 12.设置系统时间
  首先您会看到一张漂亮的世界地图,只要点选上面的地名就可以设置当地的系统时间,如图。若是嫌世界地图太小了,可以点选world下拉列表,然后选挥Asia,再将鼠标移到中华人民共和国地图上,就可以正确地设置北京时间。不过下面有一个选项“System
clock uses UTC”这一项,千万不要选择,不然您的系统时钟就会被设置成格林威治标准时间,这跟我们目前在北京的时间不符合。若是不小心将系统时间设置错了,待完成安装之后,执行/usr/sbin/timeconfig即可重新设置。

  Stepl3.新增Linux系统用户
  直接在安装过程中新增系统用户是Red Hat的独特创举,不像以往的任何UNIX系统,安装后系统唯一用户是Super User(root),没有任何一般用户,现在您直接可以在安装系统中设置自己的账号,第一次启动系统不一定非用root登录不可,大幅增加系统安全性。在图账号设置对话框中,最上面的Root
Password与Confirm要求您输入一次root密码并再确认一次,所以总共需输入两次root的密码。

  Accountname是用户的登录账号,同样地用户密码必须连输两次,最后的Full name可以是任何字符串,通常是输入用户的姓名或数据。

  对于初次使用Linux或UNIX系统的读者,笔者在此有个建议,root密码的设置千万不要太简单,最忌讳的就是用自己的英文名字、字典常用字、生日、电话号码等当密码,否则很容易被破解。一个好的密码应该同时包含大小写英文字母(不要是自己的名字或字典的字)、数字以及特殊符号,且不要太长而超过8个字符,以方便记忆。例如Yu&%Ko4i就不是一个好拆解的密码,同时包含有大小写、数字与特殊符号,虽然没有秩序可言,但短短8个字符常输就会记得,例如:ABCl23、youngman、123456、root就是非常不好的密码。

  Step14.密码加密与网络安全认证
   以往所有用户的数据与密码(加密后)都放在/etc/passwd,但是人人可以读取,所以即便密码稍微加密过,安全性还是非常堪忧,为了增加系统安全性,现在大部分系统都采用Shadow
Password,将假密码放在/etc/passwd,真实的用户密码会放在/etc/shadow这个文件,.且只有唯一的super User-root可以观看或编辑这个文件。但是有人觉得这样还是不够安全,所以再采用MD5密码加密技术,将任何长度的密码,编码成256字符长度后,再存放到/etc/shadow中。所以为了增加系统安全性,请务必将Enable
MD5 passwords与Enable shadow passwords两个选项选取起来(内定值)。另外还有一个Enable NIS,这就和密码加密不太有关系,NIS是Network
Information System的缩写,而NISServer也就是常听的SUN Microsystems公司发明的YP Server,该网络Server主要功能是可以将分散的工作站集中到一台主要的NIs
server管理,例如有cc1~ccl0共10台机器,若要让用户使用这10台机器,就必须在每台机器新增这些用户。但是使用了NIS后,假设cc1是NIS
server,其他cc2~ccl0都是NIS client,则只需在cc1此台server建立账号或做其他用户设置,则这些用户的基本数据,如username,user
grouP,homedirectory,disk quota在这10台都一样,因为所有的数据都记录在NIS server,其他NISclient需要时会自动向server索取,大幅增加账号管理的方便性。但是若您是单机,则不须要启动NIS,所以忽略此选项。另外下面还有两个选项Enable
LDAP与Kerberos。LDAP(Lightweight Directory Access Protocol)是一种数据组织汇整系统,可以将您所管理的整个网络系统上的所有用户数据汇整在一起,例如:在一个公司行号内,有20个人在做同一个名为x的project,每一个人做不同的事情,但是information必须互相共享,若Mail
Server有通过LDAP机制,则可设置任何一个人收到关于x project的信件,必须自动转信给其他20个人,而这种具备组织结构转信的功能,就是LDAP提供的功能之一。另外LDAP也可以汇整所有用户的姓名、住址、电话、E-mail
address等等,使所有网络用户数据统一管理。至于Kerberos是一种网络加密认证系统,它可以将Kerberos client/server之间传送的密码加密,而不至于被监听或截取密码。在此为了简化系统安装步骤,而且一般用户也不需要此两项功能,所以LDAP与Kerberos的设置就不加以介绍,若读者有兴趣,可以参考LDAP
Linux HOW—To以及Kerberos 5 Installation Guide,此两份文件可在RedHat安装成功后,在/usr/doc/HOW-TO以及/usr/share/doc目录中找到。

  Stepl5.选择软件套件
   Red Hat将其所提供的所有软件分类规划,如图所示。例如您想使用打印机,自然必须选取Printer Support这个套件;想使用X
Window System与GNOME,就将两者都选择起来。不过事实上,Red Hat都有预设的内定值,请您不要把内定值的套件移除掉,只要再选取您想要安装的套件即可。例如:KDE不是内定选项,您想要将来的系统可以同时有GNOME与KDE桌面集成环境可供切换,就将KDE也安装起来。若想完整安装Red
Hat,只要选择Everything即可,但是完整安装大约需要3.5GB硬盘空间。

  除了选择大项目的分类套件以外,若您想知道这个大项目里面预设安装了哪些软件可以点选Select individual
packages,再单击Next就会看到详细的软件列表,如图所示。您可以再自行选择想安装的软件,若是不知道该软件的功用,下面都有网上说明仔细看一下应该可以很容易了解该软件的功用。但是您自己选择软件套件时,可能会发生的就是软件相依性问题,且通常是欠缺安装某些函数库的问题,例如:图所显示的就是选择安装kdetoys这个软件,但是这个软件执行时需要KDE
support软件、KDE Library与Qt Library才能正确执
行,所以Red Hat的RPM套件管理程序会自动检测出软件间相依性,并要求您必须安装kdesupport、kdelib、qtlx才能安装kdetoys。还有一个您关心的问题可能是,假若有某个套件在安装时没有选到,该怎么办?别担心,待安装好Red
Hat之后,执行rpm或
是X Windows下的gnorpm,将目录切换到 Red Hat/RPMS就可以再安装这些软件。

  Stepl6.GNOME简短介绍
   GNOME是强大的制图法-的开动的桌面环境。GNOME包括展示板(开始应用,展览状态),桌面(数据和应用能被放),窗教练复数的(控制你的桌面的外观和感觉)和桌面工具和应用的标准的一套在内。

   http://www.8bb8.com/photo/setup72/setup20.gif
 (以下由于害怕文档过大没有在加图片,只要在安装的过程小心或者以默认一般是没问题的)
  Stepl7.KDE的简短介绍
   KDE是也是个强大的桌面系统,很精美!窗口化的操作方式,操作起来非常容易!

  Stepl8.软件包依靠
  为了正确地运行Unresolved Dependencies Many软件包依靠必须被安装在你的系统上的其他的软件包。例如,用图表示的红的帽子系统管理工具的很多需要
python and pythonlib packages。你安装,或者除掉软件包每次弄清你的系统有全部它为了是充分地功能,Red Hat
Linux需要依赖检查这些包。

   Stepl9.X设置工具
接着安装程序会进入x Windows System的设置,首先是屏幕规格的选择,如图所示。您可依照自己使用的屏幕品牌,从选项中选出适当的屏幕。若是无法找到您所使用的屏幕,可以选择Generic
Monitor自己指定屏幕,并在下方的水平频率以及垂直频率中输入符合屏幕规格的显示频率范围。选定屏幕之后,接着选择您使用的显卡,如图所示。

  Step20.准备安装
  注意: 先前分割硬盘的Partition table将在这个画面单击Next之后真正写入硬盘,所以若安装至此您想反悔还来得及。直接重新启动,即可终止安装Red
Hat Linux,硬盘的原数据依然还在。
  Step21.进行软件安装
  到达这个步骤,安装程序将开始将您先前选择的软件套件复制到硬盘,依照您选择的软件多少,等待时间从10min~30min不等,静心等候吧!如图所示,Total栏中显示总共安装441个软件,约需1018MB的硬盘空间,约要11.49分钟完成安装。而这里要请您特别注意的是,如果您选择Workstation或者是Server安装模式,事实上只需要Red
Hat 7.2的第一张光盘即可安装完成。只有在您选择Evrything,要求安装全部的套件时,才会使用到第二张光盘。而另一种使用到第二张光盘的情况为,当您选择升级模式(upgrade)时,通常也会要求您放入第二张光盘,因为Red
Hat将一些套件改放到第二张光盘了。所以若您安装成功时,发现系统没有要求放入第二张光盘,请不要惊讶,那是绝对正确的。

  Step22.制作启动盘
  先前在设置LILO的地方虽然有选择要制作启动盘,但真正的操作是等所有软件安装完成之后才会进行。现在将3.5寸1.44MB磁盘插入,单击Next就开始制作启动盘.若是突然不想要启动盘了,也可以选择Skip
boot disk creation跳过去,将来安成安装之后,也可以执行mkbootdisk制作启动盘。
  Step23.X设置工具
  同样地,从选项中挑选出您所使用的显卡厂牌与型号,若是无法从中找到您所使用的显卡,请选择Unlisted Card,并选择该块显卡的内存容量。而该画面下面的几个选项:单击Test
this Configuration这个Buttom按钮之后,会测试您选定的屏幕与显卡是否正确,若正确则可显示x画面,不正确则可以单击Back回去重设.

   Customize X Configuration可让用户指定X Window System的显示分辨率,若不指定则一般内定采用16位高彩@1280xl024当设置值,如果有24位的或更高的,在这个画面上你也可以看到!您可以选择该选项然后单击Next,就会进入分辨率设置画面。Use
Graphical
Login是指定将来系统安装好之后,登录系统的画面,采用X图形界面,若X环境设置没有问题,请将Use Graphical Login选起来,这样启动以后,看到的就是漂亮的X视窗Red
Hat登录画面。最后的skip X Configuration是忽略X Window system设置,右边的GNOME图标代表将来X Window
system内定采用的视窗集成环境为GNOME,若您有加装KDE套件,也可以选择KDE当内定的视窗集成环境。一切选定后,您可以再次执行Test
this configuration测试将来系统执行X Window system,若觉得没问题,就进行下一安装步骤。若是不满意设置值,也可以在安装好Red
Hat后,在Terminal中执行Xconfigurator,或是在X Window System中执行XF86Setup重新设置。若是不幸XFree86不支持您使用的显卡,您仅能使用Text
mode安装,则请您在安装完成之后,再尝试执行Xconfigurator设置看看,或是参考第X Window system,里面将会教您如何使用Xf86config设置XWindows或是升级XFree86以支持您的显卡。

  Step24.大功告成
   最后一个画面告诉您已经完成Red Hat安装,将重新启动系统,请将软盘与光盘拿出来重启动后,您应该会看到漂亮LILO开启画面


--



cnhnln 发表于 2006-2-28 00:05:04

VI的使用
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

VI的使用

  相信用过Linux的朋友一定不会对vi陌生吧,它是Linux环境中使用最为普遍的全屏幕编文本辑器。但由于我们一般用户最初接触的都是微软的产品,它和DOS下的EDIT和Windows下的记事本的使用方法不尽相似,所以另初学Linux朋友觉得vi很难用,甚至无从下手,下面我就向大家介绍vi的使用方法。



  首先需要说明的是,vi分为两种状态,即命令状态和编辑状态,在命令状态下,所键入的字符系统均作命令来处理,如:q代表退出,而编辑状态则是用来输入文字资料的。当你进入vi时,会首先进入命令状态。现在对vi也有了基本的认识,如果你有兴趣请接着往向看。


  要进入vi,直接在系统提示符下键入vi <文件名>,当你键入的文件名是已有文件时,则系统自动打开此文件,否则将建立一个新文件。这时你将会看到屏幕左边会出现波浪线~,这就代表该行是空的,没有任何文字,这时系统正在命令状态,怎样切换到编辑状态输入文字呢?按键盘上的Insert键即可,这时我们就可以像使用其它的编辑器一样进行文字的编辑了,功能键也和其它编辑器差不多,下面就是一些功能键的说明,是不是很简单?
  ===========================================================
  说明                功能键
  ===========================================================
  移动光标到所在行的最前面      Home
  移动光标到所在行的最后面      End
  向下翻一页             Page Down
  向上翻一页             Page Up
  删除光标所在位置字符        Delete
  删除光标所在位置前面的字符     Backspace
  移动光标              ←↑↓→
  ===========================================================


  另外,vi还支持粘贴与复制,不过用键盘来做实在很麻烦,现在哪台电脑没有鼠标呢?和Windows中一样,从你要复制的开始位置拖动鼠标到结束位置,这块区域就反白了,再将光标移到你要粘贴的位置,按鼠标中键即可完成粘贴(如果你的鼠标是两个键的,同时按左右键即可模拟三键鼠标的中键),这比Windos里方便吧。也许有的朋友会问,如何进行查找呢?下面我们按键盘上的Esc键切换到命令状态,输入“?<你要查找的字符串>”(不带引号)就执行向下查找操作,而“/<你要查找的字符串>”表示向上查找,键盘上的n表示重复一次,而N表示反方向重复一次。


  说了半天,可能你的文件已经编辑完成了,但如何存盘呢?现在我们还是保持在命令状态,按:w按后回车即完成了存盘工作,而退出vi返回到Linux的命令是:q,这两个命令也可以组合使用,如:wq代表存盘退出。


  好了,说了半天,可能你的头已经大了,上面讲到的那些只是vi中最常用的功能,至于其它的功能你可以在使用中慢慢体会。顺便说一句,不要强记那些命令,它们看起来多而毫无规律,多用几次自然就熟练了,现在我觉得比Windows中的记事本方便多了

--



cnhnln 发表于 2006-2-28 00:05:55

从初学者到编程高手,几种必学的编程语言
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

从初学者到编程高手,几种必学的编程语言


  我自己在学习编程的过途中有的几个疑问,1)什么编程语言我需要学。 2)学多少种才算可以。最后通过我自己学习感受和对其他编程高手(主要是新闻组)的请教,我认为找到了满意我的答案。抛砖引玉,做个参考吧。

  对于初学者,我建议从 python 开始学。因为它在语言设计上很整洁,帮助文件也很全面。而且也是 object-oriented
(O-O),尽管我把它作为一个初学者开始的语言,并不代表它的用处和功能不强大。实际上它是个功能强大,可以用来做大的编程工程的语言。
我知道国内对 python 可能还不了解,因为它相对来说也比较新(1990),到现在有12年的历史了,但是它在国外已经被广泛接受和认同,快速发展。不过我知道邮电出版社最近刚出了一本介绍
python 编程的书,大家可以查询。python 的主页 http://www.python.org
  Java 也是个很好的语言来开始学编程。不过它比 python 复杂。国外的大学现在都采用 java 作为电脑专业的凯时语言。总之我觉得除了
python 之外,它也可以作为一个极好的初学者语言。
  不过,会了这两种语言,并不代表你就是一个编程员了。学会编程的关键就是 -- “ 编程思想“ 。 学会怎样用一种很“
广泛的思维“ 去考虑“ 编程问题 “,也就是这种思维是可以放之于任何一种编程语言都可以解决问题的,而不是局限于单纯的一种语言。这样当你需要学习一种新的语言时,你只要学习他的语法等等就可以了,至于怎样用这种语言解决编程问题不是早就在你的脑子里了吗。所以,这也就是为什么很多程序员可以拿到一种语言,一两个星期就可以使用的很熟练了。这,也同样要求你去学几种完全不同的语言。

  C 语言是非常有效率的,很多时候你都需要考虑内存的管理等底层的东西。很可惜这些都需要你去花很多的时间去做,问每一个
C/C++ 的程序员,用 C/C++ 编程是不是一个很头疼的事。好消息是,现在的机器都已经很高级,运算的很快,在很多时候我们是不用考虑用 C/C++
去做,忽略它所带来的好处,当然除非这个工程真的很需要处理底层的东西(象 内核的编辑,3-D 图形等)。很多时候 python, java 等都可以实现。另外在现在很多工程所要求的时间都不是足够充裕来用
C/C++ 去做,所以在商业上时间就是金钱,这个代价谁也付不起。
  我这里并没有说 C/C++ 不好,你不应该学。相反我觉得我们应该学,但不是作为一个初学者的语言来学。在
C 和 C++ 之间,我推荐先学 C 。.因为它相对来说较小,简单。作为一种底层编程语言,C,你可以学到很直接的内存管理,指针,等。另外,很多语言都是用
C 来设计的, 比如 perl , java, python
  其它语言值得一学的有 perl , Lisp(当然你也很一说 effile, proflog),提到 perl
是因为它的实用性,广泛的应用在网络和系统管理,perl 提倡 \"There is always more than one way
to do it\" 这主要是从 perl 的语法以及它的独特设计上来获得,记得用几行code 你就可以写出很有效率的程序?这也就是为什么我很喜欢perl
了。但是perl 的语法着实让很多人头疼 而且对于用 perl 写的大型程序,维护性不是很好,python 就没有这方面的问题,这也是为什么很多
perl 的用户转向了 python 。很多人用 perl 的目的和用 python 一样,避免在不要求 C 的效率时 使用 C。
Lisp 据说是很有启迪性的语言,会让你成为一个更好的程序员.(我还没有到达那个程度 :-)


  我个人推荐 (python, java, C ,perl, 和 Lisp),因为他们使用不同的方法来编程,每一种都会在某种程度上交给你些很有价值的东西。

  谈到学习编程,单纯的上课和看书只会让你学习语言的特性等,只有学会用编程的思想来思考才是你终生受用的。这些只能依靠
“ 练习 “ 具体就是 1) 读程序 2) 写程序 看似简单,但坚持下来你才会真正体会到,这里没有其他可以投机取巧的方法学习编程了。


  至于学多少种,是越多越好吧。但并不是指每个都精通,我想大家也没那么多时间和精力。但在你有了坚实的编程经验和基础,了解其它语言的设计方法、构造会开阔你的眼界,没准什么时候你也可以编出自己的语言(咱中国人编的!!)
:-)


  要提醒大家的是,如果每种语言总是略学皮毛,然后又急匆匆的跳到另外一种语言,那你就会一事无成,永远彷徨在初学者的门槛边。我想这句话不只是对程序员,对我们来说也是生活中的一个道理。



--



cnhnln 发表于 2006-2-28 00:06:55

文件与目录操作
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

文件与目录操作


  用户的数据和程序大多以文件的形式保存。用户使用Linux系统的过程中,需要经常对文件和目录进行操作。本章讲述了文件与目录的基本概念,有关文件和目录操作的命令以及如何在Linux环境下运行DOS命令。

  文件与目录的基本概念
  文件与文件名
  在多数操作系统中都有文件的概念。文件是Linux用来存储信息的基本结构,它是被命名(称为文件名)的存储在某种介质(如磁盘、光盘和磁带等)上的一组信息的集合。Linux文件均为无结构的字符流形式。文件名是文件的标识,它由字母、数字、下划线和圆点组成的字符串来构成。用户应该选择有意义的文件名。Linux要求文件名的长度限制在255个字符以内.为了便于管理和识别,用户可以把扩展名作为文件名的一部分。圆点用于区分文件名和扩展名。扩展名对于将文件分类是十分有用的。用户可能对某些大众已接纳的标准扩展名比较熟悉,例如,C语言编写的源代码文件总是具有C的扩展名。用户可以根据自己的需要,随意加入自己的文件扩展名。

  以下例子都是有效的Linux文件名。
  preface
  chapter1.txt
  xu.c
  xu.bak

  文件的类型
  Linux系统中有三种基本的文件类型:普通文件、目录文件和设备文件。
  1. 普通文件 普通文件是用户最经常面对的文件。它又分为文本文件和二进制文件。

  1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以\"行\"为基本结构的一种信息组织和存储方式。
  2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图形、图像、声音等等。

  2. 目录文件 设计目录文件的主要目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。目录文件往往简称为目录。

  3. 设备文件 设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设备文件可以细分为块设备文件和字符设备文件。前者的存取是以一个个字符块为单位的,后者则是以单个字符为单位的。

  显示文件内容
  使用过DOS命令的人都应该知道,我们可以使用type命令来查看一个文件的内容。在Linux下有五个相关的命令,功能各有千秋,不过它们都象type命令一样,只能用来查看文本文件。

  1) cat命令
cat命令是最象type命令的,使用的方法很简单:“cat 文件名”。不过比type命令更强大的是,它可以同时查看多个文件:“cat 文件名一
文件名二”。
  2) more命令
如果文本文件比较长,一屏无法显示完,那么使用cat命令就可能无法看清。这里我们可以简单地使用more来代替cat命令即可。其效果与type
文件名/p类似。使用more命令将一次显示一屏文本,显示满后,停下来,并提示出已显示全部内容的百分比,按空格键就可以看到下一屏。
  3) less命令
less命令的功能几乎和more命令一样,也是按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前又可以向后翻阅文件。
  ? 向前翻:按b键;
  ? 向后翻:按p键;
  ? 指定位置:输入百分比
  ? 退出:q
  我经常使用more和less,几乎不使用cat查看文件。
  4) head命令
  通过head命令可以仅查看某文件的前几行,格式为:
  head 行数 文件名
  如果未指定行数,则使用默认值10。
  5) tail命令
  与head命令相对应的,我们可以使用tail命令来查看文件尾部的内容。通常用来实时监测某个文件是否被修改,通常用来观察日志。如:
  tail -f maillog
   4. 编辑文件
   Linux中有许多文字编辑工具,其中最常用的应该是vi,这是一个广泛应用于所有UNIX系统的编辑器。它的使用有些特别:
首先,可以使用命令“vi 文件名”打开一个文件。
刚启动的时候,vi处于命令状态,不能够输入任何字符。在这个状态下,可以使用方向键进行移动,而需要输入内容时,你需要输入“i”或“a”命令进入编辑状态。编辑完成后,你需要按下“ESC”键回到命令状态。

在命令状态下,你可以输入“:q!”不存盘退出,输入“:wq”存盘退出。

   目录
   树型目录结构
   在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个使用方便的接口是文件系统的一大任务。Linux系统以文件目录的方式来组织和管理系统中的所有文件。所谓文件目录就是将所有文件的说明信息采用树型结构组织起来--即我们常说的目录。也就是说,整个文件系统有一个\"根\"(root),然后在根上分\"杈\"(directory),任何一个分杈上都可以再分杈,杈上也可以长出\"叶子\"。\"根\"和\"杈\"在Linux中被称为是\"目录\"或\"文件夹\"。而\"叶子\"则是一个个的文件。实践证明,此种结构的文件系统效率比较高。

  如前所述,目录也是一种类型的文件。Linux系统通过目录将系统中所有的文件分级、分层组织在一起,形成了Linux文件系统的树型层次结构。以根目录为起点,所有其他的目录都由根目录派生而来。一个典型的Linux系统的树型目录结构如图3.1所示。用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。

  实际上,各个目录结点\"之下\"都会有一些文件和子目录。并且,系统在建立每一个目录时,都会自动为它设定两个目录文件,一个是\".\",代表该目录自己,另一个是\"..\",代表该目录的父目录,对于根目录,\".\"和\"..\"都代表其自己。

  Linux目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为自己的文件创建自己的目录,也可以把一个目录下的文件移动或复制到另一目录下,而且能移动整个目录,并且和系统中的其他用户共享目录和文件。也就是说。我们能够方便地从一个目录切换到另一个目录,而且可以设置目录和文件的管理权限,以便允许或拒绝其他人对其进行访问。同时文件目录结构的相互关联性使分享数据变得十分容易,几个用户可以访问同一个文件。因此允许用户设置文件的共享程度。

  需要说明的是,根目录是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。
  安装完Linux后,有许许多多的目录,下面我们就说明一些重要的目录:
  /bin:存放着一百多个Linux下常用的命令、工具
  /dev:存放着Linux下所有的设备文件!
  /home:用户主目录,每建一个用户,就会在这里新建一个与用户同名的目录,给该用户一个自己的空间
  /lost+found:顾名思义,一些丢失的文件可能可以在这里找到
  /mnt:外部设备的挂接点,通常用cdrom与floppy两个子目录!它的存在简化了光盘与软盘的使用。你只需在塞入光盘后,运行:mount
/mnt/cdrom,就可以将光盘上的内容Mount到/mnt/cdrom上,你就可以访问了。不过你使用完成后,应该离开该目录,并执行umount
/mnt/cdrom。同样的,软盘就是  mount /mnt/floppy和umount /mnt/floppy了。
  /proc:这其实是一个假的目录,通过这里你可以访问到内存里的内容。
  /sbin:这里存放着系统级的命令与工具
  /usr:通常用来安装各种软件的地方
  /usr/X11R6 X Window目录
  /usr/bin与/usr/sbin 一些后安装的命令与工具
  /usr/include、/usr/lib及/usr/share 则是存放一些共享链接库
  /usr/local 常用来安装新软件
  /usr/src Linux源程序
  /boot:Linux就是从这里启动的
  /etc:这里存放在Linux大部分的配置文件
  /lib:静态链接库
  /root:root用户的主目录,这就是特权之一!
  /var:通常用来存放一些变化中的东西!
  /var/log:存放系统日志
  /var/spool:存放一些邮件、新闻、打印队列等
  另外,要说明的是,在Linux下“当前目录”、“路径”等概念与Windows下是一样的。
  工作目录、用户主目录与路径
   为使用户更好地使用目录,我们介绍有关目录的一些基本概念。
   I. 工作目录与用户主目录
  从逻辑上讲,用户在登录到Linux系统中之后,每时每刻都\"处在\"某个目录之中,此目录被称作工作目录或当前目录(Working
Directory)。工作目录是可以随时改变的。用户初始登录到系统中时,其主目录(Home Directory)就成为其工作目录。工作目录用\".\"表示,其父目录用\"..\"表示。

  用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。
  用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同。
  用户可以通过一个\"~\"字符来引用自己的主目录。
  例如命令
  /home/WANG$ cat ~/class/software_1
  和下面的命令
  /home/WANG$ cat /home/WANG/class/software_1 意义相同。shell将用用户主目录名来替换\"~\"字符。
目录层次建立好之后,用户就可以把有关的文件放到相应的目录中,从而实现对文件的组织。
  对文件进行访问时,需要用到 \"路径\"(Path)的概念。
  II. 路径
  顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用\"/\"分开。任一文件在文件系统中的位置都是由相应的路径决定的。

  用户在对文件进行访问时,要给出文件所在的路径。 路径又分相对路径和绝对路径。 绝对路径是指从\"根\"开始的路径,也称为完全路径;相对路径是从用户工作目录开始的路径。

  应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一点对于我们以后使用某些命令如cp和tar等大有好处。

  用户要访问一个文件时,可以通过路径名来引用。并且可以根据要访问的文件与用户工作目录的相对位置来引用它,而不需要列出这个文件的完整的路径名。例如,用户WANG有一个名为class的目录,该目录中有两个文件:software_1和hardware_1。若用户WANG想显示出其class目录中的名为software_1的文件,可以使用下列命令:

   /home/WANG$ cat /home/WANG/class/software_1
  用户也可以根据文件software_1与当前工作目录的相对位置来引用该文件。这时命令为:
  /home/WANG$ cat class/software_1



--



cnhnln 发表于 2006-2-28 00:07:55

Linux备份与压缩命令
[日期:2005-12-29] 来源:作者:似水年华 [字体:大 中 小]

Linux备份与压缩命令


  用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩。下面分别介绍备份与压缩的命令。
  tar命令
  作用:tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。

  语法:tar [主选项+辅选项] 文件或者目录
  使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
  参数:
  c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
  r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
  t 列出档案文件的内容,查看已经备份了哪些文件。
  u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
  x 从档案文件中释放文件。
  辅助选项:
  b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。
  f 使用档案文件或设备,这个选项通常是必选的。
  k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。
  m 在还原文件时,把所有文件的修改时间设定为现在。
  M 创建多卷的档案文件,以便在几个磁盘中存放。
  v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
  w 每一步都要求确认。
  z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

  例子:
  例1:把/home目录下包括它的子目录全部做备份文件,备份文件名为usr.tar。
  $ tar cvf usr.tar /home
  例2:把/home目录下包括它的子目录全部做备份文件,并进行压缩,备份文件名为usr.tar.gz 。
  $ tar czvf usr.tar.gz /home
  例3:把usr.tar.gz这个备份文件还原并解压缩。
  $ tar xzvf usr.tar.gz
  例4:查看usr.tar备份文件的内容,并以分屏方式显示在显示器上。
  $ tar tvf usr.tar | more
  要将文件备份到一个特定的设备,只需把设备名作为备份文件名。
  例5:用户在/dev/fd0设备的软盘中创建一个备份文件,并将/home 目录中所有的文件都拷贝到备份文件中。
  $ tar cf /dev/fd0 /home
  要恢复设备磁盘中的文件,可使用xf选项:
  $ tar xf /dev/fd0
  如果用户备份的文件大小超过设备可用的存贮空间,如软盘,您可以创建一个多卷的tar备份文件。M选项指示tar命令提示您使用一个新的存贮设备,当使用M选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就可以把tar档案存入几张磁盘中。

  $ tar cMf /dev/fd0 /home
  要恢复几张盘中的档案,只要将第一张放入软驱,然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。
  $ tar xMf /dev/fd0

  gzip命令
  作用:减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。

  语法:gzip [选项] 压缩(解压缩)的文件名
  参数:
  -c 将输出写到标准输出上,并保留原有文件。
  -d 将压缩文件解压。
  -l 对每个压缩文件,显示下列字段:
  压缩文件的大小
  未压缩文件的大小
  压缩比
  未压缩文件的名字
  -r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
  -t 测试,检查压缩文件是否完整。
  -v 对每一个压缩和解压的文件,显示文件名和压缩比。
  -num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
  假设一个目录/home下有文件mm.txt、sort.txt、xx.com。

  例子:
  例1:把/home目录下的每个文件压缩成.gz文件。
  $ cd /home
  $ gzip *
  $ ls
  m.txt.gz sort.txt.gz xx.com.gz
  例2:把例1中每个压缩的文件解压,并列出详细的信息。
  $ gzip -dv *
  mm.txt.gz 43.1%-----replaced with mm.txt
  sort.txt.gz 43.1%-----replaced with sort.txt
  xx.com.gz 43.1%-----replaced with xx.com
  $ ls
  mm.txt sort.txt xx.com
  例3:详细显示例1中每个压缩的文件的信息,并不解压。
  $ gzip -l *
  compressed uncompr. ratio uncompressed_name
  277 445 43.1% mm.txt
  278 445 43.1% sort.txt
  277 445 43.1% xx.com
  $ ls
  mm.txt.gz sort.txt.gz xx.com.gz
  例4:压缩一个tar备份文件,如usr.tar,此时压缩文件的扩展名为.tar.gz
  $ gzip usr.tar
  $ ls
  usr.tar.gz

  unzip命令
  作用:用MS Windows下的压缩软件winzip压缩的文件如何在Linux系统下展开呢?可以用unzip命令,该命令用于解扩展名为.zip的压缩文件。

  语法:unzip [选项] 压缩文件名.zip
  参数:
  -x 文件列表 解压缩文件,但不包括指定的file文件。
  -v 查看压缩文件目录,但不解压。
  -t 测试文件有无损坏,但不解压。
  -d 目录 把压缩文件解到指定目录下。
  -z 只显示压缩文件的注解。
  -n 不覆盖已经存在的文件。
  -o 覆盖已存在的文件且不要求用户确认。
  -j 不重建文档的目录结构,把所有文件解压到同一目录下。

  例子:
  例1:将压缩文件text.zip在当前目录下解压缩。
  $ unzip text.zip
  例2:将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。
  $ unzip -n text.zip -d /tmp
  例3:查看压缩文件目录,但不解压。
  $ unzip -v text.zip
  zgrep命令
  这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令一样,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。



--



cnhnln 发表于 2006-2-28 00:09:52

Linux系统基础知识(二十九)其他

学习Linux是一个漫长的过程,有兴趣的去网上一些论坛交流吧。

我们的linux版面开通了转信,就很好的啊。


--




月下刀客 发表于 2006-2-28 11:03:11

3n你够狠,把人家整个bolg都cp过来了吧。会不会有版权争议呢 :mrgreen:
页: 1 [2] 3
查看完整版本: Linux基础知识