下面的命令,它用于在用户的主目录中生成可执行文件
mount -i -o remount,exec /home/chronos/user
- 我知道
-o
争论是为了选择,在这种情况下重新安装和做可执行文件在用户主目录。
来自安装手册:
-i, --internal-only
不调用 /sbin/mount.filesystem 帮助程序,即使它存在。
为什么不调用 sbin/mount 文件系统?
请举例。
答案1
一些文件系统(通常是那些用保险丝)有特殊的挂载程序/sbin
,例如 NTFS FUSE 驱动程序 ntfs-3g 有其自己的mount.ntfs-3g
。如果不使用该-i
选项,该程序将由命令调用mount
,而不是调用挂载系统调用挂载文件系统时。
所以对于 NTFS 你可以这样做
$ sudo mount /dev/vdb2 /mnt/test -i
强制内核 NTFS 驱动程序
$ mount | grep vdb2
/dev/vdb2 on /mnt/test type ntfs (ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=utf8,errors=continue,mft_zone_multiplier=1
看到这里的类型是ntfs
,文件系统被挂载为只读(ro
),因为内核驱动程序不支持读写。
与默认情况相比,没有-i
哪个将使用mount.ntfs-3g
哪个使用FUSE驱动程序
$ sudo mount /dev/vdb2 /mnt/test
$ mount | grep vdb2
/dev/vdb2 on /mnt/test type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
现在类型是fuseblk
(因为 NTFS-3G 是 FUSE 驱动程序)并且文件系统以读写方式挂载。
您还可以使用LIBMOUNT_DEBUG=all
环境变量来获取mount
.
如果没有-i
它调用/sbin/mount.ntfs
助手:
2124: libmount: CXT: [0x5584880d2a50]: mount: do mount
2124: libmount: CXT: [0x5584880d2a50]: mount: executing helper /sbin/mount.ntfs
2124: libmount: CXT: [0x5584880d2a50]: mount: generate helper mount options
2125: libmount: CXT: [0x5584880d2a50]: argv[0] = "/sbin/mount.ntfs"
2125: libmount: CXT: [0x5584880d2a50]: argv[1] = "/dev/vdb2"
2125: libmount: CXT: [0x5584880d2a50]: argv[2] = "/mnt/test"
2125: libmount: CXT: [0x5584880d2a50]: argv[3] = "-o"
2125: libmount: CXT: [0x5584880d2a50]: argv[4] = "rw"
2124: libmount: CXT: [0x5584880d2a50]: /sbin/mount.ntfs executed [status=0, rc=0]
它只-i
调用 mount 系统调用:
2119: libmount: CXT: [0x559aa1a8ba50]: mount: do mount
2119: libmount: CXT: [0x559aa1a8ba50]: mount(2) [source=/dev/vdb2, target=/mnt/test, type=ntfs, mountflags=0x00000000, mountdata=<none>]