我试图显示Xmobar中根分区的使用情况(使用XMonad(,但不起作用!!没有任何详细或错误消息。我不知道问题是Slackware加载根分区的方式还是xmobar的工作方式。解释上下文:磁盘有三个分区:"swap", "/" and "/home"
/dev/sda1 is the /
/dev/sda2 is the swap
/dev/sda3 is the /home
在Slackware中,系统创建一个到"/dev/sda1"
的虚拟装载点,称其为"/dev/root"
,装载点到"/"
在Xmobar(.xmobarrc
文件(中,以下任何选项都不起作用:
- Run DiskU [ ( "/", "<size>" ) ] [] 20
- Run DiskU [ ( "root", "<size>" ) ] [] 20
- Run DiskU [ ( "/dev/root", "<size>" ) ] [] 20
- Run DiskU [ ( "sda1", "<size>" ) ] [] 20
- Run DiskU [ ( "/dev/sda1", "<size>" ) ] [] 20
并调用
- Run DiskU [ ( "/", "<size>" ), ("/home", "<size>") ] [] 20
其中"/home"
是"/dev/sda3"
分区,可以很好地获得有关"/home"
的信息
通过阅读Xmobar源代码,我看到可用分区的列表是从"/etc/mtab"
中读取的。在我的情况下,"/etc/mtab"
具有以下分区的取消列表:
/dev/root / ext4 rw,relatime 0 0
...
/dev/sda3 /home ext4 rw,relatime 0 0
但我不明白DiskU的功能。。。
欢迎任何想法来解决这个问题。。。
提前感谢!
使用包含的mount
表
/dev/sda1 / ext4 rw,relatime 0 0
# ...
/dev/sda3 /home ext4 rw,relatime 0 0
一个xmobar
配置沿着这些线路应该实际工作:
Config
{ -- ...
, template = "... %disku% ..."
-- ...
, commands =
[ -- ...
, Run DiskU
[ ( "/", "Root: <usedp> (<used>/<size>)")
, ( "/home", "Home: <usedp> (<used>/<size>)")
]
[] 20
-- ...
]
-- ...
}
解决方案:
Slackware在/etc/mtab
中自动将/dev/sda1
的挂载点设置为/dev/root
,但/dev/root
是一个虚拟设备,不存在于/dev
文件夹中。Xmobar试图访问设备/dev/root
,但没有找到它。
最简单的解决方案是在系统启动时创建一个到/dev/root
的符号链接。在这种情况下,在Slackware中,编辑文件/etc/rc.d/rc.local
并添加:
ln -s /dev/sda1 /dev/root
问题解决了!