Linux故障

来源:互联网 发布:淘宝客 网址劫持 编辑:程序博客网 时间:2024/05/01 06:43
Linux操作系统12则经典应用技巧  
本文介绍了Linux操作系统应用过程中12则经典技巧,合理应用这些技巧可以更好的使用Linux系统。 
  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 ,从而提高了输入效率。 


  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”就可以了。


.Linux常见故障的紧急处理方法  2010-10-12 22:49:30|  分类: Linux系统故障 |  标签:文件系统  linux  root  急救  mnt   |字号大中小 订阅 .


1.使用急救盘组进行维护
  急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具。用它可以独立启动和运行一个完整的Linux系统。实际上,急救盘组中的第二张盘上就有一个完整的Linux系统,包括root文件系统;而第一张盘则存放了可启动的内核。
  使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是root账户。为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如用下面的命令可在/mnt目录中安装/dev/hda2盘上的ext2fs类型的Linux文件系统:
  # monut -t ext2/dev/hda2/mnt
  注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目录下,如果将硬盘上文件系统安装在/mnt目录下,则硬盘上原来的/etc/passwd文件的路径就是/mnt/etc/passwd。
  2.文件系统被破坏时的处理方法
  当文件系统被破坏时,如果使用的是ext2fs类型的文件系统,就可从软盘运行e2fsck命令来修正文件系统中被损坏的数据。对于其他类型的文件系统,可以使用相应的fsck命令。当从软盘上检查文件系统时,最好不要用mount命令安装。
  注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的“头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么Linux可能会完全不识别该文件系统,这样也就不能安装它了,即使采用e2fsck命令也不能处理这个问题。
  不过,ext2fs类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)边界。可以用如下的命令通知e2fsck使用超级块的备份:
  # e2fsck -b 8193
  -b 8193选项用于显示存放在文件系统中的8193块的超级块的备份数据。
  3.恢复丢失的文件
  如果不小心删除了重要的文件,还可以将相应的文件从急救盘复制到硬盘上。例如,删除了文件/bin/login,此时系统无法正常运行到登录界面,可以用急救盘组启动系统,将硬盘文件系统安装到/mnt目录下,然后使用下述命令:
  #cp -a /bin/login /mnt/bin
  “-a”选项用于告诉cp在拷贝时保持文件的访问权限。当然如果被删除的基本文件不在“急救盘组”中,也就不能用这种方法了。如果以前做过系统备份的话,那么就只有用以前的备份来恢复了。
  4.函数库破坏时的处理方法
  如果不小心将系统函数库文件破坏了,或者破坏了/lib目录下符号链接,那么将导致依赖这些库的命令无法执行。最简单的解决办法是用急救盘组启动系统,在/mnt目录中安装硬盘文件系统,然后修复/mnt/lib目录下的库。
  5.无法用root账号登录系统
  由于系统管理员的疏忽,或者由于系统受到黑客的入侵,系统管理员可能无法用root帐号登录系统。
  对于第1种情况,可能是系统管理员忘记了root密码,用急救盘组就可以解决问题。
  对于第2种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系统,也就是说,Linux系统完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root权限后,还应检查系统被破坏的情况,以防被黑客再次入侵。需要做的最主要的工作就是重新设置root的密码,获得Linux操作系统的控制权。首先用急救盘组启动系统,然后将硬盘的文件系统安装到/mnt目录下,编辑/mnt/etc/passwd文件,将其对应于root账户的一行加密口令域置空,如下所示:
  root::0:0:root:/root:bin/bash
  注:如果系统使用 shadow工具,就需要对文件/etc/shadow进行上述的操作,使root登录系统不需要口令。
  这样,root账户就没有口令了。当重新从硬盘启动Linux系统时,就可以用root账户登录(系统不会要求输入密码)。进入系统后,再用命令passwd设置新的口令。
  6.系统不能启动
  一般来说,如果系统管理员不能正常进入系统,就需要考虑使用急救盘组进入急救模式排除系统的故障。但在没有制作急救盘组的情况下,Linux系统不能启动,该怎么办呢?
  在个人计算机使用 Linux系统时,通常都是Linux和MS Windows 9X或MS Windows NT并存的。
  由于重新安装其他的操作系统,经常会导致原有的Linux不能启动。这主要是因为,这些操作系统默认为计算机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),覆盖掉了Linux的LILO系统引导程序。
  如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的Linux系统,重新运行LILO命令,就可以将LILO系统引导程序写回硬盘的主引导记录,再次开机即可。
  如果没有系统启动盘,如果知道Linux在硬盘上的确切安装分区,且有loadlin程序,就可以重新返回Linux。loadlin是DOS下的程序,运行它可以从DOS下直接启动Linux,快速进入Linux环境。在 Red Hat Linux 6.0光盘的 dosutil目录下就有这个程序。除此之外,还需要一个 Linux启动内核的映像文件vmlinuz,在 Red Hat linux 6.0光盘的 images目录下就有这个文件。
  例如,在Windows 98系统下面,进入DOS的单用户模式,然后运行下述的loadlin命令,即可重新进入Linux系统:
  loadlin vmlinuz root=/dev/hda8
  /dev/hda8是Linux的root文件系统所在的硬盘分区位置。命令执行后,就开始引导Linux系统。用root身份登录后,运行LILO命令,则重新将LILO装入MBR,回到以前多操作系统并存使用的状态。
  7.处理不正常关机引起的故障
  如果Linux不正常关机,有可能导致不能进入Linux的KDE环境而只能处于控制台环境下,而且不断地有大片大片的英文字符向上翻滚。以root身份login后,键入startx命令,出现“x server不能连接”的错误提示。
  这时可以在控制台下,键入setup,出现系统设置菜单,选择其中的“X窗口设置”,然后依照提示正确设置显示器的类型、刷新频率、显存大小、分辨率等。如果一切无误,系统会自动启动X Windows系统,一切便OK了!需要注意的一点是:在用setup进行设置时,可能还会有大片大片的英文字符向上翻滚,请不要惊慌,看清屏幕,继续使用TAB键或方向键,马上便会“柳暗花明
Linux的目录里都装些啥  2010-10-12 22:50:34|  分类: Linux系统故障 |  标签:目录  usr  存放  linux  应用程序   |字号大中小 订阅 .


----搞电脑的人总想知道自己的系统里到底有些什么东西,于是我就在Linux的根目录下运行ls -l(列目录命令),哇,一大串,这许多目录都放些什么呢?我硬着头皮往里钻,功夫不负有心人,终于将这迷宫的秘密揭开了。在此公布天下:
/bin
bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。


/boot
这里存放的是启动Linux时使用的一些核心文件。


/dev
dev是device(设备)的缩写。这个目录下是所有Linux的外部设备,其功能类似DOS下的.sys和Win下的.vxd。在Linux中设备和文件是用同种方法访问的。例如:/dev/hda代表第一个物理IDE硬盘。


/etc
这个目录用来存放系统管理所需要的配置文件和子目录。


/home
用户的主目录,比如说有个用户叫wang,那他的主目录就是/home/wang也可以用~wang表示。


/lib
这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文件。几乎所有的应用程序都须要用到这些共享库。


/lost+found
这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的避难所。对了,有点类似于DOS下的.chk文件。


/mnt
这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。


/proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。


/root
系统管理员(也叫超级用户)的主目录。作为系统的拥有者,总要有些特权啊!比如单独拥有一个目录。


/sbin
s就是Super User的意思,也就是说这里存放的是系统管理员使用的管理程序。


/tmp
这个目录不用说,一定是用来存放一些临时文件的地方了。


/usr
这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。其中包含以下子目录;


/usr/X11R6
存放X-Window的目录;


/usr/bin
存放着许多应用程序;


/usr/sbin
给超级用户使用的一些管理程序就放在这里;


/usr/doc
这是Linux文档的大本营;


/usr/include
Linux下开发和编译应用程序需要的头文件,在这里查找;


/usr/lib
存放一些常用的动态链接共享库和静态档案库;


/usr/local
这是提供给一般用户的/usr目录,在这里安装软件最适合;


/usr/man
man在Linux中是帮助的同义词,这里就是帮助文档的存放目录;


/usr/src
Linux开放的源代码就存在这个目录,爱好者们别放过哦!


/var
这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在/var/log目录中
Linux环境下Oracle的安装与配置  2010-10-15 22:16:14|  分类: Linux系统故障 |  标签:oracle_home  安装  linux  export  rpm   |字号大中小 订阅 .


----随着Oracle for Linux 8.0.5版本的推出,Linux环境下的高端数据库应用也达到了一个新高度。但由于Oracle自身的复杂性,在Linux环境下安装涉及很多方面的因素。我们将分三个方面来讨论在Linux RedHat 6.0环境下Oracle 8.0.5的安装。 
一、Linux核心与环境的调整 


----在安装Oracle之前,要对RedHat 6.0的Linux内核与环境进行调整。 


1.在完成RedHat 6.0 Linux的缺省安装后,需要安装以下软件包: 


kernel-source-2.2.5-15.i386.rpm 


Linux 2.2.5内核源码,主要用于修改核心参数后重生成内核。 


tcl-8.0.4-29.i386.rpm 


该软件包是安装Oracle Intelligent Agent包所必需的。 


Compat-binutils-5.2-2.9.0.23.1.i386.rpm 


Compat-glibc-5.2-2.0.7.2.i386.rpm 


Compat-egcs-5.2-1.0.3a.1.i381.rpm 


Compat-egcs-C++-5.2-1/0/3a.1.i386.rpm 


Compat-libs-5.2-1.i386.rpm 


2.调整Linux核心参数 


----根据Oracle 8.0.5对Linux核心内存参数的要求,可对Linux核心参数进行调整。编辑修改/usr/src/linux/include/asm/shmparam.h文件,修改SHMMAX选项。Oracle 推荐使用4294967295,这意味着系统的共享内存达到4G,这是不合适的。一般,SHMMAX的设置可略大于本机内存配置。 


----事实上,缺省安装的RedHat 6.0核心运行Oracle 8.0.5是没有问题的。一般情况下可不对这些参数作出调整。 


----如确需调整,在完成修改后,要按文档要求重生成核心,并用lilo命令指定用新的核心进行引导。 


3.增加用户、创建安装目录 


----Oracle安装与运行需要创建一个属于dba组的Oracle用户,同时要创建一个属主为Oracle用户的安装点目录,例如/u0/oracle ,并指定该目录为Oracle用户的缺省主目录。 


----为了设置Oracle用户的运行环境,在Oracle用户的主目录下要建立一个脚本文件,用于在以Oracle用户登录时自动设置环境变量。该脚本文件的命名与用户所使用的shell有关(在/etc/passwd文件中定义)。如采用bash,则脚本文件是.bash_profile;如采用sh,则脚本文件名为.profile。以bash为例,在脚本文件.bash_profile中输入以下内容: 


# ORACLE_HOME指定Oracle的安装目录 


ORACLE_HOME=/u0/oracle; export ORACLE_HOME 


# LD_LIBRARY_PATH指定Oracle的共享库目录 


LD_LIBRARY_PATH= $ORACLE_HOME /lib; export LD_LIBRARY_PATH 


ORACLE_BASE=$ORACLE_HOME; export ORACLE_BASE 


# ORACLE_SID指定Oracle数据库实例名,Oracle建议小于或等于4个字符 


ORACLE_SID=BROS; export ORACLE_SID 


# ORACLE_TERM Oracle用户的终端类型 


ORACLE_TERM=ansi; export ORACLE_TERM 


PATH=$PATH: $ORACLE_HOME /bin; export PATH 


#TMPDIR指定临时目录,Oracle要求至少20M的空间 


