热点科技

标题: Linux爱好者入门教程 [打印本页]

作者: sunweipeng    时间: 2009-7-30 08:03
标题: Linux爱好者入门教程
最近在学习linux在网上发现一篇好文,转给大家,希望对大家有所帮助!以后再有的话会陆续更新,希望大家补充和探讨!!

我们首先应该知道电脑的基本情况。电脑,就是一堆金属,半导体和塑料制品的总合,如果通上电源,就可以启动,但是你什么都不能做,因为电脑只是一堆硬件,如果你不是拿来卖废铁,它即笨重又刺眼(如果你的电脑是一堆白色外壳的话)。可是为什么电脑那么的吸引我们?因为有了操作系统和应用软件。
操作系统是一种特殊的软件,用来让计算机硬件和软件协同工作,并且处理我们敲打键盘和移动鼠标这些动作。常见的操作系统有Windows,它有很多版本;MAC OS,苹果电脑上就用它;UNIX,很多大型机都使用稳定的UNIX;Linux,就是我们今天的主角,一种功能强大,运行稳定,性能优异的公开源代码的操作系统。
应用软件,则实实在在的为我们提供帮助,我们用网络软件IE上网,用聊天软件QQ聊天,用下载软件FlashGet下载我们需要的资源。正是因为有了各种各样的软件,我们的电脑才变的丰富多彩。
但是请注意,我们刚才说的这些软件全部只能在Windows操作系统下工作。可是Windows操作系统价格不扉,尤其是对于我们正在高举邓小平建设有中国特色社会主义伟大旗帜,紧密团结在以***总书记为核心的党中央周围,解放思想,实事求是,以***总书记三个代表重要思想为指导,建设新中国的大学生来说,上千元的价格让我们望而却步。于是出现了盗版。刚刚颁布的新的版权法规定,不仅销售盗版电脑软件违法,购买使用盗版软件同样是一种违法行为。我们怎么能置国家法律于不顾,挺而走险去购买盗版软件呢?
但是,没有Windows的世界同样精彩。如果说电脑是一块陆地,Windows就是上空的乌云,只有剥开乌云我们才能见到美丽的太阳。我们剥开这块乌云的工具就是Linux。

那么到底什么是Linux呢?
在很久很久以前,70年代吧,那时候Windows还没有出现,UNIX是应用最广泛的操作系统。但是UNIX同样有着高昂的价格。于是有一个牛人(我记不得他的名字的具体拼写,只好用牛人代替,毕竟,把别人的名字写错比用牛人这个名字更糟糕吧),这个牛人想要建立一个开放的系统,这个系统很庞大,庞大到非常庞大的地步。包含了操作系统(可以不止一个,事实上现在也不止一个,只是我们只讨论Linux罢了),软件,各种文档,各种媒介的资料以及很多其他的东西。所有这些东西大都使用一个协议,就是我们常常说的GPL或则LGPL(这个协议简单的说就是:公开所有源代码,任何人可以免费获得,也可以添加删除和修改,甚至可以拿去卖钱,只要你保证你修改过以后得到的软件和你销售的软件也使用GPL协议就可以)。牛人给这个庞大的开放系统一个响亮的名字(响亮吗):GNU-GUN is Not Unix。
Linux就是GNU系统里面发展的最好的一个操作系统。但是Linux只是一个核心,一个高尚的操作系统核心,一个纯粹的操作系统核心。这个纯粹的高尚的操作系统核心最早是由另一个牛人Linus开发出来的,当时这个芬兰人不比咱大多少,说不定比俺还小呢,但是牛啊,真牛啊。Linux核心加上很多优秀的GNU系统中的应用软件,就是我们现在所提起的Linux。
作者: sunweipeng    时间: 2009-7-30 08:04
那么什么是Redhat Linux,什么是Mandrake Linux呢?
在很近很近以前,90年代吧,Linux已经渐渐有了舍我齐谁的锋芒。由于Linux属于GNU系统,这个系统采用的GPL协议,保证了代码的公开,于是有N那么多公司蜂拥而至,在Linux内核源代码的基础上进行一些必要的修改加工,再开发一些配套的软件,最后选择一些优秀的软件,把它们合在一起发布,形成自己公司的发布版Linux。美国的Redhat公司发行了Redhat Linux,法国的Mandrake公司发行Mandrake Linux,德国的SUSE公司发行SUSE Linux,咱们中国的N多公司也疯似的发布自己所谓的中文Linux,但是到现在为止,国产Linux还难蹬大雅之堂。Linux公司多如牛毛,Linux发行版也多如牛虱,在这里我们不能不提到Debian GNU/Linux。

Debian GNU/Linux是一套非常特殊的Linux发行版,它不同于其他Linux发行版都是由商业公司开发并发行,Debian GNU/Linux是由另一个牛人发起的,这个牛人的名字以Ian开头,那位牛太太的名字开头三个字母是Deb,于是在爱情的力量下,他发起了Debian GNU/Linux组织,致力于开发一套非商业性的Linux发行版。爱情真伟大,他做到了。现在全世界有800多个工程师在致力于为Debian GNU/Linux奉献自己的业余时间。而且这个数字在不断的增长。Debian GNU/Linux是Linux发行版中比较优秀的一款,我以后会详悉的介绍。以后再提起Debian GNU/Linux,我用Debian代替。

关于内核版本和发行版版本不得不说的故事
既然Linux只是一个内核,Linux发行版是Linux内核以及各种应用软件的集合,那么Linux出现了两种版本号。一种是内核版本,一种是发行版本号。Linux内核版本号的格式是x.y.zz-www,不同的数字代表不同的开发版本,有稳定的,也有测试中的。Linux发行版本号由各个发行公司或者组织制定,Redhat Linux有6.0, 6.2, 7.0, 7.2, 7.3等等,通常,内核版本序号是偶数表示是稳定的版本,奇数序号是不稳定的测试版本。其实Windows也是一样,只不过我们不常听说,比如Windows2000的内部版本号是2195,发行版本就是2000。不知道会不会有哪一个Linux发行版本使用2003的版本号,呵呵。

一些约定和一些网址
往后,我们用Linux指Linux发行版,用Kernel指Linux内核。用Debian指Debian GNU/Linux,用Redhat指Redhat Linux。
下面是一些常用的Linux官方网站:
http://www.kernel.org
http://linux.com
http://www.linux.org
http://www.linuxhelp.org
下面的是国内的优秀的Linux论坛:
http://www.linuxforum.net
http://www.linuxfans.org
http://www.linuxaid.com.cn
下面这个搜索引擎Google是我们大力推荐的最好的搜索引擎,我自从用过以后就没有使用过其他的。
http://www.google.com
下面是几个很好的自由软件基地,不过有被中国电信封IP的危险,郁闷啊。
http://freshmeat.net
http://sourceforge.net
http://www.cosoft.org.cn

下一章我们要讲述一些Linux的基本知识,其实也使一些基本的电脑常识。
作者: sunweipeng    时间: 2009-7-30 08:04
第一章 Linux基础知识

硬盘
硬盘是可以存储大量信息资源的媒介。我们平时看到的硬盘是方方正正的一块挺沉的铁匣子,但是其实硬盘是圆的,加上一些控制电路以后,为了便于携带而设计成为方形外壳。但是硬盘真是圆的,不骗你,要不怎么叫做盘呢?第二,你需要知道的是硬盘可以进行分区。可以把硬盘分区成为很多个分区,看来分区即是一个名次也是一个动词。什么叫做名次的分区呢?现在的硬盘越来越大,存放的资源越来越多。为了更合理的管理使用硬盘资源,更有效的提高查询速度和访问质量,我们可以把硬盘划分为很多分区,分别存放一些信息。当你需要读取某一个资料的时候,系统会自动使用最近的磁头去读取,加快读取速度。硬盘分区是从硬件的基础上对资源进行合理管理的手段。
分区已经了解了,但是我们不能只有分区啊,我们得用一个方法来控制分区。Windows操作系统使用了盘符这个概念,用单一的字母来表示硬盘上的不同分区,比如,C盘,D盘等等。在Windows2000以前,C盘对应了第一个分区,D盘对应第二个分区,依此类推。到了Winows2000,这个对应关系可以自己调整了。
在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。
为了保证文章的完整性,简单说说目录吧,其实大家都很清楚的。如果我们把数以万计的水果扔在一个箩筐里面是不是很难找?但是如果我们把苹果放在叫做苹果的箩筐里面,把梨放在叫做梨的箩筐里面……这样是不是大大简化了我们寻找指定水果的速度?这些水果如果是我们的文件,那么我们用的箩筐就叫目录。新的问题出现了,即使把桃子扔在叫做桃子的箩筐中,我们仍然很难从好几千个桃子里面找出来自四川成都龙泉驿的桃子啊。聪明的你一定想到在桃子的箩筐中再放入很多叫做四川啊,河北啊,广州啊这些名字的箩筐,把不同产地的桃子放进去。对!就这样!我们在一个文件目录下面可以再建立新的文件目录,把文件进行非常细致的管理。到这里你明白了什么叫做目录,还明白了目录是可以嵌套的,这就可以了。目录技术是从软件的基础上对资源进行管理的方法。
回到Linux对于硬盘的管理里面来:在Linux里边,我们没有盘符这个概念,我们用目录的形式进行管理。把每一个分区和某一个目录对应,以后对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载-mount。这种对应关系可以由用户随时中断和改变。

SWAP交换分区
分区的知识大家已经熟习了,这里需要提一下交换分区。我们如果没有足够的内存,也许就不能运行某些大型的软件,解决的办法是在硬盘上划出一个区域来当作临时的内存,好像内存变大了。Windows操作系统把这个区域叫做虚拟内存,Linux把它叫做交换分区swap。虽然随着硬件价格的下降内存已经不大会限制我们了,但是交换分区这个概念却保留下来,而且有继续保留下去的原因,当然涉及到内核的问题,我们不多讨论,我们要说明的是,安装Linux时候建立交换分区时,如果你的内存只有64M或则128M,那么交换分区最好设置成为它的3倍,如果你的分区足够大,有256M或则512M,那么设置成为相同大小就可以了。但是请注意,最好大小为2的N次幂的数字。
作者: sunweipeng    时间: 2009-7-30 08:04
分区格式
今天说了好多的与硬盘有关的问题,现在还要补充一个,就是分区格式。硬盘只是一个用电磁的方式纪录信息的媒介,我们可以通过不同的格式来管理。不同的操作系统选择了不同的格式,同一种操作系统也可能支持多种格式。微软的操作系统选择了fat16格式作为DOS的分区格式,往后windows95和windows98支持fat32格式,windowsNT使用NTFS4格式,windows2000以及XP支持NTFS5,也支持fat32,但是她们都不支持Linux上常见的分区格式。Linux是一个开放的操作系统,它最初使用ext2格式,后来使用ext3格式,但是它同时支持非常多的分区格式,包括很多大型机上UNIX使用的XFS格式,也包括微软的那些fat以及NTFS格式。
在给硬盘分区时就需要指定使用的分区格式。

掌握Linux的目录结构

既然目录是用来方便文件管理的工具,那么Linux下面不同的目录到底保存了哪一类的文件呢?

目录名称 意义

/bin 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。
/cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如“mount /dev/cdrom /cdrom”
/etc 该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
/lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp 用来存放不同程序执行时产生的临时文件
/usr 用户的很多应用程序和文件都存放在该目录下
作者: sunweipeng    时间: 2009-7-30 08:05
Linux支持的硬件
总的来说,Linux对于硬件的支持有三句话概括:越新的硬件越难支持,越小的厂家的产品越难支持,越来越多的硬件被支持!
所以推荐大家使用著名厂家的成熟产品。

下一章我们要介绍Linux的安装。我们选择的Linux发行版是Redhat Linux 7.3,在安装之前请大家一定熟习我们介绍的硬盘分区的知识。
作者: sunweipeng    时间: 2009-7-30 08:05
第二章 Linux安装

下面我们介绍Linux的安装。各种Linux发行版本的安装各有不同,但是却大同小异。总的来说,除了国产的Linux以外,其他我们熟习的Linux都支持网络在线安装和硬盘安装。但是我们国内的用户使用宽带的现在并不多,硬盘安装方式又有一些麻烦,所以我们还是介绍光盘安装的方式。
Redhat Linux是国内市场上较为常见的Linux发行版本,甚至Redhat一度成为国人脑海中Linux的代名词。所以我选择Redhat作为第一次安装Linux时候的教材。其实MandrakeLinux安装界面比Redhat好看多了,不果似乎很难买到啊。往后的章节我还会详悉介绍的是Debian Linux的安装,不过那是后话了。

现在让我们假设你的硬盘是20G的,Windows98系统已经把这20G全部用完,具体如下:
C:前5G D:接下来5G
E:接下来5G F:最后5G
我们计划把Redhat安装在原来的F:盘上,那么现在请备份你的F:盘上的资料。

然后确定你的系统是由光盘引导的,如果不是,在电脑开机的时候按del键,进入主板BIOS设置,修改相关选项让你的电脑从光盘引导。然后把Redhat的第一章安装光盘放入光驱,开机。这时候你应该能够看到一些启动提示。相信大家都有大学英语的基本功,阅读这些东西是不成问题的。现在,你可以直接按回车键,启动图形界面的安装程序;也可以输入text然后回车,这样启动字符界面的安装。一般来说,图形界面占用更多的内存,安装程序会比字符界面下慢一些,但是图形界面更友好,考虑到这是我们第一次安装Linux,我们直接回车,进入图形界面的安装程序。

安装的第一步是要你确认它的版权信息。当然同意啦!Linux和Windows都有这一步,但是你所同意的版权协议却非常不同,具体的我们以后再说,总之你记住,Linux给你自由的世界,也许这个世界现在还有一些荒漠和戈壁;Windows却给你无限美好和宜人的牢笼。

现在请正确的选择你的键盘类型,一般pc104就可以了。好像在RedhatLinux下面还不支持win键。选择鼠标稍微麻烦一点,如果你的鼠标只有两个按钮并且没有滚轮,你一定要把那个“模拟三键鼠标”的选项选中,因为在Linux下面,鼠标的第三键非常有用。

Redhat会讯问你是安装Workstation还是Server还是Custom类型的系统,或者选择update升级原有的Redhat。我们选择Custom!
作者: sunweipeng    时间: 2009-7-30 08:05
现在配置硬盘参数,也就是分区,我们不要选择自动分区,那样不安全,非常不安全,特别不安全。选择手动分区吧,我会教你的。在继续之前请确保你熟习了我在上一章里面介绍的硬盘分区的基本知识,如果忘记了,快回去看看吧。注意:硬盘分区会清除掉你硬盘上相应分区以前保存的信息!

我相信你已经把F:盘上要备份的资料全部备份了。现在让我们来看看你的每一个Windows的盘符对应什么硬件设备。
一般来说,C盘对应/dev/hda1
D盘对应/dev/hda5
E盘对应/dev/hda6
F盘对应/dev/hda7
现在选中F盘对应的/dev/hda7,删除它。然后在空闲的硬盘空间(应该有5G,因为我们删除了一个5G的F盘)上建立一个新的分区,选择分区类型为SWAP,也就是交换分区。它的大小应该按照上一章的方法选择3倍于实际内存的大小或者适当的数字。但是请注意,最好大小为2的N次幂的数字。
添加完成这个交换分区的设定,现在我们再添加一个分区,这个分区类型选择为ext3,然后有一个mount point之类的选项,也就是我们说的挂装点,设置成“/”。把它的大小设置成为剩下的所有空间的大小。这样把整个硬盘空间都利用起来。
检查一下是不是还有什么没有作对?如果发现有问题,现在修改还来得及,因为我们所做的修改还没有保存到硬盘里面去。如果一切无误,选择下一步,现在硬盘的内容将按照我们设定的方式变化。
是不是有点激动?哈哈,说不定会搞砸呢?我以前第一次安装Redhat用了7个小时才搞懂什么叫做挂装点。整个硬盘从头到脚被分区无数次,安装完成以后什么资料都没有,哈哈,说不定你刚才的某一步做错了会和我一样而可怜呢。不过如果不是切肤之痛,怎会记忆犹新?搞Linux就是需要大胆的尝试,就象邓小平同志说的,实践是检验真理的唯一标准嘛!

