如何自动将休眠的 NTFS 挂载为只读?

如何自动将休眠的 NTFS 挂载为只读?

有没有办法这样设置 Ubuntu:

如果我无法以模式挂载文件系统,则在同一目录中rw以模式挂载它。ro

结果,我不应该遇到系统无法挂载文件系统的通知(跳过或手动修复通知)。因此,当我启动系统时,我应该以 rw 或 ro 模式挂载我的 ntfs 分区,具体取决于 Windows 是否处于休眠状态。

fstab 条目:

#/dev/sda7
UUID=D0B43178B43161E0 /media/Dane           ntfs    defaults,errors=remount-ro 0        1

“mount -a”结果:

The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sda7': 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.

我有 ubuntu 13.10 和 win8。我使用 uefi 安全启动。

答案1

首先,您需要使用以下命令找到设备 ID:

sudo fdisk -l

在系统下找到格式化为 NTFS 的设备,并记住设备 ID(应该看起来像 /dev/sda2)。然后创建挂载目录并挂载它。

mkdir Windows
sudo mount -o ro /dev/sdaX Windows

(将 X 替换为您的设备 ID)

答案2

我找到了一种方法,可以在发生任何错误时以只读模式挂载休眠的 Windows 分区

我希望它也能对你有用。下面我将描述如何操作。

  • /etc/rc.local在任何编辑器中以 root 权限打开文件。

    sudo gedit /etc/rc.local
    
  • 最后添加以下几行:

    sudo mount /dev/sda7 /media/Dane
    if [ $? -eq 14 ]
    then
      sudo mount -o ro /dev/sda7 /media/Dane
    fi
    exit 0
    

    如果exit 0已经写入,则删除重复项。确保这/etc/sda7是您在发生错误时要挂载的 Windows 分区,并且已经有一个目录,名为 已Dane在 中创建/media。如果没有,则进行/dev/sdaX相应更改并创建目录。

  • 现在使用以下命令进行更新:

    sudo update-rc.d -f /etc/rc.local
    

    我不确定是否需要这个命令,但只需执行它给出的每条消息即可。

  • 现在,当 Windows 处于休眠状态时,最终重新启动系统。

稍微描述一下:

文件中写入的命令/etc/rc.local实际上在系统启动之前和之后执行,因此充当启动。脚本中的第一个命令将尝试挂载分区并获取其返回的错误代码。因此,当发生任何错误时,$? 为 14。当分区已挂载并尝试再次挂载时,$? 为 16...

如果出现问题请回复。我会等待您的回复。

答案3

这是我的解决方案,但不是最好的。

我只是将第二个条目添加到 fstab 中,并使用 nobootwait 选项。如果第一个条目不起作用,则第二个条目起作用,系统不会报告任何消息。如果第一个条目起作用,则第二个条目由于第一个条目而不起作用。我们将看看它是否能正常工作 :D

#/dev/sda7
UUID=D0B43178B43161E0 /media/Dane           ntfs    defaults,nobootwait,errors=remount-ro 0        1
UUID=D0B43178B43161E0 /media/Dane           ntfs   suid,dev,exec,auto,nouser,async,nobootwait,ro    0       2

相关内容