吴伟贤のBlog

Feed Rss

存档: ‘linux’ 分类

linux网卡驱动程序的编译与安装

08.11.2010, linux网卡驱动程序的编译与安装已关闭评论, linux, by .

    一般来说,目前新版的 Linux 预设可以支持的网络卡芯片组数量已经很完备了,很多网络卡芯片都已经被支持,
例如RLT 8139 芯片 ( RealTek 8139 ) 的网络卡所以使用者可以很轻易的设定好他们的网络卡。
不过,如果万一不幸核心没有支持该网络卡的话,那么可以透过重新编译核心或者编译网络卡驱动模块 ( Modules ),
并且加载该模块,今天就是这么巧,碰到一个D-Link 的DFE-530TX,没法,只有手动安装网络卡驱动程序了.
可以用命令# dmesg | grep eth
来查看系统启动信息,显示出 eth0 或者 eth1 的信息,如果eth1没找到正确的信息,那就表示 Linux 无法找到该硬件,
eth0是8139的,已经显示正常,例如:
[root@kindgeorge root]# dmesg | grep eth
eth0: RealTek RTL8139 Fast Ethernet at 0xf0160000, 00:0a:a6:30:0d:0e, IRQ 11
eth0:  Identified 8139 chip type ‘RTL-8139C’
eth0: Setting 10mbps full-duplex based on auto-negotiated partner ability 4061.
一. 查看自己系统的内核版本.
[root@kindgeorge root]# uname -r
2.4.18-3
我这里是redhat7.3的,内核2.4.18-3
一般来说,这个内核驱动程序的模块会放在 /lib/modules/2.4.18-3/kernel/drivers/net
二.确定系统是否已经安装下面包
1.由于编译需要用到内核的源代码包和编译程序gcc.所以如果没有的话,要先装.
   查看:
[root@kindgeorge root]# rpm -qa|grep kernel
kernel-2.4.18-3
kernel-source-2.4.18-3
[root@kindgeorge root]# rpm -qa|grep gcc   (gcc是编译用)
gcc-2.96-110
gcc-g77-2.96-110
gcc-c++-2.96-110
一般装了内核源包的话,都会在出现/usr/src/linux-2.4,同路径下会有linux-2.4.18-3的文件实际目录.
2.如果没有的话,就用原来安装盘上的文件安装,会去下载个相同内核源包安装吧
  rpm -ivh kernel-source-2.4.18-3.i386.rpm
  ……