看完这段文字,你的硬盘应该格式化完了,应该到了选择安装什么软件了。如果选择全部安装的话(在最下面有这个选项)你会得到一个巨大无比,巨慢无比的系统,大概2G吧。因为完全安装会安装所有的服务器程序个无关紧要的所有的东西。除非你知道自己在干什么,千万不要这么作。看看吧,如果你有打印机,就把打印支持选上。一般默认的选项足够了,但是我还是建议大家安装Software Development和Kernel Development两个选项,这样方便以后安装新的软件。窗口管理器有很多,一个KDE,一个Gnome,还有一些比较小巧的比如WindowMaker(这是我的最爱)。KDE的外观类似Windows,适合初学者上手,但是Gnome更漂亮,速度也更快。我很少使用KDE,也没有什么KDE的汉化经验,所以我就教大家使用Gnome吧。以后我还会教大家使用WindowMaker的。

继续下去似乎到了软件安装的过程,一般20到30分种吧,就可以安装完所有的软件。

这段时见不要休息,继续看我下面的内容!!!呵呵
作者: sunweipeng    时间: 2009-7-30 08:05
好像这时候Redhat会要求选择启动的方式是使用Grub还是Lilo,也许你现在很郁闷,都不懂,那么我就告诉你,选择grub吧,因为……虽然我更熟习lilo,以后好讲给你听但是grub对于初学者来说不容易出错,安装grub的位置选择MBR就可以。只有这样才能保证你既能启动Linux,又能启动Windows。

我知道大家都很累了,所以我很快的说完下面的步骤:它会问你时区的问题,中国人当然选择亚洲的上海,没有北京的选项。如果你住在大西南,选择重庆也不错。下一步关键,如果你想得到正确的时间,看清楚,它会问你是不是把本机时间和GMT时间对应,千万不要选啊!GMT实践是格林威治时间的意思。继续下去到了配置显卡的地方,如果你的显卡是ATI的显卡或者常见的3dfx Banshee/Voodoo3+或者Matrox g200/g400或者SiS的话,那么恭喜你,你的显卡能够被轻易的识别出来。如果Redhat没有识别出你的显卡,也不要着急,跳过这一步,我们安装完成以后再来配置。
其实我的显卡是ATI的显卡,Redhat能够自动识别,但是我还是喜欢跳过去,安装完成以后再来搞它。
它还会问你启动时候是用图形界面启动还是字符界面启动,保险起见,选择字符界面!
下一步声卡也是一样的,如果你的声卡识别出来了,那么没什么好说的,没有的话,就跳过去,有办法的。
如果你的电脑有网卡,比如宽带或者ADSL,那么你还应该配置网络,但是网络的情况太多了,1000个人也许就有1000种情况,后面再说,跳过!

咦,我好像忘了介绍设置root密码的问题。什么是root啊?root就是超级用户,一定要细致的设定这个密码,因为一旦忘掉了,似乎只有重新安装整个Linux。其他的选项,我没有说到的,选择默认值就可以了。

好了,大功告成。

电脑重新启动,选择Linux,经过一段时间的等待以后…………………
作者: sunweipeng    时间: 2009-7-30 08:06
这部分非常枯燥,我都不想写了,因为我知道在这里的大伙儿都不需要这一章的内容,但是我还是必需写,因为这是Linux的基本功,是入门者必需掌握的东西,也是保证我的入门教程完整性的必需章节。我讲述的方法不是万全按照命令的分类讲解的,而是按照一个新人使用时候最希望作的事情的顺序讲的。高手是不用看的,但是一个新人完整的看了以后可以熟练的使用下面一些命令:ls,cd,mkdir,rm,pwd,mv,cp,man,nano,vi,cat,more。我想基本的操作是够了。
关于Linux的命令的详悉高级讲解我会在大家关心的XWindow配置和声卡配置完成以后讲解。
在高级命令讲解里面会介绍包括通道在内的一些高级用法。
作者: sunweipeng    时间: 2009-7-30 08:06
第三章 Linux 基本使用命令(基本篇)-(高级篇在后面会有,这一章从实用的角度出发介绍基本的操作)

现在请输入你的用户名和密码,当然,我们输入root,这样获得一切管理权限!

你一定非常希望立刻看到那些非常漂亮的图形界面,但是也许我要让你失望了。我建议在没有使用图形界面以前,首先熟练的掌握基本的Linux命令,这样才是一个真正的Linuxer。从哪里开始呢?

1. ls 列出文件和目录的命令

你一定很想知道你的电脑里面有哪些东西,现在执行命令ls,啊,怎么什么都没有?当然啦,这是你第一次登录到这个系统,你的默认位置是你的个人目录,而不是系统根目录。你还没有在这个目录里面存放任何的个人文件,当然什么都没有啦。如果你是用root用户登录的话,你的个人目录就是/root目录;如果你是用普通用户登录,比如叫做kris,那么kris的个人目录是/kris。前面的/是什么意思呢?就是“根”的意思,就是最前面的那个目录,在根目录下面建立有很多的子目录,我们在第一章已经讨论过了。

ls命令有很多的选项,常用的是:

-A 选项用来列出所有的文件,包括那些隐藏的文件。为什么我们要隐藏文件呢?道理和你为什么要把情书藏起来不让爸妈发现是一样的。就是为了保密啊。现在执行ls -A看看?是不是有一个隐藏文件“.bashrc”被显示出来啦?聪明的你一定奇怪的发现这个文件名前面有一个点,对!记住,只要文件名前面第一个字符是一个“.”,这个文件就是隐藏文件。一个目录名前面的第一个字符如果是“.”这个目录就是隐藏目录。
-l 这个选项用来显示一个列表,包含了这个目录下面所有的文件的绝大部分属性的列表。你可以每个文件的大小,所有者,你的权限还有修改日期等等。
-R R的意思就是recursive递归,明显这个选项让系统显示出这个目录下面的所有文件以外,还要显示出所有子目录下面的文件。也就是把我们那一大堆水果全部抖出来。
--color 这个选项特别有用,我估计大家的显示器都是彩显吧,什么?你的显示器还是黑白的?天哪!既然是彩显,那么我们可以让ls命令用不同的眼色代表不同的文件类型。比如可执行文件用绿色,普通文件是白色,目录是蓝色。也许你会问,目录也是文件吗?对的,在Linux里面一切都是文件,所有的硬件设备都用一个文件来代替,比如你的软驱,就是用/dev/fd0来代替的。目录也是一个文件。
--help 这个选项几乎是每一个Linux命令都有的,用来显示出该命令的帮助信息。
作者: sunweipeng    时间: 2009-7-30 08:06
2. cd 和 mkdir 以及 rm 改变当然所在目录,建立新目录以及删除目录命令

趁热打铁的,刚才说了目录,我们每一次登录都有一个默认目录就是我们的个人用户目录。我们怎么才能到其他的目录去呢?cd就是用来改变当前所在的目录的。前面我们说过,“/”代表根目录,那么执行cd /就可以进入根目录。不试一下吗?
让我们看看根目录下面有哪些文件和子目录吧,执行ls,我们发现,根目录下面有一个目录名子特别变态,叫做usr,进去看看,cd usr,看看这里面有什么?你会发现一个更psycho(变态)的目录叫做src,进入src目录看看?没什么好玩的。那么我们现在回到刚才的usr目录,怎么做?是不是cd usr?执行试一下,好像不行,系统报告出错 cd: usr: No such file or directory。这是怎么搞的?问题在于我们现在所在的目录是/usr/src下,我们执行cd usr的意思是进入/usr/src/usr目录而不是/usr目录。正确的方法是cd /usr。
就好比你在中华美食的箩筐里面看到一个四川的箩筐,里面有一个成都的小箩筐,现在你进入以后发现成都的小箩筐里面有一种叫做“麻辣烫”的很辣的食品。你大饱口福以后想要吃一些甜点,于是准备去福州。你能站在成都的箩筐里面去福州吗?当然不行,福州并不在成都的箩筐里面啊,你应该进入“/中华美食/福州”而不是“/中华美食/四川/成都/福州”对不对?
好的,一个问题出现了,难道我每一次进入一个目录,都要用/usr/src...这么复杂的方式来表示吗?不一定。我们用“..”的方式来表示上一层目录。如果你现在在/usr/src目录下,进入/usr目录有两种办法:cd /usr和cd ..他们是一样的。

怎样才能知道我现在在哪个目录?用命令pwd,这个命令没有什么好说的,执行一次就知道了。

现在我想在我自己的个人目录里面建立一个目录叫做LoveLetter。我应该首先回到我自己的目录,这里有一个简单的方法,就是直接运行cd不带任何参数,这样就可以回到自己的目录,当然也可以cd /root或者cd /home/kris,看你是用什么用户登录的。
进入我自己的目录以后,建立新目录的命令是
mkdir 新目录名
我执行 mkdir LoveLetter 就可以建立一个新的叫做LoveLetter的目录。进入这个目录看看?什么都没有。不着急,慢慢来。我都不着急你急什么?
突然我想起这台电脑我的爸妈也要使用,他们看到我的情书目录怎么办?你忘了刚才我说的可以用加一个点“.”在前面的方法来隐藏目录和文件的?我们可以改变这个目录的名字,但是这个命令我准备等会儿讲,现在我们用一个很无聊的办法来完成这个要求。这个办法就是删掉刚才建立的oveLetter目录在新建一个.LoveLetter目录,之所以说这个办法很无聊,是因为我们现在是在做实验,如果来真的,你原意删掉你的情书吗?是不是另有新欢啦?哈哈。

删除目录的命令其实也可以删除文件,就是rm。
rm 待删除的文件名/目录名
我记得Redhat会提示你是不是真的要删除。按y就是确定,按n就是取消。如果Redhat没有提示你,那么等会请根据我说的方法修改一下系统让它提示咱们。免得以后心痛。删除一个文件很简单。麻烦的是删除一个目录,如果一个目录里面已经有文件,rm是不让直接删除的,你必需先把目录里面的所有文件删除,再删除目录。但是有一个参数可以改变一下,就是 -rf ,这个参数有一定的危险性,因为即使系统本来要提醒一下是不是真的删除目录,加上这个参数也不会有提示了。执行rm 目录 -rf会在一眨眼的时间里面让你的资料下课!
那么我现在就删除LoveLetter目录了:rm LoveLetter -rf
建立一个新的目录mkdir .LoveLetter
现在ls看看,是不是看不到LoveLetter目录了?但是ls -A还是能看到的。所以这种隐藏方式只能偏偏自己,真正让你的文件安全的方式还是以后再讲吧。
作者: sunweipeng    时间: 2009-7-30 08:06
3. mv 改变文件名和目录名的命令
cp 复制文件和目录命令
man 命令使用方法参考工具

mv 老文件名 新文件名
mv 老目录名 新目录名
就可以改变文件或者目录的名字。
我现在想要把刚才的这个目录.LoveLetter改名回去,因为这种无聊的隐藏方式很变态,我们有更高级的方法来做这样一件事情:就是不要告诉爸妈你的密码!!!
mv .LoveLetter LoveLetter

cp命令用来把一个文件复制成为一个新的文件,

cp 老文件名 新文件名

这个老文件明和新文件名如果在同一个目录下面,那么当然需要名字不一样,很简单的道理,如果文件名一样何必建立两个文件?如果新老文件在不同的目录,我们就可以让它们有相同的名子。下面的例子说明了这一点:

cp LoveLetter LoveLetter_yesterday 新的文件LoveLetter_yesterday和旧的LoveLetter在同一个目录,所以名子不一样。
cp LoveLetter /home/LoveLetter 新的文件在/home目录下面,但是旧的文件LoveLetter在某一个用户的个人目录下面,当然两者名子可以相同。

cp命令也可以复制整个目录,但是现在我们暂时不讲这么复杂。其实cp还有rm以及ls这些命令不仅是整个Linux的基本命令,更包含了非常多的功能。如果大家有兴趣,可以使用man

man 命令名字

比如man ls,这样就可以看到所有ls命令和参数的详悉解释,尤其是一部分常用的命令的man帮助已经由志愿者翻译了,大家看起来更容易。

一点幽默

好了,说了好多东西了,我想休息一下,给大家说一个有趣的事情,我们说了好多命令和目录的名子,你们是不是觉得有点奇怪。说实在话,我第一次看到usr这个目录时也不知道是什么意思,后来才发现以下对应关系:
usr ->; user
ls ->; list
mkdir ->; make dir
rm ->; remove
src ->; source
mv ->; move
cp ->; copy

是不是很有趣,在UNIX世界,包括Linux世界,人们的想象力就是这么无敌!简写居然能简写成这样子。大家一般的想法是取一个单词的前三个或者前四个字母作为简写,可是UNIX的牛人就是喜欢把move简写成为mv,真不知道他们怎么想的。大家一起捉摸吧
作者: sunweipeng    时间: 2009-7-30 08:07
4. nano 和 vi编辑文件的命令 和 cat 以及 more显示文本文件

nano是一个小巧自由,并且友好的编辑器,我认为nano更适合初学Linux的朋友使用。我们现在只学习怎样编辑一个文件以及怎样保存。

nano 文件名

如果你写的文件名已经存在,那么就打开并且编辑,否则就建立一个新的文件。编辑的方法还用说吗?呵呵,当你想要退出的时候,按ctrl+x,nano会问你是不是保存编辑的文件。按Y就是保存,按N就不保存。

nano最大好处在于用户可以不用记忆太多的操作键,大部分常用的功能的操作方法都在屏幕下放列出了。新手需要注意的是“^X”就是按住ctrl键不放再按X的意思。

下面简单的介绍vi。vi是一个非常强大的编辑软件。它太庞大了,足够写一本书专门来讲解。我们这里从使用的角度出发,讲一下vi的用法。
vi有两种模式,一种是命令模式,一种是编辑模式。进入vi以后,默认处于命令模式。

现在我们执行vi LoveLetter。进入以后,按一下键盘上的Insert功能键或者i键可以进入编辑状态,可以插入字符,再按一下Insert变成复盖模式,这两种模式的区别很容易体现,大家尝试一下就可以了。上下左右四个方向键可以移动光标。基本的编辑命令和Windows里面没有区别。是不是很容易呢?当你把需要的内容输入完成以后,我们要保存,这时候按一下ESC键从编辑模式回到命令模式,首先输入一个冒号“:”,也就是按住SHIFT键不放再按分号“;”这样首先输入一个“:”,然后,输入w,回车,就可以保存我们编辑的内容到LoveLetter文件。现在我们按一下Insert就可以继续编辑。再按ESC,输入“:”,再按w又可以保存。可是现在我们不需要保存,我们想要不保存就退出,怎么做呢?当我们输入w的时候是write的意思,保存,那么我们输入q就是quit退出的意思。好,输入q,回车,vi提示我们刚才进行的修改还没有保存,所以记住!一旦需要放弃我们的修改,不能直接用q命令退出,而需要用“q!”命令。输入q!,好了,退出了。
我们想看看我们刚才编辑的LoveLetter是不是真的保存好了,再vi LoveLetter,ok,看到了吧?现在我们想要直接退出,就可以只输入“:q”就可以了,不用输入那个“!”因为我们没有修改文件内容。如果我们修改一下这篇文章,我们在退出的时候可以输入“ESC : wq”就可以了。不需要把w和q分成两次输入。

vi的最最基本用法说到这里差不多了,要是你还想多了解一些vi的知识,在进入vi以后直接按F1就可以了,有详悉的帮助和教学。

其实刚才我们想要看一下编辑的LoveLetter是不是保存好了,不用再vi进去的,只需要用命令

cat LoveLetter

就可以了。cat就是用来显示文本文件内容的命令。如果我们的文本文件很长,一个屏幕显示不完,cat是不会自动分页的。我们可以换用命令

more LoveLetter

more命令显示文本文件时,如果内容过多,会自动的在每一页结束时暂停下来,等到用户按一下空格键再继续。
作者: sunweipeng    时间: 2009-7-30 08:07
5. 最重要的命令:halt reboot 关机和重新启动命令

在Linux里面,不能够直接用电源按钮关机,也不能直接用reset按钮重新启动,这对系统,尤其是硬盘有比较大的影响。关机命令是halt,重启动命令是reboot。其实还有shutdown命令完成类似功能,需要的话,请用今天学会的man命令学习使用。


好不容易写完这一章,希望新人能够好好的看完,这对你们有帮助。下面将要介绍XWindow的配置。这是所有人都关心的话题。

第四章 X的配置

虽然文章写得不好,但是我还是希望我的文章为公社的朋友提供帮助,和以前一样的,这个系列教程的文章我只在公社发表,希望大家捧场。

我的文章耽误了很久了,很抱歉。前段时间因为我一直忙着找工作,又生病一场,所以文章的事情一推再推,现在终于可以奉献给大家了。

这一章我主要介绍X系统用的主要配置文件XF86Config-4,我采用了对照的方法介绍,一边贴出我的XF86Config-4文件,一边介绍具体的内容。这篇文章对于大家没有什么立杆见影的帮助,不果可以让你对于X的只是有一个基本的了解。

