现在的位置: 首页 > 综合 > 正文

linux常见命令

2012年11月08日 ⁄ 综合 ⁄ 共 17513字 ⁄ 字号 评论关闭

2004年10月04日

用wget下载整个网站的方法

wget -r -p -np -k http://202.38.75.11/~jbhuang/blog/

kingpaul @ 06:40 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年09月23日

Linux下配置DHCP服务器

http://www.codesky.com/info/5144.htm

配置DHCP

  Redhat使用dhcpd进程提供DHCP服务,启动时dhcpd自动读它的配置文件/etc/dhcpd.conf。dhcpd将客户的租用信息保存在/var/lib/dhcp/dhcpd.leases文件中,该文件不断被更新,从这里面可以查到IP地址分配的情况。

  dhcpd为了向一个子网提供服务,需要知道子网的网络地址和网络掩码,并且还要知道地址分配的范围,下面给出一个简单的dhcpd.conf文件:

  subnet 192.168.100.0 netmask 255.255.255.0 {

  range 192.168.100.10 192.168.100.253;

  }

  此例中,dhcpd将给192.168.100.0网络分配192.168.100.10到192.168.100.253的IP地址。

  租期时间可以从0秒到无限长,可以根据需要来定。缺省的租期时间为一天,即86400秒。可以为主机定义两个租期长度:

  default-lease-time 默认租期时间;

  max-lease-time 用户可以获得的最长租期时间。

  下面的配置将缺省的租期时间设置为10分钟,最长租用时间为1小时:

  subnet 192.168.100.0 netmask 255.255.255.0 {

   range 192.168.100.10 192.168.100.253;

   default-lease-time 600;

   max-lease-time 3600;

  }

  DHCP还可以向客户提供更多的参数,这些参数可以用option来指定,例如:

  subnet 192.168.100.0 netmask 255.255.255.0 {

  range 192.168.100.10 192.168.100.253;

   default-lease-time 600;

   max-lease-time 3600;

   option subnet-mask 255.255.255.0;

   option routers 192.168.100.254; 默认路由

   option domain-name-servers 202.102.134.68; DNS服务器

  }

现在大家对DHCP配置应该有个了解了,其实过程就是这么简单,中间就隔了一层窗户纸。

  实际演练

  接下来给大家一个示例,把我的redhat9.0配置成一台DHCP服务器。

  vi /etc/dhcpd.conf

  配置后,我的机器的该文件内容如下(注释的部分都已经删除掉了,至于原文,大家可以对照/usr/share/doc/

  dhcp-3.0pl1/dhcpd.conf.sample文件):

  [root@rh9 test]# more /etc/dhcpd.conf

  ddns-update-style interim;

  ignore client-updates;

  subnet 192.168.0.0 netmask 255.255.255.0 {

   option routers 192.168.0.1;

   option subnet-mask 255.255.255.0;

   option broadcast-address 192.168.0.255;

   option domain-name-servers

  202.96.199.133, 202.96.133.134;

   range dynamic-bootp 192.168.0.1 192.168.0.255;

   default-lease-time 21600;

   max-lease-time 43200;

  }

这儿我解释一下配置部分,首先subnet定义了网络的地址,然后option routers定义了网关地址;subnet-mask定义子网掩码;broadcast-address定义广播地址;domain-name-servers定义DNS NAMESERVER的地址;dynamic-bootp是给客户端分配的地址,定义的是192.168.0.1-- 192.168.0.255整个网段地址;最后2行是讲分配出的地址的缺省租期时间设置为10分钟,最长租用时间为1小时。这样,一个DHCP服务器就配置好了。

  我们可以测试一下结果:在另外一个redhat linux7.2上,把IP设置成DHCP主机的IP地址,通过netconfig命令配置。

  检查配置:

  [root@rh72 root]# more /etc/sysconfig/ network-scripts/ifcfg-eth0

  DEVICE=eth0

  ONBOOT=yes

  BOOTPROTO=dhcp

  [root@rh72 root]#

  确定网卡已经是DHCP的了。

  [root@rh72 root]# ifconfig

  eth0 Link encap:Ethernet HWaddr 00:0C:29:A3:C6:71

   inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0

  查看地址,发现ETH0已经分配了一个254的地址,说明DHCP服务器配置成功。

  小结

  至此,我们已经完成了一台Linux DHCP服务器的安装和配置工作。在实际的使用过程中,上述操作步骤应该可以满足一般应用的需求,但是我们还需要经常研究具体的命令参数,让DHCP服务器能更好地为我们服务

