友声网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
开启左侧

Linux 应用宝典

[复制链接]
admin 发表于 2006-3-25 20:25 | 显示全部楼层 |阅读模式
Linux应用
1.如何获得内核版本号?
2.如何获得glibc的版本号?
3.如何获得Xserver的版本号?
4.如果检测到NIS域,但是home目录不能mount(缺少automounter),我该怎么办?
5.如果网卡安装正常,但是ping不通jumbo等服务器,是什么问题?
6.我如何在本机上设置cups的默认打印机?
7.我试图用grub启动系统时, 出现的信息提示:不能mount引导分区,我该怎么办?
8.我的机器上有cups和lprng,但是我卸载lprng后, cups不能工作了。
9.如何切换consoles?
10.我不能从CD上开始staroffice的安装,出了什么毛病?

1.) 命令为:uname -a

2.) cd /lib; ./libc.so.6

3.) XFree86 -version (debian系统中无效)

4.) 必须创建对应的home目录。例如:mkdir -p /home/fh99191 (适用于NIS user fh99191)。重新登陆后,缺省进入该目录

5.)网关设置错误。网关用于在不同子网间进行路由。多数linux发布版中,该文件为/etc/route.conf。 SuSE 7.2中该文件内容如下: 129.157.138.0 0.0.0.0 255.255.255.0 eth0 default 129.157.138.9 0.0.0.0 eth0

在缺省项之后,你可以发现网关地址。由于不同发行版中该文件的结构不同,没有必要详细描述该文件的细节。

6.)一般来说缺省打印机会设置为cups的系统范围,这个打印机就是所有用户的缺省打印机。如果你要设置 自己的打印机,可以执行:lpoptions -d ,例如:lpoptions -d xm1sof(用于xm1sof打印机)

7.)grub的这个错误信息告诉我们该OS的文件系统未知。缺省直接支持的文件系统是Ext2fs, Reiserfs, Fat16, Fat32, FFS (Fast file system)以及Minix,带有这些文件系统的OS可以直接装载,带有未知文件系统的OS可以用选项chain加载。 这就是说,它们自己的bootlaoder可以引导它们自己。在menu.lst文件中必须加入chainloader +1一行。在linuxfibel可以获取grub的详细信息

8.)cups需要的包很可能在卸载lprng的时候被删除了。为避免冲突,你应该删除printer的所有包。删除完毕后,必须重新安装cups和cups-client的包

9.)你可以按CTRL+ALT+F<2-6>,从X11切换到console。如果你已经在一个console中,按ALT+F<2-6>就可以了。如果你想切换回X11,你可以按ALT+F7,console的编号7就是X11.

10.) 如果你从CD上执行程序,你应该检查,fstab文件中是否有下面一行: /dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0 (/dev/cdrom和/media/cdrom都是SuSE的条目,别的发行版可能会有不同)。 如果缺少该行,程序就无法从CD上执行。


^V^^V^^V^^V^^V^^V^

Fortran,在 Linux 上安家

您的公司除了为过时的小型计算机通常需要的特殊电能和通风付费以外,是否还要为运行旧的Fortran程序所需的软硬件支付繁重的许可证费用和支持费用?如果是的话,那么可以开始试着将那些程序重新部署到Linux服务器上,并了解一下在提高这些应用程序性能或有效性的同时,能砍掉多少那样的费用。

Linux还主管了许多基于Fortran的新工作(比您可能意识到的还要多)。Linux程序员之间的语言之争通常涉及像Java、Python、C++或甚至C#这样的流行语言。在这种情况下,于二十世纪五十年代末最早发明的 Cobol、Fortran 和 Lisp 这些语言所做的有用工作量可能会出乎您的意料。

特别是,Fortran已在Linux下找到了快乐的家园。本月的“服务器诊所”概述了您应该了解的在 Linux 上使用 Fortran 的重要性以及如何了解更多信息。

求助于 Linux

不要认为一谈到Fortran就一定要追溯历史。围绕Fortran开展的行动有很多:国际 J3 委员会起草了新的Fortran2000标准、编译器工程方面已经取得令人瞩目的发展以及每年产生了大量新应用程序。有关 Fortran 的各种消息都暗示Linux在新的开发中所占比例在不断增加;例如,在高性能面向科学的群集上通常都少不了 Fortran和Linux。Linux4chemistry目录,以及科学和工程方面最类似的目录以拥有许多用Fortran编码的程序为特色。程序员对Fortran很熟悉而且Fortran在性能方面优于C,这使它继续受到技术程序员的青睐。

Linux对旧的应用程序所起的作用虽然不太明显,但经论证更有趣。有一个用Fortran 编码的庞大“骨干”程序累积,其中的一些程序已有长达三十五年的历史了,支持全世界范围的企业和实验室中日常的操作。在某些领域中,与“旧”相关联的只有Y2K泡沫。但是与它相关的远不止这些;成千上万个用Fortran编码的程序在每个工作日都报告财政状况、控制工厂设备、分析实验数据、管理人事记录、切换通信硬件以及执行类似的重要功能。这些程序中的许多在其所担当的角色中都完美地运作着,而且除了运行它们的硬件发生老化以外,并不需要特别更改。例如,Hewlett-Packard的MPE和OpenVMS产品线的退休向客户发出了一个严峻的挑战,因为在过去的几十年中,他们一直依赖这些小型计算机品牌。