TMPDIR=/var/tmp; export TMPDIR 


umask 022 


----退出登录后,再以Oracle用户登录,测试环境变量是否符合要求。 


二、 Oracle安装 


----Oracle的安装可采用光盘或指定原始安装路径的方式。 


----对用Oracle for linux光盘来安装的,应执行以下命令: 


mount -t iso9660 /dev/CDROM /home/Oracle 


----安装光盘介质。正常情况下,CDROM应安装在/home/CDROM目录下。 


----对指定原始安装路径安装的,应事先将压缩档案文件805ship.tgz解压缩到一个临时目录,如/home/Oracle ,使用命令: 


gunzip-c 805ship.tgz| tar xvf - 


----假设使用指定原始安装路径/home/Oracle。在该目录执行: 


cd orainst 


sh oratab.sh 


oratab.sh命令的主要目的是创建 /etc/oratab。 


----由于RedHat 6.0使用的是glibc 2.0,因此在RedHat 6.0环境下安装Oracle 8.0.5需打补丁。方法是:卸载位于ftp.Oracle.com站点的/pub/www/otn/linux/glibcpatch.tgz文件,在完成Oracle基本系统安装后,对$ORACLE_HOME/bin目录下的执行程序进行修正。 


----做完上述工作后,即可以开始Oracle基本系统的安装: 


1.进入/home/Oracle目录 


2.执行./orainst /c 


3.选择Custom安装 


根据提示进行以下选择: 


Install, Upgrade or De-install software 


----Install new product -DO NOT CREAT DB Objects。 这一步非常重要。由于原安装包中的执行程序与glibc2.0不兼容,因此,在打补丁前,无法启动Oracle引擎来创建数据库对象。 


----按照上述步骤执行完退出后,系统应提示: 


Result:Success. 


4.对Oracle执行程序进行glibc修正。步骤如下: 


* 建立$ORACLE_HOME/orapatch目录 


* 将glibcpatch.tgz拷贝至主目录 


* 执行tar -xvzf glibcpatch.tgz 


* 执行sh glibcpatch.sh 


----完成补丁程序安装后,要重新运行Oracle的安装程序,步骤如下: 


* cd orainst 


* 执行 orainst /c 


* 进行custom安装 


----根据提示进行以下选择: 


Create /upgrade Database objects 


Create Database objects 


Oracle 8 Standard RDBMS 8.0.5.0.0 


Create product DB Objects 


Filesystem-bases Database 


直至提示:Rusult:Success 


5.执行后安装处理: 


* 以Oracle用户登录 


* 执行 su -p root , 输入root用户密码 


* cd orainst 


* 执行sh root.sh 


* 编辑修改 /etc/oratab文件: 


找到Oracle-SID指示行如: 


$BROS:/u0/Oracle:N 


----修改为: 


$BROS:/u0/Oracle:Y 


----以允许Oracle服务器自启动。 


* 修改TNS相关的文件权限: 


chown oracle.dba $ORACLE_HOME/bin/tnslsnr 


chmod 750 $ORACLE_HOME/bin/tnslsnr 


chown oracle.dba $ORACLE_HOME/network/log 


chmod 775 $ORACLE_HOME/network/log 


chown root.dba $ORACLE_HOME/network/log/listener.log 


chmod 664 $ORACLE_HOME/network/log/listener.log 


----至此,安装基本完成。 


三、 测试与调整 


----以Oracle用户登录,执行dbstart,Oracle引擎应正常启动。 


----执行lsnrctl start启动Oracle网络服务,则从Windows的sql*net、sql plus环境可登录Oracle服务器。 


----取决于服务器硬件资源配置,为改善性能可以对Oracle的系统全局缓冲区(System Global Area)等参数进行重新配置,以改善性能。  
Linux内核解读入门  2010-10-15 22:17:49|  分类: Linux系统故障 |  标签:arch  系统调用  linux  i386  内核   |字号大中小 订阅 .


很多Linux 爱好者对内核很感兴趣却无从下手,本文旨在介绍一种解读Linux内核源码的入门方法,而不是讲解Linux复杂的内核机制。
  1.核心源程序的文件组织
  (1)Linux核心源程序通常都安装在/usr/src/Linux下,而且它有一个非常简单的编号约定:任何偶数的核心(中间数字)如:2.0.30都是一个稳定的发行的核心,而任何奇数的核心如:2.1.42都是一个开发中的核心。
  本文基于稳定的2.2.5源代码,第二部分的实现平台为Redhat Linux 6.0。
  (2)核心源程序的文件按树形结构进行组织,在源程序树的最上层你会看到这样一些目录:
  arch:arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如i386就是关于Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录;
  include:include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在include/linux子目录下,与Intel CPU相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关SCSI设备的头文件目录;
  init:这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的一个非常好的起点;
  Mm:这个目录包括所有独立于CPU 体系结构的内存管理代码,如页式存储管理内存的分配和释放等,而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c;
  Kernel:主要的核心代码,此目录下的文件实现了大多数Linux系统的内核函数,其中最重要的文件当属sched.c,同样,和体系结构相关的代码在arch/*/kernel中;
  Drivers:放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录,如/block下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()函数。它不仅初始化硬盘,也初始化网络,因为安装nfs文件系统的时候需要使用网络。
  其他目录如Lib:放置核心的库代码;Net:核心与网络相关的代码;Ipc:包含核心的进程间通信的代码;Fs:所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如fat和ext2、Scripts,此目录包含用于配置核心的脚本文件等。
  一般在每个目录下都有一个.depend 文件和一个Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助,而且在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。
  2.解读实战:为你的内核增加一个系统调用
  虽然Linux 的内核源码用树形结构组织得非常合理、科学,把与功能相关联的文件都放在同一个子目录下,这样使得程序更具可读性。然而,Linux 的内核源码实在是太大而且非常复杂,即便采用了很合理的文件组织方法,在不同目录下的文件之间还是有很多的关联,分析核心的一部分代码通常要查看其他的几个相关的文件,而且可能这些文件还不在同一个子目录下。
  下面举一个具体的内核分析实例,希望能通过这个实例,使读者对Linux 的内核组织有些具体的认识,读者从中也可以学到一些对内核的分析方法。
  以下即为分析实例:
  (1)操作平台
  硬件:CPU Intel Pentium II;
  软件:Redhat Linux 6.0,内核版本2.2.5
  (2)相关内核源代码分析
  ①系统的引导和初始化:Linux 系统的引导有好几种方式,常见的有Lilo、Loadin引导和Linux的自举引导(bootsect-loader),而后者所对应源程序为arch/i386/boot/bootsect.S,它为实模式的汇编程序,限于篇幅在此不做分析。无论是哪种引导方式,最后都要跳转到arch/i386/Kernel/setup.S。setup.S主要是进行实模式下的初始化,为系统进入保护模式做准备。此后,系统执行arch/i386/kernel/head.S (对经压缩后存放的内核要先执行arch/i386/boot/compressed/head.S);head.S 中定义的一段汇编程序setup_idt,它负责建立一张256项的idt表(Interrupt Descriptor Table),此表保存着所有自陷和中断的入口地址,其中包括系统调用总控程序system_call 的入口地址。当然,除此之外,head.S还要做一些其他的初始化工作。
  ②系统初始化后运行的第一个内核程序asmlinkage void __init start_kernel(void) 定义在/usr/src/linux/init/main.c中,它通过调用usr/src/linux/arch/i386/kernel/traps.c 中的一个函数void __init trap_init(void) 把各个自陷和中断服务程序的入口地址设置到idt表中,其中系统调用总控程序system_cal就是中断服务程序之一;void __init trap_init(void)函数则通过调用一个宏set_system_gate(SYSCALL_VECTOR,&system_call),把系统调用总控程序的入口挂在中断0x80上。
  其中SYSCALL_VECTR是定义在/usr/src/linux/arch/i386/kernel/irq.h中的一个常量0x80,而system_call 即为中断总控程序的入口地址,中断总控程序用汇编语言定义在/usr/src/linux/arch/i386/kernel/entry.S中。
  ③中断总控程序主要负责保存处理机执行系统调用前的状态,检验当前调用是否合法,并根据系统调用向量,使处理机跳转到保存在sys_call_table 表中的相应系统服务例程的入口,从系统服务例程返回后恢复处理机状态退回用户程序。
  而系统调用向量则定义在/usr/src/linux/include/asm-386/unistd.h 中,sys_call_table 表定义在/usr/src/linux/arch/i386/kernel/entry.S 中,同时在/usr/src/linux/include/asm-386/unistd.h 中也定义了系统调用的用户编程接口。
  ④由此可见,Linux的系统调用也像DOS系统的int 21h中断服务,大把0x80中断作为总的入口,然后转到保存在sys_call_table表中的各种中断服务例程的入口地址,提供各种不同的中断服务。
  提供上源代码分析可知,要增加一个系统调用就必须在sys_call_table表中增加一项,并在其中保存好自己的系统服务例程的入口地址,然后重新编译内核,当然,系统服务例程是必不可少的。
  由此可知,在此版Linux内核源程序<2.2.5>中,与系统调用相关的源程序文件就包括以下这些:
  * arch/i386/boot/bootsect.S
  * rch/i386/Kernel/setup.S
  * rch/i386/boot/compressed/head.S
  * rch/i386/kernel/head.S
  * nit/main.c
  * rch/i386/kernel/traps.c
  * rch/i386/kernel/entry.S
  * rch/i386/kernel/irq.h
  * nclude/asm-386/unistd.h
  当然,这只是涉及到的几个主要文件。而事实上,增加系统调用真正要修改的文件只有include/asm-386/unistd.h 和arch/i386/kernel/entry.S两个。
  (3)源码的修改
  ①kernel/sys.c中增加系统服务例程如下:
  asmlinkage int sys_addtotal(int numdata)
  { int i=0,enddata=0;
    while(i<=numdata)
    enddata+=i++;
    return enddata; }
  该函数有一个int 型入口参数numdata , 并返回从0 到numdata 的累加值,然而也可以把系统服务例程放在一个自己定义的文件或其他文件中,只是要在相应文件中作必要的说明。
  ②把smlinkage int sys_addtotal( int) 的入口地址加到sys_call_table表中。
  arch/i386/kernel/entry.S 中的最后几行源代码修改前为:
  .long SYMBOL_NAME(sys_sendfile)
  .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
  .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
  .long SYMBOL_NAME(sys_vfork) /* 190 */
  .rept NR_syscalls-190
  .long SYMBOL_NAME(sys_ni_syscall)
  .endr
  修改后为:
  .long SYMBOL_NAME(sys_sendfile)
  .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
  .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
  .long SYMBOL_NAME(sys_vfork) /* 190 */
  /* add by I */
  .long SYMBOL_NAME(sys_addtotal)
  .rept NR_syscalls-191
  .long SYMBOL_NAME(sys_ni_syscall)
  .endr
  ③把增加的sys_call_table 表项所对应的向量,在include/asm-386/unistd.h 中进行必要申明,以供用户进程和其他系统进程查询或调用。
  增加后的部分/usr/src/linux/include/asm-386/unistd.h 文件如下:
  #define __NR_sendfile 187
  #define __NR_getpmsg 188
  #define __NR_putpmsg 189
  #define __NR_vfork 190
  /* add by I */
  #define __NR_addtotal 191
  ④测试程序(test.c)如下:
  #include
  #include
  _syscall1(int,addtotal,int, num)
  main()
  { int i,j;
   do
  printf(\"Please input a numbern\");
  while(scanf(\"%d\",&i)==EOF);
  if((j=addtotal(i))==-1)
  printf(\"Error occurred in syscall-addtotal(),n\");
  printf(\"Total from 0 to %d is %d n\",i,j); }
  对修改后的新的内核进行编译,并引导它作为新的操作系统,运行几个程序后可以发现一切正常;在新的系统下对测试程序进行编译(注:由于原内核并未提供此系统调用,所以只有在编译后的新内核下,此测试程序才可能被编译通过),运行情况如下:
  $gcc .test test.c
  $./test
  Please input a number
  36
  Total from 0 to 36 is 666
  修改成功后对相关源码进一步分析可知,在此版本的内核中,从/usr/src/linux/arch/i386/kernel/entry.S 文件中对sys_call_table 表的设置可以看出,有好几个系统调用的服务例程都是定义在/usr/src/linux/kernel/sys.c 中的同一个函数:
  asmlinkage int sys_ni_syscall(void)
  { return -ENOSYS; }
  例如第188项和第189项就是如此:
  .long SYMBOL_NAME(sys_sendfile)
  .long SYMBOL_NAME(sys_ni_syscall) /* streams1 */
  .long SYMBOL_NAME(sys_ni_syscall) /* streams2 */
  .long SYMBOL_NAME(sys_vfork) /* 190 */
  而这两项在文件/usr/src/linux/include/asm-386/unistd.h 中却申明如下:
  #define __NR_sendfile 187
  #define __NR_getpmsg 188 /* some people actually want streams */
  #define __NR_putpmsg 189 /* some people actually want streams */
  #define __NR_vfork 190
  由此可见,在此版本的内核源代码中,由于asmlinkage int sys_ni_syscall(void) 函数并不进行任何操作,所以包括getpmsg, putpmsg 在内的好几个系统调用都是不进行任何操作的,即有待扩充的空调用;但它们却仍然占用着sys_call_table表项,估计这是设计者们为了方便扩充系统调用而安排的,所以只需增加相应服务例程(如增加服务例程getmsg或putpmsg),就可以达到增加系统调用的作用。
  3.结束语
  要完全解读庞大复杂的Linux内核,一篇文章远远不能介绍清楚,而且与系统调用相关的代码也只是内核中极其微小的一部分,重要的是方法,掌握好的分析方法,所以上述分析只是起个引导作用,而真正的分析还有待读者自己的努力。  
Linux日志管理详解(上)  2010-10-16 18:10:54|  分类: Linux系统故障 |  标签:wtmp  ynguo  登录  utmp  aug   |字号大中小 订阅 .


日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。


  在Linux系统中,有三个主要的日志子系统:


  连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。


  进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。


  错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。


  常用的日志文件如下:


  access-log         纪录HTTP/web的传输


  acct/pacct         纪录用户命令


  aculog           纪录MODEM的活动


  btmp            纪录失败的纪录


  lastlog  纪录最近几次成功登录的事件和最后一次不成功的登录


  messages    从syslog中记录信息(有的链接到syslog文件)


  sudolog           纪录使用sudo发出的命令


  sulog           纪录使用su命令的使用


  syslog     从syslog中记录信息(通常链接到messages文件)


  utmp            纪录当前登录的每个用户


  wtmp        一个用户每次登录进入和退出时间的永久纪录


  xferlog           纪录FTP会话


  utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键--保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7。


  每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。


  下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。


具体命令
  wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。


  who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示


  chyang     pts/0 Aug     18 15:06


  ynguo     pts/2 Aug     18 15:32


  ynguo     pts/3 Aug     18 13:55


  lewis     pts/4 Aug     18 13:35


  ynguo     pts/7 Aug     18 14:12


  ylou     pts/8 Aug     18 14:15


  如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。


  w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27。


  USER   TTY    FROM     LOGIN@ IDLE JCPU PCPU  WHAT


  chyang pts/0 202.38.68.242  3:06pm 2:04 0.08s 0.04s -bash


  ynguo pts/2 202.38.79.47   3:32pm 0.00s 0.14s 0.05   w


  lewis pts/3 202.38.64.233  1:55pm 30:39 0.27s 0.22s -bash


  lewis pts/4 202.38.64.233  1:35pm 6.00s 4.03s 0.01s sh /home/users/


  ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail


  ylou  pts/8 202.38.64.235  2:15pm 1:09m 0.10s 0.04s  -bash




users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo


  last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:


  chyang pts/9  202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)


  cfan  pts/6  202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)


  chyang pts/4  202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)


  lewis pts/3  202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)


  lewis pts/2  202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)


  如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:


  ynguo  pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)


  ynguo  pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)


  ynguo  pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)


  ynguo  pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)


  ynguo  pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)


  ynguo  pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)


  ynguo  pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)


  ac:ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47


  ac -d(回车)显示每天的总的连结时间


  Aug 12 total 261.87


  Aug 13 total 351.39


  Aug 14 total 396.09


  Aug 15 total 462.63


  Aug 16 total 270.45


  Aug 17 total 104.29


  Today total 179.02


  ac -p (回车)显示每个用户的总的连接时间


  ynguo 193.23


  yucao 3.35


  rong 133.40


  hdai 10.52


  zjzhu 52.87


  zqzhou 13.14


  liangliu 24.34


  total 5178.24


  lastlog:lastlog文件在每次有用户登录时被查询。可以使用lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示"**Never logged**。注意需要以root运行该命令,例如:


  rong      5   202.38.64.187         Fri Aug 18 15:57:01 +0800 2000


  dbb                           **Never logged in**


  xinchen                         **Never logged in**


  pb9511                         **Never logged in**


  xchen     0   202.38.64.190         Sun Aug 13 10:01:22 +0800 2000


  另外,可一加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。
