Ubuntu开机自动挂载磁盘,以及挂载的磁盘为只读模式的解决方案
1、挂载命令(mount)
首先简单的介绍一下Linux
的挂载命令mount
,也是在正常使用情况下的挂载磁盘的命令,其参数也有很多,这里简单的介绍一下。
平常使用到的命令格式:
mount [-t vfstype] [-o options] device dir
[e.g.]: mount -t ntfs -o remount,rw /dev/sdb1 /media/imaginemiracle/Disk
参数简介:
<1> [-t typedef]:用来指定文件系统的类型,若不指定则由mount命令自动选择正确的类型。
常见类型: (格式:[文件系统类型 : 命令参数])
[光盘或光盘镜像 : is09660];
[DOS fat16 : msdos];
[Windows 9x fat32 : vfat];
[Windows NT ntfs : ntfs];
[Mount Windows Samba : smbfs];
[UNIX(LINUX) nfs : nfs]。
<2> [-o options]:主要指定挂载方式。
常见参数:
[loop]: 把目标作为硬盘分区挂载到系统;
[ro]: 挂载的目标为只读模式;
[rw]: 挂载的目标为读写模式;
[iocharset]: 指定访问文件系统所用的字符集。
<3> <device>: 要挂载的设备(挂载的设备)。
<4> <dir>: 挂载设备的挂载点(一个目录文件)。
2、开机挂载磁盘设置
使用fdisk
命令查看系统当前存在的磁盘:
imaginemiracle@:~$ sudo fdisk -l
......
......
......
Disk /dev/sdb: 931.53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDC WD10SPCX-24H
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 75AEEA26-7630-4F41-BB5F-7B6FD7213F00
Device Start End Sectors Size Type
/dev/sdb1 2048 614399999 614397952 293G Microsoft basic data
/dev/sdb2 614402048 1953521663 1339119616 638.6G Microsoft basic data
Disk /dev/loop8: 218.102 MiB, 229629952 bytes, 448496 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop9: 62.9 MiB, 65105920 bytes, 127160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
找到需要挂载的设备,这里用我自己的例子来说明,这里我需要开机挂载/dev/sdb1
和/dev/sdb2
。需要在/etc/fstab
中添加开机挂载的设备。
2.1、/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 system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p7 during installation
UUID=3a5fa27f-338c-4c53-b435-87efe35ce710 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=5406-F734 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
打开/etc/fstab
文件可以看到其中有介绍添加挂载设备的格式:(具体参数介绍可参照Ubuntu Manpage:fstab)
<file system> <mount point> <type> <options> <dump> <pass>
<1> <file system>: 根据`fstab`的默认配置,这里只需要填写磁盘的`UUID`即可;(可以通过`blkid`命令查看磁盘的`UUID`)
<2> <mount point>: 磁盘的挂载点;(`注:` 必须是绝对路径,且文件事先存在,在设置前创建好即可)
<3> <type>: 文件系统类型,常用的有`ext4`、`ntfs`、`fat`、`vfat`等,根据实际情况设置;(可以通过`blkid`命令查看磁盘的`TYPE`)
<4> <options>:
default: 使用默认选项: rw, suid, dev, exec, auto, nouser, async
noauto: 当设置`mount -a`时(例如:在系统boot的时候),noauto将不会挂载
user: 允许用户挂载
owner: 允许设备所有者挂载
comment or x-: 供`fstab`维护程序使用
nofail: 不报告该设备的错误(如果该设备不存在)
<5> <dump>: 该字段用于检查这些文件系统哪个需要转储。若该字段值为`0`,返回并转储将那些那些不需要转储的文件系统
<6> <pass>: 使用此字段来设置`fsck`程序在重新引导时扫描文件系统顺序。根文件系统`/`该字段设置为`1`,其它的文件系统逐渐递增。若该字段不存在或其值为`0`,则`fsck`不做检查。
2.2、查看UUID和TYPE
imaginemiracle:~$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="Disk" UUID="900A49470A492C12" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="ead7709a-28c9-4c8c-9b95-b29f1654fc13"
imaginemiracle:~$ sudo blkid /dev/sdb2
/dev/sdb2: LABEL="Disk" UUID="0086A1C386A1BA14" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1a81d012-502b-4516-abd5-2ee01bb631fc"
2.3、配置/etc/fstab
将需要挂载的设备相应信息添加到/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 system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p7 during installation
UUID=3a5fa27f-338c-4c53-b435-87efe35ce710 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=5406-F734 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
UUID=900A49470A492C12 /media/imaginemiracle/Disk_D ntfs defaults 0 2
UUID=0086A1C386A1BA14 /media/imaginemiracle/Disk_E ntfs defaults 0 2
2.4、重启系统
在设置完/etc/fstab
且保存退出后,重启操作系统,就可以看到在设置的挂载点下已经自动挂载了设备。
3、自动挂载设备为只读模式(Read-Only)的解决方案
在挂载点(挂载的目录下),对其中的文件做修改操作,或是新建文件/目录都会报错,错误信息如下:
Error mounting /dev/sdb1 at /media/imaginemiracle/Disk-D: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=007
Failed to mount '/dev/sdb1': Operation not permitted
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.
由于笔者安装是的windows10+Ubuntu20.04
双系统,而两个分区是windows
下的,可以看得出来windows
的磁盘似乎出了些问题,这里尝试使用ntfsfix
修复。
若没有修复工具可以使用以下命令进行安装:
apt-get install ntfs-3g
对磁盘进行修复:(注: 因为是在自己已经修复之后写的博客,所以下面的修复工具未检测出问题,大家仅参考ntfsfix的命令使用即可
)
#对`/dev/sdb1`开始修复
imaginemiracle:imaginemiracle$ sudo ntfsfix /dev/sdb1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb1 was processed successfully.
#对’/dev/sdb2‘开始修复
imaginemiracle:imaginemiracle$ sudo ntfsfix /dev/sdb2
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sdb2 was processed successfully.
若这一步结束,该问题还没有解决,则重启系统进入windows
,将电源选项中的快速启动关闭即可。
windows
操作流程: 进入控制面板 > 电源管理 > 选择关闭盖子的功能 > 更改不能更改的选项 > 取消快速启动前的勾勾 > 保存。
接下来就是重启,进入linux
系统,挂载的目录就可以正常使用啦!
到此,有关开机自动挂载磁盘的所有内容已完,若还有其它问题可以在下方留言!