前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下通过修改fstab来自动挂载Windows 分区

Linux下通过修改fstab来自动挂载Windows 分区

作者头像
王云峰
发布2019-12-25 16:03:24
3.2K0
发布2019-12-25 16:03:24
举报

我电脑装的是Windows和Linux双系统,以前在Linux下,要打开Windows系统的C盘或D盘,总是要输入密码,很麻烦,而且麻烦了很长时间.

后来有一天浩哥看到了,说可以在Linux开机时自动挂载Windows分区,修改/etc/fstab这个文件,可以采用每个分区的UUID.后来校长也看到了我每次麻烦的操作,说是确实可以搞,而且他已经搞定了.我想我也得搞搞了.

fstab文件位于/etc目录下,是一个多文件系统的信息描述文件,应用程序不能修改它,而它的维护和修改任务则需要系统管理员来完成.每个分区在fstab中表示为一行,一行有6个域(field),每个域用空格或tab键隔开.

代码语言:javascript
复制
$ cat /etc/fstab

# /etc/fstab: static file system information.
#
# Use `blkid` to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# file    mount    type    options    dump    pass             
# / was on /dev/sda6 during installation
UUID=22b1037f-6c5e-46d0-b965-44cc42313795 /             ext4       errors=remount-ro  0 1
# /home was on /dev/sda5 during installation
UUID=7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8 /home         ext4        defaults          0 2
/dev/sr0                                  /media/cdrom0 udf,iso9660 user,noauto       0 0
devpts                                    /dev/pts      devpts      defaults          0 0

可以看到,6个域名称分别是

代码语言:javascript
复制
file    mount    type    options    dump    pass

而且Linux系统分区已经挂载好了,所以我们接下来只要添加Windows分区就可以了。 6个域详细介绍如下:

###1.file system: 表示将要挂载的分区的块设备名称.注意这个设备也可以是远程设备,比如说是远程服务器上的某个设备.对于本地设备,该域格式可以是/dev/cdrom,LABEL=<label>,或者UUID=<uuid>三者之一;对于远程文件系统,格式为:

,如 freeshell.ustc.edu.cn:/.远端设备格式好写,对于本地设备,如何获取UUID 号和LABEL呢?我们要挂载的C盘是/dev/sdb1还是/dev/sda5呢?这个可以用blkid命令查看:

代码语言:javascript
复制
sudo blkid
/dev/sda1: LABEL="M-gM-3M-;M-gM-;M-^_M-dM-?M-^]M-gM-^UM-^Y" UUID="9ED61632D6160B63" TYPE="ntfs" PARTUUID="5be4a3f9-01" 
/dev/sda2: UUID="908265F98265E466" TYPE="ntfs" PARTUUID="5be4a3f9-02" 
/dev/sda3: UUID="98B6FE61B6FE3EF6" TYPE="ntfs" PARTUUID="5be4a3f9-03" 
/dev/sda5: UUID="7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8" TYPE="ext4" PARTUUID="5be4a3f9-05" 
/dev/sda6: UUID="22b1037f-6c5e-46d0-b965-44cc42313795" TYPE="ext4" PARTUUID="5be4a3f9-06"

我们知道,Windows的文件系统格式是ntfs(new technology file system),从上面的输出中我们可以知道,要挂载的Windows分区是/dev/sda2/dev/sda3.因为这两个分区没有LABEL,所有就没法采用LABEL=<label>的方式来表示第一个域了.所以我们要挂载的两块Windows分区的第一个域可以这样写:

代码语言:javascript
复制
#C盘
/dev/sda2
#D盘
/dev/sda3

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 
#D盘 
UUID=98B6FE61B6FE3EF6

###2.mount point:

即挂载点,使用过mount命令的同学应该明白这个域是干什么的,简单来说就是将物理的存储盘在Linux系统中找一个点放置下来,相当于在Linux文件树上找一个点,将物理存储对应到这个点上.挂载在这个点后,所有对该点的操作都会写入到对应的物理存储中.在最顶上的挂载例子中,我们看到UUID=22b1037f-6c5e-46d0-b965-44cc42313795(从blkid命令结果可以看出,该分区是/dev/sda6)的物理存储挂载到了/目录(Linux系统根目录),也就是说/目录下面的所有东西都写入到该分区中(/home目录除外),同理,所有/home目录下的内容都写入到UUID=7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8(从blkid命令结果可以看出,该分区是/dev/sda5)的分区中

那么,我们要把C盘和D盘挂载到哪里呢?我是这样做的: a.先查看没有自动挂载Windows分区之前,手动挂载时,系统会把C盘和D盘挂载到哪,结果如下:/media/wang(wang是我的用户名),C盘被命名为908265F98265E466,D盘被命名为98B6FE61B6FE3EF6,即其相应的UUID. b.所以我想,可能是挂载到/media目录下的任意一个子目录下吧, 所以我将该域分别设置为/media/c/media/d,综合前两个域,应该写成:

代码语言:javascript
复制
#C盘
/dev/sda2 /media/c
#D盘
/dev/sda3 /media/d

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 /media/c
#D盘 
UUID=98B6FE61B6FE3EF6 /media/d

###3.type 即文件系统的格式,像Linux下常用的 ext,ext1,ext2,ext3,Windows下常用的fat16,fat32,ntfs等.可以根据blkid命令的结果来写该域.根据blkid的结果, 我们要挂载的C盘和D盘的文件系统格式为ntfs,所以前三个域都确定了,有如下写法:

代码语言:javascript
复制
#C盘
/dev/sda2 /media/c ntfs
#D盘
/dev/sda3 /media/d ntfs

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 /media/c ntfs
#D盘 
UUID=98B6FE61B6FE3EF6 /media/d ntfs

###4.option:

选项,该域表示挂载的时候的一些选项,主要有6个选项,每个选项用逗号隔开,下面详细说明每个选项的含义:

代码语言:javascript
复制
default:使用默认选项
noauto:当执行mount -a(即挂载全部文件系统,开机时会执行此命令)时忽略此条记录,也就是跟没写进fstab一样
user:允许特定的用户来挂载,如user=bob,则只能允许bob这个用户来挂载
owner:允许物理设备的拥有者来挂载
comment:为fstab维护程序提供一些说明
nofail:在挂载失败后,忽略此错误,继续往下执行

因为我们没有特殊要求,所以就选default.所以前四个域可以写成这样子:

代码语言:javascript
复制
#C盘
/dev/sda2 /media/c ntfs default
#D盘
/dev/sda3 /media/d ntfs default

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 /media/c ntfs default
#D盘 
UUID=98B6FE61B6FE3EF6 /media/d ntfs default

###5.dump

dump这个命令执行备份操作,该域为0,表示执行dump操作时忽略该分区,如果为1,则表示执行dump时也会备份该分区.因为我们没有备份的需求,所以该域设置为0,所以前五个域为:

代码语言:javascript
复制
#C盘
/dev/sda2 /media/c ntfs default 0
#D盘
/dev/sda3 /media/d ntfs default 0

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 /media/c ntfs default 0
#D盘 
UUID=98B6FE61B6FE3EF6 /media/d ntfs default 0

###6.pass: 不是passwd的pass,而是系统重启时检查分区正常与否时,该分区的检查顺序.根目录所在分区passno是1,其他分区为2.如果设置为0,则表示不检查.我们的C盘和D盘不想让Linux检查,所以设置为0.所以综合以上步骤,我们可以写出下面的完整的两条记录:

代码语言:javascript
复制
#C盘
/dev/sda2 /media/c ntfs default 0 0
#D盘
/dev/sda3 /media/d ntfs default 0 0

或者:

代码语言:javascript
复制
#C盘 
UUID=908265F98265E466 /media/c ntfs default 0 0
#D盘 
UUID=98B6FE61B6FE3EF6 /media/d ntfs default 0 0

按理来说这两种形式都可以的,将任一种形式的两条记录添加到fstab文件中,重新启动系统,下次打开Windows系统的分区时,应该就不需要输入密码了. 但正如前面提到的,使用UUID的方式更健壮些,比如有的移动硬盘或U盘,拔下来再次插入的时候/dev/sda的编号可能会变,但其对应的UUID不会变,所以使用UUID会省下许多麻烦,推荐使用UUID形式.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档