友声网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
开启左侧

Linux 应用宝典

[复制链接]
 楼主| admin 发表于 2006-3-25 20:31 | 显示全部楼层
安装完全解决方案
Qmail_setup-v1.5.tar.gz改进版本Qmail_setup-v1.5.2.tar.gz提供下载,全面支持MYSQL数据库,使得能容纳几十万的用户数据。包内还另付非常详细的设置说明,中英文皆有。
http://www.edge-china.com/~lhg/Qmail_setup-v1.5.2.tar.gz

该包目前有的功能
1、Qmail帐号与系统帐号的分离。
2、Qmail邮件列表功能。
3、Qmail自动回复功能。
4、邮件帐号WEB管理方式。
5、邮件的WEB使用方式,如:WEB发邮件,查看邮件。
6、能任意调整WEB的CGI以及HTML路径。
7、选择性安装apache。
8、SMTP服务的密码验证功能,能有效的防止别人利用自己的服务器发送匿名信。
9、选择性安装webmail。
10、对虚拟域的支持。
11、增加对Linux系统的支持,安装过程中自动的判断系统进行安装。
12、增加qmail的管理脚本,安装后可以运行qmail start|stop|restart来管理qmail。
13、全面支持Mysql数据库,只要在SQL设置区里打开数据库的支持,并设置好数据库密码,就可
以支持数据库了。

安装方法:
1、用编辑器编辑setup文件,设置变量,如:
DomainName,CGI路径,HTML路径。MAIL管理员密码等。
2、设置文件"setup"文件为755。
chmod 755 install
3、运行setup进行安装。
./setup
4、等待安装完毕......

该包对以前版本的比较。
1、解决了以前版本不能用WEB修改密码的问题。
2、解决了SMTP发信无密码验证问题。
3、新加setup文件的高级设置,如果你觉得有些东西有必要修改就可以在高级设置里修改。
比如:对邮件用户邮件大小的限额、是否支持漫游,等高级设置。
4、因考虑到有些情况不必要用到webmail或想使用更好的WEBMAIL,所以增加了WEBMAIL安装
的可选择性。
5、解决了以前不支持Linux系统的问题,能自动判断FreeBSD和Linux系统来进行安装。
6、使用了最新版本的apache。
7、增加qmail的管理脚本,使得qmail的管理更加方便。
8、对数据库的支持,并且是可选择性的。
 楼主| admin 发表于 2006-3-25 20:31 | 显示全部楼层
删除具有特殊文件名的文件
假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm -ee命令,界面会提示我们是“无效选项”(invalid option),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这个问题,输入“rm -- -ee”命令便可顺利删除名为“-ee”的文件。如果是其他特殊字符的话可以在特殊字符前加一个“”符号,或者用双引号把整个文件名括起来。
 楼主| admin 发表于 2006-3-25 20:32 | 显示全部楼层
linux环境下的"蚂蚁"-wget使用简介
wget的使用形式是:
wget [参数列表] URL
首先来介绍一下wget的主要参数:
· -b:让wget在后台运行,记录文件写在当前目录下"wget-log"文件中;
· -t [nuber of times]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次
。比如"-t
120"表示尝试120次。当这一项为"0"的时候,指定尝试无穷多次直到连接成功为止,这个
设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续
下载没有传完的文件;
· -c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中
途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使
用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/Linux的Web/FTP服务器
都支持断点续传;
· -T [number of seconds]:超时时间,指定多长时间远程服务器没有响应就中断连接
,开始下一次尝试。比如"-T
120"表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比
较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常
也不少于60,一般设置在120左右比较合适;
· -w [number of seconds]:在两次尝试之间等待多少秒,比如"-w 100"表示两次尝试
之间等待100秒;
· -Y on/off:通过/不通过代理服务器进行连接;
· -Q [byetes]:限制下载文件的总大小最多不能超过多少,比如"-Q2k"表示不能超过2K
字节,"-Q3m"表示最多不能超过3M字节,如果数字后面什么都不加,就表示是以字节为单
位,比如"-Q200"表示最多不能超过200字节;
· -nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;
· -x:与"-nd"设置刚好相反,创建完整的目录结构,例如"wget -nd
http://www.ys166.com"将创建在当前目录下创建"www.ys166.com"子目录,然后按照服务器
实际的目录结构一级一级建下去,直到所有的文件都传完为止;
· -nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目
录下;
· --http-user=username
· --http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;
· --proxy-user=username
· --proxy-passwd=password:如果代理服务器需要输入用户名和口令,使用这两个选项

