Slackware 15下Xmobar的DiskU无法获取根分区信息求助
解决Slackware下Xmobar DiskU无法读取根分区的问题
问题概述
在Slackware系统中,Xmobar的DiskU模块可以正常读取/home分区的使用信息,但无法获取根分区(挂载为/,对应/dev/root虚拟挂载点,实际为/dev/sda1)的信息,尝试多种路径配置均无效,且无明显错误提示。系统/etc/mtab中存在根分区条目:/dev/root / ext4 rw,relatime 0 0。
解决思路
1. 启用Xmobar调试日志排查细节
启动Xmobar时添加 verbose 参数,生成调试日志以定位隐性问题:
xmobar -v 2>&1 > ~/.xmobar.log
查看日志中与DiskU相关的输出,确认是否存在根分区读取失败的具体原因(如设备识别错误、权限限制等)。
2. 升级Xmobar版本
旧版本DiskU模块可能对Slackware的/dev/root虚拟挂载点存在兼容性问题,升级到最新稳定版:
- 通过SlackBuilds仓库编译安装最新Xmobar
- 或使用Haskell的
cabal工具更新:
cabal update && cabal install xmobar
3. 用自定义脚本替代DiskU模块
如果DiskU模块兼容性问题无法解决,编写脚本获取根分区信息,通过Xmobar的Com模块调用:
- 创建脚本
~/.config/xmobar/root_disk.sh并赋予执行权限:
#!/bin/bash # 获取根分区使用率(带百分比符号) df -h / | awk 'NR==2 {print $5}' # 若需要显示可用空间,替换为:df -h / | awk 'NR==2 {print $4 " free"}'
chmod +x ~/.config/xmobar/root_disk.sh
- 在
.xmobarrc中添加Com模块配置:
- Run Com "~/.config/xmobar/root_disk.sh" [] "root_disk" 20
- 在
template字段中加入%root_disk%,用于展示根分区信息。
4. 验证磁盘设备真实路径
确认/dev/root是否为指向/dev/sda1的符号链接:
ls -l /dev/root
如果是符号链接,尝试在DiskU中直接使用真实设备路径(结合新版本Xmobar可能生效):
- Run DiskU [ ( "/dev/sda1", "<size>" ) ] [] 20
5. 检查/etc/mtab的权限与内容
确保Xmobar运行用户能读取/etc/mtab:
ls -l /etc/mtab
正常权限应为-rw-r--r--,若权限异常,执行:
sudo chmod 644 /etc/mtab
内容的提问来源于stack exchange,提问作者Jiuney Pachevitch
相关产品推荐
相关产品推荐