kingpaul @ 05:13 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年09月16日

VNC

  VNC(Virtual Network Computing,虚拟网络计算),是用来显示远程计算机整个桌面的轻量型远程控制程序。
1. 下载:http://www.uk.research.att.com/vnc
2. 使用方法:
1) 服务器端:
#vncserver
$vncserver
注意到每个用户都可以启动自己的vncserver,每个用户可以启动多个vncserver,用显示端口号:1,:2,:3等等来标识。
2) 客户端:
a)在linux下,运行vncviewer命令即可,服务器地址的写法形如192.168.3.119:1
b)在windows下,运行windows版本的vncviewer即可,用法与linux下相近。
c)用浏览器(平台无关),作为java applet来实现,以形如http://192.168.3.119:5801的方式来启动
3) 密码修改:
第一次启动vncserver会提示输入密码,以后要修改的话,运行:
#vncpassword
4) 停止vnc server:
#vncserver -kill :1
#vncserver -kill :2
注意到vncserver只能由启动它的用户来关闭,即时是root也不能关闭其它用户开启的vncserver,除非用kill命令暴力杀死进程。
5) 指定显示端口号启动VNC server:
#vncserver :3
$vncserver :6
6) 设置VNC server分辨率:
#vncserver -geometry 800x600
#vncserver -geometry 640x480
7) 设置vncserver的色深:
8位为256色,16位为64k色
#vncserver -depth 8
#vncserver -depth 16
8) 稳定性设置:
vncserver默认在多个客户机连接同一个vncserver的显示端口时,vncserver端口旧连接,而为新连接服务,可通过-dontdisconnect拒绝新连接请求而保持旧的连接。
9) 设置vncserver的同一个显示端口可以连接多个客户机
#vncserver -alwaysshared


10) vnc的反向连接
大多数情况下,vncserver总处于监听状态,vnc client主动向服务器发出请求从而建立连接。然而在一些特殊的场合,需要让vnc客户机处于监听状态,vncsrever主动向客户机发出连接请求,此谓vnc的反向连接。主要步骤:
a) 启动vnc client,使vncviewer处于监听状态
#vncviewer -listen
b) 启动vncserver
#vncserver
c) 在vncserver端执行vncconnect命令,发起server到client的请求
#vncconnect -display :1 192.168.3.69

 

kingpaul @ 02:00 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

Linux 系统中的Samba配置(转)

http://www.ccw.com.cn/htm/app/salon/01_8_8_2.asp

前言:
为了实现windows 和 Linux以及其他操作系统之间的资源共享,软件商推出nfs 和samba两种解决方式。由于市场上缺乏象pc-nfs那样的客户端工具,使得Linux和windows的资源共享变得复杂。Samba的出现解决了这一问题,它以其简洁、实用、灵活配置的特点受到越来越多人们的广泛关注。
Windows利用SMB协议来实现操作系统间文件和打印机共享,而Samba本身具备SMB协议,它实现局域网内和Windows系列计算机的资源共享。
本文就Samba在Linux系统下的配置为重点,讨论局域网内windows 与 Linux 的资源共享。

一、Samba 介绍
1、SMB协议
SMB (Server Message Block,服务信息块) 协议,是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其他windows和linux 机器提供文件系统、打印服务。SMB的工作原理是让NetBIOS和SMB运行在TCP/IP之上,且使用NetBIOS的nameserver让linux机器可以在windows 网络邻居里被浏览。

2、Samba
Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux 环境里运行的自由软件。它可以完成如下功能:
文件服务和打印服务,实现Windows和Linux的资源共享。
登录服务器,可以作为局域网的服务器。
作为主域控制器。
WINS服务器。
支持SSL。
支持SWAT。

二、 Samba服务
1、 核心进程
Samba 有两个守护进程:smbd 和nmbd,它们是Samba的核心进程。nmbd进程使其他计算机浏览Linux服务器,Smbd进程在SMB服务请求到达时对它们进行处理,并且为使用或共享的资源进行协调。

2、 启动服务
Samba 有两种启动方式:Daemon形式和Inetd形式。
(1)Daemon形式 建立启动脚本:rc.samba
smbd -D -d1
nmbd -D -d1

-D 表示以Daemon形式执行;-d1 表示除错记录级别
执行脚本文件rc.samba

(2)Inetd形式
设置文件:/etc/services
netbios -ssn 139/ tcp
netbios -ns 137/ udp

设置文件:/etc/inetd.conf
netbios -ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios -ns dgram udp wait root /usr/sbin/nmbd nmbd

重启动Inetd daemon
# kill -HUP 1

3、 客户工具 smbclient
Smbclient命令用来存取远程Samba服务器上的资源。其命令形式与ftp相似。
命令语法是:#smbclient [password] [option]
(1) 解释:servicename是要连接的资源名称,资源名称的形式如下:
//server/service server 是远程服务器的NetBIOS名字,对于windows服务器而言,就是出现在网上邻居中的名字。
Service是各server所提供的资源的名字。
pssword 是存取该资源所需的口令
option 各种命令选项,其中 -L 用于列出远程服务器提供的所有资源
-I 指定远程服务器的IP地址。此时,servicesname 中的NetBIOS名部分将被忽略。

(2)多种smbclient命令:
执行smbclient命令成功后,进入smbclient环境,出现提示符: smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

4、 Samba系统装载与卸载
(1) 装载其他主机的资源
我们可以利用Samba提供的smbmount命令,装载其他主机的共享资源。
Smbmount的命令语法:# smbmount
其中 servicename 是资源名,mount-point是安装点。

例如: # smbmount "//server/tmp" -c ' mount /mnt'
表示:把名字为“server”的计算机上的共享资源“tmp”的内容装载到本地的 /mnt
目录下。

(2) 卸载资源
卸载一个已经装载的SMB文件系统,使用smbunmount命令,同时指定要卸载的装载点。 例如: # smbunmount / mnt

三、Samba配置
Samba组件的配置文件是 /etc/smb.conf ,该文件几乎包含了Samba系统程序运行时所需的所有配置信息。

1、 配置选项
配置文件中有比较重要的几个节:[gloabal]、[homes]、[printers],下面分别给与说明。
(1)[gloabal]节 在全局参数中,参数的设置直接影响samba系统。
NetBIOS name:设置主机名称
Workgroup:用来指定主机所在网络上所属的NT域名或者工作组名称。格式是
Workgroup= Nt Domain-Name or workgroup-name
Server string:用来设置本机描述,缺省是 Samba Server
Host Allow:它允许设置哪些领域的机器可以访问它的Samba服务器
Load printers:允许自动加载打印机列表,而不需要单独设置每一台打印机。
Interface:配置Samba使用多个网络界面。
Domain controller: 仅当网络中有一台在安装时设置为主域控制器时使用此选项。
Security: 设置安全参数,定义安全模式。Samba 的安全模式有四种
Share、 user、 server 、domain
encrypt passwords 、smb passwd file:用于适用加密口令。

下面是一段参数配置例子:
[global]
smb passwd file = /etc/smbpasswd
remote announce = 172.18.158.234 172.18.153.55 172.18.153.255
dns proxy = no
security = user
encrypt passwords = yes
server string = Ftp Server
workgroup = turing
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/log.%m
load printers = yes
guest account = dscan
remote browse sync = 172.18.158.234 172.18.153.55 172.18.153.255
printcap name = /etc/printcap
max log size = 50
hosts allow = 172.18.158. 172.18.153. 127.
... ...