三. 取得驱动程序和编译
1. 可以重厂家提供的光盘提供,把光盘上的linux目录下的dlkfet-4.24.tar.gz 拷贝过来用.
2. 从网上下载网络卡驱动程序,一般厂家的网站都提供下载程序的.
例如: http://www.d-link.com.cn  上有下载.
[root@kindgeorge root]# cp dlkfet-4.24.tar.gz /usr/src
[root@kindgeorge root]# cd /usr/src/
[root@kindgeorge src]# tar -zxvf dlkfet-4.24.tar.gz
dlkfet-4.24/
dlkfet-4.24/rhine_main.c
dlkfet-4.24/Makefile
dlkfet-4.24/vmns_drv.h
dlkfet-4.24/rhine.h
dlkfet-4.24/.depend.mak
dlkfet-4.24/rhine_vmns.c
dlkfet-4.24/rhine_proc.h
dlkfet-4.24/rhine_proc.c
dlkfet-4.24/rhine_vmns.h
dlkfet-4.24/kcompat.h
dlkfet-4.24/rhine_cfg.h
dlkfet-4.24/.depend
dlkfet-4.24/rhine_wol.c
dlkfet-4.24/rhine_wol.h
dlkfet-4.24/linux.txt
3. 请留意一开始是没有.o文件的. 我们编译前可以看看目录的linux.txt,是一个包含介绍安装说明.在进入目录后,执行make进行编译.
[root@kindgeorge src]# cd dlkfet-4.24
[root@kindgeorge dlkfet-4.24]# make
[root@kindgeorge dlkfet-4.24]# ll   (编译后查看一下)
total 320
-rw-r–r–    1 root     root         7473 Jan 15  2003 kcompat.h
-rw-r–r–    1 root     root        11491 Jan 20  2003 linux.txt
-rw-r–r–    1 root     root         5219 Dec 10  2002 Makefile
-rw-r–r–    1 root     root         1818 Jan 16  2003 rhine_cfg.h
-rw-r–r–    1 root     root        48715 May 24 18:31 rhinefet.o
-rw-r–r–    1 root     root        42044 Jan 15  2003 rhine.h
-rw-r–r–    1 root     root        78996 Jan 16  2003 rhine_main.c
-rw-r–r–    1 root     root        32760 May 24 18:31 rhine_main.o
-rw-r–r–    1 root     root        14980 Jan 15  2003 rhine_proc.c
-rw-r–r–    1 root     root         1672 Jan 15  2003 rhine_proc.h
-rw-r–r–    1 root     root        12336 May 24 18:31 rhine_proc.o
-rw-r–r–    1 root     root         9172 Jan 15  2003 rhine_vmns.c
-rw-r–r–    1 root     root         1106 Jan 15  2003 rhine_vmns.h
-rw-r–r–    1 root     root         3792 May 24 18:31 rhine_vmns.o
-rw-r–r–    1 root     root         7536 Jan 15  2003 rhine_wol.c
-rw-r–r–    1 root     root         1529 Jan 15  2003 rhine_wol.h
-rw-r–r–    1 root     root         3488 May 24 18:31 rhine_wol.o
-rw-r–r–    1 root     root         6824 Jan 15  2003 vmns_drv.h
4.经过编译后,会编译出一个rhinefet.o 文件,这个就是驱动模块,我们把它拷贝到相应地方:
[root@kindgeorge dlkfet-4.24]#cp rhinefet.o  /lib/modules/2.4.18-3/kernel/drivers/net
[root@kindgeorge dlkfet-4.24]# depmod -a
5.测试
(1)可以用命令modprobe rhinefet 或  insmod rhinefet.o  加载.如果没出错信息说明ok.
(2) 用命令lsmod 可以看看是否已经加载了.
[root@kindgeorge dlkfet-4.24]# lsmod
Module                  Size  Used by    Not tainted
rhinefet               38752   1
8139too                16448   1
mii                     2408   0  [8139too]
这样,看到 rhinefet模块已经加载了,基本上,这样就证明已经编译成功.
6. 让它开机时加载
[root@kindgeorge dlkfet-4.24]# vi /etc/modules.conf
在后面加上一行:  alias eth1 rhinefet
7. 配置一下网络
[root@kindgeorge dlkfet-4.24]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.4.202
NETMASK=255.255.255.0
NETWORK=192.168.4.0
GATEWAY=192.168.4.250
BROADCAST=192.168.4.255
ONBOOT=yes
8. 启动网卡,然后用ifconfig查看,
ifup eth1
[root@kindgeorge dlkfet-4.24]# ifconf
ig
eth0      Link encap:Ethernet  HWaddr 00:0A:E6:30:0D:0E
          inet addr:211.239.218.153  Bcast:211.239.218.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3780479 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3833860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:1118112324 (1066.3 Mb)  TX bytes:1111887387 (1060.3 Mb)
          Interrupt:11
eth1      Link encap:Ethernet  HWaddr 00:0F:3D:82:EC:1D
          inet addr:192.168.4.202  Bcast:192.168.4.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:749312 errors:0 dropped:0 overruns:0 frame:0
          TX packets:976174 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:43695059 (41.6 Mb)  TX bytes:1472142037 (1403.9 Mb)
          Interrupt:5 Base address:0xe000
9.重新启动机器,可以自动加载和使用了.大功告成.
五. 按照安装说明的方法自动编译安装.
     在 "三.3" 中我们用make 编译,然后进行手动的拷贝. 实际上在linux.txt中的安装说明提到用make install .
那我们来看看这种方法系统都做了什么吧.
[root@firewall1 dlkfet-4.24]# make install
gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO_VERSION__ -O2 -pipe -I/lib/modules/2.4.18-3/build/include -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_main.o rhine_main.c
gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO_VERSION__ -O2 -pipe -I/lib/modules/2.4.18-3/build/include -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_proc.o rhine_proc.c
gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO_VERSION__ -O2 -pipe -I/lib/modules/2.4.18-3/build/include -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_wol.o rhine_wol.c
gcc -Wall -DLINUX -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -D__NO_VERSION__ -O2 -pipe -I/lib/modules/2.4.18-3/build/include -I. -Wstrict-prototypes -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.18-3/build/include/linux/modversions.h -DVMNS   -c -o rhine_vmns.o rhine_vmns.c
**************************************************
Build options:
   VERSION    2.4.18-3
   SMP             Disabled
   VMNS            Enabled
