要将上面我们所建立起来的硬盘或软盘正式的在 Linux 上面启用时,一定需要将他挂载上档案系统!而所谓的『挂载点』则是该硬盘所在的目录,且在该目录下的所有目录都归在 该硬盘所有!
由于挂载档案系统需要挂载点,所以挂载的时候得先建立起挂载的目录才行!除此之外,如果您要用来挂载的目录里面并不是空的, 那么挂载了档案系统之后,那么原目录下的东西就会暂时的消失。
- mount
- 挂载软盘:
- 挂载光盘!
- 挂载 Windows 扇区:
- 安装新硬盘:
- umount
语法:
| [root @test /root ]# mount [-ahlV] [root @test /root ]# mount -t type /dev/hdxx /mountpoint [root @test /root ]# mount -o [options] [root @test /root ]# umount /mountpoint 参数说明: -a :依照 /etc/fstab 的内容将所有相关的磁盘都挂上来! -h :只列出 mount 相关的参数,并不挂载任何装置 -l :列出目前已经挂载的装置、档案系统名称与挂载点! -V :列出 mount 的版本信息 type :将后面 /dev/hdxx 这个装置以 type 的档案格式挂载到 /mountpoint 这个点, 常见的 type 有底下几个: vfat, msdos :这个是支持 Windows 系统的档案格式,尤其是 vfat 常用! ext, ext2 :这个就是 Linux 的主要档案格式啦! iso9660 :光驱的档案格式 nfs, ntfs, ufs :Windows 2000 使用 NTFS 格式呀! -o :这个参数后面接的咚咚可多了!可用的资料可不少呢! rw :让 mount 的扇区为可擦写 suid :允许该扇区可以设定档案为 SUID 的状态! exec :允许该扇区可以执行 binary 的档案! auto :允许该扇区可以使用 mount -a 的参数设定! nouser :禁止其它人(非 root 之使用者)使用挂载功能!这是默认值! async :允许扇区可以进行异步记录(内存与硬盘不同步!最常用!) defaults:同时具有 rw, suid, dev, exec, auto, nouser, async 这些功能的设定值! nosuid :不许该扇区具有 SUID 的档案属性! ro :设定为只读属性! remount :让系统本来挂载的扇区重新被挂载! 范例: [root @test /root]# mount -a [root @test /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom<==挂上光盘 [root @test /root]# mount -t vfat /dev/fd0 /mnt/floppy <==挂上 windows 档案系统的软盘 [root @test /root]# mount -t ext2 /dev/fd0 /mnt/floppy <==挂上 Linux 档案系统的软盘 [root @test /root]# mount -t ext2 /dev/hdc6 /home <==挂上 Linux 档案格式硬盘 [root @test /root]# mount -o remount,rw / <==让根目录重新挂载为可读! |
这个指令只有 root 才能执行!如果你不想要单独的将某个磁盘挂上来,那么执行:
mount -a就可以依照 /etc/fstab的的参数内容将所有的磁盘给他重新挂上去!此外,需要注意 的是,由于 Linux 系统中,每一个路径都有可能是一个独立的扇区系统,所以需要将每个扇区系统都挂上各自的挂载点!详细的内容请回去参考一下上一篇 Linux 档案系统 的说明。另外,由于各个扇区的档案系统可能并不相同,所以您必须先要了解该扇区的档案系统,这样才可以进行 mount 的工作!如何知道该磁盘的档案格式呢?可以使用 fdisk 来显示的功能即可!
请注意呦!由于 mount 之后的档案格式是没有办法直接被拿掉的!尤其在使用 fsck 检查你的硬盘时,更是不能挂上硬盘的!而如何将硬盘至挂载点卸载呢?呵呵,就直接使用 umount 即可啰!
底下分别谈一谈各个装置的挂载情况:这里可能先要强调一个观念,在 Windows 底下,磁盘分割是以 A, B, C, D, .... 等等的方式来划分的,然而在 Linux 或 Unix 系统之下,却是以目录来代表,也就是说,一个目录很可能就是一个扇区了! 举个例子来说,通常 Linux 预设的软盘挂载的地点在 /mnt/floppy 这里!呵呵!那么如果你需要软盘的数据时,就将 /dev/fd0 这一个装置(前面提过啰!这个是周边存取装置的一个设备档案类型)挂上 /mnt/floppy 就可以啦!然后你进入到 /mnt/floppy 就可以读取软盘的数据啰!OK!在这里也必须要介绍一下 mount 这个指令喔!
很多朋友常常会使用到软盘,尤其是在网络有问题的时候,那么如何使用 Linux 将软盘挂上来呢?!首先,您给先了解你的磁盘档案的格式,例如 Linux 的档案格式( ext2 )与 Windows 的档案格式( vfat )是不一样的!分别可以使用如下的方式挂上来:
| [root @test /] # mount -t ext2 /dev/fd0 /mnt/floppy<==Linux 格式 [root @test /] # mount -t vfat /dev/fd0 /mnt/floppy<==Windows 格式 [root @test /] # umount /mnt/floppy<==将软盘机卸载 |
所以啰!即使是 Windows 格式的档案,在 Linux 底下仍然是可以读取的到的呦!另外,要注意的是,即使你使用软盘完毕之后,一定要将 /mnt/floppy 卸载之后才可以取出软盘片喔!不然系统会一直告诉你发生错误啰!而在卸载 /mnt/floppy 的时候,你一定不能在该目录底下,否则会发生错误讯息喔!而如果加载的格式不符合,系统也不会将该软盘挂上来的呦!好了,那么怎么制作 ext2 的软盘呢?简单的很,就使用 mke2fs /dev/fd0 就行啦!
在某些 Linux distribution 底下,例如 Red Hat 7.2 在预设的状态下是将 CDROM 视为一个模块,预设的核心并没有将他加载,所以,如果你需要在 Red Hat 7.2 里面挂载 CDROM 的话,有两个解决的方法:
一个是直接将 CDROM 的模块加载系统中,这个动作比较简单,而且你也可以将这个指令直接写到 /etc/rc.d/rc.local 里面去即可!
| [root @test / ]# modprobe cdrom [root @test / ]# modprobe ide-cd [root @test / ]# mount -t iso9660 /dev/cdrom /mnt/cdrom [root @test / ]# umount /mnt/cdrom |
前两行是模块的加载,而第三行是挂载 CDROM ,第四行则是卸载!此外,由于预设的 CDROM 挂载就是以 iso9660 的 type 来做的,所以你也可以直接写成 mount /dev/cdrom /mnt/cdrom 就可以啰!
另外一个解决的方法是将 CDROM 的模块编译进核心当中!又有两种方式,一个是直接下载新的核心来编译,另一个则是直接以 Red Hat 出的更新版的核心来直接升级就可以啦!如果是使用 up2date 的话,那么升级核心是很简单的啦!
如果万一你在安装系统的时候忘记将 Windows 的 VFAT 格式的扇区 mount 上你的 Linux 时,该怎么办?!这种现象最常发生在多系统共存的环境中!例如再原有的 Windows 98 或 Win2000 上面安装 Linux ,但是结果却忘记将该扇区挂载上来!嗯!这样需要重新安装吗?!当然不需要了!又不是被入侵!那么该如何挂载上来呢?!就如同前面说的,由于一个目录可能 代表了一个扇区,因此你必须要先建立一个扇区,然后再将此扇区挂载上你的 Linux 目录,就可以啦!另外,由于需要将扇区挂在目录下,所以你还得需要了解你的 Windows 扇区是在哪一个硬盘周边中喔!如何知道你的 Windows 扇区呢?就使用 fdisk 吧!假设你的 Windows 是在 Primary IDE 的硬盘,那么应该就是 /dev/hda 啰!则你可以这样做:
| [root @test / ]# fdisk –l /dev/hda Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 1 268 2152678+ 83 Win95 FAT32 /dev/hda2 * 269 395 1020127+ 83 Linux /dev/hda3 396 459 514080 83 Linux /dev/hda4 460 524 522112+ 5 Extended /dev/hda5 460 472 104391 83 Linux /dev/hda6 473 485 104391 83 Linux /dev/hda7 486 498 104391 82 Linux swap /dev/hda8 499 511 104391 83 Linux /dev/hda9 512 524 104391 83 Linux |
使用 fdisk 指令的话就可以知道你的 Win95 FAT32 的扇区在哪一个,在上表中,显示的是 /dev/hda1 这一个扇区啰!那么假设我要将 Windows 的目录建置在 /mnt/win98 里面呢?就这样做吧:
| [root @tsai / ]# mkdir /mnt/win98 [root @tsai / ]# mount -t vfat /dev/hda1 /mnt/win98 [root @tsai / ]# mount -t vfat -o iocharset=cp950 /dev/hda5 /mnt/win98 |
如此一来就将 Windows 的系统挂到 Linux 里面啰!简单吧!请注意,上面那个第三行所使用的参数可以让您的 Windows 98 的扇区当中的档案显示出正确的中文呦!
再来个新问题!那么我如果想要安装一颗新硬盘呢?呵呵,也是很简单啦,就跟在 Windows 底下一样!需要先 fdisk 然后在 format ,之后就可以顺利的挂上 Linux 系统啰!假设我安装的硬盘在 Primary 的第二个 IDE 上面,也就是 /dev/hdb 上,那么整个步骤应该就会是:
| [root @test / ]# fdisk /dev/hdb ....... (以下省略!直接以 fdisk 分割好硬盘啦!) [root @test / ]# mke2fs /dev/hdb1 在 Linux 中的 format 是 mke2fs 这一个指令喔! 上面的指令 在将你的硬盘扇区格式化成 Linux 的 ext2 格式啦! [root @test / ]# mkdir /disk2 建立一个目 录名称为 /disk2 ,预计用来挂载你的新硬盘 [root @test / ]# mount -t ext2 /dev/hdb1 /disk2 将硬盘挂上 Linux 系统啰! |
语法:
| [root @test root]# umount [-f] [device|mount_point] 参数说明: -f :强制将该档案系统退出,最常使用在无法退出的 NFS 档案系统中了! 范例: [root @test root]# umount /home |
就是直接将 mount 上来的档案系统给他卸载即是!卸载之后,可以使用 df 看看是否还存在呢?!
刚刚上面说了许多,那么可不可以在开机的时候就将我要的扇区都挂好呢?!这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那就直接到 /etc/fstab 里面去修修就行啰!不过,在开始说明前,这里要先跟大家说一说系统挂载的一些限制:
- 根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
- 其它 mount point 必须为已建立的目录﹐可以任意指定﹐但一定要遵守必须的系统目录架构原则。
- 所有 mount point 在同一时间之内﹐只能挂载一次。
- 所有 partition 在同一时间之内﹐只能挂载一次。
- 如若进行卸载﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
# History:
# ==================================================
# When Who What
# 2002/10/19 VBird This file had been modified by me.
# ==================================================
# device MountPoint filesystem parameters dump fsck
/dev/hda1 / ext3 defaults 1 1
/dev/hda2 swap swap defaults 0 0
LABEL=/backup /backup ext3 defaults 1 1
none /dev/pts devpts mode=0620 0 0
none /proc proc defaults 0 0
/dev/hda3 /mnt/win98 vfat defaults,iocharset=big5,codepage=950 0 0
我这个人比较龟毛一点,因为 Mandrake 9.0 的 /etc/fstab 档案排列方式蛮丑的,虽然每一栏之间只要以空格符分开即可,但就是觉得丑,所以通常我就会自己排列整齐,并加上批注符号,就是 # 字号,来帮我记忆这些信息!总共有六栏,分别来谈一谈吧!
- 扇区或标头:就是扇区啦!不过,如果是在安装的时候有给 予一个 label (标头) 的话,那么使用 label 也可以,例如上面的 LABEL=/backup 那一行。而如果是我们增加新的扇区的话,那么这里就必须要使用『扇区』了!例如新安装一个硬盘在 /dev/hdd1 当中,那么这里就写 /dev/hdd1 啰!那么如果我还是想要使用 label 来挂载呢?!就使用 e2label 来建立 label name 啦! e2label 的用法在前一章有说明,忘了的话,快去看看先!
- 挂载的目录点:就是 mount 的挂载点啦!
- 该扇区的档案格式:目前 Linux 大都使用 ext2, ext3, reiserfs 等等的,不过,如果你有使用 Windows 的档案格式的话,那么就可以使用 vfat 啰!目前支持的格式还有 iso9660( 光盘 ), msdos, minix, nfs, swap 等等的档案格式;
- 档案格式参数区:这个就重要了!有哪些磁盘参数可以参考呢? 在前一章的 mount 指令里面介绍了一些些,这里再更详细的提出说明如下:
- 是否可以被 dump 指令备份:这一列在说明,使用 dump 指令来备份时时,该扇区是否跟着一起动作?如果没有数字的话则以 0 带入!由于我们希望有备份的功能,所以这里当然就开启( 1 )啰!
- 检验扇区:这个数字在用来以 fsck 检验扇区用的!在开机与关机的时候,通常 Linux 希望检验一下扇区,所以这里需要设定一下。通常 root (就是根目录 / 啦)需要设定为 1 ,而其它的档案系统( filesystem )就设定为 1 即可!当然啰!由于 proc 及 swap 与 windows 并不需要以 fsck 来检验,所以就可以设定为 0 啰!
异步/同步 | 是否允许磁盘与内存中的数据以同步写入的动作?使用 async 这个异步写入的方式会比较快速一些。 |
自动/非自动 | 在开机的时候是否自动挂载该扇区?既然设定在这个区域内了,当然希望开机的时 候自动挂载啰! |
可擦写/只读 | 让该扇区以可擦写或者是唯独的型态挂载上来,如果是 vfat 之类的扇区,您不想让 Linux 变更的话,那么使用 ro 也不错!能够提供有效的保护呢! |
可执行/不可执行 | 限制在此档案系统内是否可以进行『执行』的工作?如果是纯粹用来储存数据的, 那么可以设定为 noexec 会比较安全,相对的,会比较麻烦! |
允许/不许 | 是否允许使用者使用 mount 指令来挂载呢?一般而言,我们当然不希望 user 身份的人能使用 mount 啰,因为太不安全了,因此这里应该要设定为 nouser 啰! |
具有suid/没有suid | 该档案系统是否允许 SUID 的存在?一般而言,如果不是 Linux 系统的扇区,而是一般数据的 partition ,那么设定为 nosuid 确实比较安全一些!毕竟有 SUID 是蛮可怕的一件事 |
| 启动使用者磁盘配额模式支持 | |
| 启动群组磁盘配额模式支持! | |
| 同时具有 rw, suid, dev, exec, auto, nouser, async 这些功能,所以预设情况中,使用这个即可! |
另外,如果有兴趣的话,还可以加上类似『iocharset=big5,codepage=950』 这种额外的功能参数以启动中文编码的支持,更详细的数据可以 man mount 搜寻呢!
/dev/hdb1 /disk2 ext2 defaults 1 1或者我直接在这个档案上面规划好之后,再下达: mount -a 那么程序就会自动的将 /etc/fstab 里面的信息读出,并且依据里面的情况来挂载扇区喔!如此一来,每次开机的时候都会自动的建立好对应的咚咚啦!
有经验的朋友大概都还蛮清楚的,就是 /etc/fstab 写错了的时候(最常发生在 quota 设定的时候)会造成无法开机的窘境,因此,通常我们都会把自己所想要的数据给他写在 /etc/fstab 之后,以 mount –a 驱动看看,此外,如果错误已经造成了呢?那也不要太担心,由于错误造成了,所以根目录 / 预设会变成只读属性,这个时候就得要进行 remount 的工作了,亦即下达:
mount –n –o rw,remount /这样应该就可以将磁盘挂载成为可擦写了!
此外,您必须了解的是, /etc/fstab 写的是您的设定文件,但是目前的系统所挂载的信息则是记录在 /etc/mtab 这个档案中喔!这个档案会实时的进行更新,如果您重新手动挂载你的档案 系统,那么这个 mtab 就会跟着变动啰!
No comments:
Post a Comment