(2)[homes]节 所有使用者的home目录
当任何一个客户访问Samba服务器时,在网络资源中都能出现自己的home目录共享。其配置如下:
[homes]
comment = Hnnw Directories
browseable = no
writable = yes
(3)用户共享目录
用来指定某一特定用户组或者用户拥有访问权限的目录配置,下列参数配置仅有hnnw组的用户有权访问目录/home/samba。
[public]
comment = Public Hnnw
path = /home/samba
public = yes
writable = yes
printable = no
write list = @hnnw

2、 用户映射
全局参数“username map”用来控制用户映射,它允许管理员指定一个映射文件,该文件包含了在客户机和服务器之间进行用户映射的信息。
如:username map= /etc/smbuser
用户映射经常在windows 和linux 主机间进行。 两个系统拥有不同的用户账号,用户映射的目的是将不同的用户映射成为一个用户,便于共享文件。
下面是一个映射文件的例子:
# Map Windows admin to root
root=admin administrator
;Map the member of developer to studio
studio = @developer

等号左边是单独的Linux账号,等号右边是要映射的账号列表。
服务器逐行分析映射文件,如果提供的账号和某行有右侧列表中的账号匹配,就把它
替换为等号左边的账号。

3、 使用加密口令
新版本的windows 95以及windows98、winnt(sp3以上版本),在网络传输中仅传递加密口令作为用户认证的信息。这类客户机和不支持加密口令并且以user安全级运行的Samba服务器通讯时,会出现故障。为了正常的通讯,samba服务器使用加密口令。下面讨论如何在samba中使用加密口令。
(1) 口令文件 /etc/smbpasswd
为了使用加密口令,samba 需要一份口令文件(/etc/smbpasswd),并且该文件应该和Linux的口令文件(/etc/passwd)保持同步。下面是生成文件命令:

# cat /etc/password | mksmbpasswd > /etc/smbpasswd

smbpasswd 是需要的口令文件,其权限是0600,所有者是root
smbpasswd和passwd文件的记录对应,密码部分不同。密码有两部分组成,每部分
是32个"X",前部分用于和Lanman通讯,后部分和Windows NT通讯。
Root用户可以使用smbpasswd命令为每个用户设定samba口令。

(2) 修改配置文件 /etc/smb.conf
要使Samba使用加密口令,需要在配置文件smb.conf中加入如下参数。
Encrypt passwords=yes
Smb passwd file= /etc/smbpasswd
第一行通知samba使用加密口令,第二行给出口令文件的位置。

(3) 重启动samba 服务。
修改完配置文件后,需要重新启动samba服务,可用如下命令:
# /usr/sbin/samba restart

4、windows系统中的明码口令使用
Samba系统中使用明码口令作为连接SMB的默认设置。当SMB服务器对协商协议做出响应时,响应信息包含了一位,以说明服务器是否支持询问或者响应加密。随着win95的网络重定向更新程序的发布,Microsoft修改了默认值,这样,windows客户就不会向不支持加密的服务器发送明码口令了。
在这种情况下,有两种解决办法:
(1)设置Samba服务器使用加密口令
(2)让windows客户使用明码口令
这里选用第2种解决办法,通过修改注册表来实现。下面对win95/win98、winnt用户分别给与说明。
(1)win98/win95系统用户
在注册表中加入下列注册字,并重新启动机器:
[HKLM/System/CurrentCntrolSet/Services/VxD/VNETSUP]
“EnablePlainTextPAssword”= dword:00000001

(2)Winnt系统用户
修改注册表,加入下列注册表项,并重新启动机器:
[HKLM/System/CurrentCntrolSet/Services/Rdr/Parameters]
“EnablePlainTextPAssword”= dword:00000001

四、Samba应用
1、 windows资源共享与使用
(1)windows资源共享
a. 使用TCP/IP协议作为网络默认通讯协议
b. 修改网络配置,设置文件和打印机共享。
c. 设置好计算机名和所属工作组
d.共享系统资源

(2)在windows系统中使用Linux共享资源
a. 登录进入windows网络
b. 通过网上邻居查看、使用共享资源。
c. 命令行下工具使用共享资源
使用命令行下的net.txt工具来查看、使用共享资源:
net use 命令的语法: c:>net use X://servername/sharename
在这里,X:是共享的驱动器盘符,//servername/sharename是到共享的UNC的网络路径。
例如: c:/>net use h://hey/myfile
表示:将hey机器上的myfile共享资源映射为本地的h盘

2、Linux资源共享与使用
(1)将Linux 的资源共享
通过编辑Samba配置文件,添加需要共享的Linux资源。同时可以设定访问此资源的用户群及其访问权限。下面是一段例子,将本机的 /public/data 目录共享,所有人都有读写权限。
[data]
comment = Public Data
path = /public/data
public = yes
writable = yes
printable = no

(2)在Linux中使用共享资源
可以使用smbclient命令,访问所有的Samba资源。具体使用方法见前述。

五、Samba应用程序
smbclient :访问所有共享资源
smbstatus: 列出当前所有的samba连接状态
smbpasswd:修改samba用户口令、增加samba用户。
Nmblookup:用于查询主机的NetBIOS名,并将其映射为IP地址
Testparam: 用于检查配置文件中的参数设置是否正确

Linux 系统中的Samba配置

kingpaul @ 11:25 AM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

linux下操作光盘的几条命令

1. 从光盘中制作iso文件:
#cp /dev/cdrom ISO文件名
同理可以把上面的/dev/cdrom换成/dev/fd0、/dev/sda1等移动存储设备的设备文件名制作软盘、U盘的iso映象文件
2. 使用目录文件制作iso文件
#mkisofs -r -o ISO文件名 路径名
3. 刻录光盘
先检测光盘刻录机的参数:
#cdrecord -scanbus
……
scsibus0:
  0,0,0 0)'SAMSUNG' 'CDRW/DVD DATA-348B' 'T501' Removable CDROM
……
然后刻录:
#cdrecord -v speed=刻录速度 dev=刻录机设备号 ISO文件名
如:
#cdrecord -v speed=8 dev=0,0 /home/share/data.iso

kingpaul @ 10:44 AM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年09月14日

关于NFS的东东

1. 安装包为portmap和nfs-utils
2. 配置文件为/etc/exports,格式:
/home/share *(sync,ro) 192.168.3.69(sync,rw)
/home/ftp 192.168.1.0/24(sync,ro)
/home/public *.test.com(sync,rw)
3. nfs启动:
#service portmap start
#service nfs start
4. showmount命令:
showmount:显示连接到指定NFS服务器的所有主机
showmount -e [NFS服务器主机地址]:显示指定NFS服务器的输出目录列表
showmount -d [NFS服务器主机地址]:显示指定NFS服务器中已被客户端连接的所有输出目录
showmount -a [NFS服务器主机地址]:显示指定NFS服务器的所有客户端主机及其所连接的目录
5. exportfs命令:
exportfs -rv:使NFS服务器重新读取exports文件中的设置而不需要重新启动NFS服务器
exportfs -auv:停止当前主机中NFS服务器的所有目录输出
exportfs -av:输出当前主机中NFS服务器的所有共享目录
5. 挂/卸载NFS服务器中的共享目录
#showmount -e 192.168.3.69
[root@jbhuangRH root]# showmount -e 192.168.3.119
Export list for 192.168.3.119:
/writable ns.infonet.org
[root@jbhuangRH root]# mount 192.168.3.119:/writable /mnt/nfs
[root@jbhuangRH root]# ls /mnt/nfs
qterm qterm-0.3.6.tar.gz
[root@jbhuangRH root]# umount /mnt/nfs

kingpaul @ 08:27 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年09月09日

apache+named配置虚拟主机

系统:Mandrake10.0,RH9下面的named一直搞不定,下午再看看。
1. apache的安装和配置:
到64.123或者apache的官方主页上下载一个httpd-2.0.50.tar.gz,依次
#tar xvzf httpd-2.0.50.tar.gz
#./configure --prefix=/www/apache;make;make install
编辑/www/apache/conf/httpd.conf,做了其它基本配置之后,到文件的section3,修改如下,添加两个虚拟主机:
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
ServerAdmin kingpaul@ustc.edu
DocumentRoot /www/apache/htdocs
ServerName kingpaul.infonet.org
ErrorLog logs/kingpaul.infonet.org-error_log
CustomLog logs/kingpaul.infonet.org-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin sunshine@ustc.edu
DocumentRoot /www/apache/sunshinedocs
ServerName sunshine.infonet.org
ErrorLog logs/sunshine.infonet.org-error_log
CustomLog logs/sunshine.infonet.org-access_log common
</VirtualHost>

保存退出,然后在/www/apache/htdocs和/www/apache/sunshinedocs添加不同的主页文件,最后:
#/www/apache/bin/apachectl start
启动httpd
2. named的安装配置
我的linux是ftp安装的,因此只要用下面这条命令就给我把named装上了,很简单。
#urpmi name
编辑/etc/named.conf,在options字段添加:
forward first;
forwarders {
202.38.64.1;
};
再添加如下语句:
zone "infonet.org" {
type master;
file "name2ip.db";
allow-update {localhost;};
};

保存退出。然后在/var/named/下添加一文件name2ip.db,编辑内容为:
$TTL 86400
@ IN SOA kingpaul.infonet.org. root.kingpaul.infonet.org. (
2001111601
28800
14400
3600000
86400
)

IN NS kingpaul.infonet.net
IN A 192.168.3.153

kingpaul IN A 192.168.3.153
sunshine IN A 192.168.3.153
jbhuang IN A 192.168.3.69
lab IN A 192.168.3.1
localhost A 127.0.0.1

然后,编辑/etc/resolv.conf,添加字段
search infonet.org
servername 192.168.3.153
最后:
#serice named restart
启动named

3. 在另外一台机器上,将DNS服务器设置为192.168.3.153,nslookup kingpaul.infonet.org和nslookup sunshine.infonet.org发现两者地址是一样的,打开IE,地址敲kingpaul.infonet.org和sunshine.infonet.org,可打开不同的主页,虚拟主机设置成功。

kingpaul @ 02:09 PM 发表于 linux | 编辑 | 留言 (1) | TrackBack (0)

2004年08月31日

proftpd安装与配置

xinetd模式:
http://www.17lan.com/mc_631.html
standalone模式:
http://www.fanqiang.com/a6/b2/20011020/0905001485.html
一个proftpd配置例子:
http://blog.csdn.net/swordzjj/archive/2004/06/30/30490.aspx

kingpaul @ 10:09 AM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年08月30日

与openssh有关的东东

一、安装和配置openssh server:
1 安装软件包(略)。
2 OpenSSH服务器配置文件:/etc/ssh/sshd_config
3 penSSH服务器状态:#service sshd status
4 启动/停止/重启enSSH server:#service sshd start/stop/restart
5 设置OpenSSH server默认启动:
#chkconfig --level 35 sshd on
#ls /etc/rc3.d/|grep sshd
二、scp:从远程主机复制文件到本机
#scp root@192.168.3.119:/etc/passwd .
三、sftp:使用ssh协议的ftp

kingpaul @ 03:23 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

(笔记)linux配置telnet服务器

1. 安装telnet-server软件包。(略)
2. 设置telnet-server的启动运行
  telnet server不作为独立的服务器程序运行,而是受xinetd程序的控制,启动配置文件为/etc/xinetd.d/telnet,默认xinetd程序并不启动该服务,可在chkconfig --list看出telnet是关闭的,/etc/xinetd.d/telnet中disable=yes可通过下面的方式启动telnet server:
 1) chkconfig telnet on  //该命令修改了/etc/xinetd.d/telnet的配置,设置disable=no
 2) service xinetd restart
 再次chkconfig --list看到telnet server已经启动。

kingpaul @ 11:19 AM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年08月27日

GRUB入门

LILO 需要知道你的内核在驱动器上的实际位置,但是GRUB
却不需要,它不仅能读文件系统还能识别内核映像,而且它还支持最新的 2.4.1 内核所带的 Reiser 日志文件系统。这意味着你不必在更新内核或者改变配置文件之后重新安装GRUB。如果BIOS 支持LBA 的话,也没有1024 柱面的问题。另外还支持网络启动和无盘客户机。

然而,或许我们对LILO 太熟悉了吧,也或许GRUB 还有很多需要完善?总之,安装 GRUB 看起来并不是一件很轻松的事情。下面我们就详细介绍GRUB 的安装和配置。

安装

在 /tmp 目录下解开文件:

# tar zxvf grub-0.5.96.1.tar.gz

进入 "grub-0.5.96.1" 目录,编译程序:

# ./configure
# make
# make install

配置:

和许多我们平常看到的多重启动管理程序一样,GRUB
提供一个菜单界面(LILO 不是菜单界面的)。GRUB的
缺省安装位置为 /boot/grub ,配置文件也放在这个目录下。缺省的配置文件名为 menu.lst,这个文件的功能就像和 lilo.conf
一样,定义多重启动选项以及磁盘映像。

我们来看一个 menu.lst 文件的示范例子:

timeout 5
color black/yellow yellow/black
default 0
password freeos

title My Mandrake
kernel (hd0,1)/vmlinuz root=/dev/hda3 idebus=66

title My Red Hat
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 idebus=66

title W2K Pro
root (hd0,0)
makeactive
chainloader +1

让我们详细分析一下各个选项的含义:

timeout - 缺省入口的显示延迟时间(秒)
color - 菜单显示的颜色组合,第一组颜色为前景色和背景色,
第二组为高亮时的组合。
default - 定义缺省的启动入口,这里的 0 就是使用定义的第一个入口。
password - 定义进入GRUB 高级特性时需要的口令。GRUB 利用其能读取文件系统的特色,提供十分强大的功能。例如用户可以在grub 的启动提示符下输 'cat /etc/shadow' 来读包含加密口令的文件,而不需要进入你的系统!所以,为你的系统设置一个口令十分重要。

下面分析启动入口,每一个入口都应该以一个 'title' 的关键字开始,后面跟上对该启动入口的描述。接下来就是 'kernel' 入口,

kernel (hd0,1)/vmlinuz root=/dev/hda3 hdc=ide-scsi

根据 GRUB 对设备的命名规则,我们可以很容易的理解上面这行的含义:软驱设备名为 fdx ,硬盘为 hdx,需要记住的是 GRUB 从0 开始计数,所以第一台硬盘为 hd0 而不是 hd1。设备名用括号括起来,硬盘上的分区用逗号连接。例如 (hd0,1) 表示第一台硬盘上的第二个分区,而 (hd1,5) 就表示第二台硬盘上的第一个逻辑分区。

GRUB 能读取大多数文件系统,上面这一行指定 GRUB 寻找
位于第一台硬盘上第二基本分区上的 /vmlinuz 文件,你也需要指定 'root=/dev/hda3' (假设你的根文件系统位于/dev/hda3),否则内核就不能挂接上根文件系统,之后就是你自己想加入的其他参数了。这些参数就和LILO 启动时传递给内核的参数一样,或者说和 lilo.conf 中 append 后面的参数一样。

