我的脚被啪的一声弄湿了。我已经安装了 vlc 并想尝试使用它。我的所有媒体都安装在/storeNFS 挂载下。快照不允许访问该目录。
谷歌搜索后,我终于明白,我可以在访问文件/home/peter的:home接口和/media为:removable-media接口。
不过我却喜欢/store和不希望改变这种状况是/media/store或/home/peter/store或其他任何东西比/store。
有没有办法让 snap 允许我的 snap(或者可能只是 vlc)访问/store,所以 snap 符合我的命名约定,或者我是否被迫转换为 snap 的首选项?
这似乎非常不灵活,我希望我错过了一些东西。
Pet*_*rch 31
令我惊讶的是,它看起来真的/home是硬编码的。
mount-support.c包含:
const struct sc_mount mounts[] = {
{"/dev"}, // because it contains devices on host OS
{"/etc"}, // because that's where /etc/resolv.conf lives, perhaps a bad idea
{"/home"}, // to support /home/*/snap and home interface
...
Run Code Online (Sandbox Code Playgroud)
哇。这让我很惊讶。但是你现在有了。
编辑:另请参阅Launchpad 问题 1643706
Kat*_*dam 10
所以,有两件事。
首先:Linux 和 Unix 有 Ubuntu 和 Snap 遵循的文件系统层次结构标准。 https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
第二:如果选择偏离自 1979 年以来实施的全球标准,那完全没问题,但随后绑定挂载您的非标准目录,以便 snap 可以找到它。
mount --bind /nonstandard_mountpoint /media/$USER/directory
Run Code Online (Sandbox Code Playgroud)
或者
mount --bind /nonstandard_mountpoint /home/$USER/directory
Run Code Online (Sandbox Code Playgroud)
那么您可以继续使用非标准安装点,同时所有快照都可以找到您的 nonstandard_mountpoint 数据。
甚至可以通过将其添加到 FSTab 来使此安装永久化
sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
追加行
/source /destination none defaults,bind 0 0
Run Code Online (Sandbox Code Playgroud)
保存并退出
CTRL+X y
Run Code Online (Sandbox Code Playgroud)
这是一个示例: 存储在 /srv/dsmusic 的音乐文件
首先在 /home/$USER/Music/dsmusic 创建一个目录
mkdir /home/$USER/Music/dsmusic
Run Code Online (Sandbox Code Playgroud)
然后将 mount /srv/ds music 绑定到该目录
sudo mount --bind /srv/dsmusic /home/$USER/Music/dsmusic
Run Code Online (Sandbox Code Playgroud)
然后您所有的快照音乐程序都会自动神奇地找到音乐文件。
继续音乐示例:
sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
追加行
/srv/dsmusic /home/username/Music/dsmusic none defaults,bind 0 0
Run Code Online (Sandbox Code Playgroud)
** 卸载 **
如果您想卸载,可以像常规挂载点一样使用常规 umount 命令
sudo umount /home/$USER/Music/dsmusic
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅: https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount
系统D
** 请注意,在 SystemD 中有一种更现代的方法可以代替使用 fstab 来执行此操作。
要在 SystemD 中创建绑定挂载,您需要创建一个 .mount 文件,其中非标准挂载点的路径由 -(减号)而不是正斜杠(/)分隔
sudo systemctl edit --full --force path-nonstandard.mount
Run Code Online (Sandbox Code Playgroud)
通过以下内容并编辑安装点
[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
[Mount]
What=/some/old/dir
Where=/the/new/dir
Type=none
Options=bind
[Install]
WantedBy=local-fs.target
Run Code Online (Sandbox Code Playgroud)
如果 nano 是默认编辑器 CTRL+X y (对于 nano) :wq (对于 vim)
启用systemD文件
sudo systemctl enable path-nonstandard.mount
Run Code Online (Sandbox Code Playgroud)
然后重新加载SystemD守护进程
sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
然后开始你的安装
sudo systemctl start path-nonstandard.mount
Run Code Online (Sandbox Code Playgroud)
如果需要再次修改只需
sudo systemctl edit --full path-nonstandard.mount
Run Code Online (Sandbox Code Playgroud)
示例: 再次使用音乐示例:
sudo systemctl edit --full --force srv-dsmusic.mount
Run Code Online (Sandbox Code Playgroud)
这将打开一个空白编辑器,并在正确的系统文件夹中创建一个新的 .mount 文件,向其中添加以下行
对于同一硬件上的本地挂载点:
[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
[Mount]
What=/srv/dsmusic
Where=/home/username/Music/dsmusic
Type=none
Options=bind
[Install]
WantedBy=local-fs.target
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的非标准挂载点是 NAS 或其他远程设备,您将需要使用 remote-fs.target 而不是 local-fs.target
用于不同硬件(例如 NAS)上的远程挂载点
[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=remote-fs.target umount.target
[Mount]
What=/srv/dsmusic
Where=/home/username/Music/dsmusic
Type=none
Options=bind
[Install]
WantedBy=remote-fs.target
Run Code Online (Sandbox Code Playgroud)
然后退出编辑器 CTRL+X y (对于 nano) :wq (对于 vim)
启用systemD文件
sudo systemctl enable srv-dsmusic.mount
Run Code Online (Sandbox Code Playgroud)
然后重新加载systemD守护进程
sudo systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)
然后启动你的新挂载点
sudo systemctl start srv-dsmusic.mount
Run Code Online (Sandbox Code Playgroud)
卸载bindmount
sudo systemctl stop srv-dsmusic.mount
Run Code Online (Sandbox Code Playgroud)
您现在可以在 /srv/dsmusic 中找到数据的镜像,并且 snap 将能够在 /home/$USER/Music/dsmusic 中找到相同的数据
有关更多信息,请参阅:https://utcc.utoronto.ca/~cks/space/blog/linux/SystemdBindMountUnits 和 https://www.freedesktop.org/software/systemd/man/systemd.mount.html
只需运行应用程序,就好像它不是一个快照 \o/
例如铬
Chromium Unsnapped/snap/chromium/current/usr/lib/chromium-browser/chrome --user-data-dir=~/ChrUnsnapped --class="ChrUnsnapped" %U
<rant>
我对 snap 感到非常沮丧,以至于我无法像 15 年来那样配置我的个人 /stf 目录。谢天谢地,这个 hack 似乎我将不得不为每个 freeken snap 应用程序执行此操作:'(。
是的,我知道这很糟糕,但是在有白名单配置之前,这似乎是让事情恢复正常的唯一途径。我真的不想把我的东西放在 /home、/mnt、/media 请不要讨厌你的用户。
</rant>
| 归档时间: |
|
| 查看次数: |
19301 次 |
| 最近记录: |