FreeBSD入门

2023-12-28
#Unix #FreeBSD

1. 介绍

FreeBSD,全称 Free Berkeley Software Distribution (BSD),是一个自由和开源的类 Unix 操作系统。

官网为: https://www.freebsd.org

FreeBSD 的第一个版本于 1993 年 11 月从 386BSD 开发,最新的版本为 2023 年 11 月 20 日的 14.0-RELEASE (FreeBSD version history - Wikipedia)。

FreeBSD 主要特点是稳定,有坚如磐石 (Rock-stable Performance) 之称,适合作为服务器的操作系统。

2. 下载和安装

下载地址: https://www.freebsd.org/where/

版本选择:CD (disc1.iso结尾)、DVD (dvd1.iso结尾)和regular USB memory sticks (memstick.img结尾)

安装: Chapter 2. Installing FreeBSD | FreeBSD Documentation Portal

注意⚠️:

  • 额外的组件,全部取消不要选
  • 磁盘格式,选择 ZFS
  • 设置 root 用户密码,建议复杂一点
  • 设置网络,IPv4 和 IPv6 都要
  • 设置开机启动服务,只保留 sshd
  • 安全性设置,保持默认(都不选)

参考: 在 Linode 上安装 FreeBSD – 小众开发者

3. 一些常见设置

本节大部分设置来自于:

更多参考:

3.1 账户设置

# 用 root 用户安装 sudo
pkg install sudo

# 创建一个普通用户(用户名 myself ),默认添加到 staff 分组
adduser -g staff -s sh -w yes
Username: myself

# 创建一个 admin 分组,并添加 myself 和 root 两位用户
pw groupadd admin
pw groupmod admin -m myself root

# 创建一个 wheel 分组,只添加 root 用户
pw groupadd wheel
pw groupmod wheel -m root

# 从 admin 组里移除用户 myself
pw groupmod admin -d v

# 删除 admin 用户组
pw groupdel admin

# staff,admin 和 wheel 权限的区别:
#   staff,任何新建的用户都属于这个组,权限最低
#   admin,具有管理系统的权限,可以使用 sudo 命令
#   wheel,超级管理员权限,可以任意修改系统功能(这个名称来源于俚语 big wheel,意为大人物)

# 在 /usr/local/etc/sudoers.d/ 下新建两个文件 admin 和 wheel
# admin内容如下:

%admin ALL=(ALL) ALL

# wheel内容如下,多了个 NOPASSWD: ,使用 sudo 时不需要输入密码

%wheel ALL=(ALL) NOPASSWD:ALL

3.2 配置源

默认的源在 /etc/pkg/FreeBSD.conf

# $FreeBSD$
#
# To disable this repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
#
#   mkdir -p /usr/local/etc/pkg/repos
#   echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

推荐安装 security/ca_root_nss 可以使用 HTTPS 防止被劫持

pkg install -r FreeBSD security/ca_root_nss

源地址可以改为 HTTPS:

  ...
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",
  ...

重新生成索引:

$ pkg update -f

Updating FreeBSD repository catalogue...
pkg: Repository FreeBSD has a wrong packagesite, need to re-create database
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01    
Fetching packagesite.txz: 100%    6 MiB   6.5MB/s    00:01    
Processing entries: 100%
FreeBSD repository update completed. 30336 packages processed.
All repositories are up to date.

国内可用 中科大 的源, FreeBSD pkg 源使用帮助 — USTC Mirror Help 文档 推荐的设置方法为:

创建 /usr/local/etc/pkg/repos/FreeBSD.conf,操作如下:

mkdir -p /usr/local/etc/pkg/repos
echo 'FreeBSD: { url: "pkg+https://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly" }' > /usr/local/etc/pkg/repos/FreeBSD.conf

修改配置后,运行 pkg update -f 更新索引。

3.3 更新系统

常规的安全更新:

freebsd-update fetch
freebsd-update install

小版本或者大版本更新,13.2是要更新到的版本号:

freebsd-update upgrade -r 13.2-RELEASE upgrade
freebsd-update install

安装后需要重启系统 reboot,然后再继续完成安装:

freebsd-update install

返回版本:

freebsd-update rollback

3.4 安装软件

FreeBSD 的包管理工具是 pkg,默认的安装目录是 /usr/local/

  • 查找包:pkg search
  • 更新包:pkg update
  • 安装一个或多个包:pkg install cmake ninja ...
  • 更新已安装的包: pkg upgrade
  • 本地包安装命令 pkg install xxx.pkg
  • 卸载包:pkg delete
  • 清除本地包缓存:pkg clean,会清空缓存在 /var/cache/pkg/ 里的包
  • 自动清理不用包:pkg autoremove

3.5 SSH 设置

设置文件: /etc/ssh/sshd_config

3.6 更换默认 Shell

安装 bash

pkg install bash

bash 的配置文件路径是 /usr/local/etc/profile,需要创建这个文件,内容如下:

# source *.sh files from /usr/local/etc/profile.d if they are readable
if [ -d /usr/local/etc/profile.d ]; then
  for i in /usr/local/etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

安装 zsh

pkg install zsh
chsh -s /usr/local/bin/zsh
touch ~/.zshrc

4. 末了的话

FreeBSD committer 徐逸锋先生访谈 - delphij’s Chaos

李:作为一个 FreeBSD 的开发者,您希望对用户说什么?

徐:坚持使用,一开始可能很难用,但是常用的也就那么点东西,熟悉了就不难了。