第 3.2 节 Linux 用户迁移指南
FreeBSD 与 Linux 不同之处
FreeBSD 仍然使用古老的 BSD init 而非 systemd;BSD init 与传统的 SysVinit 也不大相同——BSD 没有运行级别(runlevel),也没有
/etc/inittab
,均由 rc 控制。
当以用户进程身份运行 init 时,可模拟 AT&T System V UNIX 的行为——即超级用户可以在命令行中指定所需的运行级别:init 会向原始的(PID 为 1 的)init 进程发送特定信号,以执行相应的操作,实现类似的功能。参见 init。例如在 FreeBSD 中执行 init 0
仍然是关机。
0
SIGUSR1
停止系统运行。
0
SIGUSR2
停止系统运行并关闭电源。
0
SIGWINCH
停止系统运行,关闭电源,然后重新启动。
1
SIGTERM
进入单用户模式。
6
SIGINT
重启计算机。
c
SIGTSTP
阻止进一步的登录。
q
SIGHUP
重新扫描终端设备文件(ttys(5))。
FreeBSD 所有用户 shell 默认均是 sh(14 之前 root 为 csh),而非 bash(若你喜欢,亦可切换);
FreeBSD 基本系统几乎不包含任何与 BSD 协议不兼容的软件;
参考文献
Comparison of init systems,各大 init 对比图
GPL Software in FreeBSD Base,FreeBSD 基本系统中的 GPL 软件
许多 Linux 的常用概念其实最初源于 BSD,比如容器、发行版的概念。
我们现在称为容器技术的概念最初出现在 2000 年,当时称为 FreeBSD jail,这种技术可将 FreeBSD 系统分区为多个子系统(也称为 Jail)。Jail 是作为安全环境而开发的,系统管理员可与企业内部或外部的多个用户共享这些 Jail。2001 年,通过 Jacques Gélinas 的 VServer 项目,隔离环境的实施进入了 Linux 领域。在完成了这项针对 Linux 中多个受控制用户空间的基础性工作后,Linux 容器开始逐渐成形并最终发展成了现在的模样。2008 年,Docker 公司凭借与公司同名的容器技术通过 dotCloud 登上了舞台。
基本对比
Ubuntu
gcc
bash
Gnome
Gentoo Linux
滚动更新
GNU
gcc
bash
可选
Arch Linux
滚动更新
GNU
gcc
bash
可选
RHEL
GNU
gcc
bash
Gnome
FreeBSD
pkg/ports
BSD
clang
csh/sh
可选
Windows
可选
专有
可选
powershell
Windows 桌面
MacOS
1 年/约 5 年
无
clang
zsh
Aqua
命令替代/软件替代
因为 Linux 广泛使用的也是 GNU 工具,因此只要理论上不是依赖于特定的 Linux 函数库,该工具都可以在 FreeBSD 上运行。
lsusb
sysutils/usbutils
显示 USB 信息
粗略地可以用 cat /var/run/dmesg
lspci
sysutils/pciutils
显示 PCI 信息
粗略地可以用 cat /var/run/dmesg
lsblk
sysutils/lsblk
显示磁盘使用情况
/
free
sysutils/freecolor
显示内存使用情况
FreeBSD 未提供 free
命令,因为其依赖 Linux 特性,由包 procps
提供。如确需要 free
,可用 https://github.com/j-keck/free
其他替代命令是 vmstat
lscpu
sysutils/lscpu
显示处理器信息
/
glibc
bsdlibc
C 库
/
GCC
LLVM + Clang
编译器、编译链工具
非要用也可以安装 devel/gcc
vim
editors/vim/
文本编辑器
FreeBSD 的 vi
不是软连接到 vim
,而是早期的 nvi
wget
ftp/wget
下载器
系统默认的下载工具是 fetch
bash
shells/bash
shell
系统默认的 shell 是 sh
(非软连接)。你可以自己改。
NetworkManager
net-mgmt/networkmgr
网络连接工具
NetworkManager 依赖 systemd
无法直接移植
lsmod
kldstat
列出已加载的内核模块
/
strace
truss
跟踪系统调用
/
modprobe
加载内核模块:kldload
;卸载内核模块:kldunload
加载内核模块、卸载内核模块
/
最后更新于