【问题标题】:Hiding a mounted device in nautilus在 nautilus 中隐藏已安装的设备
【发布时间】:2012-06-18 23:43:49
【问题描述】:

我正在运行 Ubuntu Precise。 在我的 /etc/init.d 中,我有一个 bash 脚本,它在启动时执行以下操作:

  1. 循环在 NTFS 驱动器上安装映像。该图像包含一个 ext2 文件系统,其目录名为 home

  2. 然后它使用 --rbind 选项进行挂载,将映像文件中的 home 挂载到 /home

目前运行良好,尽管在 /home 中打开文件并不能阻止循环挂载被卸载。

不幸的是,Nautilus 在可移动驱动器列表中显示循环安装,并带有一个图标,允许用户卸载循环安装。卸载挂载 /home 的驱动器不利于系统运行良好。

如何防止 Nautilus 显示此循环安装设备?

man udisk(7) 说“udev 数据库中的有影响的设备属性”之一是:

UDISKS_PRESENTATION_HIDE

如果设置为 1,这是对演示级软件的提示,即不应向用户显示设备。

我假设在 /dev/loop 上设置此属性会告诉 Nautilus 不要显示设备。

如何在 bash 脚本中设置 UDISKS_PRESENTATION_HIDE?

【问题讨论】:

标签: linux bash nautilus


【解决方案1】:

现在应该更新答案(至少对于 Ubuntu 12.10)。 您不必再写这个了(正如最初在另一个答案中所写的那样):

KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1"
KERNEL=="sdb2", ENV{UDISKS_PRESENTATION_HIDE}="1"

相反,你应该这样写:

KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"
KERNEL=="sdb2", ENV{UDISKS_IGNORE}="1"

其余的都是一样的:)

【讨论】:

  • Fedora 19 也是如此。我尝试了 UUID,但由于某种原因它不起作用?
【解决方案2】:

你必须在/etc/udev/rules.d/99-hide-disks.rules上写下以下内容:

KERNEL=="sdxy", ENV{UDISKS_PRESENTATION_HIDE}="1"

其中sdxy/dev 内的分区。您可以通过运行mount 轻松找到分区(但我想您已经知道了)。

【讨论】:

    【解决方案3】:

    另一种方法是将设备安装在 /media 以外的其他位置。我选择了 /run,它允许 /mnt 用于临时挂载。

    【讨论】:

      【解决方案4】:

      根据archlinux wiki上的udisk页面并总结其他答案:
      添加一个名为/etc/udev/rules.d/99-hide-disks.rules的文件

      对于 udisk:

      # hide the device sda1
      KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1"
      

      对于 udisk2:

      # hide the device sda1
      KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"
      
      # hide the device sda2 using UUID
      # use: blkid /dev/sda2    to get the UUID of /dev/sda2
      ENV{ID_FS_UUID}=="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX", ENV{UDISKS_IGNORE}="1"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-19
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 2011-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多