Linux能解救这些问题。服务器级别的Linux机器很可靠,能长时间正常运行,提供了良好的系统服务(包括异构网络中的互操作性),主管各种高质量的Fortran编译器并且很安全(至少可与其它准备向企业提供的系统相比拟)。银行、制造商和政府机构通常为了“整合”,正悄悄地将他们的许多旧程序移到 Linux 上。

对于这样的迁移,Linux服务器的质量和可用性是让人非常满意的;在我访谈过的组织中,这些项目的结果通常都比预期的好。但是,由于竞争、安全性和通常在法律方面的原因,在我遇到的所有人中,没人愿意“公开发布”访谈。金融公司和制造公司如果透露他们内部过程的细节,不仅得不到任何好处,反而有许多风险。但是,军事计算的相对开放与此形成了鲜明的对比。例如,大家都知道许多武器系统和战役的模拟都是用 Fortran 编写的。英国国防部在 Linux 上主管了 F3 狂风(Tornado)战斗机的分析程序。

如果您在处理这样的旧应用程序迁移或向正从事Fortran开发的团队提供支持,以下是您应该知道的用于Linux的Fortran参考资料:

大量可用的标准和工具

流行的各个Linux分发版一般包含GNU项目的免费G77Fortran编译器副本。这个编译器提供了命令行参数,这些参数允许该处理器处理范围很广的Fortran(根据66、77、90和95标准及几种变体编码)。G77 在灵活性和可移植性方面占优,但却以性能为代价,所以良好调优的商业编译器的市场依旧会很繁荣。请注意 G77 通常被安装成名为“f77”的可执行文件,其它几个 Fortran 编译器也是如此。

甚至在专有编译器和工具之中,也可以免费获得几个,包括一种用于 Linux 的 Intel 7.0Fortran编译器的可下载形式。这个编译器性能极佳,看来它在x86和Itanium级Linux主机上会有光明的未来,因为 Intel 的编译器组整合了曾在 DEC、Compaq 和 HP 确立声誉的工程团队。

有几家公司提供了各种转换程序。这些工具可能会映射源代码,例如可以将符合F77的源代码映射成F95文本。尽管转换程序在过去一直很重要,但在当前的LinuxFortran用户中,我已经很少碰到依赖它们的用户。只要通过调优他们的Fortran编译器,当前的项目似乎就满足了他们的需求。比使用命令行参数时遇到的难题更棘手的通常涉及专门和专有语言扩展;处理它们需要人类程序员具备熟练的转换技能。不管哪种情况,自动源代码转换程序在当前已没有多少优势。

其它工具现在似乎更流行。有几种交互式开发环境(IDE)(包括Absoft的ProFortran)可以处理 Fortran。概要分析也是一项成熟的技术,对于重视性能的人很有用。

 楼主| admin 发表于 2006-3-25 20:25 | 显示全部楼层
在LinuxShell程序中进行身份验证
一.缘起

Linux系统管理员常常碰到的头痛问题是,在确定系统没有被入侵的前提下,不知道哪个人不小心运行了某个特定用途的Shell程序,把系统搞得一塌糊涂。而且,系统记录显示该人使用的是公用帐号(root或者admin),你无法知道这个人在现实生活中具体对应的是哪一人。

二.开场

针对以上问题,解决方案有二:其一,追查时间和ip,根据时间和ip,可以追查到该人是从哪里出来的。这套解决方案只能确定以某人为首的一群可疑人。if大家都是通过代理连服务器的话,那除了one by one查log之外更无良策了。其二,在Shell程序中通过身份验证记录log,明确责任。

三.求解

本文利用Qmail作者D. J. Bernstein大师编写的checkpassword工具进行身份验证。

1. 下载:
http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz

2. 安装:
tar xvfz checkpassword-0.90.tar.gz
cd checkpassword-0.90
make
make setup check

3. 如果可执行文件checkpassword没有在/bin下出现的话,goto 1

再加上下面这段程序就大功告成了:

--------------------------------
#!/bin/sh
#
# Filename: auth.sh
# Author: hutuworm
# @Copyleft 2003 hutuworm.org
#
function auth_failed () {
echo "你耍我啊?"
exit 1
}
echo "※※※※※※※※※※※"
echo "※猪圈重地 闲人莫入※"
echo "※※※※※※※※※※※"
printf "请输入帐号:"
read ACCOUNT
if [ $ACCOUNT = 'admin' -o $ACCOUNT = 'root' ]
then
echo "本圈不欢迎admin&root!"
exit 1
fi
printf "请输入密码:"
stty -echo
read PASSWORD
stty echo
echo ""
printf "$ACCOUNT\0$PASSWORD\0Y123456\0" | /bin/checkpassword logger "$ACCOUNT used auth.sh" 3<&0 || auth_failed
echo "欢迎光临糊涂馋寺附属斋堂之猪圈! :P"
--------------------------------



四.验收

