QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5175|回复: 10

Mandrake FAQ(2)

[复制链接]
发表于 2003-2-12 01:19:27 | 显示全部楼层 |阅读模式
Q34:如何使你的系统对ping没反应哦?
A34:防止你的系统对ping请求做出反应,对于网络安全很有好处,因为没人能够ping你的服务器并得到任何反应。TCP/IP协议本身有很多的弱点,黑客可以利用一些技术,把传输正常数据包的通道用来偷偷地传送数据。使你的系统对ping请求没有反应可以把这个危险减到最小。用下面的命令:

[code:1]echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all[/code:1]

注意要恢复的话,就echo一个0进去. )


Q35:如何启动多个X哦,有什么好的办法哦?

A35:哦,你还经常要启动多个X,我平时也就是启动一个,KDE或GNOME都不想使,用多的还是WindowMaker或Xfce。其实你只要在另外的一个虚假终端来启动,输入startx -- :2等即可。为了方便,你可以在~/.bashrc中加入 以下几行:

[code:1]
alias X='startx -- -bpp 32 -quiet&'
alias X1='startx -- :1 -bpp 32 -quiet&'
alias X2='startx -- :2 -bpp 32 -quiet&'
alias X3='startx -- :3 -bpp 32 -quiet&'
alias X4='startx -- :4 -bpp 32 -quiet&'
alias X5='startx -- :5 -bpp 32 -quiet&'
[/code:1]
其中32是显示器的色彩深度,你应该根据自己的实际情况设置。 之后运行# bash
使改变生效,以后只要依次运行X,X1,X2,X3,X4,X5就可以启动6个X-Windows了。然后可以用Crtl+Atl+Fn来切换你的6个X,Fn=F7,F8,.....,F12。


Q36:Mandrake8.1下如何设置权限使得windows98下的一个盘如E盘(Mandrake下的mnt目录下的一个win_e文件夹)只有特定的用户如root可见?
A36:mount -t vfat -o umask=0077 /dev/hda7 /mnt/win_e
umask means in contrary to permission settings. So 0077 is meant that owner has full access and group pals and others haven't any permission.


另外,Mandrake已经很好地为你mount好ms的分区了,比如我的,cat /etc/fstab
[code:1] /dev/hdc6 / ext3 defaults 1 1
/dev/hdc7 /boot ext3 defaults 1 2
none /dev/pts devpts mode=0620 0 0
/dev/hdb /mnt/cdrom auto user,iocharset=gb2312,codepage=936,noauto,ro,exec 0 0
/dev/fd0 /mnt/floppy auto user,iocharset=gb2312,sync,codepage=936,noauto,exec 0 0
/dev/hda1 /mnt/win_c vfat iocharset=gb2312,codepage=936 0 0
/dev/hda5 /mnt/win_d vfat iocharset=gb2312,codepage=936 0 0
/dev/hda6 /mnt/nt ntfs iocharset=gb2312,ro 0 0
/dev/hda7 /mnt/win_e vfat iocharset=gb2312,codepage=936 0 0
/dev/hdc8 /mnt/win_c2 vfat iocharset=gb2312,codepage=936 0 0
/dev/hdc9 /mnt/win_d2 vfat iocharset=gb2312,codepage=936 0 0
/dev/hdc10 /mnt/win_e2 vfat iocharset=gb2312,codepage=936 0 0
none /proc proc defaults 0 0
/dev/hdc11 /usr ext3 defaults 1 2
/dev/hdc2 /var ext3 defaults 1 2
/dev/hdc5 swap swap defaults 0 0
[/code:1]
呵呵,Mandrake还有更强悍的supermount呢。

Q37:rpm是Mandrake Linux下最为常用的工具,能不能介绍下最为基本的用法哦?
A37:是哦,但更为具体的用法你可以看她的Man 页哦,我只介绍下它的一般用法叭:

查找安装在系统中的Linux内核的版本:
[code:1]rpm -q kernel[/code:1]
  
查找gcc的版本号:
  [code:1]rpm -q gcc[/code:1]
     
查找所有已安装的rpm列表
  [code:1]rpm -qa | more[/code:1]

可以加上grep, 例如 :
   [code:1]rpm -qa | grep kernel[/code:1]

列出软件包所有的配置文件Linux

[code:1]rpm -qc 包名[/code:1]

列出所有文档:
[code:1]rpm -qd 包名[/code:1]

列出详细信息

   [code:1]rpm -qi 包名[/code:1]

列出所有文件

    [code:1] rpm -ql 包名[/code:1]

列出所有文件状态
    [code:1]rpm -qs 包名[/code:1]
  
安装rpm包

    [code:1]rpm -ivh 包名[/code:1]

强制安装:
    [code:1]rpm -i --force rpm_source[/code:1]

删除rpm:

     [code:1] rpm -e 包名[/code:1] (可以不需要包名之后的东西)

升级rpm
    [code:1] rpm -U 新的rpm包[/code:1]
   
验证rpm
   
     [code:1]  rpm -V 包名[/code:1]
   

例如, 我的Mandrake9.0,
    [code:1] [root@huang jboard]# rpm -qa | grep XFree
           XFree86-xfs-4.2.1-3mdk
           XFree86-4.2.1-3mdk
            XFree86-75dpi-fonts-4.2.1-3mdk
            XFree86-100dpi-fonts-4.2.1-3mdk
            XFree86-devel-4.2.1-3mdk
            XFree86-cyrillic-fonts-4.2.1-3mdk
            XFree86-server-4.2.1-3mdk
            XFree86-libs-4.2.1-3mdk[/code:1]

下面的例子列出你安装上的所有包以及它们的大小(Byte):
[code:1]rpm -qa|xargs rpm -q --qf "%{NAME}-%{VERSION}\t :  %{SIZE}\n[/code:1]
当然,更简单的是
[code:1]$ rpm -qa --qf "%{NAME}-%{VERSION}\t: %{SIZE}\n"[/code:1]


Q38:如何防止core文件的产生呢?

A38:core文件是用来记录某些程序出问题时的运行状态信息,对一般用户意义不大,可以删除掉。在你的/etc/profile里加上:
# No core files by default
[code:1]ulimit -S -c 0 > /dev/null 2>&1[/code:1]
或者
[code:1]ulimit -c 0[/code:1]
就没有core dump的文件了。

如果用的是tcsh的话, 以试著在 .tcshrc 里加一行:
[code:1]limit coredumpsize 0[/code:1]


Q39:如何知道Mandrake是否打开了硬盘的DMA?

A39:hdparm -d /dev/hda   #显示你的HD是否打开了DMA
hdparm -c /dev/hda   #显示你的HD是否在使用32位I/O
hdparm -d 1 /dev/hda  #(你要打开哪个,就用哪个,比如HDB),打开DMA
hdparm -c 1 /dev/hda #打开32位I/O
hdparm -k 1 /dev/hda #使你的配置生效
hdparm -t /dev/had #查看你的配置是否生效
你如果想每次启动都启动以上配置,可以在/etc/rc.d/rc.local文件最后加上[code:1]hdparm -c 1 -d 1 -k 1 /dev/hda[/code:1]一切就搞定了。
(注:如果你的硬盘不支持这个,请你不要随意试,更为详细的使用你还是看Mandrake的man页吧,呵呵,不要忙于泡MM,其实,有时多看下,多和"Man"交流还是有很大乐趣的)


Q40:KDE桌面图标消失怎么办哦?

[code:1]A40:KDE出错但又不至于崩溃的常见情形之一就是桌面(包括墙纸和桌面的图标)统统消失,并且在用户目录下生成core文件;很多时候,用户不得不退出X再启动来解决这一问题。其实我们只要简单地在terminal(例如konsole、rxvt甚至是不推荐的cxterm等)中运行不带参数的/usr/bin/kdesktop就可以恢复桌面了。此外,任务栏对应的程序是/usr/bin/kicker。如果你不慎用xkill干掉了任务栏,同样可用不带参数运行kicker把它找回来。事实上,kde启动时就是先起kdesktop,接着起kicker,然后起像ktip、klipper这类小工具的。[/code:1]

Q41:konqueror如何装flash插件哦?
A41:konqueror可以很容易加载,安装时选择安装到mozilla的安装目录里,然后在konqueror的插件扫描路径设置里将插件路径指向mozilla的插件目录,重新扫描一下就发现新插件了,然后重新运行konqueror应该就可以支持flash了.呵呵,我的Mandrake90只能用稳定版本即5.0的插件,不知道你的能什么,你自己试试就知道了。