另外一个比较特别的入口是启动Windows 2000 的入口,root 入口指向 Windows 2000 的安装位置(C:/),接下来的入口设置分区的激活标志,最后的入口告诉 GRUB 搜索分区的第一个扇区来启动那里的操作系统。

以上是对GRUB 的一个典型的多重启动设置的分析,在正式开始安装GRUB 之前,建议你手头有一张LILO 启动盘或者一张应急启动盘,以防不测。

以root 登录,输入"grub"命令以后,就会看到如下的画面:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]

grub>

以上看到的就是 grub 提示符,我们要在这个提示符下面安装GRUB。

grub> install (hd0,1)/boot/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/boot/grub/menu.lst

GRUB 分为两个主要的步骤, stage1 和 stage2。Stage1 是一段嵌入MBR 的迷你代码。Stage2 是主要部分,在 stage1 把控制权传递给它后,就由它来接管所有事情。

install 后面指定stage1 的位置,我们不仅说明了其分区
位置:(hd0,1),因为 GRUB 能读取文件系统,所以还说
明了分区上目录位置:/boot/grub/stage1,d 参数表示 stage1 将寻找 stage2 所在的磁盘。接着就是 GRUB 的安装位置:(hd0) ,这里就是指安装在MBR。后面的参数指定 stage2 的位置:(hd0,1),和 stage1 的定义一样。p 参数指定 menu.lst 文件的位置。

对于 /boot 作为单独的分区的例子,需要采用下面的命令行:

grub> install (hd0,1)/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/grub/menu.lst

以上例子假设 /boot 位于 (hd0,1) (也就是hda2),而 / 位于(hd0,2) (也就是 hda3) ,我们不能用 '(hd0,2)/boot/grub/stage1' ,因为GRUB 不知道 (hd0,1) 是 /boot ,所以必须首先指向挂接为 /boot 的分区,然后把目录指向那里。

重新启动系统以后,就可以看到 GRUB 菜单了。看起来似乎很繁琐,这么长的命令行,是的!对于那些 LILO 能正常使用的人来说,或许没有必要来玩这个危险游戏。但是,对于那些想使用 GRUB 增强功能的人来说,试一下 GRUB 或许会有意想不到的惊喜。我的朋友告诉我说他不能用 LILO 识别 1G 内存,希望 GRUB 能帮助办到。本文旨在抛砖引玉,
GRUB 还有很多的功能有待您的开发。

如果在配置和安装中遇到了麻烦,为什么不使用
info grub 或者 man grub 来寻求帮助呢?或者干脆上
GRUB 的官方网站

http://www.gnu.org/software/grub/

寻找 FAQ 和其他文档呢?

GRUB 的下载地点:
ftp://alpha.gnu.org:/gnu/grub/
截止到写稿时的最新版本为:0.5.96.1

kingpaul @ 08:16 PM 发表于 linux | 编辑 | 留言 (0) | TrackBack (0)

2004年08月23日

扫盲——/etc/fstab释疑

转载,不完全版:
http://www.mhdn.net/o/2002-01-19/4337.html

1 fstab文件的作用
文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。

2. fstab文件格式
下面是/etc/fatab文件的一个示例行:
fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass 
/dev/hda1   /        ext2     defaults      1       1 

fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdaXN,X是IDE设备通道(a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN。对于NFS情况,格式一般为:,例如:`knuth.aeb.nl:/'。对于procfs,使用`proc'来定义。

fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。

fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。
 
fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用"defaults"就可以满足需要。其他常见的选项包括:
选项              含义
ro      以只读模式加载该文件系统
sync    不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度
user    允许普通用户加载该文件系统
quota   强制在该文件系统上进行磁盘定额限制
noauto  不再使用mount -a命令(例如系统启动时)加载该文件系统

fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0

3. 示例文件
# /etc/fstab
/dev/hda9       swap        swap        defaults    0   0
/dev/hda1       /           ext2        defaults    1   1
/dev/hda5       /home       ext2        defaults    1   1
/dev/hda6       /usr        ext2        defaults    1 

抱歉!评论已关闭.