· -r:在本机建立服务器端目录结构;
· -l [depth]:下载远程服务器目录结构的深度,例如"-l 5"下载目录深度小于或者等
于5以内的目录结构或者文件;
· -m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设
定其他合适的选项以便于站点镜像;
· -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们
假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载
这个人的个人主页,如果不设置这个选项,甚至--有可能把整个站点给抓下来,这显然是
我们通常不希望的;
ü 如何设定wget所使用的代理服务器
wget可以使用用户设置文件".wgetrc"来读取很多设置,我们这里主要利用这个文件来是
设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的".wgetrc"文件就起
作用。例如,"root"用户如果想使用".wgetrc"来设置代理服务器,"/root/.wgert"就起
作用,下面给出一个".wge
trc"文件的内容,读者可以参照这个例子来编写自己的"wgetrc"文件:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定
HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

 楼主| admin 发表于 2006-3-25 20:32 | 显示全部楼层
Linux开机过程的分析
这篇文章的目的,在将linuxkernel的boot部份做一个介绍,因为笔者觉得很少有这样的文章介绍一个作业系统最最开始的一步--把kernel本身载入至内存中,同时进行一些机器相关(machinedependent)的初始化工作,由于linux刚好使用的是大家最熟悉的386,486系列PC,所以在说明其程序流程时,也刚好可以对其相关的PC硬体架构做探讨,可以说是一举两得,不过,我必须假设读者对于组合语言及PC最基础的架构,如寄存器,分段,分页,中断服务等有大概的认识。
  读者可在linuxsourcecode的/boot子目录下找到几个以.S作为副档名的组合语言档,本文要说明的即是其中的bootsect.S及setup.S两个档案,及尽量简单的说明其所牵涉的相关硬体部份。
bootsect.S
  这个程序是linuxkernel的第一个程序,包括了linux自己的bootstrap程序,但是在说明这个程序前,必须先说明一般IBMPC开机时的动作(此处的开机是指"打开PC的电源"):
  一般PC在电源一开时,是由内存中地址FFFF:0000开始执行(这个地址一定在ROMBIOS中,ROMBIOS一般是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROMBIOS中的位置,开始执行一系列的动作,包括了检查RAM,keyboard,显示器,软硬磁盘等等,这些动作是由系统测试码(systemtestcode)来执行的,随着制作BIOS厂商的不同而会有些许差异,但都是大同小异,读者可自行观察自家机器开机时,萤幕上所显示的检查讯息。
  紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROMbootstraproutine),这个程序会将磁盘上的零道零扇区读入内存中(这就是一般所谓的bootsector,如果你曾接触过电脑病毒,就大概听过它的大名),至于被读到内存的哪里呢?--绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特性。而位在linux开机磁盘的bootsector上的正是linux的bootsect程序,也就是说,bootsect是第一个被读入内存中并执行的程序。现在,我们可以开始来看看到底bootsect做了什么。

第一步
  首先,bootsect将它"自己"从被ROMBIOS载入的绝对地址0x7C00处搬到0x90000处,然后利用一个jmpi(jumpindirectly)的指令,跳到新位置的jmpi的下一行去执行,关键的assemblycode如下:
.
(搬移bootsect本身)
.
.
jmpigo,INITSEC
go:
.
.
.
  表示将跳到CS为0x9000,IP为offset"go"的位置(CS:IP=0x9000:offsetgo),其中INITSEC=0x9000定义于程序开头的部份,而go这个label则恰好是下一行指令所在的位置。
第二步
  接着,将其它segmentregisters包括DS,ES,SS都指向0x9000这个位置,与CS看齐。另外将SP及DX指向一任意位移地址(offset),这个地址等一下会用来存放磁盘参数表(diskpara-metertable)
  提到磁盘参数表,就必须提到BIOS中断1Eh。先简单的介绍一下BIOS的中断服务:80x86将内存最低的256*4byte保留给256个中断向量(每个interruptvector大小为4byte,所以一共有256*4=1024byte),而其中的第1Eh个向量指向"磁盘参数表",这个表会告诉电脑如何去读取磁盘机,而我们所要做的事是搬移磁盘参数表到刚才所设定的任意地址。
  接着,改变搬移来的参数表的参数,以符合我们的需要。再将中断向量1Eh指向我们所修改过的磁盘参数表,然后呼叫BIOSinterrupt的int13h(function0,即AH=0)重置磁盘控制卡及磁盘驱动器,之后磁盘机就会照我们的意思动作了。如果你曾trace过DOS的kernel,你会发现,上述的动作在DOS中也有类似的对应流程。
