Ubuntu 开机自动挂载硬盘分区

本文记录一下在Ubuntu 18.04下开机挂载第二个硬盘的某个分区的具体操作,以及详细介绍了挂载选项。

操作参考了 https://blog.csdn.net/qq_35451572/article/details/79541106

挂载选项参考了 https://help.ubuntu.com/community/Fstab

三步操作即可实现开机自动挂载

1. 使用sudo blkid命令查看分区信息

该命令会列出所有分区的UUID和文件系统类型,找到欲挂载的那个分区,记录下它的的UUID和type信息,稍后会用到它们。例如下面一行描述了某个分区sdb2:

dev/sdb2: LABEL="Data" UUID="884eef-aeed-cb986f1" TYPE="ntfs" ...

2. 修改配置文件

打开 /etc/fstab 文件,末尾添加上如下一行:

UUID=884eef-aeed-cb986f1 /media/sdb2 ext4 defaults 0 2

第一个数字0表示不使用bump程序对它进行备份。
第二个数字2表示开机不优先检查此磁盘,1表示开机优先检查磁盘,用于根分区/, 2用于普通分区,0禁止磁盘检查。

3. 重启系统后即可生效

操作简单,容易实现。

关于挂载选项的解释

本着刨根问底的态度阅读了一下fstab的文档,最权威自然是系统自带帮助文档 man fstab 🙂 。 它的选项和mount命令差不多。

/etc/fstab每一行的格式是由6个参数组成, #开始的行为注释 

[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]

例如:

/dev/sda4 /media/Code ntfs users,auto,rw,dev,exec,umask=002 0  0 

下面具体解释各参数。

[device]

用来区分各个分区的标识符,可以用Label=xx(上例中的"Data"), 或设备名 (类似/dev/sdb1),或者UUID=xx(上例的"884eef-aeed-cb986f1")来区分.。这里建议使用UUID,因为它是唯一的且保存在该分区内部。而设备名则会随着系统挂载设备顺序不同可能发生变化,比如某个/dev/sdbx的分区重启后因为多加了个硬盘而变成了/dev/sdcx 等。

[Mount Point]

挂载的目标路径,不建议含有空格,可以使用任何路径,但是要求挂载前该路径要存在。swap分区没有挂载点,写为none。 /swapfile none swap sw 0 0

[File System Type]

源分区的文件系统类型,常见的一些类型可参见mount:

Linux文件系统: ext2, ext3, ext4
光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs

[Options]

挂载选项。这个选项取决于文件系统类型。 默认值是defaults, 它被定义为如下一组用逗号分割的选项组合:  rw, suid, dev, exec, auto, nouser, async.

对于ntfs/vfat系统,挂载后分区内的读写权限是在挂载时由umask, dmask, fmask三个参数决定的,挂载完毕就不可以再通过chmod或chown来修改了。建议dmask=027,fmask=137 (设置 umask=000 将使分区内所有文件都可以被执行)。更宽松的选项是 dmask=000,fmask=111。

还有一些其他常用选项,一般都是成对出现的:

  • sync/async - All I/O to the file system should be done (a)synchronously
  • auto- 该文件系统被启动时会自动加载,或者如果用户运行过mount -a,则也会自动加载。
  • noauto - 该文件系统不会被启动时自动加载,即使使用了 mount -a 命令。用户必须手动运行mount命令来加载它。
  • dev/nodev - 解释/不解释文件系统里的字符或块特殊设备 Interpret/Do not interpret character or block special devices on the file system.
  • exec / noexec - 允许/禁止分区内的二进制文件运行。Permit/Prevent the execution of binaries from the file system.
  • suid/nosuid - Permit/Block the operation of suid, and sgid bits.
  • ro/rw- 加载为只读/读写
  • user - 允许任意用户来挂载该文件系统。这自动包含noexec, nosuid 和nodev除非这些选项被重新设置。Permit any user to mount the file system. This automatically implies noexec, nosuid,nodev unless overridden.
  • nouser - 只允许root用户挂载该文件系统,这是默认值。Only permit root to mount the files ystem. This is also a default setting.
  • umask=以及fmask=:对于文件和文件目录的权限设置。

[Dump]

参数表明备份工具dump是否对此文件系统进行备份, 0为忽略, 1为备份。dump很少用到如果有疑虑可以设置为0. This field sets whether the backup utility dump will backup file system. If set to "0" file system ignored, "1" file system is backed up.Dump is seldom used and if in doubt use 0.

Pass (fsck order)

这个此时与磁盘检查有关。它告诉fsck检查此文件系统的顺序。0为忽略检查,1为先检查此分区,2为后检查该分区。建议根分区/此值设为1, 普通分区设为2。使用0来禁止启动时紫盘检查。fsck一般每mount 30次执行1次,也可修改但是强烈建议保留此特性。

关于挂载的一些具体实例

Extended file systems (ext)

 ext2ext3, and ext4 filesystems that are common as root filesystems in Linux. The main difference between ext2 and ext3 is that ext3 has journaling which helps protect it from errors when the system crashes. The more modern ext4 supports larger volumes along with other improvements, and is backward compatible with ext3.

A root filesystem:

UUID=30fcb748-ad1e-4228-af2f-951e8e7b56df / ext3 defaults,errors=remount-ro,noatime 0 1

A non-root file system, ext2:

/dev/sdb1 /media/disk2 ext2 defaults 0 2

File Allocation Table (FAT)

Specifically, fat16 and fat32, which are common for USB flash drives and flash cards for cameras and other devices.

/dev/hda2 /media/data1 vfat defaults,user,exec,uid=1000,gid=100,umask=000 0 0
/dev/sdb1 /media/data2 vfat defaults,user,dmask=027,fmask=137 0 0

New Technology File System (NTFS)

NTFS is typically used for a Windows partition.

/dev/hda2 /media/windows ntfs-3g defaults,locale=en_US.utf8 0 0

For a list of locales available on your system, run

  • locale -a

Hierarchical File System (HFS)

HFS, or more commonly, HFS+, are filesystems generally used by Apple computers.

For Read/Write mounting:

/dev/sdb2 /media/Macintosh_HD hfsplus rw,exec,auto,users 0 0

Note: if you want to write data on this partition, you must disable the journalization of this partition with diskutil under Mac OS.

For Read only:

/dev/sda2 /media/Machintosh_HD hfsplus ro,defaults 0 2

Note: if you want to have access to your files on Ubuntu, you must change the permission of the folders and contained files you want to access by doing in the apple terminal:

sudo chmod -R 755 Folder

"Staff" group should have appeared in this folder's info. You can do this on Music and Movies to access these files from Ubuntu.

补充一些mount相关

参考https://www.linuxprobe.com/mount-detail-parameters.html

命令格式:mount [-t vfstype] [-o options] device dir

1、-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型。

光盘或光盘镜像:iso9660 
DOS fat16文件系统:msdos 
Windows 9x fat32文件系统:vfat 
Windows NT ntfs文件系统:ntfs 
Mount Windows文件网络共享:smbfs 
UNIX(LINUX) 文件网络共享:nfs

2、-o options 主要用来描述设备或档案的挂接方式。

loop:用来把一个文件当成硬盘分区挂接上系统 
ro:采用只读方式挂接设备 
rw:采用读写方式挂接设备 
iocharset:指定访问文件系统所用字符集

3、device 要挂接(mount)的设备。
4、dir设备在系统上的挂接点(mount point)。

mount操作实例

挂接光盘镜像文件

1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

#cp /dev/cdrom /home/sunky/mydisk.iso 或 
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso

注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso

2、将文件和目录制作成光盘镜像文件,执行下面的命令。

#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir

注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

3、光盘镜像文件的挂接(mount)

#mkdir /mnt/vcdrom

注:建立一个目录用来作挂接点(mount point)

#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

注:使用/mnt/vcdrom就可以访问光盘镜像文件mydisk.iso里的所有文件了。

挂接移动硬盘

linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l或more /proc/partitions查看系统的硬盘和硬盘分区情况。

# fdisk -l

接好移动硬盘后,再用fdisk –l或more。/proc/partitions查看系统的硬盘和硬盘分区情况,应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1、 /dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区,我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。

#mkdir -p /mnt/usbhd1 
#mkdir -p /mnt/usbhd2

注:建立目录用来作挂接点(mount point)

#mount -t ntfs /dev/sdc1 /mnt/usbhd1 
#mount -t vfat /dev/sdc5 /mnt/usbhd2

注:对ntfs格式的磁盘分区应使用-t ntfs参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。

#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1 
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。

#mount /dev/sdc1 /mnt/usbhd1

挂接U盘

和USB接口的移动硬盘一样,对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或more /proc/partitions查看系统的硬盘和硬盘分区情况。

# fdisk -l

插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。

# fdisk -l

系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。

#mkdir -p /mnt/usb

注:建立一个目录用来作挂接点(mount point)

#mount -t vfat /dev/sdd1 /mnt/usb

注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。

#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb