腾讯云

试玩 Tribblix:源自 Solaris 的 x86-64 操作系统

Tribblix很久以前,我曾是一名 Solaris 管理员。那个操作系统在 Oracle 手中几近消亡,但一批衍生版本的社区仍在延续。其中之一便是 Tribblix

Tribblix 是一个衍生自 OpenSolaris、OpenIndianaillumos 的操作系统发行版,兼具复古风格与现代组件。基础内核和命令来自 illumos,其余一切都从零重建。

Tribblix 是一个传统系统。软件以 SVR4 包形式分发,相比笨重的桌面环境更偏好轻量窗口管理器,主要的桌面选项是 Xfce,同时也提供 MATEEnlightenment,以及其他许多选择。这个系统灵活、快速,对用过 Solaris 的人来说很熟悉,同时在其坚实的基础之上提供现代软件。

Tribblix 并不只是另一个 illumos 发行版的衍生或重打包。它是一个完全独立的发行版,虽然共享 ZFS、zones、DTrace、SMF 等关键 illumos 技术,但基本上是从零构建的,拥有自己的构建与打包系统。

我会非常努力地避免开 The Trouble With Tribblix 这类玩笑……

所以,如果考虑 x86 的类 Unix 系统,你的选择有:

  • Linux,有众多发行版
  • 各种 BSD(Free、Open 和 Net)
  • 一些仍在苟延残喘的专有系统
  • Minix,一款至今仍可下载运行的教学操作系统
  • 基于 Solaris 的发行版

看看其他项目是怎么做的总是很有意思,那就来跑一跑吧。我用的是 0m40(版本 0,里程碑 40)。

我在家里的 Proxmox 上开了一台 4 核/4GB 的 VPS。我不会重复 Tribblix 的 install instructions,安装说明相当简单直接。你从 CD 启动,登录,su 到 root,查出磁盘名,然后运行 live_install.sh 脚本。

我只装了最基础的组件……结果这也许是个错误。这点稍后再说。

首次启动

以“jack”(默认用户)登录后,ps 显示如下:

jack@tribblix:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 0 0 7 11:52:24 ? 0:01 sched
root 4 0 0 11:52:24 ? 0:00 kcfpoold
root 5 0 0 11:52:24 ? 0:01 zpool-rpool
root 1 0 0 11:52:25 ? 0:00 /sbin/init
root 2 0 0 11:52:25 ? 0:01 pageout
root 3 0 0 11:52:25 ? 0:00 fsflush
root 529 1 0 11:52:42 ? 0:00 /usr/lib/inet/inetd start
root 9 1 0 11:52:25 ? 0:01 /lib/svc/bin/svc.startd
root 11 1 0 11:52:25 ? 0:04 /lib/svc/bin/svc.configd
root 112 1 0 11:52:29 ? 0:00 /usr/lib/pfexecd
netadm 47 1 0 11:52:28 ? 0:00 /lib/inet/ipmgmtd
netcfg 44 1 0 11:52:28 ? 0:00 /lib/inet/netcfgd
dladm 40 1 0 11:52:28 ? 0:00 /sbin/dlmgmtd
root 175 1 0 11:52:30 ? 0:00 /usr/lib/rcm/rcm_daemon
root 733 1 0 11:52:42 ? 0:00 /usr/sbin/sshd
root 393 9 0 11:52:31 ? 0:00 /usr/lib/saf/sac -t 300
root 162 1 0 11:52:30 ? 0:00 /usr/lib/zones/zonestatd
root 374 9 0 11:52:31 console 0:00 /usr/lib/saf/ttymon -g -d /dev/console -l console -m ldterm,ttcompat -h -p trib
root 248 1 0 11:52:30 ? 0:00 /usr/lib/picl/picld
root 169 1 0 11:52:30 ? 0:00 devfsadmd
root 81 1 0 11:52:29 ? 0:00 /lib/inet/in.mpathd
root 506 1 0 11:52:32 ? 0:00 /usr/sbin/in.routed
root 204 1 0 11:52:30 ? 0:00 /lib/inet/nwamd
root 148 1 0 11:52:30 ? 0:00 /usr/lib/sysevent/syseventd
root 283 1 0 11:52:30 ? 0:00 /sbin/dhcpagent
root 558 1 0 11:52:42 ? 0:00 /usr/sbin/syslogd
root 151 1 0 11:52:30 ? 0:00 /usr/lib/power/powerd
root 508 1 0 11:52:40 ? 0:00 /usr/lib/inet/in.ndpd
jack 739 737 0 11:52:49 pts/2 0:00 ps -ef
root 633 1 0 11:52:42 ? 0:00 /usr/perl5/bin/perl /usr/lib/intrd
root 372 1 0 11:52:31 ? 0:00 /usr/lib/utmpd
root 416 393 0 11:52:31 ? 0:00 /usr/lib/saf/ttymon
root 690 1 0 11:52:42 ? 0:00 /usr/sbin/nscd
root 426 1 0 11:52:31 ? 0:00 /usr/sbin/cron
daemon 513 1 0 11:52:42 ? 0:00 /usr/sbin/rpcbind
root 734 733 0 11:52:45 pts/1 0:00 /usr/lib/ssh/sshd-session -R
jack 736 734 0 11:52:48 pts/1 0:00 /usr/lib/ssh/sshd-session -R
jack 737 736 0 11:52:48 pts/2 0:00 -bash
root 611 1 0 11:52:42 ? 0:00 /usr/lib/fm/fmd/fmd

其中一些很眼熟。有一些 ZFS,而“SAF”是 Solaris 的服务管理框架。

有一处引起了我的注意:

root 633 1 0 11:52:42 ? 0:00 /usr/perl5/bin/perl /usr/lib/intrd

那是什么?

jack@tribblix:~$ file /usr/lib/intrd
/usr/lib/intrd: executable /usr/perl5/bin/perl script
$ vi /usr/lib/intrd
-bash: vi: command not found

哦……这是那种需要你自己安装 所有东西 的操作系统之一。everything.

more(1) 已安装,于是我查看了这个文件,它带有 Sun 的 CDDL license,但没有任何说明其用途的注释。不过 man page 解释道:

intrd 守护进程在启动时启动,用于监控中断与 CPU 之间的分配
关系。如果 intrd 判定当前的分配
不均衡且有损系统性能,它就会
生成并实施新的分配。

好吧,没我想的那么带劲。

nscd 正在运行。我看得太快,以为它是 nsd,但其实那是名称服务缓存守护进程。

当然,这里没有 systemd。事实上,Tribblix 使用非常传统的 rc.d 启动脚本。看看 /etc

Tribblix /etc

安装 vi:第 1 次尝试

我想要有 vi,那就试着装一下吧。如果我在 live 安装时装了额外的“overlays”,大概就已经有它了,但既然没有,就该看看包管理了。

jack@tribblix:/etc$ man -k pkg
pkgadd(8) - transfer software packages to the system
pkgadm(8) - manage packaging system
pkgask(8) - stores answers to a request script
pkgchk(8) - check package installation accuracy
pkginfo(1) - display software package information
pkginfo(5) - package characteristics file
pkgmap(5) - package contents description file
pkgmk(1) - produce an installable package
pkgparam(1) - display package parameter values
pkgproto(1) - generate prototype file entries for input to pkgmk command
pkgrm(8) - remove a package from the system
pkgtrans(1) - translate package format

遗憾的是,docs 对如何查找和安装软件包只字未提。

也许软件包在 CD 上。

有一份关于如何使用可移动介质的文档。在我预期会挂载 CDROM 的 /media 目录里什么都没有,于是我按照文档安装了软件包并运行了 svcadm 命令来启用 rmvolmgr,它本应能检测并挂载可移动介质。

做完这些步骤后,我在 Proxmox 里插入了一张 CDROM(.iso)(我在首次启动时把它移除了),但它没有出现。

root@tribblix:/root# ls /media
root@tribblix:/root#

dmesg 显示了这些行:

Jul 25 12:04:38 tribblix pseudo: [ID 129642 kern.info] pseudo-device: eventfd0
Jul 25 12:04:38 tribblix genunix: [ID 936769 kern.info] eventfd0 is /pseudo/eventfd@0
Jul 25 12:05:17 tribblix pseudo: [ID 129642 kern.info] pseudo-device: devinfo0
Jul 25 12:05:17 tribblix genunix: [ID 936769 kern.info] devinfo0 is /pseudo/devinfo@0
Jul 25 12:05:19 tribblix scsi: [ID 583861 kern.info] sd0 at ata1: target 0 lun 0
Jul 25 12:05:19 tribblix genunix: [ID 936769 kern.info] sd0 is /pci@0,0/pci-ide@1,1/ide@1/sd@0,0
Jul 25 12:05:19 tribblix genunix: [ID 127566 kern.info] device pciclass,030000@2(display#0) keeps up device sd@0,0(sd#0), but the former is not power managed
Jul 25 12:05:19 tribblix svc.startd[9]: [ID 652011 daemon.warning] svc:/system/hal:default: Method "/lib/svc/method/svc-hal start" failed with exit status 95.
Jul 25 12:05:19 tribblix svc.startd[9]: [ID 748625 daemon.error] system/hal:default failed fatally: transitioned to maintenance (see 'svcs -xv' for details)
Jul 25 12:05:19 tribblix fmd: [ID 377184 daemon.error] SUNW-MSG-ID: SMF-8000-YX, TYPE: defect, VER: 1, SEVERITY: major
Jul 25 12:05:19 tribblix EVENT-TIME: Sat Jul 25 12:05:19 PDT 2026
Jul 25 12:05:19 tribblix PLATFORM: Standard-PC-(i440FX-+-PIIX,-1996), CSN: -, HOSTNAME: tribblix
Jul 25 12:05:19 tribblix SOURCE: software-diagnosis, REV: 0.1
Jul 25 12:05:19 tribblix EVENT-ID: e81356fd-5c1d-405f-b00b-d41b568e8583
Jul 25 12:05:19 tribblix DESC: A service failed - a start, stop or refresh method failed.
Jul 25 12:05:19 tribblix Refer to http://illumos.org/msg/SMF-8000-YX for more information.
Jul 25 12:05:19 tribblix AUTO-RESPONSE: The service has been placed into the maintenance state.
Jul 25 12:05:19 tribblix IMPACT: svc:/system/hal:default is unavailable.
Jul 25 12:05:19 tribblix REC-ACTION: Run 'svcs -xv svc:/system/hal:default' to determine the generic reason why the service failed, the location of any logfiles, and a list of other services impacted.

我试着查阅列出的一些调试步骤。例如:

root@tribblix:/root# cat /var/svc/log/system-hal:default.log
[ Jul 25 12:05:17 Enabled. ]
[ Jul 25 12:05:17 Executing start method ("/lib/svc/method/svc-hal start"). ]
hal failed to start: error 1
[ Jul 25 12:05:19 Method "start" exited with status 95. ]
[ Jul 25 12:05:19 Rereading configuration. ]

唔。

rmvolmgr 安装过程中,提到了一个 zap 命令。

zap 工具用于管理 Tribblix 上的软件包、zones 以及系统 升级。

man page 非常简略,但有“zap help”,会给出诸如“search”和“whatprovides”等各种子命令。

root@tribblix:/root# zap whatprovides /usr/bin/vi
usr/bin/vieet f TRIBe19-efl
usr/bin/vi s TRIBeditor-vim
usr/bin/view s TRIBeditor-vim
usr/bin/vim f TRIBeditor-vim
usr/bin/vimdiff s TRIBeditor-vim
usr/bin/vimtutor f TRIBeditor-vim
usr/bin/vimdot f TRIBgraphviz
usr/bin/vips f TRIBlibvips
usr/bin/vipsedit f TRIBlibvips
usr/bin/vipsheader f TRIBlibvips
usr/bin/vipsprofile f TRIBlibvips
usr/bin/vipsthumbnail f TRIBlibvips
usr/bin/visualvm s TRIBv-visualvm
usr/bin/virtualenv s TRIBvirtualenv-python-313
usr/bin/viewres f TRIBx11-viewres

找到了!好,来试试这个……

root@tribblix:/root# zap install TRIBeditor-vim

Installing 2 packages:
TRIBeditor-vim
TRIBlibsodium

Fetching https://pkgs.tribblix.org/tribblix-m40//TRIBlibsodium.1.0.22.0.zap
Download TRIBlibsodium.1.0.22.0.zap checksum verified
Signature of TRIBlibsodium.1.0.22.0.zap verified
Fetching https://pkgs.tribblix.org/tribblix-m40//TRIBeditor-vim.9.1.2132.0.zap
Download TRIBeditor-vim.9.1.2132.0.zap checksum verified
Signature of TRIBeditor-vim.9.1.2132.0.zap verified
Installing TRIBlibsodium

Installation of  was successful.
Installing TRIBeditor-vim

Installation of  was successful.
Installed 2 packages

vi 能用了。

怪癖

我曾读到,各种 Unix 之间的主要区别在于系统启动、记账(accounting)和包管理。我们已经看到启动是基于 rc.d 的。记账是 SVR4 式的(说实话,如今已很少使用,在许多部门和用户共用一台系统的年代更有意义),而包管理则不同于 Linux/BSD。

我注意到启动时有一条奇怪的消息,被记录在 dmesg 里:

Jul 25 11:52:24 tribblix pci: [ID 370704 kern.info] PCI-device: pci1af4,1100@1,2, uhci0
Jul 25 11:52:24 tribblix genunix: [ID 936769 kern.info] uhci0 is /pci@0,0/pci1af4,1100@1,2
Jul 25 11:52:24 tribblix i8042: [ID 526150 kern.info] 8042 device: keyboard@0, kb8042 # 0
Jul 25 11:52:24 tribblix genunix: [ID 936769 kern.info] kb80420 is /pci@0,0/isa@1/i8042@1,60/keyboard@0
Jul 25 11:52:24 tribblix i8042: [ID 526150 kern.info] 8042 device: mouse@1, mouse8042 # 0
Jul 25 11:52:24 tribblix genunix: [ID 936769 kern.info] mouse80420 is /pci@0,0/isa@1/i8042@1,60/mouse@1
Jul 25 11:52:24 tribblix unix: [ID 950921 kern.info] cpu0: x86 (chipid 0x0 GenuineIntel 60FB1 family 15 model 107 step 1 clock 1800 MHz)
Jul 25 11:52:24 tribblix unix: [ID 950921 kern.info] cpu0: QEMU Virtual CPU version 2.5+
Jul 25 11:52:24 tribblix unix: [ID 551322 kern.info] KPTI enabled (PCID not supported, INVPCID not supported)
Jul 25 11:52:24 tribblix unix: [ID 417328 kern.warning] WARNING: cpu1: CPUID.0xD returns invalid value: hw_low = 0, hw_high = 0, xsave_size = 0, ymm_size = 0, ymm_offset = 0
Jul 25 11:52:24 tribblix unix: [ID 950921 kern.info] cpu1: x86 (chipid 0x0 GenuineIntel 60FB1 family 15 model 107 step 1 clock 1800 MHz)
Jul 25 11:52:24 tribblix unix: [ID 950921 kern.info] cpu1: QEMU Virtual CPU version 2.5+
Jul 25 11:52:24 tribblix unix: [ID 557947 kern.info] cpu1 initialization complete - online

不确定这是什么意思,但可能是因为它是一颗 Tribblix 未曾预料到的 QEMU 虚拟 CPU。

重启时也看到了这个:

root@tribblix:/root# reboot
bootadm: failed to open file: /rpool//platform/i86pc/kernel/unix: No such file or directory

我想看看 Tribblix 会如何报告硬件信息。有一个 /proc,但它仅是进程信息。然后我想起了一点 Solaris 时代的记忆,以及 psrinfo

root@tribblix:/proc# psrinfo -v
Status of virtual processor 0 as of: 07/25/2026 14:58:27
  on-line since 07/25/2026 12:08:57.
  The i386 processor operates at 1800 MHz,
        and has an i387 compatible floating point processor.
Status of virtual processor 1 as of: 07/25/2026 14:58:27
  on-line since 07/25/2026 12:08:57.
  The i386 processor operates at 1800 MHz,
        and has an i387 compatible floating point processor.
Status of virtual processor 2 as of: 07/25/2026 14:58:27
  on-line since 07/25/2026 12:08:57.
  The i386 processor operates at 1800 MHz,
        and has an i387 compatible floating point processor.
Status of virtual processor 3 as of: 07/25/2026 14:58:27
  on-line since 07/25/2026 12:08:57.
  The i386 processor operates at 1800 MHz,
        and has an i387 compatible floating point processor.

准确,尽管不如 Linux 上的 /proc/cpuinfo 那样详细。

prtconf 会给出硬件的详细信息,例如:

Memory size: 4096 Megabytes

……以及各种 pci 硬件。

结语

我很享受在 Tribblix 里探来探去。它让我想起早年学习 Unix、尝试各种系统的日子。那时候有 AIX、HP-UX、Solaris、Irix 等等。到了 2026 年,几乎所有东西都是 Linux,为数不多的例外则是 BSD。在庞大的 Unix family tree 中的另一个成员上折腾一番,很有意思。

我想我需要更深入地了解 Solaris 服务和 ZFS,才能真正发挥这个操作系统的优势。时间允许的话,我会再多玩玩 Tribblix。

 

 

 

原文链接:https://lowendbox.com/blog/lets-try-tribblix-the-solaris-derived-x86-64-operating-system/

106 次查询,使用了 0.245 秒