$ chmod +x auth.sh
$
$ ./auth.sh
※※※※※※※※※※※
※猪圈重地 闲人莫入※
※※※※※※※※※※※
请输入帐号:hutuworm
请输入密码:
你耍我啊?
$
$ ./auth.sh
※※※※※※※※※※※
※猪圈重地 闲人莫入※
※※※※※※※※※※※
请输入帐号:admin
请输入密码:
本圈不欢迎admin&root!
$
$ ./auth.sh
※※※※※※※※※※※
※猪圈重地 闲人莫入※
※※※※※※※※※※※
请输入帐号:hutuworm
请输入密码:
欢迎光临糊涂馋寺附属斋堂之猪圈! :P
$
$ tail -1 /var/log/messages
May 5 13:51:45 hutuworm.org 5月 5 13:51:45 logger: hutuworm used auth.sh
 楼主| admin 发表于 2006-3-25 20:26 | 显示全部楼层
Linux应用问答=========!!!!!!!!
桌面


问:我在编译Linux 2.6内核时没编译intel815的显卡驱动模块,是否有办法可以补上?

答:方法很简单,只需运行make menuconfig,选上驱动模块后,再运行make modules和make modules_install即可。

问:系统安装时有三个区,分别挂载了hda9(/)、hda10(/home)和hda5(swap),现在想把/home并到hda9里面去,从而空出hda10,我该怎么做?下面是我的/etc/fstab文件的内容:

LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home /home ext3 defaults 1 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda5 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0



是不是只要把有/home那行删掉就可以了?
机器上安装有三个操作系统:Red Hat 9.0(Kernel:2.4 & 2.6.4)、Windows 2000、Windows XP。

答:请按以下步骤进行操作:

#cp -a /home/* /mnt/temp
#umount /home
#mv /mnt/temp/* /home
#fdisk /dev/had



按d删除分区,按10选分区号,即删除hda10。按w使之生效并退出。然后重启用QtParted或PM之类的软件把hda9扩大它。你的fstab有两行应该是这样的:

/dev/hda9 / ext3 defaults 1 1
/dev/hda10 /home ext3 defaults 1 2



问:我不需要最新的内核,只想知道稳定的内核有哪些版本?

答:Linux内核版本号的格式如A.B.C,其中B为偶数的的版本是稳定的版本,并且C越大的越新,相对而言bug越少,越稳定。

问:我本来的系统是Windows 2000,安装Linux后mount上FAT32的分区,里面的文件的所有者都为root。我想把这些文件的属主改为另一个用户,我试过以下的方法,但失败了:
chown 用户名:组名 文件名
我该怎么办呢?

答:原因是你一旦将分区mount 上以后就不可以改了,因此你可以在mount时候指定,比如:
mount -t vfat -o uid=500 /dev/hda1 /mnt/c
更多选项,参见 man mount。

问:我使用的是Red Hat AS 3.0,每次启动时都有Checking for new hardware项,会停留很长时间,不知道怎么把它给关闭了,必竟不是每次都有新的硬件被添加啊?

答:你可以按照以下步骤将其关闭:#setup
打开System Services项,并将其中的kudzu选项勾掉,或者直接运行以下命令即可:#chkconfig kuduz off

问:我的笔记本具体配置如下:
硬盘:5GB
内存:48MB
CPU:奔腾100MHz

没有光驱,开机启动时候只能设置成从C盘启动,或者从软驱启动。有一个网卡和一个红外线接口,现在上面已经有Windows 98了,如果Linux装好的话,Windows 98没有也没有关系的。我就不知道到底能不能够安装Linux?

答:完全可以。但建议找老一点的版本装。相对来说,老版本对硬件要求比较低(比如Red Hat 6.2),可以做启动盘从硬盘安装,也可以从网络安装。一般来说你的网卡应该会被识别的。这样的安装主题网上很多,应该先找一个教程看一看。

问:vi可以编辑一个只读文件吗?如果不可以,如何改变文件的只读属性和其它属性呢?

答:可以用“chmod 777 filename”命令直接将文件的属性改为可读写。

问:升级内核用tar版和rpm版有什么区别,各有什么优点?rpm版的是不是只要rpm -ivh kernel-souce-*.rpm就安装完了?这两种形式装完了以后是不是一样的?用rpm包会不会自动检测我的硬件相应配置内核?

答:*.src.rpm与*.rpm包是两个不同类型的包。后者用rpm命令就安装了;前者用rpm命令是无法安装的,需要用rpm-build等方式安装,所以,它跟*.tar.bz2等解压后make、make install差不多。

问:我用ln -s /home/mysql /var/lib/mysql建立了一个链接,现在想去掉该链接,我该怎么做?

答:只需要使用命令“unlink 链接文件”即可。

问:我安装的是Red Hat 9.0,分了一个交换分区和一个根分区。安装之后发现Linux的根分区被使用的一个字节都不剩,但是我选择安装的软件总计也没超过2GB。不知道这是为什么?

答:编辑你的/etc/syslog.conf文件,将下列所示行的“*”改为none即可:

authpriv.* /var/log/secure

问:如何截取Mplayer的播放界面? 我用PrintScreen键截取的图只能看到桌面上一蓝色框(播放界面)?

答:加上-vo x11选项即可。即mplayer -vo x11 mediafile。
 楼主| admin 发表于 2006-3-25 20:26 | 显示全部楼层
问:我用Gaim登录QQ,刚装时可以上去,可是最近登录时总是提示:
to server packet PID:0x0105(login2) is resend for 5 times,maybe something wrong in network,do you wanna resend again?
我上网没有问题,不知道是什么原因?

答:应该是防火墙级别的问题,去掉防火墙试一试。

问:从普通用户切换到root:

   [lgg@lgg lgg]$su
  Password:
  [lgg@lgg lgg]#
  [lgg@lgg lgg]#



只是符号从$变成了#,这是怎么了?

答:使用命令:

   [lgg@lgg lgg]$su -
  Password:
  [root@lgg root]#



问:我可以将ext2转成ext3吗?如果可以,我该怎么办?

答:当然可以。要把ext2文件系统转换成ext3,登录为根用户后键入:/sbin/tune2fs -j /dev/hdbX
在以上命令中,把 /dev/hdb 替换成设备名,把 X 替换成分区号码。
以上命令执行完毕后,请确定把 /etc/fstab 文件中的 ext2 文件系统改成 ext3 文件系统。
如果你要转换根文件系统,你将需要使用一个 initrd 映像(或 RAM 磁盘)来引导。要创建映像,运行 mkinitrd 程序。关于使用 mkinitrd 命令的信息,请键入 man mkinitrd。还请确定你的 GRUB 或 LILO 配置会载入 initrd。
如果更改没有成功,系统仍旧能够引导,只不过文件系统将会被挂载为 ext2 而不是 ext3。

问:用root登录时显示you have a new mail,这是什么意思,怎么看这个newmail?

答:/root下有关Mail的目录,root的邮件就放在那里,看邮件用mail命令。
 楼主| admin 发表于 2006-3-25 20:26 | 显示全部楼层
网络


问:如何知道某个程序所使用的端口(如telnet),以及如何更改一个程序要使用的端口?

答:只需直接查看并编辑etc目录下的services文件即可:#vi etc/services

问:我使用的是Red Hat,现在想开启telnet服务,我通过setup里的system serivces选项选上该服务,然后重新启动系统,那我能不能使用chkconfig直接把telnet服务从停止状态切换到开启状态?如果这样可以的话是不是就不用直接重启了?我现在还不太清楚Linux这类服务的运行方式,请讲一讲。谢谢!

答:设置服务在定义的运行级别上开启:#chkconfig telnet on
启动服务:#service telnet start
看到ok就说明可以使用了,如果不放心的话,可以看看进程:#ps -ef | grep telnet
有显示的话就说明已经开启telnet服务了。

问:为什么netstat 出来的protocol都是 Unix ? 比如我在我的机器上的运行结果是:

# netstat
……
Active Unix domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
Unix 12 [ ] DGRAM 1599 /dev/log
Unix 3 [ ] STREAM CONNECTED 6502
Unix 3 [ ] STREAM CONNECTED 6499 /tmp/.X11-Unix/X0
Unix 3 [ ] STREAM CONNECTED 6498
Unix 3 [ ] STREAM CONNECTED 6446
……



难道Linux都使用 Unix socket 吗?

答:这是因为socket最早是在Unix下出现的,所以socket protocol应该算是Unix类的。

问:我的ADSL不能上网,adsl-Status如下:

note:you have emabled demand-connection:adls-status may be inaccurate.
adsl-status:Link is up and running on interface ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.32.70.156 P-t-P:61.235.144.200 mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MLLTICAST MTU:1492 Metric:1
RX packets:8 errors:34 dropped:0 overruns:0 frane:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueue len:3
RX bytes:128(128.0 b) TX bytes:50(50.0 b)



运行ping www.google.com显示不通。运行netstat-r则有如下显示:

# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
61.235.144.200 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0



到底是什么原因呀?

答:应该是静态路由的问题。看看你的/etc/sysconfig/network-scripts/ifcfg-eth0文件是怎么写的。如果有GATEWAY=192.168.1.1这行的话要去除掉它。
注意ifcfg- eth0文件中的PEERDNS=yes,另外,/etc/ppp/目录下的(有时要改)chap-secrets文件中的“用户名”、“密码”和pap-secrets文件中的内容要一致。默认的情况下会出现用户名是root而不是你的帐号,所以上不了网。    
 楼主| admin 发表于 2006-3-25 20:26 | 显示全部楼层
硬件


问:我的系统配置为:

   CPU:XP 2500+S
  主板:技嘉 GA7N400 nForce 2 ultra 400 芯片
  硬盘:希捷 120GB
  内存:512MB DDR
  显卡:七彩虹 FX5200



系统分区情况为:C为主分区,安装Windows XP。D、E、F为Windows分区,共100GB。剩余20GB一个为Linux SWAP,一个为Linux ext2。
在安装Red Hat 9.0 时不能选择图形界面安装,现象是显示器进入省电模式,硬盘灯无反应,重启后选择文本方式安装,未出现任何问题,安装完成后系统启动检测也未出现问题,但是仍然不能进入图形界面。这是为什么呀?

答:Red Hat和七彩虹 FX5200的显卡有兼容性问题。对于这个问题,现在的办法是在文本界面下先安装最新的驱动,然后再启动X。如果这个还不行的话,只好换发行版了。

问:请问如何显示磁盘信息(例如挂载的硬盘数、硬盘的容量、逻辑分区大小等)?

答:可以通过df命令来显示,如:

# df -a
文件系统 1K-块 已用 可用 已用%挂载点
/dev/hda2 20161204 6931108 1220595637%/
none 0 0 0 -/proc
usbdevfs 0 0 0 -/proc/bus/usb
/dev/hda1 101089 9324 8654610%/boot
none 0 0 0 -/dev/pts
none 159444 0 1594440%/dev/shm



也可以通过以下步骤来查看:

#cd /proc/ide/hda
#ls
cache capacity driver geometry identify media model settings smart_thresholds smart_values
[root@myserver hda]# cat cache capacity geometry model settings
2048
240121728
physical 58853/16/255
logical 14946/255/63
Maxtor 6Y120L0
namevalueminmaxmode
acoustic00 254rw
address002rw….



问:刚开始时把硬盘挂在hdc,后来换成了hda,修改GRUB后能正常进入系统,但在加载交换分区的时候显示:load /dev/hdc...failed...。我想可能需要把交换分区的hdc改成hda才行,可是不知道在哪里改?

答:运行vi /etc/fstab,然后添加以下内容即可。
/dev/hdcx swap swap defaults 0 0

问:在Linux下的集成网卡安装不上,我应该怎么办?机器配置:
nVIDIA GeForce4 MX GPU(显卡芯片),可共享64MB的内存,板载网卡;
MCP nVIDIA MAC + Realtek RTL8201BL PHY。
在Windows XP中上ADSL没问题,但在Linux下没办法激活,信息显示是没有网卡设备,请问是网卡安装问题吗?需要在哪里寻找其Linux的驱动?

答:请到nVIDIA的官方网站上下载源码包然后自己编译即可。注意不要下载rpm安装包,否则问题还是无法解决。

问:我有2个硬盘,各装Windows 2000和Linux,启动Windows的速度很慢,在系统消息里面提示我的一个硬盘出现问题,要我更换设备。如果是装Windows 98没有这样的问题。我想可能是Windows发现系统中有2个硬盘,但不认识ext3分区,所以在那里一直检查,有人说把装有Linux的硬盘在BIOS中隐藏起来,但是隐藏后GRUB就起不来,有没有更好的解决方法?

答:那是你硬盘分区时候存在问题,可以用Windows 98引导盘引导,输入:fdisk /mbr,然后进Windows 2000,将Linux分区重新格式化,然后重新分区,重新安装。

问:我现在对我机器的情况和碰到的问题描述如下:
机器使用的是10GB硬盘,分区结构为C盘:4GB(主分区);D盘:6GB(逻辑分区)。一开始安装的是Windows XP PRO,在Windows XP中运行硬盘分区魔术师,将我的逻辑分区(D盘)删除,重新设置两个分区;一个为ext3,另一个为SWAP。在进行Red Hat 7.2安装时选择手动分区,我看了一下显示的内容:有hda1:NTFS,是Windows XP。hda2里有两个分区:hda5:ext3,Linux主分区;hda6:SWAP,交换分区。
我对hda5进行了编辑,选择挂接点为“/”,然后开始安装,正常结束。重新启动后还是进入到Windows XP,没有出现引导选择菜单。另外,我选择的启动管理程序是LILO,其它一切都是默认,只不过在手动分区时选择将Linux安装在ext3分区上。我想知道如何才能够进入Linux?

答:可以试一试以下的方法:
方法1:重新分区,将ext3分区改为主分区。
方法2:从软盘或Windows XP中启动Linux。
方法3:将LILO、GRUB装到MBR。
 楼主| admin 发表于 2006-3-25 20:26 | 显示全部楼层
问:如何使系统在停止操作一段时间后能自动退出?

答:当root账户离开计算机时,出于安全考虑,最好能让系统在隔一段时间后能自动退出。为了能做到这一点,必须为一个“TMOUT”的Linux变量设置指定时间(单位是秒)。编辑“/etc/profile”文件,在有“HISTFILESIZE=”字样的那一行的后面加上“TMOUT=300”,加入的这一行含义是5分钟。当把这行内容放入“/etc/profile”文件后,在系统连续5分钟不用时,系统会自动通知系统中的所有用户系统将退出。root用户也可以把该变量设置放在用户各自的“.bashrc”文件中,使得系统在指定的一段时间不用后能自动退出。该变量参数被设置在系统中后,必须先退出系统,然后再以root帐户重新登录后,该项设置才会生效。

问:如何在Red Hat 7.3上加Simsun.ttc字体?

答:Red Hat 7.3安装时选取简体中文安装,先复制一个simsun.ttc到/usr/X11R6/lib/X11/font/TrueType, 改名为simsun.ttf;然后进入/usr/X11R6/lib/X11/font/TrueType目录下,运行ttmkfdir > fonts.dir命令;接着用vi编辑fonts.dir文件,把有simsun.ttf行修改如下:

simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-ascii-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0



接着运行cat fonts.dir > fonts.scale命令,修改/etc/X11/XF86config-4, 在Section“Files”加上下面这一行:

FontPath “/usr/X11R6/lib/X11/fonts/TrueType”



最后回到KDE桌面里, 在“开始”→“选项”→“观感”→“字体”,将所有字体改为Simsun。

问:Unicon和Zhcon有什么区别,各有什么作用?

答:Unicon是内核态的中文平台,基于修改Linux FrameBuffer和Virtual Console(fbcon)实现的。由于是在系统底层实现的,所以兼容性极好,可以直接支持gpm鼠标。但是相对比较危险,稍有漏洞就可能会危及系统安全。Zhcon是用户态的中文平台,有点像UCDOS那类。

问:请问该如何卸载tar格式的文件?

答:通常编译过程以后都会用make install这条命令将用户的程序安装到相应路径当中。最保险的方法是查看一下Makefile文件,主要是看install部分,从其中找出tar格式的文件被复制到了什么路径,然后进入相应的目录进行删除即可。

问:SOCKS5启动后,一段时间后就停止了。用命令ps auxw | grep socks5查看后,发现有很多SOCKS defunct进程。请问这是什么原因?

答:主要是打补丁的问题。如果socks5-tar.gz是没打过补丁的版本,必须下一个带补丁的v1.0-r11版本,重新安装、运行问题就可以解决了。

问:我在VMware WorkStation 4.0.5中安装Debian 3.0时,提示找不到硬盘,需要SCSI的驱动。但是我用的是IDE硬盘,请问该怎么办?

答:由于VMware将用户划分的硬盘空间虚拟成SCSI硬盘,而Debian安装盘中没有对应的驱动,而安装其它Linux版本时,有的在一开始会加载SCSI驱动,所以没有这个问题。用户可以修改VMware的配置,将其改为模拟IDE硬盘就可以了。

问:安装完Red Hat后,前面的提示符为root@localhost,可以修改吗?

答:当然可以。在bash中提示符是通过一个环境变量$PS1指定的。用export $PS1查看现在的值,比较直观常用的提示符可以设定为export PS1=“[\u@\h \W]\$”。其中\u代表用户名,\h代表主机名,\W代表当前工作目录的最后一层,如果是普通用户\$则显示$,root用户显示#。

问:在vi中搜索了一个单词,该单词以高亮显示,看起来很不舒服,怎么能将它去掉?

答:在vi的命令模式下输入:nohlsearch就可以了。另外可以在~/.vimrc中写上下面的语句就会有高亮显示:

set hlsearch



加上下面的语句就不会有高亮显示:

set nohlsearch
 楼主| admin 发表于 2006-3-25 20:27 | 显示全部楼层
问:如何找出系统中所有的*.cpp、*.h文件呢?

答:用find命令就可以了。不过如果从根目录查找消耗资源较高,使用下面的命令就可以:

# :find / -name "*.cpp" -o -name "*.h"



问:安装Debian需要几张盘就够了?7张盘全部都要下载吗?

答:如果经常有网络环境的话,下载第一张就可以了。要是没有网络环境的话不推荐使用Debian,因为Debian主要依赖网络来更新软件。实在要安装的话,要下载全部7张盘,否则可能会出现需要的软件包找不到的问题。

问:Debian第一张光盘为什么有两个版本?debian-30r1-i386-binary-1.iso和debian-30r1-i386-binary-1_NONUS.iso该下载哪一个版本呢?它们有什么区别?

答:因为含有“non-US”(不属美国)的软件不能合法地存放在架设于美国境内的服务器中。 以前,其原因通常是因为软件含有严密的密码编码,而今天,则是因为程序使用了美国专利保护的演算法。每个人应该取用“non-US”来供私人用途所用;而没有这个标识的iso则只对架设在美国的镜像及供应商才有用处。其它二进制的光盘则不会含有任何“US-sensitive”(与美国相关的)软件,它们和其它种binary-1光盘一样运作得很好。因此,个人使用还是下载debian-30r1-i386-binary-1_NONUS.iso版本。

问:为何我使用umount /mnt/cdrom命令的时候出现device is busy这样的语句,不能umount?

答: 在使用umount的时候一定要确保已退出/mnt/cdrom这个目录,退出这个目录就可以使用umount /mnt/cdrom了。

问:我使用的是笔记本电脑,怎么才能在控制台下显示现在还剩多少电量呢?

答: 使用apm -m就可以看到还有多少分钟了,具体参数可以用man apm查看。

问:如何使用Red Hat自动更新软件包的功能?

答: Red Hat 6.1以后有个命令up2date,能自动检测决定哪些软件包需要更新,然后可以使用up2date-config进行配置。第一次使用up2date时,需要root用户执行rpm-import /usr/share/rhn/RPM-GPG-KEY,然后再运行up2date,它会通过SSL验证,如果用户在安装时提供了正确的注册信息,那么就可以自动升级软件包了。其中升级除kernel外的RPM用up2date -u,升级包括Kernel在内的RPM用up2date -u -f。

问:为什么我进入Linux的终端窗口时,man一条命令出来的都是乱码呢?

答:这是因为你的字符集设置有问题。临时解决办法可以使用export LANG=“en_US”。要想不必每次都修改的话,在/etc/sysconfig/i18n文件里面修改LANG=“en_US”就可以了。也可以针对某个用户来做,这样就可以改变个人的界面语言,而不影响别的用户。命令如下:

#cp /etc/sysconfig/i18n $HOME/.i18n



问:从网上的FTP下载Red Hat光盘的时候,右边有个MD5校验码,我怎么才能知道校验码正确呢?

答:通过命令md5sum filename可以得出校验码,然后和给出的进行对比,查看是否相同就可以了。

问:我需要让Linux下面添加的用户在设置密码时必须大于4位数,怎么设置呢?

答:修改/etc/login.defs文件中的PASS_MIN_LEN(此项用于设置密码的位数)值就可以了。

问:怎么查看一个端口上正在运行什么程序呢?

答: 可以使用lsof命令,比如要查看21端口正在运行什么程序时可以执行下面的命令:

# lsof -i:21
 楼主| admin 发表于 2006-3-25 20:27 | 显示全部楼层
问:编译内核的时候出错,提示“Too many open files”,请问怎么处理?

答:这是因为file-max默认值(8096)太小。要解决这个问题,可以root身份执行下列命令(或将它们加入/etc/rcS.d/*下的init脚本):

# echo "65536" > /proc/sys/最后进入解压后的目录,运行安装命令。
# cd vmware-linux-tools
# ./install.pl



问:本来装有Linux与Windows XP,一次将Windows XP重装后,发现找不到Linux与Windows XP的启动选单,请问如何解决?

答:首先光盘启动,进入rescue模式,运行GRUB,进入grub提示符grub>,然后敲入下面的语句,重启就好了。

root (hd0,2),setup (hd0)



网络

问:请问用户的IP是动态的,如何在Squid中限定在同一时间内同一账户在线的数量?

答:例如限制单个用户只能打开12个HTTP连接,采用下面的方法:

acl all src 0.0.0.0/0.0.0.0
acl limit maxconn 12
acl localnet src 192.168.0.0/24
http_access deny localnet maxconn
http_access allow localnet
http_access deny all



问:如果我用Squid代理的代理服务器在192.168.1.0这个网段里,例如它的IP是192.168.1.1,我有一些客户端在192.168.2.0这个网段内,怎样设置才能通过这个代理服务器出去?

答:如果不用透明代理,直接在浏览器的代理选项里设置就可以了。否则首先是在代理服务器的网卡上再挂一个IP为192.168.2.1,添加相应的路由,再修改Squid的squid.conf文件里的监听地址和端口等,最后在192.168.2.0网段的客户端设置其网关为192.168.2.1,再直接在浏览器的代理选项里设置一下就可以了。

问:我在Windows中通过FTP传一个文本文件到Linux中,但是打开文本文件后每行最后都有^M的标志。由于很长,用编辑器去除太麻烦,有什么解决办法呢?

答:为了解决这个问题,Linux下专门有两个工具可以互换Windows格式和Linux格式,它们分别是dos2unix和unix2dos。比如用下面的命令就可以将文件名为“filename”文件从Windows格式转换为Linux文本格式。

# dos2unix filename



问:安装了一台Linux服务器,想自己编译内核,一步一步做下来,GRUB也添加进去了,但出现“kernel Panic:VFS:Unable to mount root fs on 0:00”的错误,请问是怎么回事?

答:一般情况下initrd这个文件在台式机上不是必须的,但是在有SCSI设备的服务器上却是必须的。有可能因为编译内核的时候没有产生initrd那个文件,所以会有上面的错误提示。用户可以使用mkinitrd命令来生成一个initrd.img文件,然后加入GRUB,重启试一试。

问:如何设置用户登录后的欢迎信息?

答:修改/etc/motd文件,往里面写入文本,就能使用户通过Telnet正确登录后,执行Shell之前得到相应的提示信息。

motd就是“messages of the day”,也就是当日信息的意思。管理员可以往里面写一些需要注意的事项或通知等来提醒正式用户。

问:如何使用netrc文件进行自动FTP?

答:在自己的home目录下建立一个权限为600,后缀名为.netrc的文件,内容如下:

machine 172.168.15.1 login admin password admin



这样用户以后每次登录FTP服务器172.168.15.1的时候,系统都会帮用户以用户名admin、密码admin登录。用户利用这个特征可以实现自动FTP。例如用户想要每天6:00到172.168.15.1机器上面获得/admin目录下的文件admin.txt,可以按如下方法做。

建立一个文件ftp_cmd,内容如下:

cd admin
get amin.txt
bye



然后使用crontab -e设置定时任务:

0 6 * * * ftp 172.168.15.1 < ftp_cmd
 楼主| admin 发表于 2006-3-25 20:27 | 显示全部楼层
升级Linux硬件驱动结构
硬件驱动程序是界于硬件和Linux内核之间的软件接口,是一种低级的、专用于某一硬件的软件组件。这种软件组件可以使硬件与更普遍的高级应用程序接口产生互动。为某一具体的子系统或硬件端口(例如SCSI、USB或PCMCIA)提供支持,不同于为所有SCSI、USB或PCMCIA硬件设备提供支持。由于新的硬件每天都在产生,因此测试每一个可能用于某一具体子系统的硬件是不可能的。内核只为具体的一些子系统提供支持,硬件驱动程序也只是为使用这些子系统具体的某些硬件提供支持。新内核保持高级应用程序接口与低级硬件功能的分离。用户可以通过编写合适的硬件驱动程序或修改内核,更容易地为现有系统增加对新硬件的支持。

Linux硬件驱动可以通过两种方式集成到内核中:一是将其直接编译进行内核从而一劳永逸;二是将其编写成一种目标格式,在需要添加某种硬件时,内核可以将其调入。当用户对Linux内核进行设置时,每个内核设置编译器都可显示各个可用内核设置变量的描述信息,从而使用户决定哪个变量要被消除,哪个需要写入内核,还有哪个可以编写成一种可加载内核模块。

直接将硬件驱动程序写入内核优点在于,用户可以随时对它进行调用而无需安装。但是这样大大增加内核占用的空间。将硬件驱动程序编写成一种可加载的内核模块,虽然会因为寻找驱动模块而增加系统资源的占用和运行时间,但是与庞大的内核所消耗的资源相比显得微不足道。将硬件驱动程序编写成一种可加载的内核模块,还可为软件开发提供许多便利。当用户需要对某一硬件驱动程序进行开发或纠错时,用户可以动态地卸载旧的版本并加载新的版本,但是如果用户的驱动程序已写入内核,那么必须对内核进行重新编写,并且每次对修改后的程序进行测试时,都必须重新启动系统。另外,将硬件驱动程序视为可加载的内核模块进行开发和配置,这样用户就可以将硬件驱动程序作为一种独立的系统进行升级,而不必对内核进行改动了。

用户要做的只是编译并安装可加载内核模块,其它的工作由模块自已来完成。当系统首次访问某一硬件设备时,只要存在使用“depmod”命令建立的模块从属关系树,与之对应的模块就可以自动加载。可加载内核模块通常情况下安装在系统/lib/modules目录的一个子目录下。该子目录的名称由建立内核的Makefile中的VERSION、PATCHLEVEL、SUBLEVEL和EXTRAVERSION等变量的值决定。

Linux 2.6内核为硬件驱动程序带来一个新的、统一的框架。用户对原本运行于旧版本内核下的硬件驱动程序进行定制。新驱动程序框架通过定义各种接口,为硬件的即插即用和电源管理提供全面支持。子系统可以通过这些接口与各个驱动程序进行通信。新驱动程序框架更加明确了总线和驱动程序之间的责任界限。Linux 2.6内核还引入了sysfs文件系统为每个系统的硬件树进行分级处理。Linux 2.6内核还对可加载内核模块规定了新的命名方法,使用的是.ko扩展名,而不是旧版本标准的.o (object)扩展名。

这里将重点阐述2.6内核下的硬件驱动程序与以往内核下的硬件驱动程序在主体结构上的不同之处。

升级硬件驱动程序的基本结构

Linux 2.4内核下的硬件驱动标准模板如下:

#define MODULE
#include linux/module.h>
#include linux/config.h>
#include linux/init.h>
static int __init name_of_initialization_routine(void) {
/*
* code here
*/
}
static void __exit name_of_cleanup_routine(void) {
/*
* code here
*/
}
module_init(name_of_initialization_routine);
module_exit(name_of_cleanup_routine);