现在让我们来看看关键的程序码:.
.
.
push#0
popfs
movbx,#0x78
.
(使GS:SI=FS:BX,指向磁盘参数表,
再将GS:SI所指地址的内容搬移6个
word至ES:DI所指的地址)
.
.
  此段程序是将FS:BX调整成0000:0078,接着再将GS:SI的内容设成与FS:BX相同,此处0x78h即为int1Eh的起始位置(7*16+8=120,(1*16+14)*4=120)。调整ES:DI为刚才所设定的任意地址,从GS:SI搬移6个word(即12byte)到ES:DI所指的位置,显然磁盘参数表的长度就是6个word,(不过事实上,磁盘参数表的确实长度是11个byte)。关于磁盘参数表,有兴趣的读者可自行参阅讲述BIOSinterruptservices的技术手册,会有详细的说明。
  读者可以用debug自行观察自家机器上DOS的磁盘参数表的起始位置(即int1Eh的内容)。以下是笔者机器的情形(笔者使用的作业系统是MSDOS6.2):
C:>debug
-d0000:0000
0000:00008A101601F4067000-1600CB04F4067000......p.......p.
0000:0010F40670000301790E-43EB00F0EBEA00F0..p...y.C.......
0000:002004108E340C118E34-5700CB046F00CB04...4...4W...o...
0000:00308700CB0408079433-B700CB04F4067000.......3......p.
0000:00400C01790E4DF800F0-41F800F0BA165F06..y.M...A....._.
0000:005039E700F01B01790E-70118E341201790E9.....y.p..4..y.
0000:006000E000F085175F06-6EFE00F0EE067000......_.n.....p.
0000:007053FF00F0A4F000F0-220500003E4600C0S......."...>F..
^^^^^^^^
由上图中可知,在DOS中磁盘参数表的起始位置(int1Eh的内容)为0000:0522。接着观察DOS中位置0000:0522开始的11个byte,也就是磁盘参数表的内容
C:>debug
-d0000:0520l10
0000:05204D53DF022502121B-FF54F60F08000000MS..%....T......
^^^^^^^^^^^^^^^^^^^^^^
此11byte即为磁盘参数表的内容(分别是byte00h到0Ah)
  在程序中我们所更动的是第五个byte(byte04h),改为18h(在上图例子中为12h),这个byte的功能是定义磁轨上一个磁区的资料笔数。关键的程序码如下:
.
movb4(di),*18
.
 
第叁步
  接着利用BIOS中断服务int13h的第0号功能,重置磁盘控制器,使得刚才的设定发挥功能。
.
.
xorah,ah
xordl,dl
int0x13
.
.
第四步
  完成重置磁盘控制器之后,bootsect就从磁盘上读入紧邻着bootsect的setup程序,也就是以后将会介绍的setup.S,此读入动作是利用BIOS中断服务int13h的第2号功能。setup的image将会读入至程序所指定的内存绝对地址0x90200处,也就是在内存中紧邻着bootsect所在的位置。待setup的image读入内存后,利用BIOS中断服务int13h的第8号功能读取目前磁盘机的参数。
第五步
  再来,就要读入真正linux的kernel了,也就是你可以在linux的根目录下看到的"vmlinuz"。在读入前,将会先呼叫BIOS中断服务int10h的第3号功能,读取游标位置,之后再呼叫BIOS中断服务int10h的第13h号功能,在萤幕上输出字符串"Loading",这个字符串在bootlinux时都会首先被看到,相信大家应该觉得很眼熟吧。
  linux的kernel将会被读入至内存绝对地址0x10000处,键关的程序码如下:
.
.
movax,#SYSSEG
moves,ax
callread_it
callkill_motor
.
.
  其中SYSSEG于程序开头时定义为0x1000,先将ES内容设为0x1000,接着在read_it这个子程序便以ES为目的地的节地址,将kernel读入内存中,至于read_it子程序的详细内容笔者并不想一一介绍,不过聪明的读者们应该已经猜到,read_it一定又利用了BIOSint13h与磁盘有关的I/O中断服务了。
  至于kill_motor子程序,它的功能在于停止软盘机的马达(各位聪明的读者会不会觉得这个子程序的名称取得颇为传神呢?),其程序码如下:
.
.
kill_motor:
pushdx
movdx,#0x3f2
xoral,al
outb
popdx
ret
.
.
  首先利用DX指定要输出的port,而03f2这个port则是代表了软盘控制器(floppydiskcontroller)的所在,再利用outb将资料送出,而我们送出的资料,当然就是归零过的AL了。如此一来,软盘的马达就停止了。
第六步
  接下来做的事是检查rootdevice,之后就仿照一开始的方法,利用indirectjump跳至刚刚已读入的setup部份,程序码如下:
.
.
jmpi0,SETYPSEG
  其中SETUPSEG已在先前定义为0x9020,所以CS:IP会设定为9020:0000,即跳到绝对地址为0x90200,也就是setup的起点。而bootsect也大功告成了。
到此为止,内存的内容应该如下图所示:
比较
  把大家所熟知的MSDOS与linux的开机部份做个粗浅的比较,MSDOS由位于磁盘上bootsector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel--MSDOS.SYS载入内存的重责大任。而linux则是由位于bootsector的bootsect程序负责把setup及linux的kernel载入内存中,再将控制权交给setup。
至于setup.S就不讨论了。
 楼主| admin 发表于 2006-3-25 20:32 | 显示全部楼层
在linux的电脑,安装windows2000
首先,你需要重新安装LILO。打开/etc/lilo.conf文件,找到boot=/dev/hda行,把hda改为linux所在分区(比如linux安在第一块硬盘的第二分区,那么就改成hda2,余类推),保存改动,执行lilo命令。用mkbootdisk命令制作一张启动盘(多做几张,以备不测)。在执行 dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=512 count=1; mcopy /tmp/bootsect.lnx a: (软区里要有一张用DOS格过的软盘),取出软盘,插入win98启动盘。重新启动计算机,用win98启动盘进入DOS,执行fdisk/mbr命令。取出软盘,重新启动计算机,应该显示缺少系统盘。插入win2000光盘,重启机子,安装吧。安好后,将bootsect.lnx文件拷到C盘跟目录下,编辑c:\boot.ini文件(是隐藏的和只读的,需要去掉该属性),增加一行 c:\bootsect.lnx="LINUX" 保存,重启机子,应该能选择进哪个系统了吧。
 楼主| admin 发表于 2006-3-25 20:32 | 显示全部楼层
LINUX技巧四则
一、不用制作启动软盘,直接安装LINUX

在LINUX光盘中,有一个名为loadlin.exe的DOS软件,其作用是将LINUX核心调入内存,并由LINUX核心代替当前OS接管计算机,进入LINUX安装例程。
假设用户光驱为F:盘,LINUX核心名为F:\images\vmlinuz,输入以下命令即可不用制作启动软盘,直接安装LINUX:
loadlin F:\images\vmlinuz root=/dev/ram initrd=F:\images\initrd.img
loadlin软件还有其它选项,以适应不同的硬件配置,如果您有兴趣,可以参阅loadlin文档。

二、LILO安装位置优选

LINUX在安装过程中,会提供MBR/ROOT/FLOPPY选单,询问用户将LILO装到上述3个位置中的哪一个,笔者建议选择ROOT,即:LINUX分区的超级块,而不要将LILO装到硬盘的主引导扇MBR上。
原因是:
1)很多病毒都对MBR垂涎三尺、伺机破坏,对于建立WIN95/LINUX双引导的机器是个潜在的威胁。
2)对MBR进行操作,稍有不慎,就可能造成无法挽回的后果。
Microsoft就把FDISK/MBR列为不公开的危险命令,并不提倡使用。
实际上,将LILO装到ROOT,完全可以实现将其装到MBR上的所有功能,并不影响建立双引导,而且安全性有所提高,不失为一种较好的选择。

三、保留已有WIN95分区/扩展分区,安装LINUX

为了给LINUX腾出硬盘空间,有的用户采取删除已有WIN95分区或扩展分区、重新划分的方法。这样做很有可能丢失有用数据。
能否保留已有分区/扩展分区,在不损伤数据的同时,适当改小这些分区,为LINUX留出自由空间呢?答案是肯定的。使用“PM分区魔术”软件即可做到。

进入PM后,选中要改小的分区/扩展分区,单击Resize按钮,输入为已有分区/扩展分区留下空间的数值,单击OK,PM即可挤出自由空间。当然,PM会自动限制能够改小的程度:您不可能将分区/扩展分区改得比已用空间还小。
这就保证了原有数据有足够的空间保存、不会丢失。

四、快速关机

早期的LINUX/UNIX系统必须先发出shutdown命令,然后才能关闭电源,但现代LINUX/UNIX系统就不必了。因为其借鉴了大型机的技术,采用了抗掉电的日志式文件系统,可以自动跟踪保存用户数据、自动同步刷新文件系统,用户完全可以随手关闭电源,快速关机。

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

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

Powered by Discuz! X

© ys166.com

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