***************************************************
mkdir -p /lib/modules/2.4.18-3/kernel/drivers/net
install -m 644 -o root rhinefet.o /lib/modules/2.4.18-3/kernel/drivers/net
*****  Move official driver via-rhine.o to via-rhine.o.backup
mv /lib/modules/2.4.18-3/kernel/drivers/net/via-rhine.o /lib/modules/2.4.18-3/kernel/drivers/net/via-rhine.o.backup
/sbin/depmod -a || true
按照上面的结果显示是这样的一个过程:
(1)系统把.c等文件编译成相应的.o文件.
(2)然后显示系统是否支持SMP和VMNS,然后把相应的.o模块文件拷贝到系统应该的地方.
(3)并且把相同芯片的程序过时的via-rhine.o改为备份文件.让系统用新的rhinefet.o
(4)最后执行/sbin/depmod -a 更新模块库配置. 看来这个也是个智能的安装方法.
六. 用其他方法驱动.
    由于市面上很多的各种各样的板卡,有名牌有杂牌,多不胜数.当我们拿到一块卡,但一下子没找到它本身提供的源程序,不能编译,怎么办呢?
    所以当你有一块网卡不能用,在找linux的driver之前一定搞清楚这个网卡用的什么芯片,跟谁兼容,比如 3c509,ne2000,etherexpress等等.
    这样的型号一般都在网卡上最大的一快芯片上印着.如果芯片型号相同,那么它们其中一些是可以通用的.我们可以尝试一下系统上已经安装了的驱动是否可行了. 进入驱动目录/lib/modules/(内核版本)/kernel/drivers/net  即可发现已经有很多模块了, 用命令insmod 相应芯片模块名字 , 如果不成功会报错,如果正确则不显示错误信息,然后再进行上面的"三.5-9"步骤进行测试.如果不行,再老老实实的找源程序吧.

了解更多

tar.bz2 解压命令

08.11.2010, tar.bz2 解压命令已关闭评论, linux, by .

tar.bz2 解压命令
bzip2 -d  gcc-4.1.0.tar.bz2
—上面解压完之后执行下面的命令。
tar -xvf gcc-4.1.0.tar 或 tar -xvf *.tar
解完之后会出现多一个文件夹 gcc-4.1.0

了解更多

linux访问光驱

08.10.2010, linux访问光驱已关闭评论, linux, by .

linux下的设备是被当作文件来访问的。
1.装载
#cd /mnt
#mkdir cdrom
#mount /dev/cdrom /mnt/cdrom
2.卸载
#umount /mnt/cdrom

了解更多

ifcfg-eth0 配置

08.10.2010, ifcfg-eth0 配置已关闭评论, linux, by .
文件位置:/etc/sysconfig/network-scripts/ifcfg-eth0