XF86Config-4文件是X系统的主要配置文件。在Redhat 8以前版本中都叫做XF86Config-4这个名字,Redhat 8已经不再叫做这个名字。

编辑这个文件需要小心谨慎一点,因为一点错误,你的X将不能启动。不果没关系啦,改回来就是了学习Linux最好的办法当然还是求助于男人(man),大家有什么问题尽管看看man的帮助就是了。如果你要删除文件中的内容,最好不要直接的删除,而应该在前面加上#符号把它变成注释。

在Redhat 8以前的版本中,X的配置工具是Xconfigurator,在Debian中X的配种方法是:
dpkg-reconfigure xserver-xfree86
当然你都得用root的身份来运行。

在/usr/share/doc/xfree86-common/FAQ.gz文件中你可以看到具体的技巧。
作者: sunweipeng    时间: 2009-7-30 08:07
第一段是Files段,这个部分用来配置X系统说能够使用的字体,每一行都代表一个目录,保存了具体的字体和字体的配置信息。
代码:

Section "Files"
FontPath "/usr/X11R6/lib/X11/fonts/xp"
FontPath "/usr/X11R6/lib/X11/fonts/XChinese"
FontPath "unix/:7100" # 这是本地字体服务器
# 如果本地字体服务器出了问题,我们可以使用下面的配置
FontPath "/usr/lib/X11/fonts/misc"
FontPath "/usr/lib/X11/fonts/cyrillic"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/lib/X11/fonts/100dpi" #这两个字体是每一个X
FontPath "/usr/lib/X11/fonts/75dpi" #系统都必需安装的英文字体
EndSection


下面的是模块段,用来配置X系统加载的模块。
代码:

Section "Module"
Load "xtt" #gtk1使用的字体引擎,效果好,速度稍慢
Load "GLcore" #如果你是用的是Nvidia的显卡,似乎一定要注消掉这一行
Load "bitmap"
Load "dbe"
Load "ddc"
Load "dri"
Load "extmod"
# Load "freetype" #如果你使用了xtt模块,那么freetype模块就需要注消掉
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection


下面的段是用来配置你的键盘的,属于“输入设备”
代码:

Section "InputDevice"
Identifier "Generic Keyboard" #这是你的键盘的名字,随便你啦
Driver "keyboard" #键盘的驱动…哇,键盘也有驱动
Option "CoreKeyboard" #如果你有多个键盘,那么你需要在这里指定哪一个键盘是主要的键盘
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104" #键盘的分布格式,一般来说
Option "XkbLayout" "us" #美国104键盘是大家通用的。
EndSection


这里配置你的鼠标,当然你可以配置两个鼠标,如果你有的话
代码:

Section "InputDevice"
Identifier "Configured Mouse" #鼠标的名字
Driver "mouse" #鼠标的驱动
Option "CorePointer"
Option "Device" "/dev/input/mice"
#注意,这里很重要,这是鼠标的设备文件
#我的鼠标是光电鼠标,用的USB接口,对应的鼠标文件是/dev/input/mice
#如果你的鼠标是普通的滚轮鼠标,用的是PS2接口,那么你应该使用
#/dev/mouse或者/dev/psaux或者/dev/ttys0这个设备
Option "rotocol" "ImPS/2"
#这是鼠标的类型,如果不是是滚轮鼠标,那么使用PS/2
Option "Emulate3Buttons" "true"
#在Linux系统中,鼠标的第三个键非常有用,
#如果你的鼠标没有第三个键,那么我们应该允许使用双键同时点击来模拟
Option "ZAxisMapping" "4 5"
EndSection


下面的设备是显卡,这是最头痛的设备了,如果你的显卡太新潮,很有可能不能支持哦。Nvidia的GForce2显卡就必需自己编译显卡的驱动程序才能使用
代码:

Section "Device"
Identifier "Generic Video Card"
Driver "ati" #如果你是Nivida的显卡,这里应该是"nvidia"
EndSection
作者: sunweipeng    时间: 2009-7-30 08:08
这个设备是显示器。
代码:

Section "Monitor"
Identifier "Generic Monitor" #显示器的名字
HorizSync 30-60 #显示器的频率,一半来说你的显示器
VertRefresh 50-75 #应该可以达到我的这个水平
#因为我的显示器是15"的老显示器了
#大家的电脑都比我的好吧?
Option "DPMS"
EndSection


下面是综合以上你的配置的设备的各种显示效果
代码:

Section "Screen"
Identifier "Default Screen" #效果的名字
Device "Generic Video Card" #你可以指定你的显卡的名字
Monitor "Generic Monitor" #指定你的显示器的名字
DefaultDepth 24 #默认的颜色深度
SubSection "Display"
Depth 1
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 4
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 8
Modes "1024x768"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768" #在这里你可以指定扫描频率例如
#"1024x768 @ 85"就是用85mhz的频率
EndSubSection
SubSection "Display"
Depth 24
Modes "1024x768"
EndSubSection
EndSection



最终你必需定义下面的段用来告诉X服务器你使用的配置
代码:

Section "ServerLayout"
Identifier "Default Layout" #刚才我们给我们的配置取的名字
Screen "Default Screen" #给我们的效果取的名字
InputDevice "Generic Keyboard" #我们的键盘的名字
InputDevice "Configured Mouse" #我们的鼠标的名字
#这些名字一定要在前面的配置中已经定义
EndSection

Section "DRI"
Mode 0666
EndSection
作者: sunweipeng    时间: 2009-7-30 08:08
一般来说我们X启动时候会遇到的问题是:
1:no screen found
这有可能是你没有正确的定义所需要的效果,也有可能是你的其他部分定义出错倒置你的效果不能实现
2:xtt和freetype的冲突,注消一个就可以了
3:驱动没有找到,如果你的显卡非常的新潮,那么多半是这个错误了,编译你的驱动吧…
_________________
作者: sunweipeng    时间: 2009-7-30 08:08
第五章 Linux命令和技巧

1. mount umount 命令

在Linux里面想要使用你的软盘和光盘可不是像在Windows里面那么的危险。
想想看如果你在Windows里面安装一个光盘里面的软件或者玩游戏的时候,你的女朋友,甭管是第几个女朋友,因为对你每天打游戏而不做晚饭,乃至于别人做了晚饭你居然没时间吃,而气急败坏的按了一下光盘的Eject按钮……哈哈,害怕了?放心,在Linux里面这种事情绝对不用你操心。

要使用光盘,首先把光盘安放好以后,执行以下命令:

mount -t iso9660 /dev/cdrom /mnt/cdom 把光驱挂装到/mnt/cdrom目录

-t参数是指定光盘的文件系统类型,一般来说,光盘都是用的iso9660标准的格式。接下来的/dev/cdrom是你的光驱对应的设备文件,我们前面说过每一个硬件设备都对应了一个标准的设备文件。最后一个/mnt/cdrom目录是你的一个本地硬盘上的目录,在使用以前如果发现没有这个目录,可以建立一个。当然也不一定非要使用这个目录,你甚至可以很变态的使用mount /dev/cdrom /root命令把你的光驱挂装到你的的/root目录,这样一来你的/root的内容将不再是原来的内容,直到你取消挂载。

下面的命令取消挂载:

umount /mnt/cdrom 或 umount /dev/cdrom

这两个命令都可以把刚才挂装上去的光盘取消挂载,只有这样你的光盘才能取出。不行的话,你再执行一次挂装命令,然后按一下光驱上的Eject按钮,看看有没有什么反应啊?没有,对不对?这就是Linux的一个优点,虽然操作起来有点麻烦的感觉,但是想想看,非常安全和稍微的复杂,你选哪一个?

使用软盘的方法也很类似:

mount /dev/fd0 /mnt/floppy

/dev/fd0是你的软盘对应的设备文件,后面的自然是你的挂装目录。但是如果这个时候你想要尝试能不能在没有取消软盘的挂装就推出软盘,你就是一个非常BT的人了。有没有搞错?软盘的退出是机械的操作,你硬要按出来,我有什么办法?那么取消软盘挂载的方法也是很类似的:

umount /dev/fd0 或 umount /mnt/floppy

其实挂装时候第一个参数-t,可以省略,因为系统会自动的判断应该用什么样的格式来识别。不过知道了我们用的软盘或者光盘的格式,对于挂装一个ISO文件有帮助。

mount -t iso9660 -o loop /home/kris/somewhat.iso /mnt/cdrom

我们都知道现在网上有很多的ISO文件,就是把光盘的所有内容打包成为一个文件,方便网上的传送。我们获得这样的文件以后不一定非要用刻录机把它刻录成为光盘,我们只要用上面的命令就可以把光盘的ISO文件挂载到/mnt/cdrom目录了。第一个参数-t iso9660就是光盘使用的文件系统格式,第二个参数是loopback的意思。

取消挂装:umount /mnt/cdrom
作者: sunweipeng    时间: 2009-7-30 08:15
2. 管道命令

管道命令是Linux系统的一个很重要的内容,这里我们只介绍一些简单的。

首先我们已经学过一个命令cat,用来显示一个文件的内容,但是你有没有遇到一个文件很长,一页显示不完的情况?如果你需要把一个很长的文件分页显示,每当你按一个键才显示下一页的话,你可以用more命令:

more LoveLetter
这样,LoveLetter的内容显示在屏幕上,没到一页就自动停下来,等待你的按键,然后才继续显示下面一页。

可是如果我们用ls命令显示一个目录的所有文件的时候遇到一页不能显示完的情况该怎么办?这就需要一个管道符号“|”,就是“\”按钮上面的字符:

ls /dev | more

下面,我们遇到一个新的问题,我们不仅仅想要看看/dev目录下面有哪些文件,我们还希望用一个文件来纪录刚才ls的命令显示的所有结果,难道需要用手工输入?不需要,我们介绍两个管道符号:“>;”“>;>;”,也就是大于符号啦。

ls /dev >; filenames.txt

还有一个管道符号是由两个大于号组成的“>;>;”,它和刚才“>;”的区别在于一个大于符号的管道是用来创建一个新的文件filenames.txt,如果已经有了同名的文件就复盖掉以前的内容;而两个大于符号的管道是用来在已经存在的文件后面追加新的内容,如果没有这个文件就创建它。

现在我们vi filenames.txt看看一共有多少行,是不是1000多行啊?我们运行

ls /dev >;>; filenames.txt

再来vi filenames.txt看看,是不是一共2000多行啦?

其实这两个管道符号很容易记忆,向左边的箭头意思就是把前面命令的内容输入到后面的文件中去,刚才那个“|”管道符号是用来把前面命令的输出结果当作后面一个命令的输入数据。下面我们看一个和刚才“>;>;”刚刚相反的管道符号“<<”:

cat >;>; friends << "EOF"
>; a
>; b
>; c
>; EOF
运行第一行以后,意思就是把我们接下来的输入内容保存到friends文件里面,当我们输入“EOF”的时候结束。“<<”的意思就是向前面的命令传送一个数据。
中间我象征性的输入了a b c三行,每一行前面的“>;”是系统自动产生的提示符号。第四行输入“EOF”系统就保存刚才输入的a b c三行到一个叫做friends的文件里面去。
现在我们cat friends看看是不是刚才的输入成功的保存了。怎么样,同样的命令,使用不同的管道符号,即可以显示文件内容,也可以用来创建文件,这就是管道符号的强大
作者: sunweipeng    时间: 2009-7-30 08:16
3. Linux使用技巧(没有整理完成,有待大家的帮助)

Linux中有太多的使用技巧,这里慢慢的总结:


4. 基本命令总结
.1) ls

ls --color=never *.txt >; report 不显示文字颜色,将所有txt文件记录到report文件中

2) cd
cd ../ 到上一级目录
cd ../.. 到上二级目录
cd ~ 进入用户的个人目录,root用户就是/root目录,kris用户就是/home/kris目录

3) rm
rm -fr 目录名 直接删除一个目录和里面的所有目录,没有任何提示

4) cp
cp 源目录 目标位置 -R 复制原目录里面所有的文件和子目录的内容

5) echo
echo message “我爱你” 在字符界面下面显示一些内容,这里是“我爱你”

6) export
export LC_ALL= 定义一个变量LC_ALL并且设置为空NULL
export LANG=zh_CN.gb2312 定义一个变量LANG的值是zh_CN.gb2312
export http_proxy="http://xxx.xxx.xxx.xxx:port"
定义http代理服务器

7) find
find -iname [目录] 文件名 在指定目录里面(如果不指定目录就是当前目录)查找指定文件名的文件

grep
ps -A | grep some_command

用ps命令加上-A参数显示所有的当前运行的进程,用管道符号“|”加上grep命令检索是否有我们指定的some_command运行

9) lynx
lynx www.google.com


.
.
作者: sunweipeng    时间: 2009-7-30 08:16
lilo.conf-lilo的配置文件。
描述
本文件,缺省位置为etc/lilo.conf,由引导装入程序的安装程序
LILO 读取。
其表现可能如下:

boot=/dev/hda
delay=40
compact
vga=normal
root=/dev/hda1
read-only
image=/zImage-2.5.99
label=try
image=/zImage-1.0.9
label=1.0.9
image=/tamu/vmlinuz
label=tamu
root=/dev/hdba
vga=ask
other=/dev/hda3
label=dos
table=/dev/hda

本配置文件指定 LILO 使用在/dev/hda路径上的主引导记录。(关于使
用 LILO 的不同方式以及其与其他操作系统间交互作用,参见 LILO 文档中
的 USER.TEX)

启动时,引导装入程序会等待 4 秒的时间(40 deciseconds)让你按
SHIFT 键。如果未按,则上述提及的第一核心映象(zImage-1.5.99,可能
你5分钟之前才装上的)将被启动。如果按下了SHIFT键则引导装入程序就会
问你要启动哪一个映象。 万一你忘了该选择启动哪个映象, 按[TAB](或
[?]如果你有一个美国标准语键盘的话)就会有个菜单给你选择。你在这时
可以选定或者启动这个全新的内核,或者启动一个原来可靠的内核,或一个
在其他根文件系统上的内核 (当你在自己常用的根文件系统上做了什么傻
事),或者启动一个不同的操作系统。在 LILO.CONF 中提及的映象可多达
16 个。

由上可见,一个配置文件以一系列的全局选项开始(如例子中的开始的
6 行),随之是不同映象选项的描述。在映象描述中的选项将会覆盖全局选
项所设定的内容。

全局选项部分

其有许多可能的关键词。下面的描述几乎是照抄于 USER.TEX(仅有少许
缩略)

backup=backup-file

将原引导扇区拷贝到备份文件(其也有可能是一个设备,如/dev/null)
而非/boot/boot.NNNN

boot=boot-device

设定包含引导扇区的设备的名称(如一个硬盘的分区)。如果未指定该
关键字引导扇区将从当前作为根文件系统安装的设备中读取(或者可能
也会写入)。
作者: sunweipeng    时间: 2009-7-30 08:16
change-rules

定义引导时对分区类型数的改变('hiding')。详细资料请参看
user.tex 中“分区类型改变规则“一节。

compact

试图将相邻扇区的多次读取请求合并成一次读取请求。这样就大幅度地
减少了读取时间,并使系统描述(MAP)更小。
在从软驱进行读取时尤其要使用 'compact' 选项。

default=name

使用特别指定的映象作为默认的启动映象。如果未设置 'defaul' 选项,
则将使用在该配置文件中最早出现的那个映象作为启动映象。

delay=tsecs

指定引导装入程序在启动第一个映象之前应等待的时间为多少个 10 分
之一秒。这对于在键盘可用后立即从硬盘上启动系统很有用。如果未设
置 'delay' 选项或设为 0,则引导装入程序就不会等待。

disc=device-name

定义特定硬盘的非标准参数。具体细节参见 USER.TEXT 中的硬盘分区结
构一章。其对于定义 'BIOS=' 参数尤其有用。若你的硬盘的 BIOS 数据
是 0x80 ,0x81(十六进制)等等,将无法判断哪一块 Linux 磁盘与哪
一块 BIOS 磁盘相对应(因为这决定于 BIOS 的设置和 BIOS 的类型)。
因此若你采用的是非一般的安装,那你就需要说明 LINUX 磁盘和 BIOS
磁盘间的对应关系。比如:

desk=/dev/sda
bios=0x80
disk=/dev/hda
bios=0x81

就会说明你的 SCSI 盘是第一个 BIOS 盘,而你的(主硬盘)IDE盘是第
二个 BIOS 盘。

disktab=disktab-file

指定磁盘参数表的名称。若未指定“disktab”选项,则磁盘描述(Map)
装入程序会寻找 /etc/disktab 文件。并不提倡disktab选项使用。

fix-table