Q42:KDE常用快捷键都是什么东西哦?
A42:ctl+tab 切换工作桌面
alt+tab 切换应用程序
alt+f1 打开应用程序菜单
alt+f2 打开命令窗口
alt+f3 打开窗口菜单
alt+f4 关闭窗口
f1 帮助
f2 在页面中搜索
f3 在页面中查找下一个
space 选中/取消选中 文件
ctl+n 打开文件管理器
ctl+a 全选当前目录下的文件和目录
ctl+t 在当前目录下打开一个终端
ctl+w 关闭窗口
ctl+f 搜索文件
ctl+c 拷贝
ctl+v 粘贴
Ctrl+Alt+d 显示桌面


Q43:GNOME常用快捷键都是什么东西哦?
A43:ctl+b 书签
ctl+d 复制粘贴
ctl+f 查找
shift+ctl+f Web查找
ctl+i 显示属性页
ctl+h 切换到home
ctl+u 向上一级
ctl+n 建立新文件夹
ctl+o 打开
ctl+w 关闭窗口
shift+ctl+w 关闭所有窗口
ctl+= 放大
ctl+- 缩小
ctl+[ 返回
ctl+] 向前
ctl+t 放到垃圾筒
ctl+r 刷新
Ctrl+Alt+d 显示桌面


Q44:Mandrake下面的terminal下的一些小技巧是什么哦
A44:Ctrl+s:锁定终端
Ctrl+q:解锁终端
Ctrl+r:本终端历史最长的命令匹配
当然,在字符终端下,按scrollLock键可以锁住屏幕信息的滚动,但程序还在执行;按住ALT键,然后顺序按小键盘上的1和8数字键,可以按关键字在历史命令里搜索.
Crtl+c:中断终端的执行(大家已经很熟悉了吧)。在terminal下输入reset有时比clear有用。
Ctrl + D = logout -- 我想这个已经是众人皆知了.
另外一些可能用到的Bash Hot Keys:
> Ctrl+A  将光标移到行首
> Ctrl+C  中断进程
> Ctrl+D  输入文件结束符

> Ctrl+E  将光标移到行尾
> Ctrl+K  删除光标之后的所有字符并放入剪贴板
> Ctrl+L  刷新屏幕输出
> Ctrl+Q  继续屏幕输出
> Ctrl+R  历史命令匹配
> Ctrl+S  暂停屏幕输出
> Ctrl+T  交换最后两个输入字符
> Ctrl+U  删除光标之前的所有字符并放入剪贴板
> Ctrl+V  输入控制字符
> Ctrl+W  回删一个单词
> Ctrl+X  在光标位置和行首来回切换
> Ctrl+Y  输出剪贴板中存放的字串
> Ctrl+Z  将进程挂起
> Ctrl+\  强行终止进程
> Alt+Tab 补齐历史命令所带的参数

Ctrl+f 向前移动 1 个字符
Alt+f  向前移动 到单词的结尾
Ctrl+b 向后移动 1 个字符
Alt+b  向后移动 到单词的开始
Alt+[backspace] 向后删除到单词的开始
Ctrl+d 向前删除 1 个字符 (如果编辑非空,否则为输入 EOF)
Alt+d  向前删除到单词的结尾

  

Q45: Mandrake 8.1下更换root启动KDE时的刺眼背景
A45:/etc/X11/Xsession中把xsetroot -solid "#B20003"改成xsetroot -solid "#1E72A0";再到/usr/bin/startkde中把xsetroot -cursor_name left_ptr -solid '#B20003'改成xsetroot -cursor_name left_ptr -solid '#1E72A0'。
以上配置的是是KDE启动背景,运行时的背景就在齿轮->配置->KDE->观感->背景中改。


Q46: How to get rid of fonts-ttf-big5 in Mandrake 9.0?

A46:这是我的Mandrake 9.0上面:
# rpm -q -a | grep big
(什么都没有输出)
# ps auxw | grep input | grep -v grep
root      1413  0.2  1.0  6212 2648 tty1     S    15:44   0:00 chinput
#
而且我的chinput当然是好用的(否则我怎么发这篇文章嗫?)

方法很简单,只要修改/usr/lib/ZWinPro/Chinput.ad里面的only一行:
chinput.big5font      =       -*-*-*-*-*--16-*-*-*-*-*-gb2312.1980-0


Q47: linux下如何实现为一个网卡绑定多个IP地址和如何实现多网卡bonding 哦?
A47:1)一个网卡绑定多个IP:
Linux的网络设备配置文件存放在/etc/sysconfig/network-scripts里面,对于以太网的第一个网络设备,配置文件名一般为 ifcfg-eth0 如果需要为第一个网络设备绑定多一个IP地址,只需要在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件,内容样例为:
[code:1]
DEVICE="eth0:0"
IPADDR="211.100.10.119"
NETMASK="255.255.255.0"
ONBOOT="yes"

  其中的DEVICE为设备的名称,IPADDR为此设备的IP地址,NETMASK为子网掩码,ONBOOT表示在系统启动时自动启动。
  如果需要再绑定多一个IP地址,只需要把文件名和文件内的DEVICE中的eth0:x加一即可。LINUX最多可以支持255个IP别名。  [/code:1]

2) 多网卡bonding一个IP:
首选是你要内核支持,如果不支持,请你自己重新编译,在编译的时候把网络设备选项中的Bonding driver support选中就可以了。执行如下命令:
  [code:1]ismod bonding
  ifconfig eth0 down
  ifconfig eth1 down
  ifconfig bond0 ipaddress
  ifenslave bond0 eth0
  ifenslave bond0 eth1
  现在两块网卡已经象一块一样工作了.这样可以提高集群节点间的数据传输.你最好把这几句写成一个脚本,再由/etc/rc.d/rc.local调用,以便一开机就生效.[/code:1]

Q48:我不想把Lilo或Grub装在MBR,因为我担心它会搞坏的我的winnt/2k/xp的引导,有没有更好的办法哦?

[code:1]A48:有哦。你可以把lilo装在linux启动分区的第一个扇区上。首选修改你的/etc/lilo.conf或/boot/grub/menu.lst文件,将"boot=/dev/hda"改为"boot=/dev/hdaX",其中hdaX正是你linux启动分区。然后在终端下运行/sbin/lilo,如果你原来是Grub的,就不用运行,直接裸改就可以了。接着,"dd if=/dev/hdaX of=linux.sec bs=512 count=1",然后把linux.sec文件cp到你的ms系统下的c盘根目录下,接着在ms下修改c盘根目录下的boot.ini文件,在后面裸加上一行c:\linux.sec="Mandrake Linux ",然后reboot你的机器就可以从Ntloader来启动你的机器了。
如果你还感到这个不好,你可以用一个叫bootpart的小工具,它是一个强悍引导的小东西,你可以到google上找,他的readme文件里面有详细的说明。呵呵,我从来就不会在引导linux上出个任何问题。其实,Mandrake的引导做得很好,但你还要做多做张启动盘吧。这样可以在出了问题的时候,她可是一个可爱的小东西,而且一张软盘也不贵嘛。[/code:1]

Q49:为什么我装了Mandrake后我的winnt/2k/xp会启动得爆慢无比哦?

[code:1]A49:你说的这个问题我从来没有遇到到过。不过,你的分区可能有点儿问题。你可这么解决。先装好你的winni/2k/xp,然后再用分区的工具来分你想装linux的区,在/winnt/2k/xp的硬盘管理中把你的linux分区删掉,然后再装Mandrake,就可以了。不过,我如果你熟悉的话,先装ms或linux都没有什么关系。呵呵,我经常是先装Mandrake,再装MS(呵呵,可以玩游戏哦),也没有什么不正常的。[/code:1]


Q50:Mandrake linux怎么给一个普通用户reboot权限?
A50:大约可以分四种情况:

[code:1]1)、让任何人(包括根本不拥有系统帐号的人)都可以通过控制台reboot
    在/etc/inittab文件中保留ca::ctrlaltdel:/sbin/shutdown -t3 -r now
这一行。这样全国人民都可以reboot你的机器,只要你把控制台交出来。[/code:1]

[code:1]2)、让所有系统用户都可以reboot
    执行# > /etc/security/console.apps/reboot即可。这就在console.apps
目录下生成了一个空文件,文件名就是授权的application。以上路径是针对
Mandrake系统而言的,其他系统我不清楚。不过,真正高雅的Mandraker或许
根本就不会去靠“>"来生成这个文件——他们会使用msec来进行控制的。 [/code:1]

[code:1]3)、让指定的用户才可以reboot
    假设我们要让用户pk拥有reboot的权限,我们靠uid/gid来完成控制:
# groupadd reboot
# cd /usr/local
# mkdir reboot
# chown root:reboot reboot/
# chmod 750 reboot/
# cd reboot
# cp /sbin/reboot .
# chmod 4755 reboot  
# usermod -G reboot pk
    现在,pk就可以运行/usr/local/reboot/reboot来重启动机器。 [/code:1]

[code:1]4)、在一台不设普通用户的机器上启用口令验证reboot
    这实际上是靠添加一个关机帐号来实现的,该帐号的shell就是加了s位的

/sbin/halt,并且口令只有少数维护人员知道。[/code:1]
发表于 2003-2-12 02:53:37 | 显示全部楼层
辛苦了!
回复

使用道具 举报

发表于 2003-2-12 17:11:34 | 显示全部楼层
“pk”确是有心人。对后学帮助很大。
回复

使用道具 举报

 楼主| 发表于 2003-2-26 05:58:36 | 显示全部楼层
Q51:软猫的一般安装步骤是什么哦?
A51:其实,我在Mandrake下曾经用过软猫,即所谓的windomdem,我原来买的时候,由于时间比较早些,贵了些,大约是150RMB,现在估计几十块RMB就可以搞到新的吧。那JS还宣称是内置硬猫,说比内置软猫强多了我不太清楚这两种类型的东西有什么区别,反正都是本身没有DSP芯片,通过软件驱动CPU来承担DSP工作的,除非有相关的芯片驱动驱动,否则linux下还是很难支持的。我不知道那js说的强到底在什么地方,呵呵

这种PnP型的猫在Ms下一般都很容易装上,一般装上厂商所给我的驱动就能安装。下面我给出的是那三张图片是我在ms下面的载图,你可以看到我的猫大约的信息,名称就是Ecom Em-56Ham V93 Data Fax Voice,简称好像就是Ecom-Ham56 modem,是深圳一家网络产品公司生产的,好像叫什么龙维电子科技有限公司,不太记得了。另外一些ms下的驱动信息。另外,也看可看到irq和io的值,还有用com4。

这些信息我发现在linux基本上都有什么东西因为都是本身没有DSP芯片,通过软件驱动CPU来承担DSP工作的。这里着重说明一下,像这种类型的猫,你知道猫的芯片(你自己打开机箱拿下来看看吧。)是最为关键的,如果你的猫的芯片没有相关的驱动,你在linux基本上很难用上的了。我的猫显然用的是Intel Ham芯片,后来好像也叫什么Abient的。只要你能找到你软猫的驱动。在Mandrake下是很容易装上的。说实在的,在Mandrake装猫也并不是一件难事。下面说说我经前装过的一些经验吧。

1)你到下面的几个网站下载你的驱动,一般都能找到你所需要的,如果没有,那你不不好运了,可能是你的猫的芯片太新。我的驱动是Intel-v92ham-453-M90.tgz。具体的网址如下:
[code:1]
http://linmodems.technion.ac.il/packages/Intel/

http://linmodems.technion.ac.il/packages/

http://www.idir.net/~gromitkc/dips/roster.html
[/code:1]

2)[code:1]
tar -zxvf Intel-v92ham-453-M90.tgz[/code:1]
得到Intel-v92ham-453-M90这个目录。

3)
A.如果你想直接安装,不想编译,那也是可以的。因为它已经是经过一般的编译的,能合适Mandake90工作的。
[code:1]#cd Intel-v92ham-453-M90
#make install
[/code:1]
不过,如果你这样装的话,可能会些提示,具体的提示我不太记得,大约的意思就是说,你没有权利删除rm /dev/ham这个设备。不过,不要紧,你可这样做下。
<<注>>[code:1]# lsmod  
Module                  Size  Used by    Tainted: PF  
ham                     7388   0  (unused)
hamcore               511456   0  [ham]
.......
[/code:1]
那么说明,我的猫已经成功加载了。
然后再试下:
[code:1]
# ls /dev/ham -l
crw-rw-r--    1 root     root     240,   1 2003-02-26 04:32 /dev/ham
# ls /dev/modem -l
lrwxrwxrwx    1 root     root            8 2003-02-26 04:32 /dev/modem -> /dev/ham
#
[/code:1]
哈哈,看到没有,我的猫已经成功了。Mandrake Linux真是强哦。

B.如果你想编译成,首选确定你的内核源码要装上,如果没有装上,就自己装上吧。第一张光盘里面,名称就是叫kernel-2.4.19.16mdk-1-1mdk.i586.rpm的那rpm包。

[code:1]#rpm -ivh kernel-2.4.19.16mdk-1-1mdk.i586.rpm[/code:1]

然后还是cd到Intel-v92ham-453-M90,开始编译,也是巨简单:
[code:1]
#make clean
#make ham
#make install
[/code:1]
如果你还是想检查下,就按照A步骤中的<<注>>那个步骤了。

3)配置你的拔号软件,在Mandakre下你可以用kppp这个工具,如果你还没有装上,就直接装上吧,光盘里面就有。如果你还真的没有找到,可以到rpmfind.net上找。

运行你的kppp。这里最为关键的就是要设置好你的那个设备,其它的可以不改,应该是/dev/modem,而不是那/dev/ttyX什么的其余的你应该很熟悉了吧,就像MS中那个丑陋的"我的连接"一样配置。

当然,你如果不想用kppp,还有其它的拔号软件,例如,wvdial,这个是很好的工具,小而快,你可下载它的rpm包,也可以下载源码来自己编译,而且在驱动中的readme文件,作者就给出了一个最为简洁的shell script.

4)最后就是连接了,如果是你已经拔号成功了,比如能ping通IP,但不能打开网页,那么么可能是你的DNS的问题了。你要在/etc/resolv.conf加上你本地的DNS.比如我的:
[code:1]
#more /etc/resolv.conf
nameserver 202.96.134.133
nameserver 202.96.128.133
#
[/code:1]
如果一切顺利的话,你那就可以在强悍的Mandrake Linux下跑你的软猫了。

费后话,如果你的爱猫芯片不同,你只要下载相关的驱动就可以了,然后步骤就是这些了,万变不离其宗。
Good lucky!
Happy Mandrake Linux!!





回复

使用道具 举报

 楼主| 发表于 2003-3-3 12:26:17 | 显示全部楼层
Q52:如何实现分区的转移哦?
A52:分区转移的问题,我已经在Debian下搞好,为了方便有类似问题的兄弟,我写了下。同样在Mandrake linux中也会适用。你具体的情况还是自己掌握吧。其中最为关键的还是文件的属性不能改变,而且还要注意修改你/etc/fstab里面相关的内容。不过,如果你在做这事情之前,还要注意下后果的。万一没有十足的把握,还是少做吧。呵呵,因我的机器里面还有Mandrake呢,坏了的话,我可以mount过来修复。
[code:1]
# mkdir /usr.new
# mount /dev/hda11 /usr.new
# cp --perserve=all /usr/* /usr.new
(or: (cd /usr && tar cpf - . ) | (cd /usr.new && tar xpf -)
##可能tar还是比cp好一点?
# umount /usr.new
# rmdir /usr.new
# vi /etc/fstab
for example我的:/dev/hda11 /usr reiserfs defaults 0 0
(注意,这一步应该在mv之前,不然你mv后,有可能找不到vi这个命令,不过,你还要要备份处你的fstab好些。)
# mv /usr /usr.bak
# mkdir /usr

# mount /usr
<测试下你的新分区>
<When everything is OK:>
# rm -rf /usr.bak (注:这个如果你没有十成的把握,还是先留下放一些时间,等到完全没有问题的时候再rm掉也没有事.
[/code:1]


Q53:我自己编译了一个X,如何在kdm里面加上它哦?[

A53:呵呵,Mandrake Linux下的KDM,很方便的。
1)不是很体面的方法:
[code:1]"齿轮"-->配置”-->“KDE”-->“系统”-->“登录管理器”里的“会话”-->“新建类型”下输入"fvwm"然后点击“添加新类型”。[/code:1]

注意你的fvwm是第几个顺序的。如果像我的KDE、GNOME、Windowmaker、blackbox、XFCE、、fvwm、failsafe、default,则fvwm是第六个,则以root在/etc/X11/wmsession.d下建立“06fvwm”这样一个文件,内容大致如下:
[code:1]
NAME=fvwm
ICON=xwmnet.xpm
EXEC=/usr/X11R6/bin/fvwm
DESC="Cool Fvwm DeskTop Environment"
SCRIPT:
exec /usr/X11R6//bin/fvwm
[/code:1]

2)相对比较体面的方法:
[code:1]
# find /usr/ -name "kdmrc"
/usr/share/config/kdm/kdmrc
[/code:1]

然后用vim看看kdmrc这个内容,找到SessionType这个关键的字段的定义,比如我强悍的Mandrake Linux 9.0的就是这样的:

[code:1]
SessionTypes=KDE,GNOME,WindowMaker,Enlightenment,BlackBox,XFce,IceWM,fvwm,failsa
fe,default,
[/code:1]

加上你X,比如,我的fvwm显然是在第八的位置。

以root在/etc/X11/wmsession.d下建立“08fvwm”这样一个文件,内容大致如下:
[code:1]
NAME=fvwm
ICON=xwmnet.xpm
EXEC=/usr/X11R6/bin/fvwm
DESC="Cool Fvwm DeskTop Environment"
SCRIPT:
exec /usr/X11R6//bin/fvwm
[/code:1]

呵呵,这样就可搞掂你用kdm搞好你想搞的各种X了。哈哈,原来xdm/gdm/kdm就是这么一回事情。如何还要加其它的东西,你自己试试吧,这是最为简陋的方法了。不过,要想启动你的X,还得配置它的配置文件了。
回复

使用道具 举报

 楼主| 发表于 2003-3-8 21:46:11 | 显示全部楼层
Q54:如何使用超级强悍的下载之工具curl分段下载
A54:Mandrake Linux 9.1就要向我们走来了,我有点等不及了。先下rc2的iso文件来看看,但由于我现在上网的时候有限,我就想着怎么样下载ISO文件。但用号称linux的下FlashGet的nt下载还是不够快。

    从网站下载诸如iso这样的大型文件时,即便对方能提供1MB/s的下载速率,其等待过程也是令人烦恼的,而Linux下也好像目前并没有什么成熟的多线程下载工具。即便是Windows下的某些著名软件也拿“每IP只限一个连接”的站点没办法。新出的FlashGet 1.3支持对各个下载线程使用不同的代理,则实际上就可以同时分多块部分从那种小气的站点下大文件了

    不过呢,这没有考虑到现今ftp站点的冗余备份特性:同一个iso很可能在多个站点上都有镜像,我们能不能对此特点加以利用呢?

    我们采用超级强悍的下载工具curl,它好像不是多线程的,但我们用shell来控制多个进程配合工作。没有用过这个工具的不妨安装一下:
[code:1]
# rpm -q curl
#curl-7.9.4-4mdk
[/code:1]
   
     下面我们以下载Mandrake Linux 9.1 rc2的第一张iso为例来介绍其使用方法。经过采点,找到了三个可用的地址,分别标为url1~url3.
[code:1]
# cat 1.sh
#!/bin/bash
url1=ftp://mirrors.kernel.org/mandrake-iso/i586/\
MandrakeLinux-9.1rc2-CD1.i586.iso
url2=ftp://mandrake.redbox.cz/Mandrake-iso/i586/MandrakeLinux-9.1rc2-CD1.i586.iso
url3=ftp://ftp.uninett.no/pub/linux/Mandrake/Mandrake-iso/i586/\
MandrakeLinux-9.1rc2-CD1.i586.iso
curl -r 0-199999999 -o inst.1 $url1 &
curl -r 200000000-399999999 -o inst.2 $url2 &
curl -r 400000000- -o inst.3 $url3 &
echo "TODO: cat inst.2 >> inst.1; cat inst.3 >> inst.1"
echo "THEN: mv inst.1 MandrakeLinux-9.1rc2-CD1.i586.iso"
[/code:1]

    上面这几行命令应该很容易看懂。我执行了一下,很快就拿到了三块文件碎片,如果下载完成后,你在当前的目录下看到的还是inst.[1,3]这个三个文件,那可能还没有合拼到,你合并下就可以了。
[code:1]
cat inst.2 >> inst.1
cat inst.3 >> inst.1
mv inst.1 MandrakeLinux-9.1rc2-CD1.i586.iso
[/code:1]
拼接后拿md5一算,
[code:1]
md5sum MandrakeLinux-9.1rc2-CD1.i586.iso
342862f7a2da34b6d9d772d6bdf91b4d
[/code:1]
哈哈,哈希值跟他们的一致。Done

      当然,如果你的网络足够快,没有必要这么折腾,不过,我还是喜欢这样做。呵呵当然啦,你还能可分得更详细,比如分为5段下载,对应不同的ftp,你就修改下上面的那个Shell Script就可以了。对于详细的使用curl,你还是看看它的Man页吧。

      呵呵,我只下载了Mandrake linux 9.1rc的第一个iso文件,也试验装了下,感觉其中的中文字体还是做得很粗糙,不过,其它的还算可以。要玩就等正式版本出来的时候再玩吧。
   哈哈,其实不只是Mandrkae可以这样做,其它的发行版本也是一样的,你要找好几个ftp的下载地址就可以了。同时也能出了下载大型iso的一点方案。爽吧,curl,超cool强悍的下载工具.
回复

使用道具 举报

 楼主| 发表于 2003-3-28 18:02:14 | 显示全部楼层
Q55:如何用grub或lilo来安装其它版本的Linux哦?
A55: 各位Mandrakers,你准备好了没有,Mandrake Linux 9.1就要快来了,你是不是很兴奋哦。你做好准备没有,打算如何安装呢?呵呵,如果你的系统中已经一个Mandrake linux9.0(或其它的发行版本一样也可以的),这是最好不过了,你可很方便地安装上新版本。请看下下面的吧,或许对你有点帮助。

    至少你要有第一个iso文件,假设你把它放在/mnt/win_c目录下(其它的位置一样的,这里只是个假设而已)。你在现在的linux系统中,把它mount过来。

    [code:1]
    #mkdir /iso
    #mount  -t iso9660 -o loop /mnt/win_c/Mandrake91-cd1-inst.i586.iso /iso
    #cp /iso/images/hd.img /tmp
    [/code:1]

    哈哈,我们都不知道Mandrake linux 9.1的第一个iso文件叫什么,估计会和这差不多的,然后提取引导内核,

    [code:1]
    #mkdir hdimage
    #mount -o loop /tmp/hd.img /hdimage
    #cp /hdimage/vmlinuz /boot/vmlinuzmdk91-install
    #cp /hdimage/hd.rdz /boot
    [/code:1]

    好,内核的提取已经完成,就得修改你的lilo或grub来引导Mandrake linux 9.1的安装程序了。
   
    1)如果你是用lilo引导的,修改/etc/lilo.conf,在后面加上下面的大致的内容:
   
    [code:1]
    image=/boot/vmlinuzmdk91-install
    label=Mandrake91-setup
    initrd=/boot/hd.rdz
    read-only
    [/code:1]
    修改后,不要忘记更新下lilo,
    [code:1]
    #/sbin/lilo
    #
    [/code:1]
   
    2)如果你linux系统引导器为grub,假定你现在的linux的boot区是hda5,grub安装在boot区,如果不是的,请你自行修改。修改/boot/grub/menu.lst,也是在后面加上:

    [code:1]
    title Mandrake91-setup
    kernel (hd0,4)/boot/vmlinuzmdk91-install root=
    initrd (hd0,4)/boot/hd.rdz
    [/code:1]
       
好了,经过这样做,你reboot你的linux系统就可以启动安装你的Mandrake linux 9.1了。

    一路下来就是选择你的硬盘(如果你有多个硬盘的话)、分区(本例中的就是hda1),然后就是输入Mandrake linux 9.1 第一个iso文件的名字,要注意大小写,而且路径是"/"而非"\"也。再接下就你和原来装旧版本的Mandrake linux是一样的了。如果你已经下载了三个iso文件,而且想一下子装完所有的东西,就要换光盘,即换iso文件了。可以参考下论坛里面我写过的一个帖子"在硬盘用ISO安裸装Mandrake90",道理应该是一样的。

     哈哈,怎么样,Mandrake linux的安装方便吧。不用其它的方式启动,而且很方便快捷其实,我原来已经介绍过,只不过,现在方便Mandrakers,就写了这个帖子,当然啦,其它的行版本也可参考下,道理一样的。我曾经用类似的方式安装Debian,可以解决2.4的内核和读取ntfs格式里面的文件。其它介质的安装方便也是一样的,只不过你提取内核不同罢了。

    不过,这样安装好像有一个缺点,就是安装界面比其它启动方式安装会难看些,色彩好像没有那么爽。哈哈。。。。。。。。。。。。。。
回复

使用道具 举报

 楼主| 发表于 2003-3-28 18:05:41 | 显示全部楼层
Q56:启动你的X Window System哦?
A56:  这是一篇有关xdm/gdm/kdm的一些讨论,我看了一些文献,同时也结合自己的一些经验,如果有些地方说得不对,请见量。
有关X Winow System的一些概念,你还是找相关的文献来看吧,我的目标就是讨论下如何设置和启动你的X Windows System。首先你要懂得如何配置你的X配置的文件/etc/X11/XF86Config(or XF86Config-4),这个文件配置和它的配置工具不在讨论的行列中。
   
    好多天前,我看了xdm/gdm/kdm这方面的东西,也看了些它们的man页,当然也找了点相关的资料来look look,虽然我还不很了解,但还是知道了一些,拿出来献丑了。呵呵,我的原则就是:好东西大家一起分享。

1、我们先不讨论xdm/gdm/kdm这些东西。而是先看看启动X最简直的方式。首先来认识两个重要的文件,一个是X视窗启动文件--xinitrc,另外一个就是X视窗资源文件--Xdefaults.

[1]X视窗启动文件--xinitrc

   事实上,我们一般执行startx来启动X Window System,其中startx就是xinit的前端界面[front-end].倘若我们以startx或xinit启动X,这指令会启动X server并且会执行$HOME/.xinitrc文件内的所设置的指令。倘若 $HOME没有这个文件,则系统会使用内定的的配置文件/usr/XR116/lib/X11/xinit/xinitrc。而事实上xinitrc文件一般只包含有启动X时所要执行clients的shell script,里面定义一些指令和shell script,让X启动时,可以遵照里面的shell script来启动必要的应用程序。例如我的简单而又实用的的$HOME/.xinitrc的内容如下:

[code:1]

# more .xinitrc
LANG=zh_CN.GB2312
LC_ALL=zh_CN.GB2312
LC_CTYPE=zh_CN.GB2312
KDE_LANG=zh_CN.GB2312
export LANG LC_ALL LC_CTYPE KDE_LANG
export XMODIFIERS=@im=Chinput
/usr/bin/chinput &
exec kde3
killall chinput
#

[/code:1]

对于更为详细的$HOME/.xinitrc,你可以找更专业的书籍来看,我的目标是越简单越好。前面的大家应该都比较清楚吧。先设一些环境变量,再设下一些输入法(我用的是智能五笔), 接下来是启动视窗管理程序kde3,注意了:kde3用shell script的exec描述所执行的,这造成执行xinit程序的shell会被执行kde3的shell所取代。所以一旦kde3程序结束,就会跳出shell,相对地,xinit将会跟着结束,X Server将关闭。这正是X Window Manager执行的方式。必须确定在.xinitrc中最后执行的是指令是以exec为开头的的命令执行X Windows Manager,而且不应该加上&放在一些背景执行,不然,那些指令也毫无意义。后面的killall chinput是告诉要结束chinput,不然极有可能会因为chinput的原因,会造成一些问题。这是最为简单的桌面设置。倘若你还要启动更多的程序和设置,都可以在前面加的。只要你在你的$HOME/.xinitrc文件中稍加增加便可做到,但要记住加在X Window Manager执行段落之前。


[2]X视窗资源文件--Xdefaults

在X的文献中,resources有两种意义。第一种是指被server管理或建立桌面应用程序使用的东西,例如:视窗、光标、字体等均属于这种意义。另外的一种又是指一种可以传递预设置值、参数和其它值给应用程序的方法,比如,可以定义视窗的大小、前景颜色、显示字体、快捷键等。而在X Window System的操作应用过程中,泛指的resources的意义也局限于第二种,主要是采用resources功能。在X Window System 的资源文件Xdefaults中,主要是设置合适自己喜欢的应用程序的操作操控环境或界面。一般会执行X后,会自动读取$HOME/.Xdefaults.具体的内容我在这里不给出,因为这个东西我感觉还不是很重要。以后有时间的话再详细写写这个东西。

呵呵,在xterm视窗中按有一个小技巧:你按住Ctrl+鼠标右键会跳出一些字体等设置的东西,按住Ctrl+鼠标左键会跳出显示xterm应用程序的主菜单。另外,除了.Xdefaults资源可用处,还有一些应用程序会自己产生的的资源文件,一般放在
/usr/XR116/lib/X11/app-defaults中,并以这些程序名称的大写文件名命名。比如,Xclok时钟程序的资源文件就是Xclock。其它的你自己看一下就会明白了。你可以直接修改这些应用程序的的资源文件,作为系统内定的应用程序的样式。不一定都要非得修改.Xdefaults来完成。因为.Xdefaults通常是个人爱好而使用环境来设置的东西。

个人的一些小经验,不知道对否?如果$HOME中存在.xsession这个文件而没有.xinitrc这个文件是,你用startx启动也会读取.xsession,但当存在这两个文件是,就会读取.xsinitrc这个文件。可能是它优先的原因吧(知道的出来说说吧)。


2、启动我们的X Window System

X Window System的启动方法很多,最学常用的还是上面得到的startx,除此外,还要先执行"X"启动X视窗系统,或者执行xinit启动X。现在的发行版本一般都是以xdm(X Display Manager)/gdm(GNOME Display Manager)/kdm(KDE Display Manager)启动X,让Linux系统一启动就立即进入X Window System,并以图形模式让用用户来登录(呵呵,像Ms Windows吧,这样启动起来)。倘若你想退出X Window Manager,你可以xterm中执行init 3离开。

[1]以xinit/startx来启动X

这是一般的方法:我在Debain也是经常以这种方式来启动X的。就是执行/usr/XR116/bin/startx.事实上这个方法就是与直接执行/usr/X11R6/bin/xinit或是/usr/X11R6/bin/X是无异的。差别在于xinit和"X"并不会去执行读取读资源文件而去执行X Window Manager,所以一般的情况你得到的X视窗系统是个非常简朴的的一个X型鼠标指针与简朴的xterm而已。但xinit就是最标准的X启动方法,估计是绝大部分的系统X Window System都会支持。它是X Window System核心的程序,而startx仅是个启动xinit的shell script而已,里面同样定义执行xinit命令以启动X视窗系统。当一般执行startx时,X启动的过程大约就是这些东西了:

1)xinit启动X server程序;

2)X server会寻找$HOME/.xinintrc文件,有就执行它,没有就会转到/etc/X11/xinit/xinitrc读取系统内定的启动文件。

3)接着就会读取$HOME/.Xdefaults,倘若没有,就会转到/usr/X11/xinit/Xcilents。从文件名Xclients看来,这个是用来设置时执行哪些X应用的程序的文件。性质和xinitrc类似,同样是个shell script。但要注意的是:.Xdefaults是的权限具有755,即可执行。

4)在正常的情况下,$HOME/.xinintrc是用来指派可以让X Window System正常运行的应用程序了。而.Xdefaults则被建议用来载入X资源设置和应用应用,以适合每个用户本身的喜爱程度而已。

5)X server建立一个属于它自己的根视窗(Root windows),并设置视窗的背景与执行所指定的应用程序,显示一个大的"X"光标,便完成启动了。

6)在X server执行的期间,它一直控制着你的鼠标的键盘。

这就是你能在屏幕上移动光标的原因,但由于目前还没有任何X client程序要求键盘和鼠标的输入。所以X server只是和鼠标一直移动而已。而其它的键盘或鼠标输入虽然都经过X server处理,但均被视为无作用(因为没有什么x clinet程序所接收)。这也是X启动的初期,按键盘或鼠标都没有反应的原因。但如果你是送信号能X server而X client的话,这下就有会作用了。比如:Ctrl+Alt+Backspace即是送给X Server的中断信号,当X启动到中途或者是执行时,只要按下这组合键,便会立即结束X server,跳回到command prompt terminal的状态。