以下各值常见于所有的基本配置文件中:
    * DEVICE=name,这里name是物理设备的名字(动态分配的PPP设备应当除外,
      它的名字是“逻辑名”。
    * IPADDR=addr, 这里addr是IP地址。
    * NETMASK=mask, 这里mask是网络掩码。
    * NETWORK=addr, 这里addr是网络地址。
    * BROADCAST=addr, 这里addr是广播地址。
    * GATEWAY=addr, 这里addr是网关地址。
    * ONBOOT=answer, 这里answer取下列值之一:
          o yes — 该设备将在boot时被激活。
          o no — 该设备不在boot时激活。
    * USERCTL=answer, 这里answer取下列值之一:
          o yes –非root用户可以控制该设备。
          o no — 非root用户不允许控制该设备。
    * BOOTPROTO=proto, 这里proto取下列值之一:
          o none — 不使用boot时协议。
          o bootp — 使用bootp协议。
          o dhcp –使用dhcp协议。

了解更多

rhel4.8 DHCP服务器 安装、配置

08.10.2010, rhel4.8 DHCP服务器 安装、配置已关闭评论, linux, by .

DHCP服务器的配置
1 服务器端的配置
1>查询DHCP服务器软件是否 已安装,没安装就先进行安装,默认系统不进行安装.   rpm -qa |grep dhcp    安装命令rpm -ivh  dhcp-3.0.1-12_EL.i386.rpm
2>修改/etc/dhcpd.conf 文件 这个文件默认是空的,需要自已建立,但是系统中有一个模板文件,可以将模板文件复制过来,再根据自己的要求对模板文件进行修改.
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample   /etc/sample
3>启动服务      service dhcpd start
2 客户端配置
将接口的配置文件BOOTPROTO=dhcp,然后重新启动网络接口或是dhclient
配置文件的说明
/etc/dhcpd.conf              DHCP的配置文件,DHCP软件包没有提供此文件,需要先复制模板文件
/usr/sbin/dhcpd              DHCP服务器的执行文件
/etc/rc.d/init.d/dhcpd      DHCP服务器的启动脚本
/etc/sysconfig/dhcrelay   指定DHCP中继的网络接口
/etc/sysconfig/dhcpd           指定需要提供DHCP服务的网络接口
/var/lib/dhcp/dhcpd.lease     DHCP服务器的租约文件
配置实例
XX公司在局域网中搭建DHCP服务器的需求如下
1> 默认租约时间为21600S
2>最大租约时间为43200S
3>局域网内所有主机的域名为abc.com
4>客户机使用的的DNS服务器的IP地址是192.168.1.1
5>声明在子网192.168.1.0/24中用于动态分配的IP地址范围是192.168.1.100~192.168.1.200.所分配的IP地址的子网掩码是255.255.255.0.默认网关地址是192.168.1.1
6>在子网192.168.1.0/24中有名为SERVER01的服务器主机,需要固定分配IP地址192.168.1.11,该服务器网络接口的MAC地址是b0:c0:c3:22:46:81.server01主机的其他配置内容使用所在子网的默认配置,
在dhcpd.conf配置文件内容如下:

#cat /etc/dhcpd.conf
ddns-update-style  interim;    //DHCP服务器与DNS服务器的动态信息更新模式
default-lease-time   21600;    //默认租约时间
max-lease-time     43200;      //最大租约时间
option  domain-name    "abc.com";     //主机所在的域名
option domain-name-servers     192.168.1.1;      //DNS服务器的地址
subnet 192.168.1.0 netmask  255.255.255.0  {
      range      192.168.1.00   192.168.1.200;
      option subnet-mask            255.255.255.0;
      option routers                192.168.1.1;
host server01  {
     hardware ethernet   b0:c0:c3:22:46:81;
     fixed-address   192.168.1.11;
       }
}

了解更多

ssh限制登录IP修改端口

08.04.2010, ssh限制登录IP修改端口已关闭评论, linux, by .

在/etc/hosts.allow输入 
  (其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24) 
  sshd:192.168.10.88:allow 
  在/etc/hosts.deny输入(表示除了上面允许的,其他的ip   都拒绝登陆ssh) 
  sshd:ALL
vi /etc/ssh/sshd_config

比如说你只允许1.1.1.1这个IP进入,其它都禁止:
方法1、iptables。
iptables   -A   INPUT   -s   1.1.1.1   –destination-port   22   -j   ACCEPT
iptables   -A   INPUT   –destination   22   -j   DROP
方法2:
vi   /etc/ssh/sshd_config
添加一行:
allowusers   xxx@1.1.1.1
注:xxx为你用来登入服务器的用户名。

了解更多

Linux修改ssh端口有关

08.04.2010, Linux修改ssh端口有关已关闭评论, linux, by .
 

Linux 2010-05-19 10:49:48 阅读43 评论0 字号:大中小

1、Linux修改ssh端口22

vi /etc/ssh/ssh_config

vi /etc/ssh/sshd_config

然后修改为port 7000(注意把前面#去掉)

以root身份service sshd restart (redhat as3)

使用putty,端口7000

2、Linux下SSH默认的端口是22,为了安全考虑,现修改SSH的端口为7000,修改方法如下 :

/usr/sbin/sshd -p 7000

为增强安全

先增加一个普通权限的用户:

#useradd test

#passwd test

//设置密码

生产机器禁止ROOT远程SSH登录:

#vi /etc/ssh/sshd_config

PermitRootLogin yes

改为

PermitRootLogin no

重启sshd服务

#service sshd restart

远程治理用普通用户uploader登录,然后用 su root 切换到root用户拿到最高权限。

3、首先修改配置文档
vi /etc/ssh/sshd_config
找到#Port 22一段,这里是标识默认使用22端口,修改为如下:
Port 22
Port 7000
然后保存退出
执行/etc/init.d/sshd restart
这样SSH端口将同时工作和22和7000上。
现在编辑防火墙配置:vi /etc/sysconfig/iptables
启用7000端口。
执行/etc/init.d/iptables restart
现在请使用ssh工具连接7000端口,来测试是否成功。
假如连接成功了,则再次编辑sshd_config的配置,将里边的Port22删除,即可。
之所以先配置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,
万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试
以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。

了解更多

Linux操作系统里查看所有用户

08.04.2010, Linux操作系统里查看所有用户已关闭评论, linux, by .

1、Linux里查看所有用户
linux里,并没有像windows的net user,net localgroup这些方便的命令来管理用户。
Xwindows界面的就不说了。
(1)在终端里。其实只需要查看 /etc/passwd文件就行了。
(2)看第三个参数:500以上的,就是后面建的用户了。其它则为系统的用户。
或者用cat /etc/passwd |cut -f 1 -d :
2、用户管理命令
useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;
3、管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

了解更多

linux 添加硬盘 分区格式化 加载

07.18.2010, linux 添加硬盘 分区格式化 加载已关闭评论, linux, by .

一.Linux的硬盘识别
2.6 kernel以后,linux会将识别到的硬件设备,在/dev/下建立相应的设备文件.如:
sda        表示第1块SCSI硬盘.
hda        表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上).
scd0        表示第1个USB光驱.
当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.cciss的硬盘是个例外,它的
设备文件在/dev/cciss/目录下.一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘
设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.
二.在linux系统中添加新硬盘
下面说明一下,在GTES 11上,添加一块10G硬盘到第一个IDE口的Slave接口上.
安装好硬盘后,开机进入Turbolinux.以root身份登录.
执行fdisk -l命令显示当前系统的硬盘设备.
[root@g11-64-1 ~]# fdisk -l
Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14          89      610470   82  Linux swap / Solaris
/dev/hda3              90        2610    20249932+  83  Linux
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/hdb doesn’t contain a valid partition table
[root@g11-64-1 ~]#
显示hdb没有分区信息,大小为10G.
使用fdisk命令对hdb进行分区.
[root@g11-64-1 ~]# fdisk /dev/hdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.
The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
输入: n 表示新建分区.
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
输入: p 表示建立一个原始分区.
p
Partition number (1-4): 1
输入: 1 表示此分区编号为1.
First cylinder (1-1305, default 1):
输入: 回车 表示使用默认起始柱面号.如果要分多个区的话,先盘算好要多大,再输入数字
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):
输入: 回车 表示使用默认结束柱面号.即此分区使用整个硬盘空间.
Using default value 1305
Command (m for help): w
输入: w 存盘,退出fdisk.
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
再使用fdisk -l命令查看分区情况.
[root@g11-64-1 ~]# fdisk -l
Disk /dev/hda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1          13      104391   83  Linux
/dev/hda2              14          89      610470   82  Linux swap / Solaris
/dev/hda3              90        2610    20249932+  83  Linux
Disk /dev/hdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1        1305    10482381   83  Linux
显示/dev/hdb上有一个hdb1分区,为linux格式.
分区后,需要对这个分区进行格式化.
[root@g11-64-1 ~]# mkfs.ext3 /dev/hdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2620595 blocks
131029 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
将新建分区挂在到/mnt/hdb1上.
[root@g11-64-1 ~]# mkdir /mnt/hdb1
[root@g11-64-1 ~]# mount /dev/hdb1 /mnt/hdb1
[root@g11-64-1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda3              19G  8.2G  9.7G  46% /
/dev/hda1              99M   16M   79M  17% /boot
tmpfs                 250M     0  250M   0% /dev/shm
/dev/hdb1             9.9G  151M  9.2G   2% /mnt/hdb1
[root@g11-64-1 ~]#
hdb1已挂载到/mnt/hdb1上,剩余空间为9.2G.
在此分区上创建文件.
[root@g11-64-1 ~]# cd /mnt/hdb1
[root@g11-64-1 hdb1]# ls > a
[root@g11-64-1 hdb1]# ls -hl
total 20K
-rw-r–r– 1 root ro
ot  13 Nov  3 08:45 a
drwx—— 2 root root 16K Nov  3 08:44 lost+found
[root@g11-64-1 hdb1]#
卸载hdb1分区.
[root@g11-64-1 hdb1]# cd
[root@g11-64-1 ~]# umount /mnt/hdb1
[root@g11-64-1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda3              19G  8.2G  9.7G  46% /
/dev/hda1              99M   16M   79M  17% /boot
tmpfs                 250M     0  250M   0% /dev/shm
[root@g11-64-1 ~]#
三.设置新硬盘开机自动挂载
在/etc/fstab中添加新硬盘的挂载信息.添加下面一行:
/dev/hdb1       /mnt/hdb1               ext3 defaults         1       2(如果还有一个分区就是1      3,以此类推)
这样,每次开机后,系统会自动将/dev/hdb1挂载到/mnt/hdb1上.

了解更多

Linux系统 /etc/fstab各个字段含义解释

05.16.2010, Linux系统 /etc/fstab各个字段含义解释已关闭评论, linux, by .

# fstab文件的作用

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

# 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

# 示例文件

# /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 1

/dev/hda7 /usr/local ext2 defaults 1 1

/dev/hda8 /var ext2 defaults 1 1

/dev/hdb /cdrom iso9660 noauto,user 0 0

none /proc proc defaults 0 0

none /dev/pts devpts gid=5,mode=620 0 0

了解更多