旧版本内核下的硬件驱动程序有一个普遍的问题,就是对初始化模块和清除功能的名称进行假设。当开发人员编写旧版本内核下的硬件驱动程序时,如果使用缺省的名称init_module()和cleanup_module(),那么就不需要对初始化模块和清除功能的名称进行记录。这种方法经常会出现错误,已逐渐被淘汰。在2.6内核下,用户必须使用module_init()宏和module_exit()宏对初始化和退出规程的名称进行记录。

另外,在2.6内核下,用户无论是在源代码中还是在Makefile文件中都不再需要对#define MODULE进行描述。内核搭建系统会自动对此类符号进行定义并校验。当用户为2.6内核编写硬件驱动程序时,必然会用到此类搭建系统。

要想对已有的模块进行编译,并使之加载到2.6内核,必须首先完成一些基本的结构变化。然而,当用户利用此类结构加载模块时,会注意到在标准输出设备和系统日志上会显示一个坏模块的出错信息。为了消除这条信息,用户需要为MODULE_LICENSE()宏增加一个示例,例如MODULE_LICENSE("GPL")。这种2.4内核以后的版本才引入的宏,可以将模块定义为获得GPL Version 2或更新版本许可的模块。其它有效的值还有"GPL v2"、"GPL and additional rights"、"Dual BSD/GPL"(选择BSD或GPL许可)、"Dual MPL/GPL"(选择Mozilla 或GPL许可)和"Proprietary"。

2.6内核下硬件驱动程序最简单的类属模板如下:

#include img src="/files/misc/lt.gif">linux/module.h>
#include img src="/files/misc/lt.gif">linux/config.h>
#include img src="/files/misc/lt.gif">linux/init.h>
MODULE_LICENSE("GPL");
static int __init name_of_initialization_routine(void) {
/* code goes here */
return 0;
}
static void __exit name_of_cleanup_routine(void) {
/* code goes here */
}
module_init(name_of_initialization_routine);
module_exit(name_of_cleanup_routine);



除了硬件驱动自身所需要的变化外,在Linux 2.6内核下,与之相应的最重要的变化是在内核搭建过程中完成的。

RSS|无图版|手机版|友声网 ( 鲁ICP备15020090号-1 )|网站地图 | | 点击这里给我发消息 |

GMT+8, 2024-11-21 21:01 , Processed in 0.057916 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X

© ys166.com

快速回复 返回顶部 返回列表