这个选项使得 LILO 可对分区表上的 3D 地址进行调整。 每个分区表入口
包含有该分区的最前和最后一个扇区的 3D 地址(扇区/磁头/柱面 以及线
性地址。 如果一个分区不是以磁道号定位的, 且某个其他操做系统 (如
PC/MS-DOS 或 OS/2 ) 正在使用同一磁盘,他们就有可能导致 3D 地址的
改变。仅当分区的两个地址类型相一致时 LILO 才能保存其启动扇区。 如
果设定了 'fix-table' 选项,lilo 就可重新调整错误的 3D 地址。

警告:这并不能保证其他的操做系统以后就不会试图重设该地址。也可能
这种变化有其他不可预料的副作用。正确的修改方式是用可以轨道
定位分区的程序来重新对磁盘驱动器分区。并且,对一些磁盘来说
如一些可进行地址转换的大的EIDE磁盘),在某些情况下, 会不
可避免的出现分区表入口相冲突的现象。

force-backup=backup-file

与 'backup' 类似,但若有旧的备份文件存在则会将其覆盖。

ignore-table
ignore-table

告知LILO忽略作废的分区表。
作者: sunweipeng    时间: 2009-7-30 08:17
install=boot-file

将指定的文件作为新的引导扇区来安装。若未设置 'install' 选项,则将
boot/boot.b作为默认缺省值使用。

linear

产生线性扇区地址而非“扇区/磁头/柱面”地址。线性地址不依赖于磁盘的
分区结构,且在运行时被翻译。注意如果使了'linear'选项则可能使启动
盘不能被移植,这是因为BIOS中用于决定磁盘分区结构的服务对软盘的作
用不稳定。在对大硬盘使用'linear'选项时,由于3D扇区地址在启动前是
未知的,故 /sbin/lilo 可能会产生对不可访问的磁盘区域的一个参考。

lock

允许自动记录引导命令行,作为以后启动的默认缺省值。这样,在手工取
消之前lilo会锁定一个选项。

map=map-file
map=map-file

定位磁盘描述(MAP)文件。若未指定 'map' 选项,就会使用 /boot/map
文件。

message=message-file

指定一个含有在运行启动提示符前显示的信息的文件。在显示出 'LILO' 后
等待按键的时间里不会有信息显示。在信息中,用FF字符([Ctrl + L])
清空本地显示器。信息文件的大小限制在65535字节以内。如果信息文件被
改动或取消则必须重建磁盘描述(Map)文件。

nowarn

使关于以后可能危害的警告失效。

optional

使单一映象选项 'optional' (见后)应用于所有映象。

password=password

使单一映象选项 'password=...' (见后)应用于所有映象。

prompt forces

不等待任何的按键事件发生就直接进入启动提示符模式。如设定了 'promp'
选项而没设定 'timeout' 选项,则不能自行启动。

restricted

使单一映象选项'restricted'(见后)应用于所有映象。

serial=parameters

允许使用来自串行口的控制。指定的串行口将会被初始化,引导装入程序就
会从该串行口及PC键盘接受输入。在串行线上发送暂停(break)指令和按
下键盘上的 SHIFT 键的效果是一致的,都会引起引导装入程序的注意。如
果串行线比键盘输入更不安全,如该线与 MODEM 相连时,则所有启动映象
都应设密码加以保护。参数串的格式如下:

[,[[]]]

:表串行口的数目,最小为0。
0对应于COM1并指定为/dev/ttyS0,等等。
所有四个端口均可用(如果可以使用的话)。

:串行口的比特率。
以下比特率可被支持:110,150,300,600,1200,2400,4800
及9600bps。
默认值是2400bps。
作者: sunweipeng    时间: 2009-7-30 08:17
:表在串行口上使用的奇偶效验。引导装入程序忽略输入的奇偶效
验位,并除去第八位。以下字符可用来描述奇偶效验:
n表示无相同,e表示偶数的相同,o表示奇数的相同。

:在一个字符中的位的数目。仅支持7或8位。
若奇偶效验是 'none' 则默认是8,
若奇偶效验是'even'或'odd',则默认是7。

若设定了'serial'选项,则'delay'的值就自动上升为20。
例如:serial=0,2400n8就会用缺省值参数来安装COM1。

timeout=tsecs

为键盘输入设定一个超时选项(以10分之一秒为单位)。若在指定的时间
内没有按键则第一个映象就会被自动启动。同样,如过用户停顿过长则密
码输入就会被取消。默认的超时值是无限。

verbose=level

用以打开大量的进程报告。数目越大则给出的冗长输出越多。如果在 LILO
命令行中附加参数 -v,则冗长标准也相应增加。最大的冗长标准是5。

另外,内核配置参数 append,ramdisk,read-only,read-write,root以
及vga都可在全局选项中被设定。如果在相应的核心映象的配置栏中没对其加以
指定,该设定值其就会被用做默认的缺省值。

单一映象部分

一个单一映象或者以一行
image=pathname
开始(以提示含有一个LINUX内核的启动映象的文件或设备),或以一行
other=pathname
开始以提示启动其他独立的系统。

在前一例中,如果一个映象行指定是从一个设备启动,则必须用
range=start-end
提示被描述的扇区范围。

在后一例中,有3个选项可供选择。

laoder=chain-loader

该参数指定了将使用的连锁装入程序。使用默认缺省/boot/chain.b。
如果是从其他设备而非第一硬盘或软盘启动则必须指定连锁装入程序。

table=device

其指定含有分区表的设备。若未指定该参数,引导装入程序就不会把分
区信息传送到已启动的操做系统。(一些操做系统有其他的方式来决定
从哪个分区来启动。如,MS-DOS将其的启动盘分区结构或分区保存到引
导扇区里)。应注意若一个已定位且引用了 'table' 选项的分区表被
修改则必须重新运行/sbin/lilo文件程序。s
作者: sunweipeng    时间: 2009-7-30 08:18
unsafe

在创立磁盘描述(Map)时不要访问启动扇区。 这将取消一些正确性检
查,包括分区表检查。如果启动扇区是在一个固定格式化的软盘驱动器
上,则在运行定位装载程序时使用 unsafe 选项就不需插入可读取的磁
盘到驱动器里。

以下选项在这两例中均可运用。

label=name

引导装入程序使用每个映像说明的主文件名(不包含路径)来标识该映像。
通过设定变量'label'可使用不同的名称。

alias=name

通过指定一个别名可对同一个目录使用第二名称。

lock(见前)

optional

删去在磁盘描述表创立时不可用的映像。这对于在指明测试并不总是可用的
内核很有用。
password=password

用密码保护映像。


restricted

若是在命令行被指定各参数则只在启动映像使需要输入密码。

内核选项部分

如果被启动的映像是一个LINUX内核,则可以将命令行参数传送到该内核。

append=string

将指定的各选项增加到传送于内核的参数行。其典型的运用于指定不能完全
自检或彻查对其有危害的硬盘的参数。比如:
append="hd=64,32,202"

literal=string

与 'append' 类似,但会取消所有其他选项(如根驱动器的设定)。由于用
'literal' 选项可在无意之间删掉重要的选项,故该选项不能设在全局选项
中。
作者: sunweipeng    时间: 2009-7-30 08:18
unsafe

在创立磁盘描述(Map)时不要访问启动扇区。 这将取消一些正确性检
查,包括分区表检查。如果启动扇区是在一个固定格式化的软盘驱动器
上,则在运行定位装载程序时使用 unsafe 选项就不需插入可读取的磁
盘到驱动器里。

以下选项在这两例中均可运用。

label=name

引导装入程序使用每个映像说明的主文件名(不包含路径)来标识该映像。
通过设定变量'label'可使用不同的名称。

alias=name

通过指定一个别名可对同一个目录使用第二名称。

lock(见前)

optional

删去在磁盘描述表创立时不可用的映像。这对于在指明测试并不总是可用的
内核很有用。
password=password

用密码保护映像。


restricted

若是在命令行被指定各参数则只在启动映像使需要输入密码。

内核选项部分

如果被启动的映像是一个LINUX内核,则可以将命令行参数传送到该内核。

append=string

将指定的各选项增加到传送于内核的参数行。其典型的运用于指定不能完全
自检或彻查对其有危害的硬盘的参数。比如:
append="hd=64,32,202"

literal=string

与 'append' 类似,但会取消所有其他选项(如根驱动器的设定)。由于用
'literal' 选项可在无意之间删掉重要的选项,故该选项不能设在全局选项
中。
作者: sunweipeng    时间: 2009-7-30 08:18
-samba服务器
Samba协议基础
  在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。
  随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
因此,为了让Windows和Unix计算机相集成,最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件,这样Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMB(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows计算机看到。它的功能有:
1.共享Linux磁盘给Win95/NT
2.共享Win95/NT磁盘给Linux机器
3.共享Linux打印机给win95/NT
4.共享win95/NT打印机给Linux机器。
同时它的文件服务功能比NT系统还高,而且在Windows2000之前就提供了用户磁盘空间限制的功能。
Samba的配置
在我写这篇文章的时候,Samba的版本已经到了2.2.2了,需要的可以通过ftp://samba.org/pub/samba/Binary_Pa....??后执行rpm -Uvh samba-2.2.2-20011013.i386.rpm来安装或者升级它。安装完后,可以看见/etc/samba这么一个目录,里面存放和Samba相关的一些文件,最主要的是smb.conf,现在根据配置文件讲讲它的配置选项:
全局设置:
workgroup = MYGROUP
定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)。
server string = MY Samba Server
作者: sunweipeng    时间: 2009-7-30 08:18
设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba设定的变量。这里说一下samba定义的变量:
%S = 当前服务名(如果有的话)
%P = 当前服务的根目录(如果有的话)
%u = 当前服务的用户名(如果有的话)
%g = 当前用户说在的主工作组
%U = 当前对话的用户名
%G = 当前对话的用户的主工作组
%H = 当前服务的用户的Home目录
%v = Samba服务的版本号。
%h = 运行Samba服务机器的主机名
%m = 客户机的NETBIOS名称
%L = 服务器的NETBIOS名称
%M = 客户机的主机名
%N = NIS服务器名
%p = NIS服务的Home目录
%R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 当前服务进程的ID
%a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
%I = 客户机的IP
%T = 当前日期和时间
hosts allow = 网络或者主机
这里可以设置允许访问的网络和主机IP,比如允许192.168.1.0/24和192.168.2.1/32访问,就用host allow = 192.168.1. 192.168.2.1 127.0.0.1(网络注意后面加”.”号,各个项目间用空格隔开,记得把本机也加进去)
printcap name = printcapFile
到printcapFile(一般是/etc/printcap)这个文件中取得打印机的描述信息
load printers = yes|no
设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西
printing = PrintSystemType
定义打印系统的类型,缺省是lprng,可选项有:bsd, sysv, plp, lprng, aix, hpux, qnx。
guest account = pcguest
定义游客帐号,而且需要把这个帐号加入/etc/passwd,不然它就用缺省的nobody
log file = LogFileName
定义记录文件的位置LogFileName(一般是用/var/log/samba/%m.log)
max log size = size
定义记录文件的大小size(单位是KB,如果是0的话就不限大小)
security = security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
作者: sunweipeng    时间: 2009-7-30 08:19
后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。
password server =
当前面的security设定为server或者domain的时候才有必要设定它。
password level = n
这是设定针对一些SMB客户像OS/2之类而设的,这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n越大,组合的次数就越多,验证时间就越长,安全性也会因此变得越低。例如n=
作者: sunweipeng    时间: 2009-7-30 08:19
2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个ABCD进行大小写重组,组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。
所以如果没有必要,就把n定为是零。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。
username level = n
这个是对于用户名的情况,说明和上面一项类似。
encrypt passwords = yes|no
设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改,比较麻烦,好的方法就是把这里的这个开关设置为yes。
smb passwd file = smbPasswordFile
设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。
ssl CA certFile = sslFile
当samba编译的时候支持SSL的时候,需要指定SSL的证书的位置(一般在/usr/share/ssl/certs/ca-bundle.crt)。
unix password sync = yes|no
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n
*ReType*new*UNIX*password* %n
*passwd:*all*authentication*tokens*updated*successfully*
这三项设置能否从windows的应用程序修改unix系统的用户密码
username map = UsermapFile
指定用户映射文件(一般是/etc/samba/smbusers),当我们在这个文件里面指定一行root = administrator admin的时候,客户机的用户是admin或者administrator连接时会被当作用户root看待。
include = MachineConfFile
指定对不同机器的连接采用不同的配置文件MachineConfFile(一般为了灵活管理使用/etc/samba/smb.conf.%m,由于采用了samba的变量,把配置文件和客户机的NETBIOS名称关联起来,能很容易地控制这些客户机的权限和设置)。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
这个是网络socket方面的一些参数,能实现最好的文件传输性能。相关的选项还有SO_KEEPALIVE、 SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、IPTOS_THROUGHPUT、SO_SNDLOWAT(*)、SO_RCVLOWAT(*),带*号的要指定数值。一般如果在本地网络,就只用IPTOS_LOWDELAY,如果是有一个本地网络的,就用IPTOS_LOWDELAY TCP_NODELAY,如果是广域网络,就试试IPTOS_THROUGHPUT。
interfaces = interface1 interface2
如果有多个网络接口,就必须在这里指定。如interface = 192.168.12.2/24 192.168.13.2/24
remote browse sync = host(subnet)
这里指定浏览列表同步信息从哪里取得, 如果用host(比如192.168.3.25)或者整个子网(192.168.5.255)。
作者: sunweipeng    时间: 2009-7-30 08:19
★这里说明一下什么是浏览(Browse):
在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。
  但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。
Browser并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。★
remote announce = host(subnet)
指定这些机器向网络宣告自己,而不是有Browser得到。
local master = yes|no
这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。
os level = n
n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器,默认值是零,零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话,可以设为65。
domain master = yes|no
这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器。
preferred master = yes|no
这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。
★Domain master和local master
工作组和域这两个概念在进行浏览时具备同样的用处,都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上,工作组中每台计算机都基本上是独立的,独立对客户访问进行认证,而域中将存在一个(或几个)域控制器,保存对整个域中都有效的认证信息,包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候,并不需要认证信息,Microsoft将工作组扩展为域,只是为了形成一种分级的目录结构,将原有的浏览和目录服务相结合,以扩大Mircrosoft网络服务范围的一种策略。
工作组和域都可以跨越多个子网,因此网络中就存在两种Browser,一种为Domain Master Browser ,用于维护整个工作组或域内的浏览数据,另一种为Local Master Browser,用于维护本子网内的浏览数据,它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表,不同子网之间只能通过浏览器之间的交流能力,才能互相交换资源列表。
但是,为了浏览多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的帮助,计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字,以相互交换网络资源信息。
由于域控制器在域内的特殊性,因此域控制器倾向于被用做Browser,主域控制器应该被用作Domain Master Browser,他们在推举时设置的权重较大。★
作者: sunweipeng    时间: 2009-7-30 08:19
preserve case = yes|no
short preserve case = yes|no
指定拷贝DOS文件的时候保持大小写,缺省是no
default case = lower|upper
所有的DOS文件的缺省是大写还是小写
case sensitive = yes|no
大小写敏感,一般是no,不然会出现一些问题。
共享设置:
★共享资源:
每个SMB服务器能对外提供文件或打印服务,每个共享资源需要被给予一个共享名,这个名字将显示在这个服务器的资源列表中。如果一个资源的名字的最后一个字母为$,则这个共享名就为隐藏共享,不能直接表现在浏览列表中,而只能通过直接访问这个名字来进行访问。在SMB协议中,为了获得服务器提供的资源列表,必须使用一个隐藏的资源名字IPC$来访问服务器,否则客户无法获得系统资源的列表。★
共享设置中有个比较奇怪的段:
[homes],在smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段,Samba可以得到用户的Home目录并使之共享。下面是这个段的最基本的几个设置。
[homes]
comment=Home Directory
browseable=no
writable=yes
比较正常的共享的配置如下例:
[MyShare]
comment = grind’s file
path = /home/grind
allow hosts = host(subnet)
deny hosts = host(subnet)
writable = yes|no
user = user(@group)
valid users = user(@group)
invalid users = user(@group)
read list = user(@group)
write list = user(@group)
admin list = user(@group)
public = yes|no
hide dot files = yes|no
create mode = 0755
directory mode = 0755
sync always = yes|no
short preserve case = yes|no
preserve case = yes|no
case sensitive = yes|no
mangle case = yes|no
default case = upper|lower
force user = grind
wide links = yes|no
max connections = 100
delete readonly = yes|no
其中[]里面的MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。
comment指的是对改共享的备注。
作者: sunweipeng    时间: 2009-7-30 08:20
path指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。
allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。
user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
valid users指定能够使用该共享资源的用户和组。
invalid users指定不能够使用该共享资源的用户和组。
read list 指定只能读取该共享资源的用户和组。
write list指定能读取和写该共享资源的用户和组。
admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。
hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。
create mode指明新建立的文件的属性,一般是0755。
directory mode指明新建立的目录的属性,一般是0755。
sync always指明对该共享资源进行写操作后是否进行同步操作。
short preserve case指明不管文件名大小写。
preserve case指明保持大小写。
case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。
mangle case指明混合大小写。
default case指明缺省的文件名是全部大写还是小写。
force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。
max connections = n设定同时连接数是n。
delete readonly指明能否删除共享资源里面已经被定义为只读的文件。
有两类特殊的共享,分别是光驱和打印机
光驱的共享设置:
[cdrom]
comment = grind’s cdrom
path = /mnt/cdrom
public = yes
browseable = yes
root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom
root postexec = /bin/umount /mnt/cdrom
这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。
作者: sunweipeng    时间: 2009-7-30 08:20
打印机共享的设置:
[printers]
path = /var/spool/samba
writeable = no
guest ok = yes
printable = yes
printer driver = HP LaserJet 5L
这里printable指明该打印机可以打印, guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型,这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。
添加用户:
samba添加用户比较方便,一般是用smbadduser,用法是smbadduser unixid:netid,举个例子:如果你的本机有个叫grind的用户,你用smbadduser grind:grind,这样从网上邻居访问的时候用户名就用grind,而如果你用了smbadduser grind:glass的话,网上邻居访问的时候提供的用户名就是glass而不是grind了。
关于samba服务端的设置基本就是这些,我想一般应用中所要使用的上面几乎都覆盖到了,所以有些不重要的就省略了,如果要更加详细的信息可以用man smb.conf参考。/dev/null
3.mf_wrapper是一个magic filter文件,是相关的一些过滤规则。内容是:
MF_RULE_DIR='/usr/share/printconf/mf_rules'
MF_RULES=$MF_RULE_DIR/mf[[]][[]]-*
TMP_FILE=`mktemp /tmp/printconf.XXXXXX`' 'exit 1
cat ./mf.cfg $MF_RULES | m4 >; $TMP_FILE
if [ -n "$DEBUG" ]; then
case "$DEBUG" in
2)
DEBUGSTRING="--debug --debug"
;;
3)
DEBUGSTRING="--debug --debug --debug"
;; 4)
DEBUGSTRING="--debug --debug --debug --debug"
;;
5)
DEBUGSTRING="--debug --debug --debug --debug --debug"
;;
*)
DEBUGSTRING="--debug"
;;
esac
else
DEBUGSTRING=""
fi
# Run magic filter
/usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $*
接下来的操作和ftp的时候命令一样,用get下载文件而用put上传文件,命令可以用help查看。
还有一种方法是用文件系统的方式(这种方式要确定你的内核支持smbfs,如果没有支持的话,编译内核的时候必须选中File systems--->;Network File Systems--->; SMB file system support (to mount Windows shares etc.) ):
smbmount //IP或者NETBIOS名称/共享资源名 /本地挂接点 [-o option]
常用的的option有username=,password=,guest(指定为用guest访问,不用提供密码,前面的即使用username=guest参数的话也会要求输入密码),ro(有时候为了系统安全要指定为只读模式),rw,同时多个option的话用逗号隔开。
或者可以用mount -t smbfs [-o option] //IP或者NETBIOS名称/共享资源名 /本地挂接点来实现同样的功能。
例子如下:
smbmount //glass/littlep /test -o guest或者mount -t smbfs -o guest //glass/littlep /test,然后就能通过访问/test来使用网络上的资源了。
如果不需要使用的时候,可以简单地使用smbumount /test或者umount /test来解除这个挂接。
关于samba的功能(共享Linux磁盘给Win95/NT、共享Linux打印机给win95/NT、共享win95/NT打印机给Linux机器。、共享Win95/NT磁盘给Linux机器),前面两个属于samba服务器的内容而后两个属于samba客户段的内容,在我的两篇文章中都有介绍了他们的实现方法,但是samba实在是一个强大的工具,无法十分详细地介绍它地全部功能,而且限于笔者的知识有限,有不到之处请各位指出,还望各位多多交流。
作者: sunweipeng    时间: 2009-7-30 08:20
一、安装

命令格式:

rpm -i ( or --install) options file1.rpm ... fileN.rpm

参数:

file1.rpm ... fileN.rpm 将要安装的RPM包的文件名

详细选项:

-h (or --hash) 安装时输出hash记号 (``#'')
--test 只对安装进行测试,并不实际安装。
--percent 以百分比的形式输出安装的进度。
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为

通用选项

-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安
装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
作者: sunweipeng    时间: 2009-7-30 08:20
二、删除

命令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

参数

pkg1 ... pkgN :要删除的软件包

详细选项

--test 只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps 不检查依赖性

通用选项

-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装
程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为

三、升级

命令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

参数

file1.rpm ... fileN.rpm 软件包的名字

详细选项

-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage 允许"升级"到一个老版本
--test 只进行升级测试
--excludedocs 不安装软件包中的文档文件
--includedocs 安装文档
--replacepkgs 强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force 忽略软件包及文件的冲突
--percent 以百分比的形式输出安装的进度。
--noscripts 不运行预安装和后安装脚本
--prefix 将软件包安装到由 指定的路径下
--ignorearch 不校验软件包的结构
--ignoreos 不检查软件包运行的操作系统
--nodeps 不检查依赖性关系
--ftpproxy 用 作为 FTP代理
--ftpport 指定FTP的端口号为

通用选项

-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
作者: sunweipeng    时间: 2009-7-30 08:21
四、查询

命令格式:

rpm -q ( or --query) options

参数:

pkg1 ... pkgN :查询已安装的软件包

详细选项

-p (or ``-'') 查询软件包的文件
-f 查询属于哪个软件包
-a 查询所有安装的软件包
--whatprovides 查询提供了 功能的软件包
-g 查询属于 组的软件包
--whatrequires 查询所有需要 功能的软件包

信息选项

显示软件包的全部标识
-i 显示软件包的概要信息
-l 显示软件包中的文件列表
-c 显示配置文件列表
-d 显示文档文件列表
-s 显示软件包中文件列表并显示每个文件的状态
--scripts 显示安装、卸载、校验脚本
--queryformat (or --qf) 以用户指定的方式显示查询信息
--dump 显示每个文件的所有已校验信息
--provides 显示软件包提供的功能
--requires (or -R) 显示软件包所需的功能

通用选项

-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为
作者: sunweipeng    时间: 2009-7-30 08:21
五、校验已安装的软件包

命令格式:

rpm -V ( or --verify, or -y) options

参数

pkg1 ... pkgN 将要校验的软件包名

软件包选项

-p Verify against package file
-f 校验所属的软件包
-a Verify 校验所有的软件包
-g 校验所有属于组 的软件包

详细选项

--noscripts 不运行校验脚本
--nodeps 不校验依赖性
--nofiles 不校验文件属性

通用选项

-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为

六、校验软件包中的文件

语法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

参数:

file1.rpm ... fileN.rpm 软件包的文件名

Checksig--详细选项

--nopgp 不校验PGP签名

通用选项

-v 显示附加信息
-vv 显示调试信息
--rcfile 设置rpmrc文件为


七、其它RPM选项

--rebuilddb 重建RPM资料库
--initdb 创建一个新的RPM资料库
--quiet 尽可能的减少输出
--help 显示帮助文件
--version 显示RPM的当前版本
作者: sunweipeng    时间: 2009-7-30 08:22
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
作者: sunweipeng    时间: 2009-7-30 08:23
# -->; 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,
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也!
作者: sunweipeng    时间: 2009-7-30 08:23
在 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的交互性 #
######################
作者: sunweipeng    时间: 2009-7-30 08:23
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
作者: sunweipeng    时间: 2009-7-30 08:23
如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了
grub>; root (hd0,
现在已安装了 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控制台)完全相同。
作者: sunweipeng    时间: 2009-7-30 08:23
在 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相比,
网址是www.xosl.org
作者: sunweipeng    时间: 2009-7-30 08:24
作为一种免费的网络操作系统,Linux越来越受到广大网络爱好者的欢迎,目前因特网(Internet)上运行的主机有相当一部分采用的就是linux操作系统,而且中国已经把linux操作系统作为政府上网年的指定网络操作系统,种种迹象表明,linux操作系统正在逐渐走向成熟。在本章我将向大家介绍一种能在Linux系统下使用的比较优秀的代理服务器软件的配置方法。


  众所周知,当今因特网发展速度极其迅猛,IP地址资源非常紧张。而如果您想访问因特网,共享因特网的丰富资源,您的机器必须拥有一个标准的IP地址。在因特网上,IP地址是识别您的机器的唯一标志。目前,有两种方式可以让您的机器拥有标准的IP地址:一种是局域网通过专线接入因特网,您的机器可以拥有静态的IP地址。所谓静态IP地址,就是对使用者来说,是固定不变的IP地址,这个IP地址给您使用后,其他人就不能再用了。一种是通过电话线拨号或ISDN拨号等方式接入因特网,您的机器可以在您拨号上网的在线期间从ISP的访问服务器的IP地址池中获得一个临时的标准IP地址,这个IP地址在您下线后就不归您使用了,而您下次拨号再上网,很可能分配给您的机器的是另外一个临时的IP地址了。这种临时分配的IP地址,称为动态IP地址。无论是静态地址还是动态地址,在您的机器访问因特网时,使用起来没有什么区别。
  现在因特网发展速度这么快,而IP地址资源又这么紧张,这不能不说是一个尖锐的矛盾。虽说Ipv6正在开发中,但远水不解近渴,好多的企业、公司内部的Intranet现在就想接入因特网这个浩瀚的资源海洋,但又苦于没有充足的IP地址资源,怎么办?还好,有代理服务这个好东西。代理服务是指由一台拥有标准IP地址的机器代替若干没有标准IP地址(以下称内部地址)的机器和因特网上的其他主机打交道,提供代理服务的这台机器称为代理服务器。拥有内部地址的机器想到因特网上查找资料时,先把这个请求发给拥有标准IP地址的代理服务器,由代理服务器把这个请求通过它的标准IP地址发到请求的目标地址。然后目标地址的服务器把返回的结果发回给代理服务器,代理服务器再原封不动的把资料发给最初那台拥有内部IP地址的机器。这样就完成了一次内部机器访问因特网的一个过程。若干拥有内部地址的机器就组成了内部网,代理服务器的作用就是勾通内部网和因特网,解决内部网访问因特网的问题。而且这种代理是不可逆的,因特网上的主机不能访问任何一台拥有内部地址的机器,这样又可以保障内部资料的安全性。


  能够完成这种代理功能的服务器软件有好多,我给大家推荐一种能在linux下使用的比较优秀的代理服务器软件Squid。之所以说它比较优秀,是因为它可以在代理服务器上作一个很大的缓存,可以把好多常去的网站内容存储到缓存中,这样,内部网的机器再访问那些网站,就可以从缓存里调用了。这样一方面可以加快内部网浏览因特网的速度,这就是所谓的提高客户机的访问命中率, 另一方面,Squid不仅仅支持HTTP协议,而且还支持FTP,GOPHER,SSL和WAIS等协议考虑到简捷实用的原则,我们本章只向大家介绍如何设置HTTP代理,而其他的代理大同小异,各位理解了HTTP的配置也就明白应该如何配置其他的代理了。
作者: sunweipeng    时间: 2009-7-30 08:24
& 5.2 所需资源
   &5.2.1 所需包

  squid-2.3.STABLE1-5.rpm

   &5.2.2 所需配置文件

  /etc/squid/squid.conf 系统自带,管理员配置

  &5.2.3 相关工具
& 5.3 配置方案
 1./etc/squid/squid.conf

说明:squid主配置文件
源文件:
acl deny_ip_01 dst 1.1.1.1
http_access deny deny_ip_01
# 以上两行是基于IP的访问控制
acl deny_url_01 url_regex http://www.www.www
http_access deny deny_url_01
# 以上两行是基于URL的访问控制
http_port 3128 # HTTP协议代理默认代理端口
cache_mem 32 MB #开劈一块内存区域作为缓冲
cache_dir ufs /home/squid/cache 1024 16 256
# 开劈一块硬盘空间,作为硬盘缓冲区,这块区域的分布是连
续的,逻辑关系由管理员设定
cache_access_log /var/log/squid/access.log
# 该log文件是用来描述每次客户请求HTTP内容时,高速缓
存命中或未命中的项目。同时描述提出请求的主机身份及它
们所需的内容。
cache_log /var/log/squid/cache.log
#用于描述当squid守护进程启动时,可看到有多少内存、交
换空间,高速缓存目录的位置,所接受的连接类型及接受连
接的端口。
cache_store_log /var/log/squid/store.log
#用于描述页面从高速缓存中被调入调出的情况。
pid_filename /var/run/squid.pid
#管理员可以通过查看此文件了解当前执行的squid进程。
dns_nameservers 192.168.0.1
#定义域名解析服务器的地址
acl all src 0.0.0.0/0.0.0.0
cache_mgr root@weboa.com.cn
#设置cache管理员的邮件箱地址
reference_age 3 days
#设置缓冲区的更新周期
maximum_object_size 4096 KB
#设置允许被缓存的一次性最大请求
作者: sunweipeng    时间: 2009-7-30 08:24
 & 5.4 测试及管理办法
   &5.4.1 测试方法

 1.在客户机下打开浏览器,设置好代理服务器,端口是3128,看看能不能上网就是拉。

   &5.4.2 管理方法

 1.修改完配置文件需要执行/etc/rc.d/init.d/squid restart使得配置生效。
作者: sunweipeng    时间: 2009-7-30 08:24
1、处理特殊的文件名

假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm -ee命令,界面会提示我们是“无效选项”(invalid option),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,输入“rm -- -ee”命令便可顺利删除名为“-ee”的文件。如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。

2、直接进行Linux的安装工作

在安装Linux操作系统时,可以利用该系统光盘中的一个名为“loadlin.exe”的软件,将Linux核心直接调入内存,由Linux核心代替当前操作系统来接管计算机,并进入Linux的安装界面。在安装Linux时,我们只要在运行对话框中输入“loadlin E:imagesvmlinuz root=/dev/ram initrd=E:imagesinitrd.img”这个命令就可以直接安装Linux了;其中“E:imagesvmlinuz”为Linux的核心名。

3、消除Xwindows下的死机现象

我们可以用两个常用的方法来消除这种现象:第一,用键盘上的复合键“Ctrl+Alt+Backspace”来关闭当前正在运行的任务;第二,首先按住键盘上的“Ctrl+Alt+F2”复合键,让系统切换到另一个操作台,然后登录到系统,再执行“#ps -ax/grep startx”命令,这将会列出你的Xserver的进程标识,接着在命令行中输入如下命令就能消除Xwindows下的死机现象:#kill -9 PID_Number,最后通过“Alt+F1”复合键返回到原来的平台。

4、快速关闭Linux系统

最新版本的Linux/UNIX系统借鉴了大型机的技术,采用了抗掉电的日志式文件系统,可以自动跟踪保存用户数据,自动同步刷新文件系统,用户完全可以随手关闭电源,从而达到快速关闭系统的目的。

5、巧妙使用“rm”命令

我们可以使用带“-r”参数的“rm”命令来删除一个非空目录,例如我们在命令行中输入“rm -r bbb”这样的命令,表示系统将把bbb目录中包含的所有文件和子目录全部删除掉。

6、巧妙使用“Tab”键

大家知道在Linux字符界面中输入命令时,有时需要输入很多字符,如果经常这样逐个地输入字符,比较麻烦。假设键入的字符足以确定该目录下一个惟一的文件时,我们只需按键盘上的“Tab”键就可以自动补齐该文件名的剩下部分,例如要把目录/ccc下的文件“ddddddd-1.2.3.tar.gz”解包时,当我们在命令行中键入到“tar xvfz /ccc/d”时,如果该文件是该目录下惟一以“d”打头的文件的话就可以直接按下“Tab”键,这时命令会被自动补齐为:tar xvfz /ccc/ddddddd-1.2.3.tar.gz ,从而提高了输入效率。
作者: sunweipeng    时间: 2009-7-30 08:24
7、多用鼠标拷贝与粘贴来提高操作速度

Linux系统安装后,每次启动到字符界面时都会自动运行一个叫“gpm”的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的地方突出显示,这时突出显示的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。如果我们在Xwindow下运行Linux系统,拷贝与粘贴的操作与在Windows 9x系统下一样。

8、快速启动Linux系统

在DOS下,有一种简单快速启动Linux的方法,那就是load Linux。loadlin.exe是DOS下的可执行程序,它可以在纯DOS环境下迅速启动Linux,而且无需重启计算机,通常我们可以在光盘的“/kernels”目录下找到这个程序。如果不知这个程序被放置于安装盘的何处,可以使用“find -name loadlin*”命令来寻找。找到之后将其复制到DOS分区中,同时还需要复制一份你所使用的Linux内核文件。可以通过Windows直接从光盘复制,也可在Linux环境下使用“mcopy”命令将文件复制到DOS分区;接着再编写一个名为“Linux.bat”的批处理文件,文件内容如下:c:loadlin c:vmlinuz root=/dev/hda1 ro(我们假设loadlin.exe和vmlinuz这两个内核文件都在c盘根目录下,“root”为Linux的根设备,而且Linux处于硬盘第一分区,所以设备名为“/dev/hda1”,“ro”意为readonly)。以后在DOS下要启动Linux时,运行“Linux.bat”就可以了。
作者: sunweipeng    时间: 2009-7-30 08:25
本文主要面对新新手,不对任何高难度问题进行讨论,包括双网卡,正常编译了driver也不能用的古怪网卡等.本文的主要目的是告诉新新手,Linux下网卡是怎样被驱动的.本文不讨论安装Linux的问题,假设用户已经成功安Linux,就等驱动网卡.
  第一步--不要再问 Linux下能够装XXX卡么? 这样的问题,Linux是个开放的系统,借助于网络上无数的高手,几乎所有的硬件都能找到支持.
  首先需要指出,Linux下对网卡的支持往往是只对芯片的,所以对某些不是很著名的网卡,往往需要知道它的芯片型号以配置Linux.比如我的Accton 网卡,就不存在Linux的driver,但是因为它是NE2000兼容,所以把它当NE2000就可以在Linux下用了.所以当你有一块网卡不能用,在找Linux的driver之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如3c509,ne2000,etherexpress等等.这样的型号一般都在网卡上最大的一快芯片上印着,抄下来就是了.
  最普遍使用也许是最好配的网卡也许就是Ne2000兼容卡了,我用它来作例子.注意实际上很多廉价卡都是NE2000兼容的.
  对于NE2000卡,先要作的一件事情,是将网卡设定为Jumpless模式.很多现在的网卡缺省都是PnP模式,这在95下的确能减少很多麻烦,但是Linux不支持,所以Linux下必须是Jumpless模式.一般所有程序将网卡设为Jumpless.当然如果是老卡,本来就不是PnP,不用管这个.注意,这里主要是ISA的NE2000,关于PCI的NE2000,需要另外设置.
  下来就是得弄清楚网卡的IO地址和IRQ.这是两个非常重要的网卡驱动参数.这个最简单就是还用那个网卡的设定程序,设定完Jumpless之后肯定有地方可以软设定IO和IRQ.老一些的卡得跳线,道理一样.另外一个方法是如果网卡能在95或NT下工作,去95下的control panel里看这个卡的properities,查IO和IRQ.
  OK,到现在,你知道了你的卡是NE2000兼容,知道了它是在Jumpless模式下,知道了IO地址和IRQ,就可以安装了.
  Linux系统与95这些系统不同的一点是它是运行在 内核 上的,所谓内核,就是把系统最核心的部分孤立出来编程,将各种驱动程序,内存控制等部分编在一起.于95不同,Linux得内核是公开的,经常更新的,这样不需要更新整个系统,用户只需要把最新的内核原程序download下来编译,就可以得到一个支持更多硬件,更多文件系统,更安全的系统了.所以需要指出,Linux的Driver很少有象95下那样是 安装 的.Linux下的driver大多数都是以C程序形式发布,或者在内核里,或者需要用户自己修改内核代码.总之要让Driver运行,得重新配置编译内核.如何操作Linux内核是学习Linux中非常重要的一节.Linux的新手最好在这里多下点功夫搞清楚.有关核心的问题建议看Linux How To文档中的kernel How to.
  Anyway, Linux已经装好了,那么用的是什么内核呢?一般缺省的Linux内核是从安装盘上来的.那个内核一般包括大多数硬件的驱动程序,比如Ne2000卡.所以未一定要重新编译内核,也许现有的内核就可以驱动.所以下一步就是把网卡插入计算机,看看Linux能否发现它.这可以从Linux的启动画面中看出来,如果你发现如下的一行:
  eth0:NE2000 card found at 0x300 using IRQ 05
那就说明Linux发现了NE2000卡,在IO 300, IRQ 05的地方.
  如果Linux没有发现你的网卡,但是你确认你网卡得型号和参数,比如我的网卡是NE2000兼容,IO 0x300, IRQ 05.那么可以修改Linux启动文件专门搜索这个设备.这个文件在/etc/rc.d/rc.modules里对于NE2000,是这样的:
  #/sbin/modprobe ne io=0x300 # NE2000 at 0x300
将最前面的#号去掉,再启动机器试试.
  另外该文件里还可以发现对其它系列网卡比如3C系列的autoprobe.
  OK,到现在启动屏幕上也没有出现
  eth0:NE2000 card found at 0x300 using IRQ 05
这样的好消息,那么你就得编译内核了.
作者: sunweipeng    时间: 2009-7-30 08:25
编译内核之前一定要搞清楚的是网卡的芯片号.比如我有一块SMC的网卡,但是我是无法在Linux的内核配置菜单里找到SMC这样的字样的,Linux不是win95,有那么长一串厂商牌号等.我在这个SMC的卡上找到了digital 21140-AE的字眼,于是我知道这个卡用的是DEC 21140-AE芯片,于是按照这个寻找,就找到了驱动.
  知道了芯片类型,或者兼容类型(比如ne2000)就可以开始编译内核了.具体的针对不同系统的内核编译推荐先看看有关内核编译的文章,这里不多作介绍.
  进入/usr/src/linux
  运行make menuconfig进入菜单配置内核.找到Network Device Support.选则EtherNet,再选则相应的芯片号.如果是ISA系线的NE2000,就选则other ISA cards,选则NE2000/NE1000 ISA support.如果是PCI的网卡,就选则PCI ethernet adapters.注意,PCI卡未必都能这样驱动,很多都不行,得另外找driver.比如Intel PCI EtherExpress Pro 100等.
  有关其它选项希望能多自己摸索.多看看help和how-to.
  配置完内核后,运行make dep;make;make zlilo就可以了.如果内核选项过多会出现过大的情况而无法安装.那么需要把一些不必要的驱动去掉.
  一般这样之后再启动就可以发现网卡了.驱动了网卡,下一步就是设定TCP/IP这些东西.这就不是这里的内容了.
  我的经验,Linux下NE2000兼容卡都比较好设.3c系列的卡也都有支持.至于其它卡比如我的DEC 21140就麻烦很多.
  另外有些卡即使用某种芯片也未必就能用这个芯片的驱动,这种情况就是有驱动程序也不能用,就需要上网查了.
  有关Intel Etherexpress系列卡的配置.Linux内核中有Etherexpress 16的支持,但没有其它卡的driver.在http://cesdis.gsfc.nasa.gov/linux/dr...??EtherExpress 100B pro的讨论.在那里可以download到一个c源码的驱动程序,编译进内核就可以了.
作者: sunweipeng    时间: 2009-7-30 08:25
那么,如果以上都试过了,而你的网卡的确还是不能认,那么你需要上网查driver了.在网上查东西是一门看起来简单实际上极体现经验的学问.建议寻找Linux网卡的driver从http://cesdis.gsfc.nasa.gov/linux/dr...?得驱动有:
DEC DC21*4* Tulip chip based cards
3Com PCI Etherlink PCI and EISA cards
Intel EtherExpress Pro100B, Pro100+ and Pro10+ PCI
3c515 ISA Fast Etherlink card
SMC EtherPower II (EPIC/100 83c170 chip) driver.
RealTek RTL8129/8139 driver.
Lite-On lc82c168 PNIC driver (now merged with the Tulip driver).
Macronix MX98713 and ASIX experimental drivers are now merged with the Tulip driver).
VIA Rhine (VT86C100A and 3043) driver (now released).
Winbond w89c840 driver (beta test). Note: this driver was written without official documentation.
TI ThunderLAN driver (external link -- Caldera/James Banks).
Hewlett Packard 100VG driver updates (external link -- Yaroslav).

Intel EtherExpress Pro/10 PCI driver (remote link).
3c509/3c529/3c579 ISA/MCA/EISA EtherLink III driver update. The driver now detects multiple cards when loaded as a module.
AMD LANCE/PCnet driver update. The driver is now usable as a loadable module.
Cirrus/Crystal/IBM CS8900 series driver (remote link).
PCI NE2000 driver (local page)
PCI NE2000 updates (remote link)

Intel Etherexpress Pro 100,
DEC 21X4* based board,
3Com EtherLink III PCI/EISA (3c590 3c592,3c595,3c597,3c900 3c905)
Intel EtherExpress Pro/10 PCI9 With i82596 Chip)
TI ThunderLan
PCI NE2000
Packet Engines Yellowfin G-NIC
SMC EtherPower II (EPIC/100 83c170 chip)
RealTek RTL8129/8139

  同时还有一个Ecom EtherLink III family 的setup程序,没有用过,也许不错.
  如果这里你还是没有找到相应的网卡驱动,那么就去search了.我推荐的方法是上Internet Newsgroup查.因为你绝对不是第一个在Linux下用这个网卡的人,你的问题绝对有人在网络上问过.而且有人回答过.那么问题就是如何找到他. 最简单的方法是打开netscape 到http://www.dejanews.com去.这里的...是输入21140 linux来搜索,这里Linux是必须的,否则看到上千篇关于21140 win95的驱动问题,是不是很烦?结果21140 linux很快就找到了有关文章.
作者: sunweipeng    时间: 2009-7-30 08:25
很多Linux初学者都有这样的烦恼:好不容易才学会在计算机中安装好Linux,配置好硬件,并能顺利的进入GUI图形用户界面。可是,对于如何在Linux平台中安装软件,对很多新手来说,都是一件十分困难的事情。

Linux平台中的Linux的软件的格式是在太多了,不像在微软的Windows中那样,几乎所有的应用软件都是EXE格式,鼠标双击就能安装。当然, 在KDE或者GNOME环境中除了RPM格式有专用的RPM管理工具比较好安装之外,其他诸如GZ,TAR.GZ等压缩软件就不得不使用命令来解压和安 装。而Linux命令对Linux初学者来说那更是头痛的事情。

Linux软件的安装、卸载问题一直以来都是困扰Linux初学者的难题。究其原因就是Linux与Windows载系统目录,系统配置,软件编译等方面 存在着太大的差别。Linux下的软件的安装主要有以下这两种不同的格式。第一种安装文件名为filename.tar.gz。另外一种安装文件名为 filename.i386.rpm。一般来说,以第一种文件格式发行的软件多数为源码形式发送的。第二种则是直接是以二进制形式发行的。i386表示该 软件是按INTER386指令集编译而成的。所谓的RPM就是RedHatPackageManager的缩写,由RedHat公司开发的软件包和管理程 序。RPM格式的软件对与Linux初学者来说在安装上是非常方便的。RPM的设计目的就是具有方便的升级功能;强大的查询功能;安全的系统校验;允许用 户能够使用“纯净”的源代码。


RPM的使用方法很简单,使用简单的命令即可安装一个RPM软件:
rpm-ivhrpmfilename.i386.rpm
级RPM文件命令为:
rpm-Uvhrpmfilename.i386.rpm,系统会自动删除相应的软件包老版本,如果配置文件同新版本不兼容,则会自动将其保存为另外一个oldconfig.rpmsave文件。
查询RPM文件命令为:
rpm-qrpmfilename


具体查询可以参考以下参数来实现不同的查询功能:

rpm-qa查询系统

rpm-qffilename查询包含该文件的软件包

rpm-qF输入为标准输入,如find/usr/bin|rpm-qF

rpm-qP同-p参数,但输入为标准输入

rpm-qp软件包名,查询该软件包

用RPM校验软件包
作者: sunweipeng    时间: 2009-7-30 08:25
可用RPM校验软件包大孝文件权限、类型及属主信息,MD5码校验等信息。

Rpm-Vfilename检查校验该软件包中的文件是否存在

Rpm-Vf/bin/vi校验该软件包中的单个文件

Rpm-Va校验安装的所有软件包

RPM软件总体来说在安装使用方面还是简单的,为了能更快速的安装Linux软件,在这里推荐大家使用一个Linux下当然软件安装辅助软件,FISH (FulxoInstallSHield),该软件就是让你安装应用程序更加地方便,因为在Linux当中,因为文件格式的不同而使软件安装方法的不同, 例如RPM,Debian格式,gzip格式,tar格式等等,FISH可以自动容易地识别这些格式,就像在Windows中那样能自动帮你安装应用软 件。并且,FISH能在KDE,GNOME等多个桌面环境中运行,也能在Linux终端的,命令栏中运行,FISH无论是对Linux新手还是Linux 高手都是十分适用的,FISH能为你节约在Linux下安装应用软件的时间。下面就让我们来看一看在Linux系统中使用FISH (FulxoInstallSHield)和传统的Linux软件安装方法的比较。

FISH的下载:

FISH是一个免费的的自由软件,在其网站上提供了最新版本的下载。fish.sourceforge.net/download.html

FISH体积很小,不足60KB。

FISH的编译和安装

下载FISH到本地硬盘后可以运行

tarzxvffish-0.0.1.tar进行解压到一个目录中。

然后进入该目录cd../fish-0.0.1中

对比:FISH的编译和安装过程事实上也是传统的Linux下软件的解压和安装方法。没有尝试过在Linux下安装*.tar软件的朋友注意了,现在我们就介绍传统的Linux下软件的解压和安装方法,让大家熟悉一下。

在Linux中,使用命令tarzxvffile.tar.gz(file.tar.gz就是目标软件的完整名字)就可以解压这个压缩包里面的东西了。

注意,在解压.tar.gz后缀名的软件包的时候可以加上如下的参数:如zxvf,zvf

x解开备份文件
作者: sunweipeng    时间: 2009-7-30 08:26
v处理文件时显示更多的帮助信息

f后面跟着filename,他是要读入或者写入的备份文件的文件名。解压缩时,filename就是要解开的软件包的完整名字

z解开压缩后的备份文件



相反的,如果我们需要把Linux中某个一个目录下的所有文件给做成一个.tar.gz的软件包,则应当进行如下操作。

假如在目录xxx下,有三个文件,t0.c,t1.c,Makefile那我们可以在当前目录下输入如下命令:

tarcvfxxx.tarxxx|gzip-5>;xxx.tar.gz

上面的命令实际上是先把三个文件用tar打包成xxx.tar然后用gzip压缩成xxx.tar.gz。通过这两个步骤,打包压缩文件就完成了。

tar后面的vf就是参数:

v处理文件时显示更多的帮助信息

f后面跟着filename,它是要读入或者写入的备份文件的文件名。

gzip后面的-5可以是-1-2...,-9。

其中,-1压缩速度最快,但效果不好,反之-9压缩是速度最慢压缩的效果却最好。

现在就可以对FISH进行编译安装了:

运行下面的命令

%./configure
%make
%makeinstall


FISH的使用
作者: sunweipeng    时间: 2009-7-30 08:26
基本用法:

使用FISH来安装RPM文件是一个不错的选择,FISH支持正常的RPM格式的文件,FISH能自动的安装RPM格式的文件。

下面是如何利用FISH来安装RPM文件

使用FISH来安装RPM文件最重要的是要告诉FISH要安装的RPM文件在什么地方和要FISH执行什么样的命令:

fish--analyse--depfile

上面是让FISH来分析某个RPM文件包的从属关系,其中directoryname就是该RPM文件包所在的目录,filename就是该RPM压缩包的文件名。由此可见,使用FISH来安装所需要记住的参数并不多,使用FISH来安装是比较适合Linux初学者的。

对比:从网上或者光盘上下载Linux软件包,.rpm结尾的文件是很常见的,这些文件的安装要使用RPM套件管理系统,才能安装。在

一般情况下,安装rpm包是很容易的,如过你有一个包test.i386.rpm,你可以这样来安装:

rpm-itest.i386.rpm

fish--depfile-i

上面命令是让FISH来安装某个RPM文件,这个命令主要是使用存储在filename中的文件从属信息来安装RPM压缩包要想得到更多的关于FISH的帮助信息,请输入fish--help就能获取。
作者: sunweipeng    时间: 2009-7-30 08:26
在Linux系统中,如何有效地对存储空间加以使用和管理,是一项非常重要的技术。本章讲述如何查看系统中存储空间的使用情况、如何进行文件的转储、以及如何进行软盘的格式化。

  磁盘空间管理

  系统软件和应用软件,都要以文件的形式存储在计算机的磁盘空间中。因此,应该随时监视磁盘空间的使用情况。Linux系统提供了一组有关磁盘空间管理的命令。

  df命令

  功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

  语法:df [选项]

  说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。

  该命令各个选项的含义如下:

  -a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。

  -k 以k字节为单位显示。

  -i 显示i节点信息,而不是磁盘块。

  -t 显示各指定类型的文件系统的磁盘空间使用情况。

  -x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。

  -T 显示文件系统类型。

  例1:列出各文件系统的磁盘空间使用情况。

  $ df

  Filesystem 1 K-blocks Used Available Use% Mounted on

  /dev/hda2 1361587 1246406 44823 97% /

  df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第 3,4列分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间。最后,Mounted on列表示文件系统的安装点。
作者: sunweipeng    时间: 2009-7-30 08:26
例2:列出各文件系统的i节点使用情况。

  $ df -ia

  Filesystem Inodes IUsed IFree Iused% Mounted on

  /dev/ hda2 352256 75043 277213 21% /

  none 0 0 0 0% /proc

  localhost:(pid221) 0 0 0 0% /net

  例3:列出文件系统的类型。

  $ df -T

  Filesystem Type 1K-blocks Used Available use% Mounted on

  /dev/hda2 ext2 1361587 1246405 44824 97% /

  本例中的文件系统是ext2类型的。

  du命令

  du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。

  功能:统计目录(或文件)所占磁盘空间的大小。

  语法:du [选项] [Names…]

  说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。

  该命令的各个选项含义如下:

  -s 对每个Names参数只给出占用的数据块总数。

  -a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。

  -b 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。

  -k 以1024字节为单位列出磁盘空间使用情况。

  -c 最后再加上一个总计(系统缺省设置)。

  -l 计算所有的文件大小,对硬链接文件,则计算多次。

  -x 跳过在不同文件系统上的目录不予统计。
作者: sunweipeng    时间: 2009-7-30 08:26
下面举例说明du命令的使用:


  例1:查看/mnt目录占用磁盘空间的情况。 $ cd /mnt $ ls -lFR total 10 -rwxrwxrwx 2 root root ll0 Ju1 3l 00:33 aa*

  drwxr-xr-x 2 root root l024 Ju1 20 14:16 dev/

  -rw-r--r-- 1 root root 6229 Aug 2 0l:39 s1ack

  drwxrwxrwx 2 root root 1024 Aug 2 02:09 var/

  1rwxrwxrwx 1 root root l0 Aug 2 0l:51 wei->;/home/wei/

  dev:

  tota1 0

  lrwxrwxrwx 1 root root 8 Ju1 20 l4:l6 cdrom->;/dev/hdb

  var:

  tata1 37

  -r-xr-xr-x l root root 36064 Aug 2 02:09 rawrite. exe*
 

  例2:列出各目录所占的磁盘空间,但不详细列出每个文件所占的空间。

  $ du

  l ./dev

  38 ./var

  48 .

  输出清单中的第一列是以块为单位计的磁盘空间容量,第二列列出目录中使用这些空间的目录名称。

  注意不带选项的du命令将从当前目录开始沿着目录结构向下工作直到列出所有目录的容量为止。这可能是一个很长的清单,有时只需要一个总数。这时可在du命令中加-s选项来取得总数:

  $ du –s /mnt

  /mnt

  例3:列出所有文件和目录所占的空间(使用a选项),而且以字节为单位(使用b选项)来计算大小。

  $ du -ab

  8 ./dev/cdrom

  l032 ./dev

  36064 ./var/rawrite. exe

  37088 ./var

  6229 ./s1ack

  1l0 ./aa

  l0 ./wei

  45493 .

  磁 盘 操 作

  dd命令

  功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用 dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。
作者: sunweipeng    时间: 2009-7-30 08:27
语法:dd [选项]

  if =输入文件(或设备名称)。

  of =输出文件(或设备名称)。

  ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

  skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

  obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

  bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

  cbs = byte 一次转换bytes字节。

  count=blocks 只拷贝输入的blocks块。

  conv = ASCII 把EBCDIC码转换为ASCIl码。

  conv = ebcdic 把ASCIl码转换为EBCDIC码。

  conv = ibm 把ASCIl码转换为alternate EBCDIC码。

  conv = block 把变动位转换成固定字符。

  conv = ublock 把固定位转换成变动位。

  conv = ucase 把字母由小写转换为大写。

  conv = lcase 把字母由大写转换为小写。

  conv = notrunc 不截短输出文件。

  conv = swab 交换每一对输入字节。

  conv = noerror 出错时不停止处理。

  conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

  例1:要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:

  $ dd if =/dev/fd0 of = /tmp/tmpfile

  拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:

  $ dd if = /tmp/tmpfile of =/dev/fd0

  软盘拷贝完成后,应该将临时文件删除:

  $ rm /tmp/tmpfile

  例2:把net.i这个文件写入软盘中,并设定读/写缓冲区的数目。

  (注意:软盘中的内容会被完全覆盖掉)

  $ dd if = net.i of = /dev/fd0 bs = 16384

  例3:将文件sfile拷贝到文件 dfile中。

  $ dd if=sfile of=dfile
作者: sunweipeng    时间: 2009-7-30 08:27
fdformat 命令

  软盘是用户常用的存储介质之一。软盘在使用之前必须先作格式化操作,然后可以用tar、dd、cpio等命令存储数据,也可以在软盘上建立可安装的文件系统。

  功能:低级格式化软盘

  语法:format [-n] device

  说明:该命令的作用是对软盘进行格式化。

  -n 软盘格式化后不作检验。

  device 指定要进行格式化的设备,通常是下述设备之一:

  /dev/fd0d360

  /dev/fd0h1200

  /dev/fd0D360

  /dev/fd0H360

  /dev/fd0D720

  /dev/fd0H720

  /dev/fd0h360

  /dev/fd0h720

  /dev/fd0H1440
作者: sunweipeng    时间: 2009-7-30 08:27
wall命令

这个命令的功能是对全部已登录的用户发送信息,用户可以先把要发送的信息写好存入一个文件中,然后输入:

# wall < 文件名

这样就能对所有的用户发送信息了。

在上面的例子中符号“<”表示输入重定向,有关它的含义和用法请参阅第十章的有关内容。

例如:

# wall ‘Thank you!’

Broadcast message from root (tty1) Fri Nov 26 14:15:07 1999…

Thank you!

#

执行以上命令后,用户的屏幕上显示出“Thank you!”信息后,并不出现系统提示符$(#),再次按回车键后,屏幕出现系统提示符。

write命令

write命令的功能是向系统中某一个用户发送信息。

该命令的一般格式为:

write 用户帐号 [终端名称]

例如:

$ write xxq

hello

此时系统进入发送信息状态,用户可以输入要发送的信息,输入完毕,希望退出发送状态时,按组合键即可。

上述命令执行的结果是,用户xxq的屏幕上会显示:

message from test@test.tlc.com.cn tty1 at 15:51…

hello

EOF
作者: sunweipeng    时间: 2009-7-30 08:27
mesg指令

mesg命令设定是否允许其他用户用write命令给自己发送信息。如果允许别人给自己发送信息,输入命令:

# mesg y

否则,输入:

# mesg n

对于超级用户,系统的默认值为 n;而对于一般用户系统的默认值为y。

如果mesg后不带任何参数,则显示当前的状态是y还是n,如:

$ mesg

is y

或:

# mesg

is n

sync命令

sync命令是在关闭Linux系统时使用的。

用户需要注意的是,不能用简单的关闭电源的方法关闭系统,因为Linux象其他Unix系统一样,在内存中缓存了许多数据,在关闭系统时需要进行内存数据与硬盘数据的同步校验,保证硬盘数据在关闭系统时是最新的,只有这样才能确保数据不会丢失。一般正常的关闭系统的过程是自动进行这些工作的,在系统运行过程中也会定时做这些工作,不需要用户干预。

sync命令是强制把内存中的数据写回硬盘,以免数据的丢失。用户可以在需要的时候使用此命令。该命令的一般格式为:

sync
作者: sunweipeng    时间: 2009-7-30 08:28
shutdown命令

shutdown 命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式是hh:mm,表示小时和分钟;时间段由“+”和分钟数表示。系统执行该命令后,会自动进行数据同步的工作。该命令的一般格式为:

shutdown [选项] [时间] [警告信息]

命令中各选项的含义为:

- k 并不真正关机,而只是发出警告信息给所有用户。

- r 关机后立即重新启动。

- h 关机后不重新启动。

- f 快速关机,重启动时跳过fsck。

- n 快速关机,不经过init程序。

- c 取消一个已经运行的shutdown。

需要特别说明的是,该命令只能由超级用户使用。

例1:系统在十分钟后关机,并且马上重新启动。

# shutdown – r +10
 

例2:系统马上关机,并且不重新启动。

# shutdown – h now
作者: sunweipeng    时间: 2009-7-30 08:28
free命令

free命令的功能是查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。该命令的一般格式为:

free [-b | -k | -m]

命令中各选项的含义如下:

-b 以字节为单位显示。

-k 以K字节为单位显示。

-m 以兆字节为单位显示。

例:

$ free

total used free shared buffers cached

Mem: 63076 32020 31056 8204 16360 6048

-/+ buffers/cache: 9612 53464

Swap: 64476 2240 62236

uptime命令

uptime命令显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。该命令的一般格式为:

uptime

例:

# uptime

4:43pm up 1 day, 5:51, 2 user, load average: 0.01, 0.01, 0.00

与用户有关的命令
作者: sunweipeng    时间: 2009-7-30 08:28
passwd命令

出于系统安全考虑,Linux系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用useradd命令增加时,还需使用passwd命令为每一位新增加的用户设置口令;用户以后还可以随时用passwd命令改变自己的口令。该命令的一般格式为:

passwd [用户名]

其中用户名为需要修改口令的用户名。只有超级用户可以使用“passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令。该命令的使用方法如下:

输入passwd< Enter>;;

在(current) UNIX passwd:下输入当前的口令

在new password:提示下输入新的口令(在屏幕上看不到这个口令):

系统提示再次输入这个新口令。

输入正确后,这个新口令被加密并放入/etc/shdow文件。选取一个不易被破译的口令是很重要的。选取口令应遵守如下规则:

口令应该至少有六位(最好是八位)字符;

口令应该是大小写字母、标点符号和数字混杂的。

超级用户修改其他用户(xxq)的口令的过程如下,

# passwd xxq

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully

#
作者: sunweipeng    时间: 2009-7-30 08:28
su命令

这个命令非常重要。它可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令。如要离开当前用户的身份,可以打exit。

该命令的一般形式为:

su [选项] [? ] [使用者帐号]

说明:若没有指定使用者帐号,则系统预设值为超级用户root。

该命令中各选项的含义分别为:

? c 执行一个命令后就结束。

? 加了这个减号的目的是使环境变量和欲转换的用户相同。

? m 保留环境变量不变。

例1: 变成root用户

$ su ?

password: 【输入超级用户的密码】

例2: 变成xu使用者,并执行一个命令就结束。

$ su -xu ? c “rmdir cat1”

其他命令
作者: sunweipeng    时间: 2009-7-30 08:28
echo命令

echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。该命令的一般格式为:

echo [ -n ] 字符串

其中选项n表示输出文字后不换行;字符串可以加引号,也可以不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。

例1:

$ echo ‘Thank you !’

Thank you !

例2:

$ echo Thank you !

Thank you !

cal命令

cal命令的功能是显示某年某月的日历。该命令的一般格式为:

cal [选项] [月 [年]]

命令中各选项的含义为:

- j 显示出给定月中的每一天是一年中的第几天(从1月1日算起)。

- y 显示出整年的日历。

 

例1 显示1999年11月的日历。

$ cal 11 1999

November 1999

Su Mo Tu We Th Fr Sa

1 2 3 4 5 6

7 8 9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30

例2 显示1999年11月的每一天是一年中的第几天。

$ cal – j 11 1999

November 1999

Sun Mon Tue Wed Thu Fri Sat

305 306 307 308 309 310

311 312 313 314 315 316 317

318 319 320 321 322 323 324

325 326 327 328 329 330 331

332 333 334
作者: sunweipeng    时间: 2009-7-30 08:29
date命令

date命令的功能是显示和设置系统日期和时间。该命令的一般格式为:

date [选项] 显示时间格式(以+开头,后面接格式)

date 设置时间格式

命令中各选项的含义分别为:

-d datestr, --date datestr 显示由datestr描述的日期

-s datestr, --set datestr 设置datestr 描述的日期

-u, --universal 显示或设置通用时间

时间域

% H 小时(00..23)

% I 小时(01..12)

% k 小时(0..23)

% l 小时(1..12)

% M 分(00..59)

% p 显示出AM或PM

% r 时间(hh:mm:ss AM或PM),12小时

% s 从1970年1月1日00:00:00到目前经历的秒数

% S 秒(00..59)

% T 时间(24小时制)(hh:mm:ss)

% X 显示时间的格式(%H:%M:%S)

% Z 时区
作者: sunweipeng    时间: 2009-7-30 08:29
日期域

% a 星期几的简称( Sun..Sat)

% A 星期几的全称( Sunday..Saturday)

% b 月的简称(Jan..Dec)

% B 月的全称(January..December)

% c 日期和时间( Mon Nov 8 14:12:46 CST 1999)

% d 一个月的第几天(01..31)

% D 日期(mm/dd/yy)

% h 和%b选项相同

% j 一年的第几天(001..366)

% m 月(01..12)

% w 一个星期的第几天(0代表星期天)

% W 一年的第几个星期(00..53,星期一为第一天)

% x 显示日期的格式(mm/dd/yy)

% y 年的最后两个数字( 1999则是99)

% Y 年(例如:1970,1996等)

需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

例1:用指定的格式显示时间。

$ date ‘+This date now is =>;%x ,time is now =>;%X ,thank you !’

This date now is =>;11/12/99 ,time is now =>;17:53:01 ,thank you !
作者: sunweipeng    时间: 2009-7-30 08:29
例2:用预定的格式显示当前的时间。

# date

Fri Nov 26 15:20:18 CST 1999

例3:设置时间为下午14点36分。

# date -s 14:36:00

Fri Nov 26 14:15:00 CST 1999

例4:设置时间为1999年11月28号。

# date -s 991128

Sun Nov 28 00:00:00 CST 1999

clear命令

clear命令的功能是清除屏幕上的信息,它类似于DOS中的 cls命令。清屏后,提示符移动到屏幕左上角。

例如:$ clear
作者: sunweipeng    时间: 2009-7-30 08:29
1 首先要了解的几个概念
1.1 启动管理器
启动管理器是存储在磁盘开始扇区中的一段程序,例如,硬盘的MBR(Master Boot
Record),在系统完成启动测试后,如果系统是从MBR启动,则BIOS(Basic Input/Output
System)将控制传送给MBR。然后存储在MBR中的这段程序将运行。这段程序被称为启动管理器。它的任务就是将控制传送给操作系统,完成启动过程》有许多可用的启动管理器,包括GNU
GRUB (Grand Unified Boot Loader),Bootmanager, LILO (LInux LOader),
NTLDR (boot loader for Windows NT systems),等等等.
1.2 什么是GRUB?
grub 是一个多重启动管理器。grub是GRand Unified
Bootloader的缩写,它可以在多个操作系统共存时选择引导哪个系统。它可以引导的操作系统包括:
Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows
NT,Windows2000,WinXP。它可以载入操作系统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Windows
98)来完成引导。
1.3 GRUB的特点
特别适用于linux与其它操作系统共存情况。
支持大硬盘
现在大多数Linux发行版本的lilo都有同样的一个问题:根分区(/boot分区)不能分在超过1024柱面的地方,一般是在8.4G左右的地方, 否则lilo不能安装,或者安装后不能正确引导系统。而grub就不会出现这种情况,只要安装时你的大硬盘是在LBA模式下,grub就可以引导根分区在 8G以外的操作系统。

支持开机画面  
grub支持在引导开机的同时显示一个开机画面。对于玩家来说,这样可以制作自己的个性化开机画面;对于PC厂商,这样可以在开机时显示电脑的一些信息 和厂商的标志等。grub支持640x480,800x600,1024x768各种模式的开机画面,而且可以自动侦测选择最佳模式,与Windows那 320x400的开机画面不可同日而语。

两种执行模式
grub不但可以通过配置文件进行例行的引导,还可以在选择引导前动态改变引导时的参数,还可以动态加载各种设备。例如你在Linux下编译了一个新的 核心,但不能确定它能不能工作,你就可以在引导时动态改变grub的参数,尝试装载这个新的核心进行使用。Grub的命令行有非常强大的功能,而且支持如 bash或doskey一样的历史功能,你可以用上下键来寻找以前的命令。

菜单式选择   grub使用一个菜单来选择不同的系统进行引导。你还可以自己配置各种参数,如延迟时间,默认操作系统等。
分区大小改变后不必重新配置   grub是通过文件系统直接把核心读取到内存,因此只要操作系统核心的路径没有改变,grub就可以引导系统。
作者: sunweipeng    时间: 2009-7-30 08:30
除此之外,Grub还有许多非常强大的功能。例如支持多种外部设备,动态装载操作系统内核,甚至可以通过网络装载操作系统核心。Grub支持多种文件系 统,支持多种可执行文件格式,支持自动解压,可以引导不支持多重引导的操作系统,支持网络启动等。

1.4 MBR和第一扇区
你可以简单的理解为MBR是整个硬盘的物理第一位置,而第一扇区是硬盘的物理第二位置.
1.5 一个GRUB配置文件
基于本例的分区如下:
hda 15G
hda1 8G / RED HAT LINUX8.0
hda5 7G /home
hdc 20G
hdc1 6.4G WinXP
hdc5 6.4G
hdc6 6.4G
hdc7 6.4G
#fdisk -l
# Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 894 7181023+ b Win95 FAT32
/dev/hdc2 895 2434 12370050 f Win95 Ext'd (LBA)
/dev/hdc5 895 1787 7172991 b Win95 FAT32
/dev/hdc6 1788 2434 5196996 b Win95 FAT32
Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1020 8193118+ 83 Linux
/dev/hda2 1021 1802 6281415 83 Linux
/dev/hda3 1803 1867 522112+ 82 Linux swap
grub.conf,这个文件位于;/boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to
this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=3
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.18-14)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
title Microsoft Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
chainloader (hd1,0)+1
makeactive
boot
作者: sunweipeng    时间: 2009-7-30 08:30
2 解读grub.conf文件
我们将来看看grub.conf文件内语句,(注:...)内的东西是我们的解读内容.
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to
this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,0)
# kernel /boot/vmlinuz-version ro root=/dev/hda1
# initrd /boot/initrd-version.img
#boot=/dev/hda (注:以上以符号井"#"开头的行表示被注释掉,没有任何意义)
default=0 (注:默认的操作系统就是由default控制的。default后加一个数字n,表明是第
n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一 个软驱是fd0,等等。所以,default 0
表示默认的操作系统在这儿是 Red Hat Linux (2.4.18-14)如果你修改成1就是WinXP了)
timeout=3 (注:timeout表示默认等待的时间,这儿是3秒钟。超过3秒,用户还没有作出选
择的话,系统将自动选择默认的操作系统;当然你可以改成任何你乐意的时间)
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
(注:指定开机画面文件splash.xpm.gz的位置)
title Red Hat Linux (2.4.18-14) (注:表示Red Hat Linux的菜单项)
root (hd0,0) (注:表示第一个硬盘第一个分区,这里的root和系 统内的root不是一码事!详细如下说明)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ (注:指定内核的位置,详细说明如下 文)
initrd /boot/initrd-2.4.18-14.img (注:初始化)
title Microsoft Windows XP (注:表示Microsoft Windows XP的菜单项)
map (hd0) (hd1) (注:map是命令,详细如下)
map (hd1) (hd0)
root (hd1,0) (注:这是指第二个硬盘(从硬盘)上第一个分区)
chainloader (hd1,0)+1 (注:链式装入器,装入一个扇区的数据然后把引导 权交给它。详细说明如下)
makeactive
boot
(注:在 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.4.18-14 ro
root=LABEL=/说明/boot/vmlinuz-2.4.18-14就是要载入的内核。后面的都是传递给内核的参数。root=LABEL= /就是linux的硬盘分区表示法,ro是readonly的意思。initrd用来初始的linux
image,并设置相应的参数。
命令map:当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windowsxp,就可以使用map命令.你能够将hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统
。命令形式如下:
grub>; map (hd0) (hd1)
grub>; map (hd1) (hd0)
GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd1,0)
的引导记录中装入winxp自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 --
它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。
GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue
”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗?
有趣吧! )
作者: sunweipeng    时间: 2009-7-30 08:30
3 如何使用grub?
3.1 安装
你可以从ftp://alpha.gnu.org/pub/gnu/grub 下载GRUB的源代码。
得到文件grub-0.5.96.1.tar.gz,所以这样做:
# tar -xvzf grub-0.5.96.1.tar.gz
这个命令将解开的文件和目录放在一个名为grub-0.5.96.1的目录中。现在运行如
下命令:
#cd grub-0.5.96.1
# ./configure
如果你想定制GRUB,使之包含流行的文件系统和对网卡的支持,或者删除你不需要的网卡,可以运行如下命令:
# ./configure --help
这个命令将输出所有的命令选项。现在可以使用—enable和—disable选项增加或
删除对特定网卡的支持。(注意:GRUB支持网络启动)
为了开始编译过程,键入如下命令:
# make
# make install
至此你已经为安装GRUB真正做好了准备。
将GRUB的相关文件保存在诸如/boot/grub的目录中是一个好主意。为此,按如下步骤:
1.默认状态下,GRUB所有文件将安装在/usr/share/grub/i386-pc(或者在
/usr/local/share/grub/i386-pc目录下,这只取决于你的shell变量的设置。)
2.建立一个叫做/boot/grub的目录,然后拷贝下列文件到这个目录:
stage1 stage2 * stage1 5
稍候将解释这些文件。同时也要把GRUB(可能在/usr/sbin或者/usr/local/sbin
目录下)拷贝到/boot/grub目录下。
安装GRUB可以分为三个单独的步骤:
1.将“stage1”安装到MBR中。
2.设置“stage2”的地址或者位置。
3.设置一个菜单或选项,用来决定启动哪一个操作系统。
使用下面的命令开始安装GRUB。
#cd /boot/grub
# ./grub
这个命令根据BIOS的设置检测硬件设备,同时产生一些输出信息。这会花较长的时间。
end_request: I/O error, dev 02:00 (floppy), sector 0
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
TAB键可列出可能的命令列表。其它情况下TAB会列出设备或文件名。类似下面的提示会出现:
grub>;
现在,假设你将Linux安装在了第一块硬盘的第一个分区中或者/dev/hda1中。记住GRUB的命名规则,将上面的名字改为(hd0,0)。键入下面的命令:

grub>; install (hd0,0)/boot/grub/stage1 (hd0)
(hd0,0)/boot/grub/stage2
p (hd0,0)/boot/grub/menu.conf
现在分析一下这个命令的细节。
install
一个内置的命令,它告诉GRUB将(hd0,0)/boot/grub/stage1安装到hd0的主引导纪录中。
(hd0,0)/boot/grub/stage2
告诉GRUB stage2映象的位置。
p with the the following options: (hd0,0)/boot/grub/menu.conf
为菜单的显示设置配置文件。
作者: sunweipeng    时间: 2009-7-30 08:44
下面是对这个命令用法的总结:
1.install
2.ource_of_stage1
3.where_to_install
4.source_of_stage2
5.p source_of_configuration_file
现在,你完成了硬盘上的基本安装工作。
在软盘上的安装:
为了在软盘上安装GRUB,你要会用“dd”命令,并且了解它是如何工作的。为了做一张GRUB启动盘,你要将stage1和stage2文件放到软盘的开始扇区中。

安装stage1到软盘上:
插入一张已格式化的软盘,键入命令:
# dd if=stage1 of=/dev/fd0 bs=512 count=1
命令的详细说明如下:
if=input file
i.e., stage1
of=output file
i.e., floppy drive (this may be different on your computer)
bs=bytes to read and write
Here it is 512 bytes.
count=how many times to perform this operation
每次拷贝“bs”数目的块到目标地址。
安装stage2到软盘
# dd if=stage2 of=/dev/fd0 bs=512 seek=1
这里的步骤同stage1的相同,除了一个seek选项外。Seek选项将调过一个“bs”。例如,在上面的命令中bs的值是512,这样seek=1意味着将跳过软盘上前512个字节
,从513字节开始。这将使得第一步操作不会覆盖stage1的前512字节。
现在你完成了基本的软盘驱动器安装。
如果已经安装了grub要把grub重新安装到主引导扇区上,只需要简单打入makebootable命令就可以了。
3.2 配置grub
grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此文件则不进入菜单模式而直接进入命令行模式。

现在,我们来看一下如何在启动后进入各种操作系统,如何建立menu.conf文件。我们就从GRUB支持的启动过程开始。可以有两种方法来完成启动过程:

·A.通过调用内核本地启动
·B.连续启动或者将控制转给另一个引导器
A模式启动过程
1.配置跟设备或者告诉GRUB你的根文件系统。
2.告诉GRUB你的内核影像的位置,然后将参数传送给内核。
作者: sunweipeng    时间: 2009-7-30 08:45
3.重新启动,试一下。
为了启动Linux,将内核以bzImage的文件名放在/boot/目录中,跟文件系统是
/dev/hda1,或者GRUB中的(hd0,0)。启动过程如下:
1.root (hd0,0) [This sets the root partition]
2.kernel /boot/bzImage root=/dev/hda1 [This sets the kernel]
B模式启动过程(这种模式假设当前的分区中安装了另一个启动管理器,例如LILO
或者NTLDR):
1.设置根分区但不要安装它
2.激活这个分区
3.配置需要启动的分区的第一个扇区
4.重新启动,看一下效果。
我们在试试启动安装在/dev/hdc1或者(hd1,0)的widows。启动windows的过程如下:
1.rootnoverify (hd1,0)
2.makeactive
3.chainloader +1 [+1 sets the first sector of the current root
partition]
4.boot [transfers the control and quits GRUB]
menu.conf文件:它用于建立启动多操作系统时的菜单。建立menu.conf并不难。它使用简单的英语,就象你在这一节看到的那样。
所有的菜单项目都以没有逗号分隔的“title TITLENAME”开头。你可以随意设置
TITLENAME。
设置Linux启动菜单步骤如下:
1.设置标题
2.设置根分区
3.设置内核的相应参数
4.启动
一个菜单例子:
title Red Hat Linux (2.4.18-14)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/
initrd /boot/initrd-2.4.18-14.img
前面有#的行是一个注释。
建立启动Windows 或者 DOS的菜单:
title Windoze
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
又或者:
title Microsoft Windows XP
map (hd0) (hd1)
map (hd1) (hd0)
root (hd1,0)
chainloader (hd1,0)+1
makeactive
boot
----
注意:root和rootnoverify都是一样的,把rootnoverify改成root也行。不过经过实践来看。有时引导win时,系统安装好后,是rootnoverify
(hdX.Y)这样形式的,这样会出现windows起不来,出现什么windows什么文件损坏的情况。这时,我们就要把在grub中,引导windows的那段中的rootnoverify改为root

root英文的意思就是根的意思,在这里是让linux知道自己所处的位置,也就是我们所安装linux的/根分区所在的位置 。
----
如果你安装了两个版本的Windows—一个是你自己用的,另一个给你的家人用的—这样第二个就无法安装,因为有提示说Windows已经安装了。
作者: sunweipeng    时间: 2009-7-30 08:45
有一种简单的方法可以安装两个版本的Windows,即在启动时隐藏一个分区而使用另一个。你甚至可以为你的分区设置密码保护,这样可以避免别人错误的加载你的分区。下面介绍如何完成两个Windows的安装,hda1和hda2
或者 (hd0,0) 和(hd0,1),用到的命令有lock, password, hide 和 unhide。
建立windows 项目"My Entry":
title My Entry
lock
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#----
为了更好的使用lock命令,你需要在配置文件开头使用password命令。Password命令的语法如下:password
secret(“secret”就是密码)。任何时候你都可以通过按p键儿输入密码。
建立Windows 项目"Family Entry"
title Family Entry
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1
boot
任何人都可以启动这个项目,而无须输入密码。
这有一个使用password命令的有趣的窍门。为了在缺省菜单列表或配置文件中隐藏某些项目,你可以使用下面的命令加载一个定制的列表:
password secret
在这个命令中,“secret”是密码,而/boot/grub/secret-list.conf是密码文件。这样做之前,你要先进入到根目录或者给出全路径名。例如:

password secret (hd0,4)/boot/grub/secret-list.conf
还有一个更重要的命令是“map”。当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windows,就可以使用map命令。例如,你能够将 hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统
。命令形式如下:
grub>; map (hd0) (hd1)
grub>; map (hd1) (hd0)
启动FreeBSD:
title FreeBSD 4.0
root (hd0,4,a)
kernel /boot/loader
boot
#----
作者: sunweipeng    时间: 2009-7-30 08:45
这里我们调用了FreeBSD的启动管理器。Root
(hd0,4,a)由四个参数,是因为FreeBSD对一个单独分区进行了虚拟分割。我们称根分区为“a”。如果FreeBSD占据了整个第二块硬盘,这里就应该是root
(hd0,a)。这样,就不是调用内核而是调用FreeBSD的启动管理器,它要比调用内核更易使用。
(注意:推荐在使用OpenBSD和GNU/Hurd之前,要先试一下链式加载。)
现在你已经完成了基本的GRUB编译、安装和配置。你对GRUB了解的越多,就越会发现GRUB是一种控制启动的易用和高效的方法。
各种GRUB命令:
default xx
表明xx是缺省的启动项目
timeout yy
表明在yy秒后缺省启动项目将启动
fallback zz
在第一个启动项目失败后,过了timeout时间后,就将启动zz项目。
color
这个命令将生成彩色菜单。它的语法是:color normal
current_selection。这两个域都可以有两个值,形如foreground/background。例如:
color green/black or light-gray/blue
你也可以使用相关的数字。
记住:所有的值都是从0开始,所以0是第一个
3.3 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控制台)完全相同。
作者: sunweipeng    时间: 2009-7-30 08:45
在 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
制作启动盘后可以用软盘启动引导硬盘上的操作系统,
插入制作好的启动软盘,进入BIOS设定软盘启动。软盘启动成功后就会进入grub的命令行模式
grub>;
要启动一个操作系统,首先指定引导哪个分区上的系统,例如要引导指第一个硬盘上的第一个分区的操作系统,先键入
grub>;root (hd0,0)
接着如果要启动的是Windows系统,键入
grub>;chainloader (hd0,0)+1
注意(hd0,0)要随着硬盘和分区的不同而改变数字。
如果要引导Linux或其他系统,应键入
grub>;kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
注意hda1参数也要随着硬盘和分区的不同而改变,如从第二个硬盘的第一个分区引导则用hdb1
作者: sunweipeng    时间: 2009-7-30 08:46
hdb1。
最后敲入boot就可以启动系统了。
在任何时候不能确定命令或者命令的参数都可以按Tab获得相关的帮助。用上下键可以获得命令的历史记录。其实这些命令就是menu.lst的启动描述,您也可以根据那些描述来自己键入启动命令,最后敲入boot就可以引导系统了。

4 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 将插入
作者: sunweipeng    时间: 2009-7-30 08:46
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,
现在已安装了 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下的脚本程序。
5 常见grub除错方法的思路
首先进去Linux的rescue模式!
用软盘或光盘启动,然后在启动的提示符输入:linux rescue
按照提示进入一个Shell状态,你可以到/mnt/下面看到一个sysimage这么目录,进去以后,就是你安装linux的/分区.
使用命令将根分区变为当前目录的根分区:chroot /mnt/sysimage
然后转到/sbin/这个目录中.
使用fdisk -l 显示当前分区情况,然后使用#grub-install
/dev/hdx(x为你使用的是那块硬盘安装的,一般情况下是hda)
使用exit推出chroot,再使用exit退出linux rescue模式,系统将重新启动!取出光盘,应该可以看到grub安装好了.
在具体的环境中,编辑/boot/grub/grub.conf文件和menu.lst文件.
作者: sunweipeng    时间: 2009-7-30 08:46
将此文章发送到朋友或自己的信箱]
相关文章:
GRUB多重启动管理器
grub的特点
grub的使用
从软盘启动grub
配置grub
GRUB入门
GRUB安装,配置及使用汇总
自己做张grub启动盘防防身
甩开 Lilo,使用 Grub
GRUB引导管理器下,如何恢复red hat linux的root密码?
使用lilo, grub 和 NT OSLoader 进行多重引导的互相嵌套
用安装盘来修复GRUB
扫盲行动之:GRUB三步通
GRUB多重启动管理器




欢迎光临 热点科技 (http://www.itheat.com/activity/) Powered by Discuz! X3.2