FreeBSD 是什么?
描述: FreeBSD 是一种用于为现代服务器、台式机和嵌入式平台供电的操作系统; 三十多年来,一个大型社区不断发展它; 其先进的网络、安全和存储功能使FreeBSD成为许多最繁忙的网站和最普遍的嵌入式网络和存储设备的操作系统,官网地址:www.freebsd.org
weiyigeek.top-FreeBSD项目官网图
目前 FreeBSD 分支版本以及生命周期支持时间?
Branch | Release | Release Date | Expected EoL |
---|---|---|---|
stable/14 | n/a | n/a | November 30, 2028 |
releng/14.0 | 14.0-RELEASE | November 20, 2023 | 14.1-RELEASE + 3 months |
stable/13 | n/a | n/a | January 31, 2026 |
releng/13.2 | 13.2-RELEASE | April 11, 2023 | 13.3-RELEASE + 3 months |
由上可知,目前 FreeBSD 生命周期内的版本有 14.0、13.3、13.2,通常学习测试可以采用最新的,而生产环境中选择最稳定的。
选择 FreeBSD Unix 发行版还是其它 Linux 发行版?
FreeBSD 和 众多的 Linux (例如,Rocky
)都是开源的操作系统,也是大家常常所听说的两种常见的操作系统。那么这两种系统有什么区别,各自的优缺点是什么呢?此小节将会对这两种操作系统进行对比并进行分析。Linux 发行版:
FreeBSD (Unix)发行版:
总得来说,Linux 和 FreeBSD都具有其各自的优缺点,例如,Linux系统是可以自由的,整体性良好,稳定性高,而且用法很广泛;而FreeBSD拥有较好的网络特性,可以获得高性能的处理能力,不过其在应用程序的支持性还是有一些不足。选择使用那种操作系统,将根据项目的特性和使用它的目的来选择一个合适的系统。
温馨提示:作者受限于自身能力、知识、经验,此处只是简单介绍实践 FreeBSD (Unix) 系统的安装配置,由于作者在看实际工作中常对 RedHat、CentOS、Ubuntu、KylinOS、Windows Server 等服务器操作系统运维,很少针对 FreeBSD Unix 服务器进行操作,不过思想是一致,某些软件目录与配置与Linux有相通之处,若想详细学习请参考官网文档。
Step 1.访问 FreeBSD 官网下载地址 https://www.freebsd.org/where/ ,作为用户可自行根据安装环境及需求(平台架构、ISOs镜像类型),选择各种安装映像来安装 FreeBSD UNIX
发行版。
weiyigeek.top-FreeBSD 官网下载界面图
amd64
、i386
:适用于64位、32位的平台架构CPU及操作系统(常见于个人主机、服务器等)aarch64
(ARM64) :适用于嵌入式、微端(树莓派,机械臂,机械中控)powerpc
、powerpc64
、powerpc64le
、powerpcspe
:专用于IBM Power 系列服务器。armv7
:是ARM公司的一种32位指令集架构,广泛应用于嵌入式系统、移动设备和低功耗服务器等领域riscv64
: 适用于使用精简指令集(RISC)的主机系统, 其中64位版本被称为RISC-V 64位。ISO
:适用于光盘安装以及USB刻录安装,其格式包括CD(disc1,可看做最小化安装包)、DVD(dvd1,全量安装包)和网络安装(仅引导)最小化镜像的ISO。VM
:适用于虚拟机环境下,使用虚拟磁盘映像安装FreeBSD操作系统。SD Card
:适用于嵌入式环境下系统的安装方式。例如,作者为了方便大家学习FreeBSD操作系统的安装步骤,选择下载最新 amd64 架构 FreeBSD 14.0-RELEASE 精简镜像版本(1GB左右)进行部署( https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.0/FreeBSD-14.0-RELEASE-amd64-disc1.iso ),而不是直接是虚拟映像文件,当然若你只是为了简单的试用一下 FreeBSD 操作系统,则建议下载并使用VM虚拟映像方式安装。
weiyigeek.top-FreeBSDISO镜像下载图
Step 2.打开 VMware Workstations 软件,首先新建虚拟机(Ctrl+N),设置步骤大致如下,选择【自定义(高级)】-> 选择【安装程序光盘映像文件】即,前面下载的最小化安装包 -> 设置【虚拟机名称以及存储位置】-> 设置【CPU处理器为一块】、【运行内存为1GB】、【磁盘容量 100G】-> 最后点击完成,如下图所示:
weiyigeek.top-虚拟机资源设置图
Step 3.点击【完成】后回到虚拟机界面,选择【编辑虚拟机设置】-> 【选项卡】-> 点击【高级】-> 将引导模式设置为【UEFI】,由于UEFI模式相比较于BIOS模式较新,更安全,所以作者通过会选择UEFI模式进行系统的引导,当然选择BIOS传统引导页没有问题。
weiyigeek.top-更改虚拟机引导模式为UEFI图
Step 4.点击【开启此虚拟机】-> 进入到FreeBSD安装界面,选择【Boot Installer】回车即可 -> 选择【默认的 keymap】回车即可。
weiyigeek.top-FreeBSD安装界面图
Step 5.设置 FreeBSD 系统主机名称、选择系统组件(System Components)、系统磁盘分区,此处选择 Manual【手动分区】回车 -> 设置分区为 GPT -> 添加 / 根分区 -> 设置容量为 98GB -> 选择【ok】-> 然后 /boot/efi 分区将会自动创建,此处处于学习使用并未单独划分 data数据分区、home 用户分区、swap分区 以及 、var 分区,若有需求添加分区流程也是上述重复即可,相信各位看友都懂得举一反三吧!
weiyigeek.top-FreeBSD系统名称与分区设置图
Step 6.点击【Finish】和 Commit 完成后,则会将更改写入到磁盘,并安装内核到系统磁盘中,等待全部【Done】后,进行 root 账户密码的设置,之后选择网卡并进行网络配置,这里为了后续演示设置静态IP暂时选择DHCP(自动获取),设置 DNS 与搜索域,设置时区时间,最后选择启用常见的服务,例如 sshd(安全Shell守护进程)、dumpdev(内核崩溃记录服务)。
weiyigeek.top-FreeBSD用户即网络设置设置图
Step 7.然后会询问是否添加用户(Add User Accounts
)来新创建普通账户,可根据需要进行跳过或者创建新用户,最后选择【Exit
】保存配置并退出安装,在显示【Complete
】界面,点击【Reboot
】即可重启系统。
weiyigeek.top-完成FreeBSD部署安装图
Step 8.重启系统后,使用前面的root账号密码进行登录,然后启用 root 远程登录权限(若为生产服务器则不建议,开启 root 用户远程终端登录),修改/etc/ssh/sshd_config
配置文件,设置 PermitRootLogin yes
,然后重启sshd服务 service sshd restart
。
如何查看 FreeBSD 版本信息? 下面是该命令执行的输出样例:
$ freebsd-version -k
# 14.0-RELEASE
$ uname -mrs
# FreeBSD 14.0-RELEASE amd64
weiyigeek.top-图
至此,FreeBSD Unix 操作系统在虚拟机环境中搭建部署完毕,下面继续跟随作者来进行系统的常规配置吧!
附上,安装 FreeBSD 视频教程:
1.主机名称修改
使用命令或者配置文件的方式,快速设置系统主机名称。
# 永久生效(注意:FreeBSD 是没有 /etc/hostname 文件)
hostname freebsd-server
# 添加硬解析
tee -a /etc/hosts <<'EOF'
# 新增一条硬解析记录
127.0.0.1 freebsd-server
EOF
# 测试配置
ping -c 1 freebsd-server
2.主机网络配置
在 FreeBSD 14上配置网络、DNS 服务器以及静态路由。
# 0.查看系统网络接口(即:网卡名称)
ifconfig | grep "flag" | cut -f 1 -d ":"
em0
lo0
# 1.打开终端并以root权限登录系统,使用 ee 命令编辑网络配置文件/etc/rc.conf
ee /etc/rc.conf
# DHCP (即:自动获取)
ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"
# STATIC (即:静态IP)
ifconfig_em0="inet 192.168.228.130 netmask 255.255.255.0"
defaultrouter="192.168.228.2"
ifconfig_em0_ipv6="inet6 fe80::20c:29ff:fe12:4c4e%em0 prefixlen 64"
ipv6_defaultrouter="fe80::%em0/64"
# 2.按ESE,选择两次A则保存并关闭/etc/rc.conf文件。
# 3.重启网络服务以使更改生效。
service netif restart
# 4.验证网络接口以及检查网络接口配置
ifconfig em0
netstat -rn # IPV4/IPV6 路由表
netstat -rn -f inet6 # IPV6 路由表
# 5.编辑 DNS 配置 /etc/resolv.conf 文件
tee /etc/resolv.conf <<'EOF'
search localdomain
# 内部搭建的DNS服务器
nameserver 192.168.10.254
nameserver 223.6.6.6
EOF
weiyigeek.top-主机网络配置图
温馨提示:若想快速为企业搭建一个内部私有DNS服务器,可以选择 bind9 或者 CoreDNS 工具,恰好这两种方式作者实践过,有兴趣的看友可以参考下述两篇文章。
3.主机镜像pkg源配置
描述: FreeBSD 中pkg源(提供二进制安装包
)分为系统级
和用户级
两个源,前者是在/etc/pkg/FreeBSD.conf
文件中配置,但是不建议直接修改, 因为该文件会随着基本系统的更新而发生改变。而后者需要自行创建目录文件,例如 /usr/local/etc/pkg/repos
# 系统级源目录:/etc/pkg/FreeBSD.conf
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
# 创建用户级源目录:
mkdir -p /usr/local/etc/pkg/repos
# 创建用户级源文件:
echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
# 设置国内清华大学、交通大学镜像源
tee /usr/local/etc/pkg/repos/FreeBSD.conf <<'EOF'
FreeBSD: { enabled: no }
ustc: {
url: "http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
mirror_type: "none",
signature_type: "none",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
bjtu: {
url: "pkg+http://mirror.bjtu.edu.cn/reverse/freebsd-pkg/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "none",
fingerprints: "/usr/share/keys/pkg",
enabled: no
}
EOF
温馨提示: 若要获取滚动更新的包, 请将quarterly
修改为latest
, 请注意 CURRENT 版本只有 latest 。温馨提示: 若要使用https
, 请先安装 security/ca_root_nss
, 并将 http 修改为 https, 最后使用命令pkg update -f
刷新缓存即可.
除此,之外我们也可以针对 ports源、portsnap源 以及 freebsd-update源 进行替换为国内镜像源。
# freebsd-update 源:提供基本系统更新
sed -i 's#update.FreeBSD.org#mirror.bjtu.edu.cn#g' /etc/freebsd-update.conf
# 例如,从FreeBSD 11升级到12.0命令示例,freebsd-update -r 12.0-RELEASE upgrade
# ports源:提供源码方式安装软件的包管理器
tee -a /etc/make.conf <<'EOF'
MASTER_SITE_OVERRIDE?=http://mirror.bjtu.edu.cn/reverse/freebsd-pkg/ports-distfiles/
EOF
# portsnap源:打包的ports文件
sed -i 's#portsnap.FreeBSD.org#mirror.bjtu.edu.cn#g' /etc/portsnap.conf
# 例如,获取portsnap更新命令,portsnap fetch extract
FreeBSD 国内镜像源使用文档:https://debian.bjtu.edu.cn/help/freebsd/
4.主机常用软件安装及更新
描述: 配置完国内镜像源后,便可进行系统及软件的安装更新操作了。
# 获取镜像源更新缓存
pkg update
pkg upgrade -y
# 搜寻软件包
pkg search unzip
unzip-6.0_8 List, test, and extract compressed files from a ZIP archive
# 安装常用软件工具包
# 源码编译工具,动态连接库命令:-Wl,-rpath=/usr/local/lib/gcc12
pkg install gcc make cmake
# FreeBSD 14 最小安装,默认自带 unzip、gzip 命令,若没有请自行安装,注意系统源中不带 tar 命令此处使用 xtar 命令替代tar来查看解压即可。
pkg install -y vim wget curl zip unzip unrar xtar gzip dos2unix jq bash-completion
# delv, dig, host, nslookup 等命令集安装
pkg install -y bind-tools
# 瑞士军刀 ncat 可用于网络测试
pkg install -y nc
# 更好的 top 工具,列举出进程资源占用信息
pkg install -y htop
# lsof 列出了有关进程信息
pkg install -y lsof
# tree 以树形结构显示文件及目录
pkg install -y tree
# pstree 以树形结构显示进程及子进程(读取的是 /proc 目录中的文件)
pkg install -y psmisc
# ncdu 磁盘使用情况
pkg install -y ncdu
# chrony 客户端工具安装(ftp 、nfs 已自带)
pkg install -y chrony
温馨提示:若 FreeBSD 系统中 pkg 与 ports 源中没有的软件,请自行下载源码进行编译构架。
如何升级FreeBSD系统到14.x
假若,当前安装的版本是 FreeBSD 12.3-RELEASE,在升级到下一个可用的主版本前需要下载和安装FreeBSD安全补丁,请以root 用户身份运行以下命令:
freebsd-update fetch
freebsd-update install
pkg upgrade
升级软件包后,可以选用下面两个命令中的一个来重新启动系统:
shutdown -r now
reboot
运行以下命令将系统从 FreeBSD 13.2版本升级到 FreeBSD 14.0-RELEASE:
freebsd-update -r 14.10-RELEASE upgrade
执行上面的命令后,将会开始下载所有需要的安装包,这个过程将需要几分钟时间,具体时间取决于您的网络速度和FreeBSD系统上安装的软件包数量。
pkg-static install -f pkg
pkg bootstrap -f
pkg update
pkg upgrade -y
之后按照其提示,然后开始使用升级后的FreeBSD了。
5.主机时区时间同步配置
描述:FreeBSD 系统中自带了 ntpd
服务用于时间同步(默认未配置使用),而作者推荐使用chronyd
作为时间同步服务(在上一步已经安装好了),遂下述实践以chrony为例,不过在此之前先看看时间时区的设置吧。
# 查看系统时间、时区
date -R
Mon, 18 Mar 2024 14:22:40 +0800
# 方式1.若 CST-8 值不为 +0800 (亚洲-中国-北京)进行选择即可,执行如下命令,将会出现一个交互式菜单,让你选择地理区域和时区。根据提示选择正确的地区和时区。
tzsetup
# 方式2.使用配置文件方式配置时区(通用性好)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
时间同步服务快速配置步骤:
# 1.chrony 配置文件修改 /usr/local/etc/chrony.conf , 操作前请备份。
cp -a /usr/local/etc/chrony.conf /usr/local/etc/chrony.conf.baK
tee /usr/local/etc/chrony.conf <<'EOF'
# 四种注释方式
# a comment
% a comment
! a comment
; a comment
# NTP 上游服务器或者NTP池(必要设置)
server 192.168.10.254 iburst
server ntp.aliyun.com iburst
server ntp.tencent.com iburst
# pool 0.freebsd.pool.ntp.org iburst
# NTP 日志服务
logdir /var/log/chrony
# 设置当测量历史记录过于不稳定时,为了避免对计算机的增益/损耗补偿进行更改,前者外网环境设定值,后者内网环境设定值。
maxupdateskew 100
! maxupdateskew 5
# 以百万分之一的单位存储计算机的时钟增益/损耗率,将计算机时钟的信息保存在文件中(必要设置)
driftfile /var/db/chrony/drift
# 允许客户端/服务器保存nts密钥和cookie,以减少密钥建立(NTS-KE会话)的数量
ntsdumpdir /var/db/chrony
# 指定 chronyd 进程运行pid文件
pidfile /var/run/chrony/chronyd.pid
# 确定当前TAI-UTC偏移量以及下一个闰秒何时发生
leapsectz right/UTC
# 初始化时钟校正
# 如果错误小于1秒,将通过加快或减慢计算机的时钟逐渐消除,直到它正确为止。如果错误超过1秒,将立即应用时间跳跃进行更正,值“3”表示仅在时钟的前三次更新中允许该步骤。
makestep 1.0 3
EOF
# 2.设置自启用 chronyd 服务,否则执行 service chronyd start 命令时将会报下述错误
# Cannot 'start' chronyd. Set chronyd_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.
# 追加配置字符串
tee -a /etc/rc.conf <<'EOF'
chronyd_enable="YES"
EOF
# 温馨提示:若不想设置自启动而启动服务的可直接执行:
service chronyd onstart
# 3.启动&查看长荣服务
service chronyd start && service chronyd status
# Starting chronyd.
# chronyd is running as pid 3193 3194.
# 查看进程占用文件资源信息
lsof -p 3194
# 4.验证同步机制,此处使用 date 命令设置自定义时间。
date 202403181430.00
# Mon Mar 18 14:30:00 CST 2024
# 手动触发时间同步 & 检查时间同步状态
chronyc makestep && chronyc tracking
# 若执行上述命令后时间仍然长时间不同步,则可以重启chronyd服务
service chronyd restart
温馨提示:FreeBSD Unix 系统与常见Linux
发行版在软件安装后配置文件目录是有区别的,默认在 /usr/local/etc/
目录中,但是这不是绝对的只是约定俗成的。
温馨提示:如果你希望系统时间与硬件时间同步,可以使用 adjkerntz -i
命令,除此之外你仍然能过使用ntpdate ntp.aliyun.com
命令进行同步。
亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?
入坑出坑
问题1.默认情况下执行pkg update
命令时报pkg: No SRV record found for the repo 'FreeBSD'
错误解决办法。
# 默认配置
pkg -vv | grep -A 50 Repositories\:
Repositories:
FreeBSD: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:14:amd64/quarterly",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
pkg update
# Updating FreeBSD repository catalogue...
# pkg: No SRV record found for the repo 'FreeBSD'
$ host -t SRV _http._tcp.pkg.FreeBSD.org 8.8.8.8
# ;; connection timed out; no servers could be reached
pkg+http
更改为 http; 方法2.查看内部DNS服务器是否存在异常不能解析的情况(作者,遇到的情况)。# 设置镜像源
mkdir -p /usr/local/etc/pkg/repos
tee /usr/local/etc/pkg/repos/mirror-ustc.conf <<'EOF'
ustc: {
url: "http://mirrors.ustc.edu.cn/freebsd-pkg/${ABI}/quarterly",
mirror_type: "none",
signature_type: "none",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
FreeBSD: { enabled: no }
EOF
# 更新镜像源的元数据
pkg update -f
weiyigeek.top-镜像源更新图
参考地址:https://forums.freebsd.org/threads/pkg-no-srv-record-found-for-the-repo-freebsd.90716/
本文至此完毕,更多技术文章,请关注我获取及时文章推送!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有