【发布时间】:2020-06-24 14:34:16
【问题描述】:
我想使用 root 帐户重新挂载只读文件系统,使其变为可读写。
查看 Linux 手册页面,我注意到没有像 MS_RDWRITE 这样的标志,所以我的问题是,有没有人知道在线示例,该示例演示了使用 mount 和 remount 标志设置只读路径以允许读取和写入?
这将在 C++ 中为运行嵌入式 Linux 的设备完成。
/* Here's the declared function for Mount a filesystem. */
extern int mount (__const char *__special_file, __const char *__dir,
__const char *__fstype, unsigned long int __rwflag,
__const void *__data) __THROW;
【问题讨论】:
-
重新安装将涉及卸载 (
umount()) 和安装 (mount())。省略“只读”标志以读写模式挂载文件系统。 -
好吧,我真的更喜欢使用 MS_REMOUNT 参数调用 mount,例如:mount(NULL, "path_here", NULL, MS_REMOUNT, NULL);,但我不确定是什么最后一个参数应该是在指定 MS_REMOUNT 时。
-
"数据的含义取决于文件系统类型,完全由内核中的文件系统驱动控制。" ref:gnu.org/software/libc/manual/html_node/…
-
当我上次查看
mount(2)的手册页时(第 7 版 Unix——我已经很久没有担心它了),它有 3 个参数。它没有被 POSIX 标准化。 BSD 版本有 4 个参数(卸载操作是unmount(),而不是umount())。 SVR4mount(2)有一些可选参数——类似于 Linux 版本中的参数,但不同(标志是第 3 个)。标志的常量名称甚至没有一致的前缀(MS_vsMNT_)。它很快就变得非常系统特定。唯一确定的方法是找到正确的系统特定文档。 [...继续...] -
[…continuation…] 如果您正在处理特定制造商的设备,您必须知道他们的设备驱动程序期望什么。幸运的是,
data参数的空指针最多会告诉您是否需要找到一个非空值来传递(可能是errno == EINVAL)。在您知道自己想要什么之前,任何其他价值都是有风险的。