7)接下来,在xinitrc唤起X server后,xinit会启动xterm程序。呵呵,xterm就是X Window terminal的缩写吧。它对X server而言是一个X Clietn程序而已。要求X server建立一个视窗,而且会行告知X server在这个视窗中的鼠标和键盘的输入状态(Event),因而启动xterm时便会视窗执行一个shell,内定的就是bash。当指标被移至视窗之内时,xterm便准备接受输入。键盘输入会被关到xterm中的shell就如同真的终端机输入一般。而从shell本身或其副程序的输出则借着xterm显示在视窗上,xterm也接受输入,便得你能设置不同的程序操作参数和进行文本的一些操作,比如copy或paste.对于这些操作,你可以通过在xterm中执行ps auxw命令来观察到系统执行这些命令的详细步骤。

[2]以xdm/gdm来启动你的X。

上面说到了以startx来启动你的X,也可通过xdm/gdm来启动你的X来启动你的X,这正是其它一些发行版本的采用的方式。比如Redhat是gdm,而Mandrake用kdm。一般的情况,如果你要用调整你系统的run-level。比如修改你的/etc/inittab,把id:3:initdefault中的3改为5。

当系统以xdm/gdm来启动X Windows System。大约的步骤就是这些了:

1)执行/etc/X11/xdm/Xserver启动X出现console登录的界面(是执行/etc/X11/xdm/GiveConsole&TakeConsole所产生的)

2)执行/etc/X11/xdm/Xsessions来启动xdm或者是gdm。如果启动的是xdm,则装入用户家目录上的配置文件,.xsession和.Xclients。如果是gdm,则装载入/etc/X11/gdm/Sesseion与.Xclients。到此为止,就会出现X视窗的登录的界面选项。

3)gdm则会检查/etc/X11/gdm/Session目录的Session操作。比如Fvwm,Wmaker,Default,Failsafe,Gnome,Kde与Default等。并将显示给用户选择进入那个那个X Window Manager。其实这些Sessions都是Shell Script file。如果你选择Kde,就进入KDE DeskTop environment,选择Gnome就会进入GNOME  DeskTop environment了。

4)用户如果选择是的Gnome,在输入用户名和password后,gdm GNOME Session就会找gnomerc script,$HOME/.gnomerc,如果没有这个文件,就会读会系统文件内定的GNOME resource file:/etc/X11/gdm/gnomerc,并且启动/usr/bin/gnome-session.

这就完成了一个xdm/gdm的过程。但细心的人会发现,startx会读取$HOME/.xinitrc,而xdm/gdm为什么不会读取这个呢,它又是如何设置根视窗口背景及你的logo和X Window Manager的呢。其中的原因是因为xdm/gdm改用了/etc/X11/xdm/Setup_0来设置的,例如我的Mandrake90的内容大致如下:
[code:1]
# more Xsetup_0
#!/bin/sh
# (C) MandrakeSoft
# Chmouel Boudjnah <[email protected]>
#
# $Id: Xsetup_0,v 1.8 2001/09/19 18:49:29 flepied Exp $

if [ -f /etc/profile.d/kde.sh ];then

. /etc/profile.d/kde.sh
fi

[ -z "$KDEDIR" ] && KDEDIR=/usr

if [ -x $KDEDIR/bin/kdmdesktop ];then
     $KDEDIR/bin/kdmdesktop
     else
     /usr/X11R6/bin/xsetroot -solid "#21449C"
    /usr/X11R6/bin/xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
    fi
    if [ -x /etc/X11/xinit/fixkeyboard ]; then
     /etc/X11/xinit/fixkeyboard
    fi
[/code:1]

其中详细的内容我就不说了,请你自己找资料来看。其中xsetroot是设置根视窗颜色的,并执行xconsole设置系统登录画面的登录位置(geometry)。

如果你想修改xdm/gdm执行时所采用的color depth(色深?),可以修改/etc/X11/xdm/Xservers中的内容。我的Mandrake90中的是这样的:

[code:1]

m# more Xservers
# $XConsortium: Xserv.ws.cpp,v 1.3 93/09/28 14:30:30 gildea Exp $
#
#
# $XFree86: xc/programs/xdm/config/Xserv.ws.cpp,v 1.1.1.1.12.2 1998/10/04 15:23:
14 hohndel Exp $
#
# Xservers file, workstation prototype
#
# This file should contain an entry to start the server on the
# local display; if you have more than one display (not screen),
# you can add entries to the list (one per line).  If you also
# have some X terminals connected which do not support XDMCP,
# you can add them here as well.  Each X terminal line should
# look like:
#       XTerminalName:0 foreign
#
:0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16

[/code:1]

显然我的是采用16 bites颜色的。当然,你没有必要那么复杂,可以简单点儿,比如,我有时采用:

[code:1]

###使用16色
:0 local /usr/X11R6/bin/X -bpp 16
###使用24色
:0 local /usr/X11R6/bin/X -bpp 24
###使用32色
:0 local /usr/X11R6/bin/X -bpp 32

[/code:1]


5)对于使用何种X Window Manager与载入方式,并不属于Display Manager的范围。Display Manager只要负责启动各种Sessions即可。总这一句话,X Display Manager只管理sessins,想要实现更外层的工作,则可以让sessions自己去做哦。

6)如果你喜欢那种方式Display Manager,你都可以选择嘛,修改成自己喜欢的东西。例如我的mandrake90中有/etc/X11/prefdm是目前系统内定使用的Disk Manager。你看到它是只是一个/usr/bin/gdm一个连接而已。你还可以在/etc/inittab文件中最后定义像下面的,

[code:1]

#hehe,Run gdm in runlevel 5
#gdm is now for pk'Mandrake separate server
x:5:respawn:/etc/X11/prefdm -nodaemon
[/code:1]

你自己做过你系统有的xdm/gdm的连接就可以了。(不过,我在Mandrake linux里面用的kdm,而没有装到其它的,所以,好像prefdmp这个文件并不连接的内容。)

这里也费话一下吧,如果你是以kdm来管理你的X的启动的,他只是sessions不同而已,我已经写了这样的一个帖子"配置kdm",如果你想看,就找下吧。道理差不多的。

3。结束我们X Window Manager.

这个大家都会了吧。最简单的就是选择X Window Manager中的exit或logout或相关的就可以了。

呵呵,还记前面介绍的个#HOME/.xinitrc文件吧,是就在结束.xinitrc文件吧,执行了一个叫exec kde3的程序,这样的好处就是结束X Window Manager的时候,会连同x-server一起结束。另外的就是按CRTL+ALT+Backspace来结束你的X Window Manager吧,它就是把中断信号送给X-server结束X回到console terminal。

上面的情况是针对用startx启动X的,如果你是用xdm/kdm/gdm来启动你的X的话,你按上面的方法是又会回到X视窗的登录界面的,X-server并不会结束。你可以在console下,运行init 3就会结束你的X-server,如果你是init 5的话,那X-server又回来了。爽吧?

好了,这就是我对这方面的一些了解,如果你知道还有更好更为详细的方法,请您告诉大家吧。大家一起来分享你的经验。
(注:由于在看相关的文献的太多了,不能给那些文献及作者列出,敬请原谅。)
回复

使用道具 举报

发表于 2003-4-8 22:57:40 | 显示全部楼层
很精采,佩服!
回复

使用道具 举报

发表于 2003-4-21 21:25:28 | 显示全部楼层
能不能给出mandrake9下adsl的详细配置方法?谢谢!
回复

使用道具 举报

 楼主| 发表于 2003-9-15 17:42:03 | 显示全部楼层
下面是我在linuxsir的帖子,转过来:)
最初由 faint 发表
DNS服务是许多服务的基础,既然已经把Mandrake Linux系统架起来了,首要的任务就是要着手配置DNS服务。刚开始的时候,不知道如何配置,就在网上大量找相关的资料,阅读后,不管是照样办还是修改,我都没有成功,faint哦,辛苦了两天,还要没有把它搞掂,没有办法,只能一切从头开始,就本系统本身着手。发现,Mandrake linux和其它的发行版本是有区别的,下面说说我的DNS的配置过程吧。虽然,你可以用前端的界面dnsconf来配置,但对于新手来说,用这个工具不知道在什么地方发生了变化。由于我的DNS是用在局域网中,还没有连接Internet,仅仅限于局域网中为各个部门的各主机及服务器作解析用。

1、网络情况:
   a、拥有一个C类网段,地址为192.168.1.0;
   b、域名pk.org,没有注册;
   c、服务器的IP为192.168.1.1,主机名为huang.pk.org,它同时充当www、ftp、mail、和samba服务器。

2、配置文件:
    /etc/named.conf 来自caching-nameserver-9.0-2mdk的rpm包,需要修改;
    /etc/resolv.conf 系统自带,需要修改;
    /var/named/pk.zone 自已创建;
    /var/named/pk.reversed 自已创建;
    /var/named/named.local 来自caching-nameserver-9.0-2mdk的rpm包,一般不要修改
    /var/named/named.ca 来自caching-nameserver-9.0-2mdk的rpm包,一般不要修改;

注意,自己创建的文件你可以自己给它命名。其中的作用是用来定义域信息民,实现主机到地址间的镜像,识别mail、www、ftp、samba服务等和提供域名信息。主要的作用总之就是named2ip的作用;而pk.reversed是一个反向解析的作用,实现IP地址到域名的映射。

    如果你没有装上相关的rpm包,你可以查下:
#rpm -qa | grep bind   
bind-devel-9.2.1-4mdk
samba-winbind-2.2.6-1.0.pre2.2mdk
bind-utils-9.2.1-4mdk
bind-9.2.1-4mdk
   这几个rpm的作用就不说了,你自己看看它的内容就会知道是什么东西。

3、named的配置文件/etc/named.conf

   在Mandrake系统中named的配置文件是/etc/named.conf.我们知DNS服务器的主体应该是域名服务器进程named,named启动后向DNS客户机提供域名解极服务,把域名转换成IP地址。在bind8以前,默认的配置文件是/etc/named.boot,后来在bind8以上的版本,默认的配置文件就是/etc/named.conf了,它通常只包括一些指向DNS信息源的信息,其中某些源是可以本地的文件,而其它的源信息则是远程服务器。下面的/etc/named.conf的具体情况:
#cat /etc/named.conf
// secret must be the same as in /etc/rndc.conf
// 密钥必须与和/etc/rndc.conf一致
// /etc/rndc.conf文件的情况,你可以看看它内容,或者man rndc.conf的EXAMPLE。
key mykey {
       algorithm hmac-md5;
       secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};

controls {
       inet 127.0.0.1 port 953
//本地的端口我用了953。      
               allow { 127.0.0.1; } keys { mykey; };
};

options {
        directory "/var/named/";
//指定named从/var/cache/bind目录下读取DNS数据文件。
//目录用户还要自行指定并创建,所有的DNS数据文件都存放在此目录下,而且要注意
//其所有权者为named
        pid-file "/var/run/named/named.pid";              // Put pid file in working dir
//named.pid文件的地方,也要注意其目录的要限,为named所有。       
        auth-nxdomain yes;   
};
//指定named从/var/named/named.ca文件中获得Internet的顶层“根”服务器地址。
zone "." {
        type hint;
        file "named.ca";
};

//指定named作为127.0.0.网段地址的转换主服务器,named.local文件包
//含了所有127.0.0.*形式的地址到域名的转换数据。127.0.0.网段
//主要是作为局域网接口的内部回环地址。
//注意:网段地址是倒写的,区域使用数据文件的文件名可自行决定的。
zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.local";
};
//指定named作为pk.org域的主域名服务器,pk.zone文件中包含有所
//有*.pk.org形式的域名转换数据。
zone "pk.org" {
        type master;
        file "pk.zone";
        allow-update { key mykey; };
};
//指定named作为192.168.1.0网段地址的转换主服务器,pk.reversed
//文件包含了所有192.168.1.*形式的地址到域名的转换数据。
zone "1.168.192.in-addr.arpa" {
        type master;
        file "pk.reversed";
        allow-update { key mykey; };
};

    这个文件是相当重要的,如果你还不太懂其中的细节,你一定要看看info named.conf或man named.conf。但是要注意其中的注释式样,这个你可以在info named.conf中有具体的说明。据我了解。它所指的意思应该是是这样:

; 这是bind 4.x的注释,前面用分号;
//从bind 8往后,有三种注释符号可以用: C样式, C++样式, 或者Shell Script样式:

/*是C样式的注释符号 */
//是 C++样式的注释符号
#是Shell Script样式的注释符号

   这些可能会涉及到后面的一些相关的文件。其中在一部分你可以从注释中了解到。

   总之:/etc/named.conf这个文件是通知named从那里寻找文件,其后命名的文件都是相对于此目录的。这文件通知named去维持一个域名服务器响应的高速缓存,并利用named,ca文件的内容去初始化该高速缓。


4、区域数据文件:
   这些区域数据文件在/var/named目录下
#ls /var/named/
named.ca
named.local
pk.reversed
pk.zone

4.1、/var/named/named.ca文件
    这个文件是系统自带的,一般都不动它。你看看它的内容就知道是怎么样一回事了。

4.2 /var/named/named.local文件

#cat /var/named/named.local
$TTL    86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      localhost.

1       IN      PTR     localhost.

这个文件的作用就是解析本地回环地址,即127.0.0.1,回环地址量种特殊的约定,它允许处理本地计算机地址时,与处理远程地址的方法一样,这样可以简化处理过程,而不必将数据发送到物理网络上。其中SOA记录将localhost标识为开创该区的服务器。

4.3  /var/named/pk.zone文件

# more /var/named/pk.zone
$ORIGIN .
$TTL 86400        ; 1 day
pk.org        IN SOA        huang.pk.org. root.huang.pk.org. (
                                2001042703 ; serial(序列号)
                                86400      ; refresh (刷新周期,1 day)
                                21600      ; retry (循环周期,6 hours)
                                3600000    ; expire (中止时间,5 weeks 6 days 16 hours)
                                3600       ; minimum (time-to-live的时间,1 hour)
                                )
                        NS        huang.pk.org. ;(定义域名服务器同,带域名的主机名后必须带一个“.”)
                        MX 10   huang.pk.org. ;(定义邮件服务器,10表示优先级,越小越高,带域名的主机名后必须带一个“.”)
$ORIGIN pk.org. ;(实现域到IP的映射)
$TTL 86400        ; 1 day
localhost                A        127.0.0.1
huang                        A        192.168.1.1
ly                        A        192.168.1.253
liang                        A        192.168.1.250
www                        A        192.168.1.1
ftp                        A        192.168.1.1
mail                        A         192.168.1.1


   这个文件包括了应该pk.org域内所有主机节点。(我只列出了一小部分)。如果这个域的主机的节点很多时,可以先放几台进入,然后慢慢调试,到调试好后,再往里面加上其它的主机节点。注意,这里面的注释是以;形式出现的。
   
    其中的第一行的$ORIGIN .你可以通过man named.conf来看看。下面是我摘录了其中的一段,它应该和/etc/named.conf密钥那段有关吧。
     Definition and Usage

     The trusted-keys statement is for use with DNSSEC-style security, origi-
     nally specified in RFC 2065.  DNSSEC is meant to provide three distinct
     services: key distribution, data origin authentication, and transaction
     and request authentication.  A complete description of DNSSEC and its use
     is beyond the scope of this document, and readers interested in more
     information should start with RFC 2065 and then continue with the Inter-
     net Drafts available at http://www.ietf.org/ids.by.wg/dnssec.html.

     Each trusted key is associated with a domain name.  Its attributes are
     the non-negative integral flags, protocol, and algorithm, as well as a
     base-64 encoded string representing the key.

     Any number of trusted keys can be specified.

$TTL 86400 ;1 day 存活时间吧。

     第三行是是 SOA 记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS 管理员邮件地址(用.代替了@),这一行也等于:
     @IN SOA        huang.pk.org. root.huang.pk.org. (
     括号内的第一个数字是文件版本号(一般当天时间和修改次数来组成),每次本文件内容修改后,必须更改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改动。后面的那些数字都是以秒来计的。
     括号后面有一条NS记录和一条MX记录,定义了域名服务器本身的域名和[email protected] 形式邮件地址所对应的邮件服务器名字。
     在此以下是各种域名/地址转换数据,其中A记录是DNS域名到IP地址的记录,是必须有的。因为前面的域已经定为了pk.org.,所以huang.pk.org可以简定为huang,它的IP为192.168.1.1是。我们看www和ftp的IP都是192.168.1.1,因此它可以认为huang.pk.org的别名.后面的三项还有用CNAME的写法,
     比如:
     www CNAME huang.pk.org.
     ftp CNAMW huang.pk.org.
     mail CNAMW huang.pk.org.
     CNAME可定义了一些主机的别名,比如我们将huang.pk.org作为的www和ftp服务器,所以我们提供了www.pk.org和ftp.pk.org作为hua ... �影响。注意: CNAME 记录最后的带域名的主机名后必须带一个“.”。

4.4 /var/named/pk.reversed文件

#more /var/named/pk.reversed
$ORIGIN .
$TTL 86400        ; 1 day
1.168.192.in-addr.arpa        IN SOA        huang.pk.org. root.huang.pk.org. (
                                2001042702 ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                86400      ; minimum (1 day)
                                )
                        NS        huang.pk.org.
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 3600        ; 1 hour
1                        PTR        huang.pk.org.
253                        PTR        ly.pk.org.
250                        PTR         liang.pk.org.
;所有主机都写在这儿!

   这是一个反向解析的文件,作用就是实现IP到域名的映射。反向DNS数据文件中的主要部分是PTR记录,PTR记录中的IP地址都只有主机号,named会根据 named.conf 的定义自动加上前面的网络号,注意后面的主机名要附加一个“.”
   1 PTR huang.pk.org. 这一行定义逆向关系,即192.168.1.1与pk.org之间的映射,它出以用作定义一个反转域。
  其它的不用解释了吧。

另外,还有其它的两个文件:

5、/etc/hosts文件
    此文件的作用是实现与Internet其它主要计算机的映射,它通常是当作DNS的备份出现的。也就是说,当DNS系统出现问题的时候才使用hosts文件。

#more /etc/hosts
127.0.0.1                localhost.localdomain localhost
192.168.1.1                huang.pk.org huang
192.168.0.1                huang.sfserver huang

   注意,每台服务器者都会有几个域名与IP的对应关系是永久的。所以hosts文件存放的就是它们。

6、/etc/resolv.conf文件
  此文件作用是指定域名服务器的IP和搜索顺序,把huang机器的DNS指向它自己。
#Default Domain
domain pk.org
#Default search list
search pk.org
nameserver 192.168.1.1
########################################
#ShenZhen ADSL Nameserver!
#The First name server
#nameserver 202.96.134.133
#The Second name server
#nameserver 202.96.128.133

   search pk.org这一行简化了用户输入的主机名,即当用户输入huang时,使得DNS可以把它成功解析为huang.pk.org,它与domain是互斥的,无论谁出现都用来定义serach列表的。注意:定义域名服务器的IP,最多是三个,建议用2个(这不记得从那里看的)

7、/etc/hosts.conf 文件
   此文件作用是实现hosts表与DNS的关系和接口
#more /etc/hosts.conf
order hosts,bind
#解析域名的顺序!
multi on
#允许一台计算机拥有多个IP

8、/etc/nsswitch.conf文件

   此文件的作用是用于处理Hosts表和DNS的顺序.


#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#        nisplus or nis+                Use NIS+ (NIS version 3)
#        nis or yp                Use NIS (NIS version 2), also called YP
#        dns                        Use DNS (Domain Name Service)
#        files                        Use the local files
#        db                        Use the local database (.db) files
#        compat                        Use NIS on compat mode
#        hesiod                        Use Hesiod for user lookups
#        [NOTFOUND=return]        Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files nisplus nis winbind
shadow:     files nisplus nis
group:      files nisplus nis winbind

#hosts:     db files nisplus nis dns
hosts:      files nisplus nis dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files     

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   nisplus

publickey:  nisplus

automount:  files nisplus
aliases:    files nisplus

   当然啦,你要从服务器访问其它的主机,需要把它配置为DSN的客户系统,DNS的客户部分叫做解析器吧。它是一套允许任何程序执行DNS查询的C运行的程序。这在Mandrake linux带有这样的解析器。

10、测试与管理方法。

a、客户机的,只要配置得正确就行了。比如,有一台装有Ms-Windows叫ly的机器,他的IP是192.168.1.253,打开相关的DNS项,主机填上ly,域名填上pk.org,就可以互相解析了。

b、 当启动来个/etc/init.d/named start就可启动了。其它的用法:
/etc/init.d/named {start|stop|status|restart|condrestart|reload|probe}。
  当你要开机的时候,启动named时,你可以:
#chkconfig --level 35 named on
这与你的系统的运行级别有关。可以看看man chkconfig就会知道他的用法了。
效。

c、 rndc工具:用来向named进程发送信号

d. nslookup:测试正向、反向的解析是否正常

e、当然,还可以用dig或者host来测试DNS设置。
  c-e的这些工具你要装上bind-utils-9.2.1-4mdk的rpm包。


比如:
#dig -x 192.168.1.1

; <<>> DiG 9.2.1 <<>> -x 192.168.1.1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4278
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.1.168.192.in-addr.arpa.        IN        PTR

;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 3600        IN        PTR        huang.pk.org.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa.        86400        IN        NS        huang.pk.org.

;; ADDITIONAL SECTION:
huang.pk.org.                86400        IN        A        192.168.1.1

;; Query time: 2 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Fri May 16 21:16:14 2003
;; MSG SIZE  rcvd: 98

其它的测试工具,你还是多多看它的man页吧。由于篇幅有限。不能过多介绍了。

11、可能遇到的问题。

  由于我用的是bind9.2.1版本,可能主要问题就是ndc不能使用;因为原来看到的帖子都是用ndc来控制本地的bindstop,start,reload等. 在9.2.1版本,并没有ndc,而是rndc,支持远程控制的ndc,这必须使用密码跟bind通讯.
    如果是rndc不能工作,就有可能出现问题! rndc的密码是在/etc/rndc.conf里面. 就要用dnssec-keygen产生一段密码.使用一般是如下:

#dnssec-keygen -a HMAC-MD5 -b 192 -n HOST rndc
Krndc.+157+02818
#ls K*
Krndc.+157+02818.key  Krndc.+157+02818.private

或者干脆直接运行:
#dns-keygen

对于它的更详细的使用方法,你可以参考下man dnssec-keygen
   生成的2个文件 Krndc.xxxx.key 和Krndc.xxxx.private.你打开看看就知道它是什么内容了。

   将Krndc.+157+02818.private里面的那个key串复制下来.对比下/etc/rndc.conf和/etc/named.conf文件的内容你就知道如何做了。然后把key的内容放进/etc/rndc.conf和/etc/named.conf文件相关的位置。你可以参考上面的开始时说到的内容。

在/etc/rndc.conf像这样调用:
# Start of rndc.conf
key mykey {
        algorithm hmac-md5;
        secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};

options {
        default-key mykey;
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf
                                       

在/etc/named.conf中调用部份:
key mykey {
    algorithm hmac-md5;
    secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { mykey; };
};

     然后restart你的named进程,
     执行rndc reload 试验.  
      

     当然你可以把named.conf和rndc.conf的用户权限设置为600,这样才会更安全些。
#chmod 600 /etc/rndc.conf
#chmod 600 /etc/named.conf
    另外还要注意,httpd最好别用root执行. 可以这样查看:
#ps -aef |grep named

   如果前面的显示出来是root,就是以root权限执行的了. 最好能改一下,因为bind会经常出现安全的问题,不要用root执行的好,否则,可能有危险。
      在Mandrake linux系统中,是存在着named和named组的。你可以看看你的/etc/passwd和/etc/group文件,如果没有。你可以自己创建一个,用named这个帐号来执行named,
#addgroup named
#建立named组
#adduser -g named -d /var/named named
#建立named帐号,指定named组,指定目录/var/named;

       然后先关掉named进程再以非root帐号重启,
#named -u named
       再看看/var/log/messages,如果有错误的记录。此时应该就是权限的问题了。
#chown named:named /etc/named.conf
再次执行
#named -u named
      如果还有错误,比如什么不能建立/var/run/named/named.pid,
应该是新建的named帐号在/var/run/named下没有写权限.给pid文件转个地方。 在/etc/named.conf文件中的options一节中添加一行,指定 pid文件的位置:

pid-files "/var/named/named.pid";
这样应该可以正常了.
       以上只是可能存在,但不一定存在,可能和你当初安装系统时存在,比如,安装级别选择得很高。

       好了,这个帖子写完了。如果你有什么问题,欢迎一起讨论,我也是刚开始配置,还有很多的地方不太懂,同时,也参考了很多网友的帖子,但都没有详细记下来,谢谢前辈们的辛勤的劳动。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 07:32 , Processed in 0.046822 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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