概述
FreeBSD
是开源、自由的Unix Like
操作系统。
FreeBSD
继承自BSD
(Berkeley Software Distribution
)系列,是正统的Unix
分支,但由于法律原因,FreeBSD
不能称为Unix
。
相比Linux
,FreeBSD
更加贴近传统Unix
的设计风格。
与 Linux 的差异
授权协议差异:
Linux
使用GPLv2
许可证,许可证兼容性较差,内核二次开发需要继续开源代码,直接导致一些使用其它许可证的开源技术无法并入Linux
内核,如ZFS
文件系统FreeBSD
使用BSD
许可证,许可证宽松,有多家公司基于FreeBSD
进行商业性的二次开发,如Apple
的macOS
、Sony
的Play Station 3/4
等
开发模式差异:
Linux
项目仅仅包含内核开发,上游工具链由不同的团队维护,同时有众多基于Linux
内核的发行版FreeBSD
项目是完整的操作系统,包含内核、设备驱动、工具链、文档等,关注度和商业宣传不如Linux
,开发团队规模较小,对于新
社区规模差异:
Linux
商业宣传优秀,社会关注度高,开发团队庞大,对于新硬件、新技术有较好支持FreeBSD
开发团队规模较小,开发进度较慢,对新硬件的支持较为缓慢
安装与配置
FreeBSD
官方FTP
站点提供了镜像下载,地址为ftp://ftp.freebsd.org/pub/FreeBSD
。
ISO-IMAGES
目录下即为正式发布版本的镜像,选择匹配的CPU
架构和版本即可。
镜像命名规则如下:
FreeBSD-[版本号]-RELEASE-[CPU架构]-[镜像类型].img/iso
镜像类型分为以下几类:
bootonly
后缀名为iso
,仅供启动引导使用disc1
后缀名为iso
,基本镜像,包含基本软件包dvd1
后缀名为iso
,包含大量常用软件包memstick
后缀名img
,刻录使用镜像,包含基本软件包memstick-mini
后缀名img
,刻录使用镜像,包含核心软件包,最小化安装使用
后缀名iso
的镜像用于虚拟机启动,后缀名img
的镜像用于刻盘安装。
刻录镜像使用dd
指令,并需要添加部分参数,以amd64
架构的memstick-mini
镜像为例,刻录指令如下:
# dd if='FreeBSD-[版本]-RELEASE-amd64-memstick-mini.img' of='/dev/[磁盘id]' bs=1M conv=sync
在 UEFI 下引导 FreeBSD
FreeBSD 10
开始引入UEFI
启动支持,FreeBSD 10
运行在UEFI
模式下需要下载独立的带有uefi
名称的镜像版本。
以FreeBSD 10.3
为例,对应的amd64
刻录镜像名称为FreeBSD-10.3-RELEASE-amd64-uefi-memstick.img
。
从FreeBSD 11
开始,镜像均支持UEFI
启动,不再区分是否带有uefi
。
引导UEFI
模式安装的FreeBSD
需要下载iso
格式的镜像,解压后提取/boot/boot1.efi
文件。
在ESP
分区中创建FreeBSD
目录,将boot1.efi
文件拷贝到其中。
在UEFI BIOS
中手动选取boot1.efi
文件作为系统引导项,重启即可在UEFI
模式下引导安装完成的FreeBSD
系统。
使用 GRUB2 引导 FreeBSD
在grub.conf
文件中为FreeBSD
创建启动项,指定FreeBSD
启动文件boot1.efi
的位置,配置如下:
menuentry 'FreeBSD' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
chainloader /EFI/FreeBSD/boot1.efi # FreeBSD efi文件的实际路径
}
使用boot1.efi
文件引导FreeBSD
相比直接通过GRUB2
启动BSD内核的方式更加简单,无需复杂的引导配置。
无线网络配置
命令行环境下配置无线网络推荐使用wpa_supplicant
工具。
FreeBSD
源内提供的wpa_supplicant
工具默认未生成配置文件,需要自行在/etc
路径下创建wpa_supplicant.conf
。
wpa_supplicant.conf
配置模版如下所示:
network={
ssid="无线网ssid"
psk="密码"
}
默认无线网卡名称为ath0
。将无线配置写入/etc/rc.conf
中:
wlan_ath0="wlan0"
ifconfig_wlan="WPA DHCP"
之后启动网络服务:
# service netif start
连接未加密的无线网络,不需要使用wpa_supplicant.conf
,直接在/etc/rc.conf
中添加:
wlans_ath0="wlan0"
ifconfig_wlan0="ssid [无线网ssid] DHCP”
服务管理
FreeBSD
采用传统的BSD
风格的init
系统,服务项在/etc/rc.d
目录下。
可以使用service命令来管理服务:
# service [服务名称] [start | stop | status]
开机自启动的服务,以及一些系统配置存放在/etc/rc.conf
文件中。
例如,需要开机自启动ssh
服务则可以将sshd_enable="YES"
加入rc.conf
文件中。
常见的一些服务配置:
hostname="MacBook" //主机名称
ifconfig_em0="DHCP" //网络DHCP
ifconfig_em0_ipv6="inet6 accept_rtadv" //ipv6
sshd_enable="YES" //ssh服务
ntpd_enable="YES" //时间同步服务
powerd_enable="YES" //电源管理服务
dumpdev="AUTO" //内核错误转储服务
包管理
FreeBSD
同时提供了基于源码编译软件包的Ports
系统和基于预编译二进制包的pkg
包管理。
pkg
FreeBSD 10
之后引入了新的pkg
工具用于管理软件包,常用指令类似与yum/apt/dnf
:
# pkg install [软件包名称]
# pkg search [软件包名称]
# pkg remove [软件包名称]
# pkg autoremove [软件包名称]
# pkg info //查询所有已安装的软件包
# pkg info [软件包名称] //查询某个软件包的具体信息(包括软件包的文件组成,依赖关系,来源等)
Ports
Ports
系统提供了官方源内所有软件包的源码树,编译安装前能够定制编译参数,控制依赖项。
Ports
源码树位于/usr/ports
目录之,首次使用前需要初始化Ports
树,执行:
# portsnap fetch extract
之后更新Ports
树执行:
# portsnap update
编译Ports
树下某个软件包的源码只需进入对应的源码目录中,执行以下步骤:
make config
进入交互式界面,配置编译依赖make
执行编译操作make install
编译完成后执行安装操作make clean
安装完成后清理编译生成的临时文件
使用源码编译的软件包安装后同样受到pkg
包管理器的管理。
系统版本升级
FreeBSD
并非滚动发行版,系统有严格的版本划分。
FreeBSD
升级系统版本需要使用升级工具freebsd-update
。
升级到指定版本,执行指令:
# freebsd-update -r [版本号-发布状态] upgrade
以FreeBSD 10.1
正式版,执行指令:
# freebsd-update -r 10.1-RELEASE upgrade
之后系统会开始下载升级所需要的补丁,下载完成之后,执行更新指令:
# /usr/sbin/freebsd-update install