• 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系统,挂载的目录就可以正常使用啦!

    到此,有关开机自动挂载磁盘的所有内容已完,若还有其它问题可以在下方留言!

  • 相关阅读:
    Python面向对象:继承和多态
    Python面向对象:类、实例与访问限制
    Python正则表达式匹配猫眼电影HTML信息
    Git:从github上克隆、修改和更新项目
    Python:闭包
    JPA-映射-(@ManyToMany)双向多对多
    rownum详解
    java之yield(),sleep(),wait()区别详解
    springmvc<一>一种资源返回多种形式【ContentNegotiatingViewResolver】
    @RequestParam,@PathVariable,@ResponseBody,@RequestBody,@ModelAttribute学习
  • 原文地址:https://www.cnblogs.com/ImagineMiracle-wxn/p/linux_fstab_config.html
Copyright © 2020-2023  润新知