现代 Linux 是不是太复杂了? - 博客 - 伯乐在线



现代 Linux 是不是太复杂了? - 博客 - 伯乐在线

多年来,我习惯于在我的个人机器上运行 Debian sid (不稳定版)。笔记本、工作站,有时甚至我的个人服务器几年前也运行 sid。顾名思义,Sid 是不稳定的,有时会出现问题。但这没什么,因为无论是什么问题,我总能发现并很快修复它们。这同时也是我为最新最酷系统所付出的代价。

过去的几个月,我解决了 Jessie 中一个很小但却恼人的问题:Nautilus、Thunar 以及 digikam(是的,这代表Gnome,XFCE和KDE)均不能挂载我插入的USB设备。仅提示"没有执行权限。"当然,我仍然可以使用 mount -o uid=1000 /dev/sdc1 /mnt指令挂载,但这样做很不方便。

为解决该问题,我特地将一个 jessie 系统切换至 systemd。确实有效,但我不知道原因。我还没有时间去更新我的工作站,坦白地说,我对此很担忧。

问题的关键在于:我甚至不知道要从何处开始着手。我在 google 上搜索了该问题,发现所有答案均指向 polkit,或者 dbus,或者 systemd-shim,或者 cgmanager,或者 lightdm,或者 XFCE,或者… 我找到该问题的一份具体 bug 报告 ― Debian #760281,但标注为已修复,而我描述自己仍旧遇到的问题的相关评论,却无人问津。

没有任何地方备注 Digikam 挂载问题应该查看 polkit ,更别提 cgmanager。甚至当我找到那些安装包时,却发现其文档患有不良 Unix 文档诟病: 谈论一些细枝末节的观点,而没有将其放到上下文中。下面是 cgmanager 帮助文档中令人困惑的内容提要。

cgmanager 是管理 cgroup 的守护进程。程序和用户可以根据自己的特权发出管理 cgroups 的 D-Bus 请求。为确保用户在操纵 cgroups 时不超出指定权限,cgroup 管理器只接受来自自身进程标识和用户命名空间内任务的常规 D-Bus 请求。对于私有命名空间的任务(例如容器),可使用 SCM 增强型 D-Bus 调用。不建议主动使用这些调用。相反,建议每个容器都运行 cgproxy, 它将普通 D-Bus 请求作为增强型 SCM D-Bus 请求转发至主机 cgmanager 。

这对我来说就像 Vogon 诗歌一样难以理解。cgmanager 如何启动的?" SCM 增强型"是什么意思?我甚至不知道 cgroup 是什么。

这种情况持续了几个月,让我很困惑:只有我是这样吗?(Google 结果表明并非如此,有很多发行版都存在这种具体问题,除此之外还存在一些非常可怕的建议。)如果不是,为何如此基础和明显的情况持续了这么久?我们是不是创造了一些难以理解和调试的复杂事物。

在我看来,这与 systemd 问题密切相关。过去我常常会说 Linux 是干净的、条理分明的、组织合理的、安排有序的。但我现在真的不能这样说了。用户和群组实际上并没有绝对的权限,因为系统中有类似 polkit 的程序在运行。(是的,顺便说一下,我是 plugdev 的成员之一。)错误信息是无用的(为什么我没有权限?)并且找不到日志信息。通常,一个人可以指定谁能通过 /etc/fstab 行信息或者某些sudo规则挂载设备。当然,你必须知道去哪里查找,这貌似很简单,只要将这两个地方组合起来,但是我甚至花费了大量时间都想弄不明白应该去哪里查找。

systemd 也许能够解决其中部分问题,也许会带来一些新的问题。但在我看来,问题不仅仅是具体的桌面环境问题,而是脱离对实际含义的思考去添加特性的理念问题。

当然,在我写这篇文章时,我的笔记本坚持要求用 root 密码来执行挂起操作,并且 systemd 仍在运行中,于是另一个梦魇又诞生了……


Read full article from 现代 Linux 是不是太复杂了? - 博客 - 伯乐在线


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts