惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
爱范儿
爱范儿
罗磊的独立博客
美团技术团队
Jina AI
Jina AI
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
IT之家
IT之家
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
给Linux用户的FreeBSD快速指南
Jiajun Huang · 2019-10-19 · via Jiajun的技术笔记

可能现在很多人甚至没有听过FreeBSD,但是不得不说,FreeBSD虽然市场份额变小了, 仍然是UNIX家族中重要的一支。

我给自己定的目标是Linux和FreeBSD都要玩熟悉,原因有下:

  • Linux占据服务器市场主要份额,日常生产中也是经常用到,所以必须熟练使用
  • FreeBSD的协议非常好,如果哪天有需要,基于FreeBSD做产品不需要考虑被开源的问题

更何况他们都是类UNIX呢,两者切换起来并不难。接下来,我们就看看Linux用户怎么切换到FreeBSD:

首先,在国内拉取FreeBSD的二进制包非常慢,所以我们要使用一个镜像:

$ sudo su
# mkdir -p /usr/local/etc/pkg/repos
# cat > /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
  url: "pkg+http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
}
# pkg update
  • shell。服务器我们最常用的软件估计就是shell了,Linux中默认的一般是 bash,FreeBSD默认的一般是 tcsh, 我不想再学一个shell怎么用,我的配置都是基于 bash 的,因此,我使用 bash

    $ sudo pkg install -y bash bash-completion
    $ chsh  # 使用chsh把自己的默认shell改成 `/usr/local/bin/bash`。官方推荐别把root的改了。
    
  • 安装常用的包。Linux中常用的包FreeBSD中都有,并且可以直接使用pkg安装:

    $ sudo pkg install -y python3 tmux git bash neovim htop bash-completion
    

Linux要用到的包,FreeBSD中一般都有,如果名字不对,可以进行搜索:pkg search xxx。此外有一些Linux独有的软件例如kvm, FreeBSD中也有对应,是bhyve。其它的连 libvirt, virt-manager 都有。

当然FreeBSD还可以使用ports,就跟gentoo那样,自己编译,当然了,我是不喜欢自己编译,费时费力。

  • 软件自启。现在Linux中我们一般都使用systemd,不过FreeBSD还是使用BSD-style init, 也就是说,编辑文本,例如:

    $ cat /etc/rc.conf
    sendmail_enable="NONE"
    hostname="freebsd"
    keymap="us.kbd"
    ifconfig_vtnet0="DHCP"
    sshd_enable="YES"
    ntpd_enable="YES"
    powerd_enable="YES"
    # Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
    dumpdev="AUTO"
    

FreeBSD中要启动软件,就编辑各种 rc.confrc.d/ 下的文件,然后使用 service xxx start 启动。

如果不是想开机自启,只是想启动一次,那么可以使用 service sshd onestart 这样的用法。

  • 现在的Linux都是使用 ipss 命令来查看和管理网络相关的东西,而FreeBSD使用 ifconfignetstat

  • 防火墙。Linux中使用iptables来做防火墙,不过那个太复杂了,我一般使用 ufw。 FreeBSD中可以使用 ipfw 来管理防火墙,它的用法和ufw差不多:

    $ ipfw add allow tcp from any to me 22 in via $ext_if
    
  • 更新。FreeBSD和Linux中更新的不同之处在于,内核和软件包是分开更新的,内核使用 freebsd-update 更新,而软件包使用 pkg upgrade 更新。

  • 常用命令。

    • 安装软件:sudo pkg install xxx
    • 安装本地包:sudo pkg add ./xxx
    • 列出安装的包:sudo pkg info
    • 列出设备:sudo pciconf -l
    • 列出内核模块:sudo kldstat

其实Linux和FreeBSD的用法相当接近,总体来说,就这么几个区别:

  • Linux迁移到了systemd而FreeBSD仍然是用init
  • FreeBSD默认使用tcsh而Linux发行版一般使用bash
  • FreeBSD安装的软件包全都在 /usr/local 下而Linux则一般都在 /usr/

其它几乎没有,就是一些边边角角的区别和命令的用法区别而已。FreeBSD为什么不如Linux流行呢?查了一下,据说是因为 90年代的官司,而恰好那个时候开发了Linux,这就是时代的选择。

但这些都不能掩盖FreeBSD是一个好的服务器系统的真相。


参考资料: