Gobo Linux 安装与探索

0x00 

        写这篇文章的起因是觉的这个发行版有点意思,而且网络上的信息也比较少,不至于烂大街,所以写出来让感兴趣的人了解一下。本文主要介绍 GoboLinux 的安装,以及它的包管理器和独特的文件系统层级。题目起‘探索’的原因是我懒得去看文档(笑),所以是‘探索’到什么就写什么,比较随意,还请见谅。

0x01 GoboLinux 简介

        今天无意间发现一个比较奇特的 Linux 发行版,奇特之处在于它的目录结构没有遵循 FHS ,而是按照自己的设计来的,因此它的根目录下有 6 个目录,分别是下面这些:

  • /Programs/ – 包含安装的程序。每个程序各有其文件夹,每个文件夹下包含一个或多个版本的子文件夹,亦可能有配置子文件夹。例如:/Programs/Bash/3.0/bin/bash 与/Programs/Xorg-Server/Settings/X11/xorg.conf.

  • /Users/ – 包含各个用户的主目录。如账号为”harley” 的用户会有一个主目录 “/Users/harley”。

  • /System/ – 包含重要的系统文件。大部分是系统应用程序(如,/System/Settings/passwd)与GoboLinux 脚本程序(例如, /System/Links).

  • /Files/ – 包含程序使用的结构化数据,它们被程序调用但不是程序本身的组成部分。这些文件通常为单独的实体,如字体,解码器,插件。

  • /Mount/ – 本地或远程文件系统的挂载点。常见的子目录有CD-ROM,软盘,Zip盘。

  • /Depot/ – 用户文件存储。
  • (引用自维基百科

0x02 GoboLinux 安装

        于是在好奇心的驱使下下了镜像在虚拟机里尝试一下。开机后选择语言和键盘布局后就到欢迎界面了,看了一下根目录,果然很清爽:

        根据欢迎提示,可以选择图形界面安装也可以选择命令行安装,安装之前要先分好区。

        虽然我用的是 Gentoo 和 Arch,但我还是建议用使用图形界面安装,因为我在分区的时候输了 /dev 后狂按 Tab 键也没东西出来,才想起来根本没有 /dev 目录……

        好吧,老老实实 startx ,进去后先分区,点开 Menu –> System Tools –> GParted ,根据个人喜好分区。我这里图方便就直接分一个根分区。

        分好区后,点 Menu –> System Tools –> Install GoboLinux 就进入安装程序了,首先又是一个欢迎界面,接下来就是一些简单的系统配置,磁盘分配,引导,键盘,时区,用户密码,软件安装,这里就不赘述了,软件几分钟就装好了,大概用了 5GB 的空间。

0x03 GoboLinux 软件包结构及包管理器

        装好后关机拿掉镜像,再开机,就进系统了。讲道理虽然一直用 Linux 做主系统好几年了,但是看到这个目录结构还是有点不知所措。

        那就先看看包管理器吧。输一条命令,如果对应的可执行文件不存在,会提示你要安装。安装软件软件有两种方式,一种是普遍使用的二进制包安装,如果网速快或者魔法上网的话很快就好(毕竟墙内没镜像); 另一种是类似 FreeBSD Ports  的源码编译安装,如果处理器性能不好就不建议使用。还需要注意的是两种包管理器的所有包名开头都要大写。

        软件安装在 /Programs 下,/Programs 目录下的一个目录就是一个软件,包括二进制可执行文件,库文件,手册,配置文件等。这种结构使得软件的相关文件清晰明了,方便管理。而且还有一个 Current 的软链接,看样子应该是可以像 Gentoo 那样多版本并存。

0x04 GoboHide 

不过在环境变量里面,仍然可以看到传统的 /usr/bin 这种路径存在,于是就试着 cd 了一下,确实可以。于是看了一下 Gobo 的 Wiki  The GoboLinux Filesystem Hierarchy  发现是用了一个名为 GoboHide 的技术。

        GoboHide 通过在内核中建立一个列表,在内核调用 readdir() 方法时,检查读取结果中的 inode 是否存在于列表中,如果存在就不会传到缓冲区,那么也就无法显示出来,从而达到隐藏的效果。

要想取消对指定目录的隐藏,只需要执行 gobohide -u 加目录名即可; 再次隐藏用 -h 参数,列出所有隐藏目录加 -l 参数。

# gobohide -u somedir
# gobohide -h somedir
# gobohide -l

        ZFSonLinux 也用了这种手法去隐藏 ZFS 快照目录,其快照目录 .zfs 是隐藏不可见且未挂载的,但是通过 cd .zfs 可以让它自动挂载,并进入其中。以前很是好奇是怎么做到的,今天终于知道了原理。

0x05 

        体验一趟下来,看到的是一个用着 Linux 内核,FreeBSD Ports 包管理器,和浓厚 Darwin 风格目录层级的系统。这种大改的操作比较少见,简化了系统层级,使其更便于管理,希望它能在 Linux 发行版同质化严重的今天继续发展下去吧。