解决KDE磁盘分区开机无法自动挂载

解决KDE磁盘分区开机无法自动挂载

现象

系统环境为Manjaro+KDE,此前在系统设置中开启登入时和插入时自动挂载磁盘设备,以便使用。

某次滚动更新后除系统分区外的其他分区无法自动挂载,dolphin中可以看到分区为未挂载状态,手动挂载时会弹出polkit权限认证窗口要求输入密码,来源为udisks2。

使用journalctl --boot --unit udisks2.service查看日志,没有报错,但在手动挂载时有日志记录。

分析与尝试

linux下要实现磁盘自动挂载,有如下几种方式:

  1. 编辑/etc/fstab
  2. systemd auto mount
  3. udisks2

fstab

Fstab - ArchWiki

查看当前fstab,其中只包含系统主分区和tmpfs,因此只有主分区可以自动挂载。对前述问题,一种解决方法是将其他分区也写入fstab。但如果fstab配置错误,会存在无法启动的风险; 且此前在不使用fstab时能够实现自动挂载,因此不考虑修改fstab。

systemd auto mount

详见文档,但本次不向该方案探索,原因见后。

udisks2

考虑到是在滚动更新后出现的问题,且手动挂载时权限弹窗来自udisks2,可推断出KDE系统设置中的自动挂载选项使用的就是udisks2。

以下部分为失败尝试记录,若需节省时间请跳转解决方案 根据该issue,可能存在问题的是其2.10版本。使用downgrade工具将其降级为2.9.4版本,手动使用udisksctl mount -b /dev/sda1时报错error looking up object for device /dev/sda1。使用journalctl查看日志,报错无法找到liblockdev.so.2,推断是依赖没有跟随降级。再次使用downgrade将libblockdev降级到2.x.x版本,udisks2可以正常使用,但前述问题没有解决。

当前尝试失败,因此问题与udisks2版本无关。

恢复环境:将其与libblockdev都升级回最新版本并取消降级时在/etc/pacman.conf中追加的ignorePkg项。

解决方案:修改polkit规则

重新回顾现象,推测可能在开机执行udisks2挂载时缺少权限而失败。

解决方案来源: Superuser | Mounting partitions without a password using Udisks2

/etc/polkit-1/rules.d/目录下增加一条polkit规则文件10-udisks2.rules,以允许udisks2挂载时无需申请权限:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// See the polkit(8) man page for more information
// about configuring polkit.

// Allow udisks2 to mount devices without authentication
// for users in the "wheel" group.
polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
         action.id == "org.freedesktop.udisks2.filesystem-mount") &&
        subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

保存后重启,各分区均已自动挂载,问题解决。

0%