Linux使用小经验十则  2010-10-18 16:09:30|  分类: Linux系统故障 |  标签:虚拟控制台  linux  文件  拷贝  粘贴   |字号大中小 订阅 .


1.使用虚拟控制台
  登录后按“Alt+F2”键可以看到“login:”提示符, 这就是第二个虚拟控制台。一般新安装的Linux有四个虚拟控制台,可以用“Alt+F1”到“Alt+F4”来访问。虚拟控制台最有用的时候是当一个程序出错锁住输入时可以切换到其他虚拟控制台,登录进入后用kill命令杀掉这个出错的进程。
  2.拷贝与粘贴
  字符界面(不管是Slackware 还是RedHat 的)安装后,每次启动时都会自动运行一个叫gpm的程序,该程序运行后就可以用鼠标来拷贝与粘贴了。具体做法是按住鼠标左键拖动使要拷贝的文字反白,这时反白的区域已经被拷贝,再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了。
  在X-Window下,拷贝操作与字符界面下一样,如果你用的是三键鼠标,按中键进行粘贴,如果是两键鼠标,则可同时按左右键粘贴(条件是必须在配置XF86时在鼠标的设置里选择 Emulate 3 Button)。
  3.快速进入某些目录
  键入cd~可进入用户的home目录。键入cd-可进入上一个进入的目录。
  4.在RedHat下显示彩色目录列表
  打开/etc/bashrc,加入如下一行:
  alias ls=″ls --color″
  下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了,其中不同颜色的含义如下:
  蓝色→目录
  绿色→可执行文件
  红色→压缩文件
  浅蓝色→链接文件
  灰色→其他文件
  5.命令文件的路径
  当你键入一些命令(如find、shutdown、mount、startx)时是否想知道这些文件究竟放在哪个目录里?用命令“whereis”可以实现,如:
  #whereis startx
  6.查找文件
  find 命令要加一些参数才能查到文件,如:
  #find /usr -name XF86Setup -print
  在/usr里查找文件XF86Setup。
  7.删除无用的core文件
  程序运行完后,有时候会产生一个名为core的文件,这个文件一般很大而且没什么用,可以删除掉以释放空间。
  8.Linux里的Norton Commander
  在提示符下键入命令mc后你就会看到一个与Norton Commander很相似的界面,实际上功能也很相似甚至更强大,比如可以直接对.tar.gz 压缩包里的文件进行操作(有点像ZipMagic)。
  9.后台运行 X-Window程序
  执行一个X-Window程序时别忘了在后面加一个&号(如#netscape &),否则,在你退出执行的程序之前再无法在那个终端窗口里输入命令了。
  10.强行退出 X-Window
  有时候在 X-Window里由于程序出错,使鼠标键盘都不起作用,这时候不用着急,因为在Linux下几乎不会像在Win 9x里那样恶性死机,你只须键入Ctrl+Alt+BackSpace键就可以回到字符界面下了
Linux下的文字处理  2010-10-18 16:11:24|  分类: Linux系统故障 |  标签:文字处理  导出  文档  linux  导入   |字号大中小 订阅 .


当前,Linux下的文字处理软件得到很大的发展,性能直逼Windows中的相关软件。以下,我向大家介绍一个Linux下的优秀文字处理软件Applixware(它可以在 http://www.applix.com/appware/下载)。
  Applixware在基于Intel X86、Alpha、PPC的Linux版本下均可运行。这里仅以最常见的Intel X86 Linux版本为例,典型的硬件系统需求是:P166以上CPU,32MB内存,240MB硬盘空间;软件需要glibc库,RedHat 5.x、Debian 2.x、TurboLinux 3.x及以上版本均可。
  一、安装方法如下(假设现在已取得Applixware软件的压缩包applixdemo.tgz)。
  1.以root身份登录。
  2.用tar xvzf ./applixdemo.tgz命令解包。
  3.经过解包后,会自动生成一个名为applixdemo的临时目录,进入此目录,执行安装程序./install-axdemo。其间,安装程序会询问将Applixware安装到哪个目录下,选/opt/applix或者/usr/local/applix均可。
  二、使用启动软件
  从文件管理器中点击applix图标或在xterm命令行窗口里键入/opt/applix/applix均可启动Applixware,出现applix主窗口,如^41020203a^1。从左至右,有5个大按钮,分别代表:Words字处理、Graphics/ Presentation演示图文幻灯片制作、Spreadsheet电子表格、Mail电子邮件、Data数据库连接工具。点击其中某个按钮,即可启动相应的组件。
  和MS Office一样,Applix各组件的操作界面十分相似,均分为菜单栏、工具栏、标尺栏、工作区、提示行。菜单栏里有常用的文件、编辑、视图、插入、格式、工具、帮助等菜单项。工具栏里则汇集了常用的工具按钮,如新建、打印、保存、字体、对齐方式等;工作区则是Applix文档的编辑显示区;提示行则提供一些辅助信息,如文档总页数、当前页号等等,如^41020203b^2。
  Applix的每个组件都可以嵌入其他组件产生的文档,形成一个严密的整体。且Applix的操作方法和MS Office大同小异,熟悉MS Office的用户会很容易地使用Applix套件。
  三、软件的特色
  和MS Office相比,Applix还具有另外一些特色:
  1.提供强有力的兼容文档交换手段:导入(Import)和导出(Export)
  导入是将其他格式的文档插入到当前编辑的Applix文档中,与Applix文档合为一体。导出则恰好相反,是将正在编辑的Applix文档导出保存为其他格式。Applix的导入/导出支持的格式则有数十种之多,其中最有价值的是支持MS Office文档格式。
  如:选择一个Applix文档,从菜单栏中选文件→导入(或导出),就会弹出导入(或导出)窗口,再从导入(或导出)文件类型下拉框中选中你满意的文件类型,点按导入(或导出)按钮后,就会出现一个向导,然后照提示连续按“下一步”,到最后结束,就一切OK了!
  以下Applix各组件能够支持的常用导入/导出格式:
  Words字处理:本身是aw格式,还支持MS Word 97/95/6.0/5.1,还支持Wordperfect 7.0/6.0/5.X、RTF、HTML、Frame MIF 5.X/4.0等。
  Spreadsheet电子表格:本身是as格式,还支持MS Excel 5.0/4.0/3.0的XLS,还支持Lotus 1-2-3的WKS 3.0/1.0,CSV、DIF、SYLK等。
  Graphics/ Presentation演示图文幻灯片制作:本身是ap格式,还支持PowerPoint97、Windows bmp、GIF 89/87、JPEG 90/75/50、TIFF、TGA等,也还支持XPM、XWD、PBM、PGM、PPM、SGI、CGM、HPGL、EPGL、WMF、FAX等众多格式。
  2.通过网络访问大型SQL数据库
  Appplix提供的Data数据库连接工具,为用户透明访问大型SQL数据库提供了极大的方便。用户不必精通SQL语言,即可通过网络以简单易用的图形界面访问、修改位于远方的数据库。Data支持常见的Oracle、Sybase、Informix、Ingres等SQL数据库,也支持通过ODBC交换数据的其他数据库,如MS 的SQL Server、Access等。如我们通过网络以用户名test登录,访问位于10.84.96.66主机上的Oracle数据库服务器Server1,如^41020203c^3。
  3.特殊的帮助系统
  Applix除了包含常规的帮助资料外,还包含一个Applix指南和系统演示。指南主要是介绍菜单项、工具栏按钮的用途和操作,而演示则用标签式窗口的形式分别介绍具体组件的功能、使用方法。两者以直观形象的方式帮助用户更快地掌握Applix。  
Linux中IP隧道的分析与建议  2010-10-18 16:12:28|  分类: Linux系统故障 |  标签:隧道  数据包  ipip  tunnel  封装   |字号大中小 订阅 .


----随着计算机网络的日益普及,网络的安全成为目前的热门话题。本文以Linux 2.0.34(RedHat5.2采用)为基础,对隧道技术进行分析,并侧重安全领域对在Linux环境下利用隧道技术实现虚拟专网提出建议。 
----为什么需要IP隧道?没有接触过这个概念的人自然会提出这样的疑问。实际上概念最初的提出很简单,就是为了在TCP/IP网络中传输其他协议的数据包。设想一下IPX协议或X.25封装的数据包如何通过Internet网进行传输,在已经使用多年的桥接技术中是通过在源协议数据包上再套上一个IP协议头来实现的,形成的IP数据包通过Internet后卸去IP头,还原成源协议数据包,再传送给目的站点。对源协议数据来说,就如同被IP带着过了一条隧道。这种技术在业余无线网络(Amateur Packet Radio Network)中得到了广泛的应用,目前的移动式IP(mobileIP)技术已经在此基础上得到了很好的发展。 


----利用IP隧道来传送的协议包也包括IP数据包,本文主要分析的IPIP封包就是如此。所谓IPIP,就是把一个IP数据包又套在一个IP包里。为什么要这么做呢?其实并非多此一举。见过一些应用就会明白,移动IP(Mobile-IP)和IP多点广播(IP-Multicast)是两个典型的例子。目前,IP隧道技术在构筑虚拟专网(VPN,Virtual Private Network)中也显示了出极大的生命力。本文也将对利用IP隧道技术构筑VPN做简单设想。 


IP隧道的多种理解和实现 


----Internet的研究者多年前就感到需要在网络中建立隧道,最初的理解是在网络中建立一条固定的路径,以绕过一些可能失效的网关。可以说,隧道就是一条特定的路径。这样的隧道是通过IP报头中的源路由选项来实现的。在目前看来,这种方法的缺陷十分明显。要设置源路由选项就必须知道数据包要经过的确切路径,而目前多数路由实现中都不支持源路由。 


----另一种实现隧道的机制是开发一种新的IP选项,用来表明源数据包的信息,原IP头可能成为此选项的一部分。这种隧道的意义与我们所说的隧道已十分接近。但它的不足在于要对目前IP选项的实现和处理做较大的修改,此外它还缺乏灵活性。 


----最常用的一种实现方法是开发一种新的IP封包(encapsulation)协议,仍然套用当前的IP头格式。通过IP封包,不须指明网络路径,封包就能透明地到达目的地。也可以通过封包空间把未直接连接的机器绑在一起,从而创建虚拟网络。这种方法易行、可靠、可扩展性强。Linux采用了这一方法,这就是目前我们所理解的隧道思想。 


封包协议结构 


----封包协议的实现原理十分简单,从图一中可以看到通过隧道传送的数据报在网络中是如何流动的。为了叙述简便,下文中把在隧道中传送的IP数据包称为封包。 






图一封包协议实现模型 


----图一中的设备#都处于隧道的两端(中间的(#)设备只做简单的转发),分别起打包(封装)和解包(解封)的作用。在整个数据包的传送路径中,除了隧道两端的#设备,其他网关把数据包看成一个普通的IP包进行转发。设备#就是一个基于封包的两个实现部件———封装部件和解封部件。封装和解封部件(设备)都应当同时属于两个子网。封装部件对接收到的数据报加上封包头,然后以解封部件地址作为目的地址转发出去;而解封部件则在收到封包后,还原为数据报,转发到目的子网。 


----隧道的源端(封装部件)对进入隧道的数据包进行封装,形成封包。图二是一个完整的封包示意图。 






图二封包结构 


Linux封包实现 


----在Linux中,隧道的实现主要涉及两个文件:new-tunnel.c和ipip.c。另外,Linux还定义了一种新的协议类型———IPIP(IPPROTO-IPIP),它类似于上面所说的封包类型。 


----在Linux中IP Tunnel的实现也分为两个部件:封装部件和解封部件,分别司职发送和接收。但这两个部件是在不同的层次上以不同的方式实现的。 


----封装部件是在数据链路层以虚设备的方式实现的,所有源代码见: 


/usr/src/linux/drivers/net/new-tunnel.c 


----为实现封装,Linux实现一个称为tunl的网络设备(类似于loopback设备),它具有其他网络设备共有的特征。对于使用此设备的上层应用来说,对这些网络设备不加区分,调用及处理方法当然也完全一样。 


----new-tunnel.c中的两个主要过程是tunnel-init()和tunnel-xmit(),其中tunnel-init()初始化与设备tunl相关的device结构,而tunnel-xmit()在从tunl设备发送数据时被调用,tunl设备作为实现IP隧道技术的封装部分,在此过程中完成对相应的数据报进行封装所需的全部操作,形成IPIP类型的IP包,并重新转发此数据包(ip-forward())。 


----解封部件在IP的上层实现,系统把它作为一个虚的传输层(实际上与传输层毫无关系),具体处理见文件: 


/usr/src/linux/net/ipv4/ipip.c。 


----我们知道,每一个IP数据包均交给ip-rcv函数处理,在进行一些必要的判断后,ip-rcv对于发送给本机的数据包将交给上层处理程序。对于IPIP包来说,其处理函数是ipip-rcv(与TCP包的处理函数tcp-rcv一样,IP层不加区分)。也就是说,当一个目的地址为本机的封包到达后,ip-rcv函数进行一些基本检查并除去IP头,然后交由ipip-rcv解封。 


----ipip-rcv的作用就是去掉封包头,还原数据包,然后把还原后的数据包放入相应的接收队列(netif-rx())中。 


----上述的IPTunnel实现思路十分清晰,但由于IP Tunnel的特殊性,其实现的层次并不单纯。它的封装和解封部件不能简单地像上面所说的那样分层。tunl设备虽然应算进链路层,但其发送程序还做了很多其他的工作,如制作IPIP头及新的IP头(这些一般认为是传输层或网络层的工作)。调用ip-forward转发新包也不是一个网络设备应当做的事。可以说,tunl借网络设备之名,做的工作却很多,因此相当“高效”。而解封部件宏观上看在网络层之上,解出IPIP头,恢复原数据包是它分内的事,但在它解出数据包(即原完整的协议数据包)后,它把这个包放入相应的协议接收队列。这项任务可不是一个上层协议干的,这是网络设备中断接收程序的义务。在这点上,它好像又到了数据链路层。隧道机制就是这样的。 


为实现VPN的扩展 


----实际上Linux只为实现隧道机制提供了一个框架,图二中的封包协议头在Linux中被忽略了,也就是说,封包头只含封包IP头,其后紧跟原IP数据包。这样的结构用于传输公开数据没有关系,但对于一个VPN来说,安全保密是不可缺少的重要功能。我们希望通过隧道的数据可靠且不可窃取或假冒,因此加密和认证就必不可少。为实现这一构想,可设计以下封包协议头: 






图三IPIP头设想图 


----其中type用于建立不同目的的隧道(可能处理上有差别),OldPacketLen是进入隧道的原数据包长度,DeviceID是对数据包进行封装的设备标识,EncapID是此封包的ID号,Flags是标志位,初步定义如下: 


0 保留 


1 有否加密 


2 有否做摘要 


3 有否签名 


4 保留 


5 是否传送消息密钥 


6 消息密钥是否加密 


7 消息密钥是否需保留 


8-15 保留 


----IPIP Options用来传送一些必要的数据,比如消息密钥、签名等,其格式为, 


 类 型   
长 度   
数 据  






----有了上述定义,就可以扩展Linux IP Tunnel为VPN服务了。首先,改写new-tunnel.c和ipip.c两个文件,加入对IPIP头的处理。然后,要实现一种密钥的管理和传送机制。当然,对称密钥是必需的,而对IP数据包加密要使用序列密码。 


----在一个VPN的隧道中,一个封包的格式应如图四所示。 






图四VPN封包结构 


----针对上述构想,通过对安全强度和通信速度的权衡,可以采用从不加密但速度快到高度机密但速度慢等不同的策略。当然还可以就加密强度本身作出选择,比如选择128位还是512位、1024位的加密算法。 
LynxOS、QNX、Linux的分析和比较  2010-10-24 12:19:09|  分类: Linux系统故障 |  标签:posix  lynxos  linux  实时  文件系统   |字号大中小 订阅 .


----本文对四种实时操作系统(RTOS)特性进行分析和比较。它们是:Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux——新墨西哥工学院的RT-Linux和堪萨斯大学的KURT-Linux。 
----近年来,实时操作系统在多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域得到广泛的应用,因而越来越引起人们的重视。 


----基本特征概述 


* QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于1980年,到现在已相当成熟。 


* LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。它最早开发于1988年。 


* RT-Linux是一个嵌入式硬实时操作系统,它部分支持POSIX.1b标准。 


* KURT-Linux不是为嵌入式应用设计的,不同于硬(hard)实时/软(soft)实时应用,他们提出“严格(firm)”实时应用的概念,如一些多媒体应用和ATM网络应用,KURT是为这样一些应用设计的“严格的”实时系统。 


----体系结构异同 


----实时系统的实现多为微内核体系结构,这使得核心小巧而可靠,易于ROM固化,并可模块化扩展。微内核结构系统中,OS服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。但它也有弱点,进程间通信和上下文切换的开销大大增加。相对于大型集成化内核系统来说,它必须靠更多地进行系统调用来完成相同的任务。 


* QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。 


* LynxOS目前还不是一个微内核结构的操作系统,但它计划使用所谓的“Galaxy”技术将其从大型集成化内核改造成微内核,这一技术将在LynxOS 3.0中引入。新的28Kb微内核提供以下服务:核心启动和停止、底层内存管理、出错处理、中断处理、多任务、底层同步和互斥支持。 


* RT-Linux实现了一个小的实时核心,仅支持底层任务创建、中断服务例程的装入、底层任务通信队列、中断服务例程(ISR)和Linux进程。原来的非实时Linux核心作为一个可抢先的任务运行于这个小核心之上,所有的任务都在核心地址空间运行。它不同于微内核和大型内核,属于实时EXE (realtime executive)体系结构。其可靠性和可维护性对电信服务系统来说都不够理想。 


* KURT-Linux核心包括两个部分:内核和实时模块。内核负责实时事件的调度,实时模块为用户进程提供特定的实时服务。它不属于微内核结构。 


----调度策略分析 


----任务调度策略是直接影响实时性能的因素。尽管调度算法多种多样,但大多由单调率算法(RM)和最早期限优先算法(EDF)变化而来。前者主要用于静态周期任务的调度,后者主要用于动态调度,在不同的系统状态下两种算法各有优劣。在商业产品中采用的实际策略常常是各种因素的折中。 


----QNX 提供POSIX.1b标准进程调度: 


* 32个进程优先级; 


* 抢占式的、基于优先级的正文切换; 


* 可选调度策略:FIFO、轮转策略、适应性策略。 


----LynxOS 其调度策略为: 


* LynxOS支持线程概念,提供256个全局用户线程优先级; 


* 硬实时优先级调度:在每个优先级上实现了轮转调度、定量调度和FIFO调度策略; 


* 快速正文切换和阻塞时间短; 


* 抢占式的RTOS核心。 


----RT-Linux 在操作系统之下实现了一个简单的实时核心,Linux本身作为一个可抢占的任务在核内运行,优先级最低,随时会被高优先级任务抢占。 


* 用户可自行编写调度程序,它们可实现为可加载的核心模块; 


* 已实现的调度程序有:基于优先级的抢占式调度和EDF调度; 


* 基于优先级的调度使用“单调率算法”,它直接支持周期任务。 


----KURT-Linux 可运行在两种状态之下:通常状态和实时状态。在通常状态下,所有进程都可以运行,但某些核心服务将带来中断屏蔽的不可预期性。实时模式只允许实时进程运行。 


* 支持FIFO调度策略、轮转调度策略和UNIX分时调度策略; 


* 增加了SCHED-KURT调度策略,这是一种静态调度策略,使用一个特殊的调度文件记录预先定义好的待调度进程的参数。 


----从以上简略描述可以看出,前三种调度策略实现较规范,特别是两种商业RTOS,遵循或部分遵循POSIX.1b实时调度标准。 


----操作系统服务比较 


----QNX的系统服务: 


* 多种资源管理器,包括各种文件系统和设备管理,支持多个文件系统同时运行,包括提供完全POSIX.1及UNIX语法的POSIX文件系统,支持多种闪存设备的嵌入式文件系统,支持对多种文件服务器(如Windows NT/95、LAN Manager等)的透明访问的SMB文件系统、DOS文件系统、CD-ROM文件系统等。 


* 设备管理。在进程和终端设备间提供大吞吐量、低开销接口服务。 


* 图形/窗口支持。包括QNX Windows、X Window System for QNX、对MS Windows NT/95和X Window系统的远程图形连接。 


* TCP/IP for QNX。 


* 高性能、容错型QNX网络——FLEET,使得所有连入网络的计算机变成一个逻辑上的超级计算机。 


* 透明的分布式处理。FLEET网络处理与消息传递和进程管理原语的集成,将本地和网络IPC统一起来,使得网络对IPC而言是透明的。 


----LynxOS的系统服务: 


* 网络和通信。由于使用UNIX/POSIX API,Lynx很适合于数据通信和Internet应用。又由于系统的开放性,网络软件很容易移植到Lynx上。同样,Lynx亦提供关键的电话通信协议,使之适用于电信系统的基础架构、操作和多媒体应用。 


* TCP/IP协议栈。Lynx自带优化的TCP/IP协议栈,提供高性能服务,如TCP头预测、高级路由算法、IP级多址广播和链路级高速缓冲。 


* Internet工具。包括,Telnet、Ftp、tftp、PPP、SLIP、实时调度的嵌入式Java虚拟机、嵌入式HTTP server、bootp、ARP/RARP、DNS域名服务、电子邮件、Perl、电话通信协议等。 


* SVR3流。LynxOS流机制为开发和移植基于流的驱动程序和应用提供了核心支持。 


* 文件系统。实时的类UNIX层次结构文件系统:连续结构文件、带缓冲/不带缓冲、原始分区和原始设备访问。 


* 基于Motif的图形用户接口。 


* 分布式计算资源。SCMP与VME总线上的多处理结合,PCI桥服务、CompactPCI Hot-swap Services、Lynx/HA-DDS分布式数据系统。 


----Linux的系统服务: 


----近来,很多基于Linux的实时应用被开发出来,它具有成熟和丰富的资源。 


* UNIX用户的开发工具和应用软件都被移植到Linux上。 


* TCP/IP网络协议。 


* 各种Internet客户/服务端软件。 


* X Window。 


* C/C++、Java等语言编译器。 


----上述系统的共同点是都提供了图形界面、各种网络支持等必要工具。QNX是一个更加符合传统“分布式”概念的操作系统,目标是把整个局域网变成一个大的超级计算机,使得网络的存在对用户透明,文件系统提供的服务也很丰富。但是,分布式的程度越高也意味着系统开销的增大。LynxOS则着意于提供丰富的网络服务,而Linux的最大优势则是经济,还可以通过新闻组或mailing list快速地解决用户碰到的任何问题。 


----系统开放性对比 


----对于很多大、中型系统来说,大多数软件都是为UNIX平台编写的,因此RTOS是否提供POSIX/UNIX API就显得很重要。 


----QNX的开放性: 


* QNX的POSIX兼容性和其提供的UNIX特色的编译器、调试器、X Window和TCP/IP都是UNIX程序员所熟悉的。 


* 支持多种CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、Cyrix MediaGX、x86处理器(386以上)、Pentium系列、STMicroelectronics 的STPC。 


* 多种总线:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD 32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。 


* 各种外设:多种SCSI设备、IDE/EIDE驱动器、10M/100M以太网卡、Token Ring网卡、FDDI接口卡、多种PCMCIA设备、闪存、声卡等等。 


----LynxOS的开放性: 


* POSIX.1a、1b、1c及BSD4.4等兼容性,使得遵循POSIX 1003或用于UNIX的程序很容易移植到LynxOS上。 


* 支持多种CPU主板:包括CompactPCI(6U/3U)和标准PCI、VME/Eurobus、PC/104和PC/AT硬件等。 


* 各种外设适配器:10/100BaseT Ethernet、SCSI接口、单/多通道串行控制器、单/双工并行口、时钟、计时器、IDE接口、高分辨率显示适配器等。 


----Linux的开放性: 


* 用户可得到UNIX的全部开发工具。 


* 可使用市场上便宜又常见的硬件。 


----通过分析,可以看到以上系统各有优势,因此,在平台搭造过程中,用户应根据自己的实际需要并结合性能价格比进行选择。 
Red Hat组建局域网完全手册(下)  2010-10-24 12:19:56|  分类: Linux系统故障 |  标签:局域网  ping  hostname  计算机  hat   |字号大中小 订阅 .


局域网的测试与故障排除


测试局域网
  测试局域网的第一步是,确认局域网中的计算机在启动之后能否与其他主机通讯。可以先在每台计算机上输入 reboot 命令。在 Linux 重新启动过程中,要仔细观看屏幕上滚动的测试信息。注意寻找下列信息:


  Setting hostname: <hostname you assigned to this computer>


  Bringing up Interface lo: <OK> or <FAILED>


  Bringing up interface eth0 <OK> or <FAILED>


  Setting hostname 这一项将显示你分配给这台计算机的主机名。而 lo 和 eth0 项的后面若显示 [OK],就表示检测成功。


  可以使用 ping 命令来判断计算机能否与其他计算机通讯。在当前主机上打开一个终端窗口,并输入命令 ping <IP address> 或 ping <hostname>。其中,<IP address> 或 <hostname> 是你分配给这个计算机的 IP 地址和主机名。需要注意的是,为了让 ping 命令正确工作,就必须输入 IP 地址或者主机名作为参数。


  如果你已经正确配置了 DNS nameserver 规范,那么 ping <hostname> 命令就会将 hostname 这个主机名映射成相应的 IP 地址。否则,只好在 ping 命令后面给出确切 IP 地址来测试,也就意味着现在你要拥有该局域网上所有计算机的 IP 地址列表。ping 命令通过局域网将消息发送到目的 IP 地址所表示的计算机。如果这台计算机能够与其他主机”交谈“或通讯,就可以看到一些消息或包(包括信息的字节数)。这些包应该象下面这样:


  64 bytes from 192.168.1.x : icmp_seq=0 ttl=255 time=0.8ms


  64 bytes from 192.168.1.x : icmp_seq=0 ttl=255 time=0.8ms


  64 bytes from 192.168.1.x : icmp_seq=0 ttl=255 time=0.8ms


  注意到 ”192.168.1" 代表的是该主机所属于的网络,而 x 则表示试图要 ping 的主机号码(例如 Oracle),这两部分组成了一个完整的 IP 地址。ping 命令不会自动停止,你可以按 Ctrl+C 来终止它,就可以看到这次 ping 测试的基本信息:


  --- hostname.yourcompanyname.com ping statistics ---


  4 packets transmitted, 4 packets received, 0% packet loss


  round-trip min/avg/max = 0.3/0.4/0.8 ms


  如果 packet loss 信息为 0%,就表示测试成功了。但倘若 ping 命令的结果看起来象下面这样,局域网可能还存在一些问题:


  From hostname.comanyname.com (192.168.1.1): Destination Host Unreachable


  这意味着两个计算机根本不能够通讯。出现不能通讯的情况时,可以参考下一部分的局域网故障排除。否则,若能成功地 ping 到局域网中其他所有机器,就说明局域网的基本通讯功能是完好的。此时局域网已基本组建好,你可以随心所欲地安装其他网络设备。


局域网故障排除
  如果你不能够 ping 到局域网中的另外一台主机,可以按照下面的方法寻找问题的根源。首先,用 halt 命令关掉局域网上所有的计算机。在所有计算机的命令行上输入 halt。关掉所有计算机的目的在于,可以在再启动这些计算机的时候观察到启动程序的反馈信息。


  检查所有计算机之间的网线,确信所有的 RJ45 接口都被正确连接。在确保所有网线正确安全连接之后,逐个启动局域网上的计算机,并观察启动过程中的下列响应信息:


  Setting hostname: hostname.networkname [OK]


  Red Hat Linux 的启动过程中,你可以在 LILO 启动提示符后面输入 I ,进入交互的启动模式,从而更清楚地查看反馈信息。首先检查分配给这台计算机的主机名和网络名是否拼写正确。如果不属于拼写错误的情况,就需要回到 LinuxConf 的 Basic Host Information 部分。在交互模式下,你会被提示是否启动若干服务。对于这些提示问题都回答 Yes,并集中注意力观察不同测试的结果。如果 Kudzu 程序检测到一块网卡,这就意味着在前面过程中没有正确配置这块网卡。继续运行 Kudzu 来配置这块网卡。当你被提示是否要配置网络时,选择 "Yes" 并为这台计算机输入正确的 IP 地址和其他相关信息。


  另一个需要仔细检查的重要内容为:


  Bringing up interface eth0 [OK]


  这一行显示网卡是否正确工作。如果这个测试失败,你就需要用 LinuxDonf 来检查所有网络设置,从而确保网卡被正确配置。如果网络设置是正确的,则可能网卡本身有问题。为了验证这一点,可以咨询网卡的生产商或一个计算机专家,来判断该网卡是否有缺陷。如果是网卡问题,则可以安装新网卡并重复先前的故障排除过程。


结论
  即使用户几乎没有关于局域网的背景知识,只要仔细理解并执行了上述的步骤,用 Red Hat Linux 系统来组建局域网是一件相对简单直接的过程。  
 .安装 Linux 无盘工作站  2010-10-24 12:21:18|  分类: Linux系统故障 |  标签:无盘  工作站  linux  内核  nbd   |字号大中小 订阅 .


说起无盘工作站,大家一定不会陌生,当年Novell下的无盘DOS工作站很是流行,后来又流行过Win95无盘工作站,只是由于问题多多,后来微软自己停止了对无盘Windows的支持。
随着Linux的日益流行,使用Linux的人越来越多,其实Linux 对远程引导的支持非常好,Linnx内核自身又支持网络文件系统,因此非常适合做无盘工作站,本文将以一个实例向大家详细介绍无盘Linux工作站的安装办法。
这个网络是一个小的局域网,有1台服务器和4台 Linux 无盘工作站,彼此之间用双绞线通过HUB连接,服务器的IP地址定为192.168.0.80 ,名字是server ,5台无盘工作站的地址由服务器动态分配,地址范围从 192.168.0.1 到 192.168.0.4 ,名字分别是c1,c2,c3,c4,服务器和无盘工作站使用的都是 NE2000 兼容网卡,无盘工作站使用的网卡上都安
装了BOOTROM 启动芯片,服务器操作系统安装的是 RedHat Linux 6.0 ,安装时选用定制安装,并安装了全部软件。
Linux的远程引导有两种方式,一是利用Bootp协议,有一个专门的项目EtherBoot 提供支持(http://www.slug.org.au/etherboot/),这种方式引导 Linux 的速度是最快的,但这种方式有一个最大的问题,就是在市场上找不到支持这种远程引导协议的 BOOTROM 启动芯片(除非自己刻录),因为市场上几乎所有的 BOOTROM 启动芯片都是遵循NOVELL远程引导协议的,于是有人提出另外一种方式,就是服务器端用 NetWare 服务器,客户端就可以用现有的BOOTROM 启动芯片了,说到这里大家一定胡涂了,作Linux无盘工作站岂不是还一台NetWare 服务器?不是的,因为神通广大的 Linux 可以模拟 NetWare 服务器,就象Samba可以把 Linux 模拟成 NT 一样,mars_nwe 可以把 Linux 模拟成 NetWare,不仅能提供 NetWare 文件和打印服务,还能提供远程引导支持(知道Linux的厉害了吧),本文讲述的
Linux 无盘工作站就是用这种方式作远程引导的。


准备启动盘
由于在 Linux 下没有制作符合 NetWare 远程引导协议启动映象的工具,所以只能用早期的Win95()提供的工具(遗憾)。找一台装有 Win95 的机器启动后按 F8 进入纯DOS方式,格式化一张启动盘 format a: /s ,然后将RedHat Linux安装光盘上 dosutils 目录下的loadlin.exe复制到启动盘,在启动盘上作一个 autoexec.bat 文件,代码只有一行
loadlin.exe bzImage root=/dev/nfsroot
从 Windows 95 安装光盘的 Win95 目录下的cab文件中解出 rplboot.sys 文件放在启动盘上,命令如下:
extract.exe /a /l a: win95-27.cab rplboot.sys
一张用来做启动映象的启动盘就作好了,保存好启动盘,以后作启动映象时会用到它。


编译内核
用于无盘工作站的Linux内核与用于从本地硬盘引导的Linux内核是不同的,无盘工作站的内核必须支持NFS作为根文件系统,即远程根文件系统,所以必须编译无盘工作站专用的内核。笔者使用的内核代码版本是2.2.16,将内核源代码解压到/usr/src下,cd /usr/src/linux 进入内核子目录,执行命令make menuconfig 进行内核编译配置,下列项目必须按要求设置:
Processor type and features 该项目下面的选项必须根据无盘工作站的CPU类型设
置,而不是根据服务器的CPU类型设置
Loadable module support 该项目下面的所有选项都禁止,即不支持模块功能
Plug and Play support 设置为有效
Block devices 该项目下面的
Loopback device support
Network block device support
都设置为有效
Networking option 该项目下面的
kernel level autoconfiguration
DHCP support (NEW)
都设置为有效
Network device support 该项目下面的选项必须根据无盘工作站使用的网卡进
行设置,本例中使用的是NE2000兼容网卡,选项
Ethernet (10 or 100Mbit)
Other ISA cards
NE2000/NE1000 support (NEW)
都设置为有效
Filesystems 该项目下面的Network File Systems子项目下面的
NFS filesystem support
Root file system on NFS (NEW)
都设置为有效
其它的选项可以不用理会,直接用缺省值就可以了,当然如果你的无盘工作站有些其它需
要使用的设备,你也可以将有关的选项设为有效,比如,本例中的无盘工作站使用了声霸
卡兼容的声卡,下面的选项
OSS sound modules (NEW)
100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
FM synthesizer (YM3812/OPL-3) support (NEW)
都设置为有效
以上设置完成后,退出内核编译设置程序,会出现一个对话框
Do you wish to save your new kernel configuration?
回答
然后执行
make dep && make bzImage
进行内核编译,这个过程得花一点时间,特别是如果计算机的速度不快的话,花的时间会
更长一些。编译内核如果没有错误,会得到内核映象文件
/usr/src/linux/arch/i386/boot/bzImage ,
将启动软盘插入计算机,执行下面的命令
mount -t vfat /dev/fd0 /mnt/floopy
cp /usr/src/linux/arch/i386/boot/bzImage /mnt/floppy
umount /dev/fd0
好了,启动盘上的文件都准备齐全了,等会儿用它到Win95环境下制作启动映象。


服务器设置
服务器端需要运行nfsd、dhcpd、mars_new等几个服务进程,这些软件在ReHat Linux发行套件里都有,如果在安装 Linux 的时候选择全部安装,这些软件都会随着安装操作系统而装好了,下面对这些软件进行设置,注意,下面的操作要以 root 身份进行。
1、 NFS 守护进程nfsd
首先要建立几个供无盘工作站使用的目录,并通过nfsd 导出,命令如下:
mkdir /tftpboot
然后编辑文件 /etc/hosts ,加入下面的内容
192.168.0.80 server server.domain
192.168.0.1 c1 c1.domain
192.168.0.2 c2 c2.domain
192.168.0.3 c3 c3.domain
192.168.0.4 c4 c4.domain
第一台工作站的工作目录设置方法如下:
mkdir /tftpboot/192.168.0.1
cd /tftpboot/192.168.0.1
c000p -a /bin .
cp -a /dev .
mknod dev/nd0 b 43 0
chmod 600 dev/nd0
cp -a /etc .
cp -a /home .
cp -a /lib .
rm -rf lib/modules
cp -a /root .
cp -a /sbin .
cp -a /var .
mkdir proc
mkdir usr
mkdir tmp
chmod 777 tmp
touch fastboot
chattr +i fastboot
cd etc
编辑文件 sysconfig/network-scripts/ifcfg-eth0
保留其中的
DEVICE=eth0
ONBOOT=yes
其余的行全部删除,然后增加一行
BOOTPROTO=dhcp
编辑文件 rc.d/rc.sysinit ,在文件最后加上两行
mount -t nfs server:/usr /usr
/usr/X11R6/bin/xfs
编辑文件 fstab
保留其中的
none /proc proc defaults 0 0
其余的行全部删除,然后增加一行
server:/tftpboot/192.168.0.1 / nfs defaults 1 1
其它工作站的工作目录设置方法就简单多了
cd /tftpboot
cp -a 192.168.0.1 192.168.0.2
cp -a 192.168.0.1 192.168.0.3
cp -a 192.168.0.1 192.168.0.4
编辑文件 /etc/exports ,加入以下内容
/usr (ro,no_root_squash)
/tftpboot/192.168.0.1 (rw,no_root_squash)
/tftpboot/192.168.0.2 (rw,no_root_squash)
/tftpboot/192.168.0.3 (rw,no_root_squash)
/tftpboot/192.168.0.4 (rw,no_root_squash)
2、动态主机配置协议服务器 dpchd
检查一下文件/etc/dhcpd.leases是否存在,若不存在就用命令touch /etc/dhcpd.leases
创建一个,然后编辑文件 /etc/dhcpd.conf ,加入以下内容
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.4;
}
3、NetWare 模拟器 marsw_nwe
编辑文件 /etc/nwserv.conf,找到下面的行
# 4 0x10 eth0 802.3 1
将该行开头的#去掉,再找到
4 0x0 * 802.3 1
在该行开头加上#
制作启动映象
进入Win95,将Win95(早期的版本,可以用服务器安装方式安装)安装光盘的
adminnettoolsnetsetuprplimage.exe 复制到硬盘,将启动软盘插入软驱,然后在
纯MSDOS方式下执行 rplimage a: 就会得到启动映象 net$dos.sys,再将启动映象
net$dos.sys 复制到启动盘上(如果启动盘空间不够,可以先删除启动盘上的一些文件以
留出空间)。
启动 Linux 服务器,以 root 用户登录,将启动软盘插入软驱,执行下面的命令
mount -t vfat /dev/fd0 /mnt/floppy
cp /mnt/floppy/net$dos.sys /var/mars_nwesyslogin
umount /dev/fd0
然后执行 setup ,移动光棒至 System services 选项回车,出现 Services 设置画面,
将dhcpd,nfs,mars-nwe 都设为有效,退出 setup 程序,执行以下的命令以启动上述服
务进程:
/etc/rc.d/rc3.d/*mars-nwe restart
/etc/rc.d/rc3.d/*dhcpd restart
/etc/rc.d/rc3.d/*nfs restart
下一次再启动服务器时,上述服务进程会自动执行。
至此,所有的设置工作全部完成了,联好网络随便打开一台无盘工作站,稍等一下,
出现远程引导的信息,接着会启动 Win95 ,接下来很快就会装载 Linux ,在一大堆
Linux 的启动信息之后如果看到 Linux 的登录提示,就说明远程启动成功了。
Linux 无盘工作站虽然运转起来了,但还有一个问题,就是交换的问题,因为Linux
是一个支持虚拟存储的操作系统,当机器内存不够时,Linux 就会把内存中暂时不用的数
据换出到交换设备上,等需要时再换回来,刚才我们没有设置交换区,在无盘工作站上用
free 命令就会发现交换区为零,如果无盘工作站内存较大,运行一些不大的程序,没有
交换区还是可以的,但若运行大型程序就会出问题,下面介绍在服务器上设置交换区即远
程交换的方法。
对于2.1.101版以前的内核,要实现远程交换可有点费事,得从网络上下载有关的补
丁来修改内核代码,然后再编译内核映象,从2.1.101版后内核支持网络块设备,实现远
程交换就容易了,首先编译内核时要使 Network block device support 选项有效(刚才
编译内核时就是这么作的),再从http://atrey.karlin.mff.cuni.cz/~pavel/nbd/nbd.html
下载实用程序 nbd.14.tar.gz ,执行下面的命令
tar zxvf nbd.14.tar.gz
cd nbd
./configure
make
编译完后会得到文件 nbd-server 和 nbd-client,将它们复制到 /usr/sbin 下面:
cp nbd-server nbd-client /usr/sbin
然后编辑文件 /etc/rc.d/rc.sysinit,在文件最后加上一行
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &
执行刚才的命令激活nbd服务:
/usr/sbin/nbd-server 7999 /tftpboot/%s/swap > /dev/null &
下一次服务器启动时,上述命令会自动执行。
再在服务器上每个工作站目录(/tftpboot/192.168.0.1,/tftpboot/192.168.0.2等等)下
为各个无盘工作站建立交换文件,命令如下(本例中交换区大小为32M):
dd if=/dev/zero of=swap count=32768 bs=1024
mkswap swap
在每个工作站目录下文件 /etc/rc.d/rc.sysinit 的最后加上两行
/usr/sbin/nbd-client server 7999 /dev/nd0
swapon /dev/nd0
就这么简单,再打开无盘工作站试一试启动成功后登录系统,执行命令 free 就会看到在
显示信息的最后有这样一行:
Swap: 32764 XX XXXX
说明交换区设置成功了。
这样,一个完整的 Linux 无盘工作站网络就作好了,Linux 无盘工作站的用法很灵活,既可以象使用普通有盘工作站一样使用,还可以把无盘工作站当成别的 Unix 主机的终端,特别是可以作为 X 终端,运行远程 Unix 主机上的 X 应用。
最后告诉大家,如果你想采用BOOTP方式作 Linux 远程引导,我可以提供 EPROM 刻录服务,当然要收取少量的刻录费用.从DOS启动TurboLinux  2010-10-24 12:21:52|  分类: Linux系统故障 |  标签:turbolinux  vmlinuz  linux  loadlin  dev   |字号大中小 订阅 .


我们都知道,安装Linux时会有两个启动选项:使用LILO或者从软盘启动,其实我们还可以从DOS启动。
  以我安装的TurboLinux 6.0中文版为例,在安装光盘的dosutils目录下有一个文件loadlin.exe,我们可以首先把loadlin.exe和dosutils\autoboot里的vmlinuz拷贝到C:\Linux目录,然后在此目录下制作一个linux.bat文件,文件内容如下:
  loadlin vmlinuz root=/dev/hdb2
  解释:vmlinuz是Linux的核心,root=/dev/hdb2表示我的Linux根目录在第二硬盘的第二分区,如果是第一硬盘的第一分区当然就应该是root=/dev/hda1了,其它的依此类推。
  运行Linux.bat,开始启动。启动时会显示很多乱码,进入X Windows后则不再出现乱码。其实我们只要把Linux.bat修改为如下内容就一切OK了:
  loadlin vmlinuz root=/dev/hdb2 vga=normal LANG=zh_CN.GBK
  LANGUAGE=zh_CN.GBK
  解释:因为从dosutils\autoboot目录下拷贝的vmlinuz并不是最新的核心,有很多新的功能它都不能支持,所以在启动Turbo Linux后应找到Linux分区下的同名文件替换它。
对照DOS学Linux的基本命令  2010-10-24 12:22:17|  分类: Linux系统故障 |  标签:linux  目录  命令  软盘  dev   |字号大中小 订阅 .


随着中文版的Linux的诞生,Linux这个诞生于网络,发展于网络的开放式操作系统已经步入我们的世界,它具有Unix系统的可靠性、稳定性、多任务性以及强大的网络功能,吸引了广大的电脑爱好者。为使大家能更好、更快地熟悉、深入到Linux系统中,现将Linux的基本操作与我们所熟悉的DOS操作中相似的命令加以比较,以进行基本命令的学习。
  一、基础知识
  1.开机进入
  Linux系统的开机同正常的DOS、Windows开关机顺序相同。若是多操作系统则在LILO boot:后输入Linux,就可进入Linux的注册提示符Login:,在其后输入用户名,在口令提示符password:后输入口令,注册正确后,可进入相应的用户环境。如输入:root,及其密码,可进入超级用户环境#,输入其他用户名及口令,可进入该用户环境$。
  2.关机退出
  在超级用户提示符#下输入halt(立即关机)或shutdown time(延迟time分后关机,给各用户每隔一段时间发出一个还有多长时间将关机的警告)后,计算机将进行一系列的关机工作,最后出现System halt(关机结束),就可以关闭电源了。非超级用户则需用exit退出操作环境,再进入超级用户环境,方可进行关机工作。
  3.操作注意事项
  在Linux中有一些与DOS不完全相同的地方,见^33020202a^表:
  在Linux系统中,超级用户的系统提示符是#,一般情况下普通用户的系统提示符是S,通用户的系统提示符也同DOS一样可以进行更改;通配符中*与?的含义与DOS中一样,[]是仅包括括号内的符号,连续的符号可用“-”连接首尾的符号代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用[a-fi-k]表示。
  4.文件类型
  与DOS、Windows不同的是,在Linux系统中,目录和设备都被视为文件,共有四种类型的文件,它们是:①普通文件,在长列目录方式时行首用符号“-”表示。②目录文件,即我们通常所说的目录,在长列目录方式时行首用字母“d”表示。③字符设备文件,如显示器、打印机、终端等,在长列目录方式时行首用字母“c”表示。④块设备文件,如硬盘、软盘、光盘在长列目录方式时行首用字母“b”表示。
  在Linux中用长格式列目录命令ls -l时,显示如下:
  文件类型
  - rwxrw - r - - 5 user group 1089  nov 18 1998  filename
  含义是:
  存取权    用户   组名   字节数   最后修改时间   文件名
  大家对DOS下的8.3格式的文件名都一定很熟悉了,由于它的表达能力有限,所以在Windows95之后加入了长文件名支持,Linux继承了UNIX的优点,也可以用长字符串作文件名。但是在Linux中文件类型不像在DOS下那样容易从文件的扩展名上了解到,在DOS下的可执行文件的扩展名为com或exe,而在Linux中只能通过文件属性得知,采用命令ls -F可区分目录和文件,在目录后有“/”符号,可执行文件后有“*”符号,用ls -aF可把所有的文件和目录列出,包括隐藏的文件和目录,隐藏文件的文件名以点号“.”开头。
  5.读取权限
  在Linux中,文件的主人即所有者,其他使用者分别称为同组者、其他人,为保证各用户文件的安全,Linux同UNIX一样通过限制某些用户对文件的随意存取。共有三个级别的存取权:读r、写w、执行x。在存取权中的字符顺序是:所有者、同组人、其他人。在上例中分别表示:主人对文件拥有读写权和执行权,同组人对文件拥有读写权、其他人对文件只拥有读权。
  二、文件管理和目录操作
  与DOS、Windows一样,在Linux中也有许多文件管理和目录操作方面的命令,对二者的主要命令列表如下:
  1.文件管理(^33020202b^)
  2.目录操作(^33020202c^)
  在二者中,命令的格式都是一样的,只是选项、参数不相同而已,也可以进行组合操作,且Linux的命令的功能更为强大,DOS中的不少命令都是借鉴UNIX而来的,而Linux正是基于UNIX发展起来的,这也是二者有着几乎相同的命令和格式的原因之一。
  三、软、硬盘及光驱的使用
  1.软、硬盘及光驱的使用
  在Linux中对其他硬盘逻辑分区、软盘,光盘的使用与我们通常在DOS与Windows中的使用方法是不一样的,不能直接访问,因为在Linux中它们都被视为文件,因此在访问使用前必须使用装载命令mount将它们装载到系统的/mnt目录中来,使用结束,必须进行卸载。命令格式如下:
  mount -t 文件类型 设备名 装载目录
  文件类型常用的有:
  msdos  dos分区文件
  ext2   Linux的文件系统
  swap   Linux swap分区或swap文件
  iso9660  CD-ROM的文件系统
  vfat   支持长文件名的dos分区
  hpfs   OS/2分区文件系统
  设备名是指要装载的设备的名称,如软盘、硬盘、光盘等,软盘一般为/dev/fd0 fd1,硬盘一般为/dev/hda hdb,硬盘逻辑分区一般为hda1 hda2…等等,光盘一般为/dev/hdc。在装载前一般要在/dev/mnt目录下建立一个空的目录,如软盘为floppy,硬盘分区为其盘符如c、d等等,光盘为cd-rom,使用命令:
  mount -t msdos /dev/fd0 /mnt/floppy
   装载一个mddos格式的软盘
  mount -t ext2 /dev/fd0 /mnt/floppy
   装载一个Linux格式的软盘
  mount -t vfat /dev/hda1 /mnt/c
   装载Windows98格式的硬盘分区
  mount -t iso9660 /dev/hdc /mnt/cd-rom
   装载一个光盘
  装载完成之后便可对该目录进行操作,在使用新的软盘及光盘前必须退出该目录,使用卸载命令进行卸载,方可使用新的软盘及光盘,否则系统不会承认该软盘的,光盘在卸载前是不能用光驱面板前的弹出键退出的。
  2.格式化命令mkfs
  格式化软盘时不需事先安装空盘,只需将软盘放入软驱中,使用如下命令,便可格式化一张在Linux中使用的软盘:
  #mkfs -t ext2 /dev/fd0 1440
  在熟悉以上基本命令之后,就可以进一步学习其他命令和软件,例如:文件编辑软件vi,存取权限的修改,检查修复文件系统,增减用户及修改密码,安装其他Linux文件,及一些Linux的实用工具软件,建立x-Windows图形界面,利用Linux上网等等,来增加对Linux的感性认识。
.构建DNS服务器简易指南  2010-10-24 12:23:04|  分类: Linux系统故障 |  标签: |字号大中小 订阅 .


在用TCP/IP协议族架设的网络中,每一个节点都有一个唯一的IP地址,用来作为它们唯一的标志。然而,如果让使用者来记住这些毫无记忆规律的IP地址将是不可想象的。人们就需要一种有记忆规律的字符串来作为唯一标记节点的名字。
然而,虽然符号名对于人来说是极为方便的,但是在计算机上实现却不是那么方便的。为了解决这个需求,应运而生了一个域名服务系统DNS,它运行在TCP协议之上,负责将字符名——域名转换成实际相对应的IP地址。这个过程就是域名解析,负责域名解析的机器就叫域名服务器。


8.1 域名解析的方法


8.1.1 最早的域名解析方法
最简单的主机名解析方法是,在一个文件中记录所有主机名及与其对应的IP地址,并保证该文件中主机名的唯一性,通过检索文件中的便可以完成主机名的解析。采用这种最简单的解决方法有其历史原因:
在整个70年代,APRANET只是一个小规模的,由类似的数百台主机组成的团体。于是为了解决主机名解析的问题,将连接到ARPANET上每台主机的名字与对应的地址都保存在HOSTS.TXT文件中。这样每增加一台机器,就必须修改HOSTS.TXT文件一次。随着网络的不断发展,网络中的主机数量爆炸性地增加,这种域名解析的方法已经无法适应新的解析需要。


8.1.2 分布式的域名服务器
这种方法,我们已经在基础篇的第六章中有了详细的叙述,在此就不再重复了。在这种分布式的域名服务器体系中,每一台域名服务器(DNS)负责解析属于自己的这一部分主机的域名。
一般说来,如果你所处在公司或组织所拥有的主机并不多,一般是将域名的解析工作交给自己的ISP的域名服务器来完成。而如果你所在组织拥有的主机比较多,我们就可以组建自己的域名服务器负责解析你所在组织的主机。


8.2 域名服务器建立实例


8.2.1 实例环境
假设我们需要建立一台应用于以下情况的一个企业主域名服务器。
1. 拥有一个C类网段地址,为202.101.55.0
2. 企业域名注册为company.com。
3. 域名服务器的IP定为202.101.55.55,主机名为dns.company.com。它同时充当Proxy.
4. 企业网通过路由器与Internet连接。
5. 要解析的服务器有:
www.company.com (202.101.55.1) Web服务器
mail.company.com (202.101.55.2) E-Mail服务器


8.2.2 安装前的准备工作
首先要保证在作为系中统有/etc/resolv.conf和/etc/hosts.conf这两个文件。/etc/resolv.conf文件中内容如下所示:
domain compay.com
nameserver 202.101.55.55
其中第一行指出对于任何希望连到它上面的主机应该搜寻的域。而第二行指出了在哪个地址可以找到需要的域名服务大。/etc/hosts.conf的内容如下所示:
order hosts,bind
multi on
这里的设置告诉主机名称先在/etc/hosts文件中搜索,然后再查询域名服务器。


8.2.3 定义文件/etc/named.boot
要使LINUX系统完成域名服务器的功能,则需要运行一个named的服务进程。这个服务进程可以在安装LINUX时选中。
named启动时需要读取一个初始化文件——/etc/named.boot,这个文件是named的基本配置文件。它并不包含任何DNS数据,针对前面的假定环境,我们要在这个文件中写入:
diretory /etc/named
primary company.com db.company
primary 0.0.127.IN-ADDR.ARPA db.127.0.0
primary 55.101.202.IN-ADDR.ARPA db.202.101.55
cache . db.cache
下面我们逐行讲解这个文件中的内容:
1) 在第一行中我们指定named从/etc/named目录下读取DNS数据文件。这个目录可以自行指定并创建,指定后将所有的DNS数据文件均存放在这个目录下;
2) 第二行指定named作为company.com的主域名服务器,db.company文件中包含了所有*.my.com形式的域名的解析数据。
3) 第三行则指定named作为127.0.0网段(本地loopback)地址的转换主服务器。其中db.127.0.0文件中包含了所有127.0.0.*形式的地址到域名的转换数据。
4) 第四行指定named作为202.101.55网段地址转换主服务器,db.202.101.55文件中包含了所有以202.101.55.*形式的地址到域名的转换数据。
5) 最后一行指定named从db.cache文件中获得Internet的顶层“根”服务器地址。
要说明的是,这些数据文件的名称均是自行决定的。


8.2.3 建立正向域名转换数据文件db.company
根据/etc/named.boot文件中的定义,我们在/etc/named目录下建立文件db.company,并且在其中写入所有在company.com域内的主机节点。根据前面假定的环境,可以写入:


@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.com
www IN A 202.101.55.1
email IN A 202.101.55.2
proxy IN CNAME dns


下面我们就逐句地理解这里的配置。
1. SOA是主服务器设定文件中一定要设定的命令,我们通常将它放在文件的第一行。
1) 最前面的符号“@”代表目前所管辖的域。
2) 接着的“IN”代表地址类别,这里就是固定使用“IN”的。
3) 接下来就是命令SOA。
4) 接下来填入域名服务器,记住由于DNS数据文件的特殊格式规定,在最后一定要加上“·”,在这个例子中,我们填入域名服务器:“dns.company.com.”
5) 接下来是域名服务器管理员的E-MAIL地址,但要注意的是,E-Mail地址中的分隔符“@”在这里用“·”来代替,在最后也要加上“。”,在这里,我们相应写入:“root.dns.company.com.”
6) 接下来在括号内填上各种选项:
文件版本号:当你修改这个文件的内容时,也要修改这个版本序列号。以此来区分是否有更新。
更新时间:指定二级服务器向主服务器拷贝数据的更新时间周期。
重试时间:指定二级服务器在更新出现通信故障时的重试时间。
终止时间:指定二级服务器重新执行更新动作后仍然无法完成更新任务而终止更新的时间。
生存时间:指定当域名服务器询问某个域名和其IP地址后,在域名服务器上放置的时间。
注:二级服务器所设定的域名服务器是主服务器的备份主机。
2. 在第二行中,我们用NS命令指定这个域的域名服务器。在这里我们指出这个域的域名服务器是“dns.company.com”。
3. 接下来的两行我们使用A命令来指定域名与IP地址的对应关系。我们将Web服务器的域名www.company.com与其IP地址202.101.55.1对应起来;将E-Mail服务器的域名mail.company.com与其IP地址202.101.55.2对应起来。
4. 最后一行,我们使用了CNAME命令为dns.company.com指定了另一个域名以供使用:proxy.company.com。


8.2.3 建立反向域名转换数据文件db.127.0.0和db.202.101.55
反向域名转换数据文件用来提供IP地址查询相应的DNS主机名,每个网段分别有一个数据文件。
1. 网段127.0.0通常只有一个地址,那就是127.0.0.1 loopback地址。所以我们在db.127.0.0中写入的内容是:


@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.com
1 IN PTR localhost


前面两名相信读者已经不会陌生,最后一句我们使用PTR命令让配置文件中的主机可以使用IP地址来知道所对应的域名。
最前面的1代表127.0.0.1,对应的域名就是localhost。
2.网段202.101.55就可能会存在更多的记录,前面假定环境下的设置应是:


@ IN SOA dns.company.com. root.dns.company.com.(
200002011 ;文件版本号
28800 ;刷新时间(秒)
7200 ;重试时间(秒)
3600000 ;终止时间(秒)
86400) ;TTL生存时间(秒)
IN NS dns.company.com
1 IN PTR www
2 IN PTR email
55 IN PTR dns
55 IN PTR proxy


8.2.4 获得db.cache文件
在LINUX系统中通常在提供了一个named.ca的文件,该文件中Internet的顶层域名服务器,但是这个文件通常会发生变化,所以建议最好从Internet上下载最新的版本。该文件可以通过匿名FTP从ftp.rs.internic.net/domain下载,文件名是named.boot。将它拷贝一份为db.cache就可以了。


8.3 测试域名服务器


8.3.1 使用nslookup测试
nslookup命令的功能是查询域名服务器中的数据资料。下例就是使用它来测试域名服务器是否架设成功,其中斜体字代表要输入的内容。


# nslookup
Default server:dns.company.com
Address:202.101.55.55 ;能出现这些信息代表成功
> www
server:dns.company.com
Address:202.101.55.1


8.3.2 使用ping测试
还有一种更简单的测试方法,那就是用ping命令,如果成功将显示:


# ping www.company.com


Ping www.company.com(202.101.55.1);56 data bytes
64 bytes from 202.101.55.1:icmp_seq=0 ttl=255 time=1.3ms
64 bytes from 202.101.55.1:icmp_seq=1 ttl=255 time=0.6ms
64 bytes from 202.101.55.1:icmp_seq=2 ttl=255 time=0.6ms
……


8.4 小技巧
安装好域名服务器后,在内部使用域名进行远程连接时,会发现速度非常慢。其实只要/etc/hosts中加上所有内部的机器的域名就可以了。  
 
 怎样彻底删除上网痕迹?  2010-10-25 16:20:00|  分类: 电脑常识 |  标签:对话框  internet  删除  选项  清除   |字号大中小 订阅 .


  ①清空Internet临时文件夹 
  别人查看“Internet临时文件夹”下的图片、Flash等文件便能大体知道你曾到过的网站。要清除它们,可依次单击IE菜单栏中的“工具”→“Internet选项”,打开“Internet选项”对话框,在“常规”标签中点击“删除文件”按钮,在弹出的“删除文件”窗口中勾选“删除所有脱机内容”,最后点击“确定”。


  ②我不要“小甜饼”(Cookie) 


  Cookie也可能是泄密的一个“罪魁祸首”,在“Internet选项”对话框的“常规”标签中单击“删除Cookies”按钮,待弹出窗口后单击“确定”按钮,可删除它们。 


  小提示:一种保险的办法是在上网后,进入Internet临时文件夹(该文件夹可在Internet选项对话框的“常规”选项下点“设置”来查看具体位置),删除其下所有内容,这样,临时文件及Cookie等都会被清除。 


  ③消除访问网页的历史记录 


  IE会将最近三周的访问历史记下,要“踏网无痕”可得清除它们,只要删除“C:\Documents and Settings\用户名\Local Settings\History”文件夹中的所有内容即可。也可在Internet选项对话框的“常规”标签下点“清除历史纪录”按钮。 


  要让IE不记录访问历史,请在Internet选项对话框的“常规”选项下,将网页保存在历史纪录中的天数从默认的20改成0即可。 


  ④清除IE记住的表单内容 


  当访问网站时,一些网页会提示输入,例如,搜索时会要求输入搜索内容、登录邮箱则要填用户名、密码——这些东西会被IE自动记录。要删除它们,可在“Internet选项”对话框的“内容”标签下点“自动完成”按钮,在弹出的“自动完成设置”对话框中将“表单”、“表单上的用户名和密码”和“提示我保存密码”前的钩去掉,再单击“清除表单”、“清除密码”按钮,当询问时点“确定”。 


  ⑤删除地址栏列表中的网址 


  在IE地址栏中输入要访问站点的部分字母时会自动打开列表,其中有最近曾访问的相匹配的站点,这也得清除。 


  在“Internet选项”对话框的“内容”标签下单击“自动完成”按钮,打开“自动完成”对话框,去掉“Web地址”前的钩。 


  若安装了“中文网址”软件,采用上法不能将地址栏列表中的“网络实名”清除,此时要在“Internet选项”对话框的“高级”选项卡下,选中“网络实名”中的“清除地址栏下拉列表中显示的网络实名”项,单击“确定”。 


  小提示:当完成上述操作后,千万别忘清空回收站。若此处没有收拾干净,就将前功尽弃了。


设置IE浏览密码,可以帮助你控制在该计算机上看到的Internet内容。该功能非常的有用,如果您的家里有小孩,这个功能就可以帮助你,防止他在您不在家时上网浏览儿童不宜的内容,如暴力和性等。只有输入了密码才能访问IE浏览器. 


  一.现在教你如何设置浏览器密码.


  首先请运行IE,


  点击“工具”→“Internet选项”→“内容”标签→“启用”按钮→选中“常规”标签→“创建密码”这样就设置好密码了.以后想要浏览网页只有输入了密码才可以正常上网 


  但是在使用过程中如果自己忘记了设置的口令,那就麻烦了!一旦您设置了分级审查口令,即使重新安装IE是没有效果的。怎么办呢?难道要格式化硬盘?当然不需要!这里我教您两招,帮您解决这个问题。 


  二.破解方法


  修改注册表:微软的东西涉及到口令一般都与注册表有关,在修改之前您要备份一下你的注册表,以免无意中把注册表修改错了!备份好了咱们就开始动手吧!


  点击“开始”→“运行”,输入regedit打开注册表编辑器。找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Ratings,这里有一个“key”的主键,这就是您设置的分级审查口令,现在直接将它删除即可。


  重新启动之后,您再重新设置IE“Internet属性”→“内容”→“分级审查”,您会发现分级审查口令已经被复位了,现在您只要输入新的分级审查口令即可。当然,直接删除“ratings”这个键,也可以取消分级审查的限制!本方法在Windows 9x/NT/2000/XP下都有效。
.怎么才能知道自己是否被别人拉进QQ黑名单?  2010-10-25 16:31:13|  分类: 电脑常识 |  标签:黑名单  文件  qq  离线  对方   |字号大中小 订阅 .


 






 






        现在QQ聊天工具非常流行,也是上网必备工具。在某些情况下,我们想知道自己是否被别人拉进了黑名单,QQ本身也没有这个功能,又怕网上的工具靠不住,今天教大家一个技巧,可能又些朋友已经知道了,请路过,谢谢。 本方法确实可行,本人也经过测试,其实很简单,方法如下:
  打开与对方的聊天窗口,然后随便找个文件或者程序软件包之类的东西拉进聊天对话框中








      此时对方可能已经把你拉进黑名单,也可能正在准备接收你的文件,但这里我们还需要做一个重要的操作。点击“传文件”窗口里的“发送离线文件”,一般在正常对方没有把你拉进黑名单的情况下,文件是可以正常传输的。当点击了“发送离线文件”后,却显示如下信息时,就说明你的好友已经和你说再见了。