FreeBSD-14.3基本安装过程

https://book.bsdcn.org/di-2-zhang-an-zhuang-freebsd/di-2.1-install-pre

这里有一批中国人准备的汉语版的安装手册,不过他是在VMware里做的,在物理机会有一些不同。在我的个人实践中还是发现一些问题,记录在这里,下次可以直接阅读。

制作启动盘

没什么好说的,直接从国内镜像下载即可

https://mirrors.nju.edu.cn/freebsd/releases/ISO-IMAGES/

我用的是南京大学的镜像。

如果要是用U盘安装,要下载那个memstick.img;如果用光盘安装,要下载那个iso文件,dvd1包含的内容比较多,disc1包含的内容比较少。

我用的是U盘,所以下载memstick.img,然后使用rufus将其刻录在U盘上,用默认的镜像模式即可,不要用光盘模式。如果是刻录光盘的话,要用光盘刻录程序,不能直接把iso文件复制到光盘里。

然后重启从U盘启动

安装过程

在安装过程中,安装程序会多次访问网络,而在这步,还没有设置国内镜像,所有的网络访问都要访问国外网络,速度特别慢。为了保证安装顺利,强烈建议物理断开网络。

从BSD的安装盘启动以后默认就会进入安装过程。

第一步有3个选项install、shell和live system,选install

第二步选键盘布局,国内用的基本都是标准的106键盘,所以选默认即可

第三步设定主机名,就是网上邻居能够看到的你的主机的名字

第四步选择安装软件包。dbg的是调试符号,除非你是专门开发BSD组件的人,否则都不要选;test一般也不需要;ports是用户自己使用源代码编译安装的工具,自带了软件版本和依赖管理的功能,如果想要追求最新的软件包,可以选;src是BSD内核源码,如果你用ports,那很多时候要用到,那就要选,如果你要做开发者,而且开发的内容和内核相关,那也用的上,其他大多数用户永不上。

ports支持FreeBSD USE系统,可以通过设定flag调整软件包编译时的参数,如果有这方面需求,可以考虑,不过大多数情况下pkg二进制安装足以满足需求。

第四步里的软件都包含在memstick.img里,不需要联网下载

第五步是分配磁盘空间。我的习惯是手动,选Manual。然后选disk info弹出菜单选择磁盘分区。根据自己的设计选择合适的硬盘分区后,选择文件系统格式和挂载点。我用了一整块SSD来安装,所以我在选择了磁盘后,直接选了下面的Auto分区,然后选择了整块硬盘,然后选择GPT分区,安装程序会提示你可能会销毁数据,选择接受,安装程序会自动提供分区方案,然后选提交commit

手动磁盘分区一定要选至少根分区和交换分区,其他的可以根据需要选择。

分区的实际操作过程是非常快的,基本上一眨眼就过去了。

然后安装程序会把你选定的安装组件解压缩到硬盘上,也就是实际安装。

第六步是设置root密码。输入两次密码一致即可设定。

第七步是网络设置。我的网卡是realtek 8111,在这步总说stopping TXQ timed out,然后反复尝试、反复失败。具体原因我没有查明,在这里有一处参考信息

https://forum.netgate.com/topic/170187/stopping-txq-timed-out-error/3

https://forum.netgate.com/topic/166746/realtek-re-kmod-missing-in-pfsense-2-6-repository/50

似乎是网卡的驱动问题。不过在安装环节也没有办法处理这个问题。

解决起来也很简单,直接把网卡物理断开,安装程序很快就不再尝试了。

在VMware虚拟机里是不会遇到网络这个问题的,在物理机会遇到。

第八步是时区设置。直接选Asia/China/Beijing即可,和大多数Linux发行版不同,BSD不用Asia/Shanghai,而是用Asia/China/Beijing。然后会问"时区CST看起来合理吗?"当然是合理的,因为我们用的是China Standard Time。然后安装程序会问你硬件时间是不是UTC,我个人硬件用的是UTC,系统用的是时区时间,所以我选择"是UTC",然后安装程序会请你设定日期和时间,这里设定的是时区时间,如果硬件时间没有问题,时区选择的也对,那就直接skip就好

第九步是启动服务。默认启用的是sshd和dumpdev,其他的看需求勾选即可,一般不许要调整。其中powerd是节能的,如果是服务器,完全没有节能的必要;桌面电脑的话,一般用桌面环境里的节能选项。moused是在字符界面使用鼠标,这个太鸡肋了。nptd是时间同步,隔一段时间就和网络上的时间服务器同步一下,一般用不着,nptd_sync_on_start每次开机进行一次时间同步,只要硬件时钟没出问题,基本上都用不到。

第十步是安全加固。其实守护好用户密码才是最有效的安全保障,这步的选项可能在面对黑客扫描的时候有点用处,基本上没啥用。

第十一步安装固件。固件一般是硬件厂商开发的,而且不是按照BSD协议开放源代码的,所以BSD把固件从安装介质移除,然后在用户需要的时候再下载。安装程序会探测电脑硬件,然后推荐需要下载的固件。因为这步还没有设定国内镜像,下载非常慢,所以现在不下载,不过要记下来,将来再下载。

第十二步创建普通用户。安装程序会问你是否要添加普通用户,可以添加,如果希望这个用户将来能够sudo,那么要把它加入wheel组;如果这个用户需要使用桌面,最好加入video组,这样将来容易使用显卡加速。

然后进入最后的完成安装的界面。在这个界面还可以对前面设置的内容做调整,比如增加更多的普通用户。千万不要安装Handbook,因为这会联网,速度非常慢。

选择Exit完成安装,系统就会重启。

更换软件源

FreeBSD最晚在2015年就停止了rsync服务,理论上所有的软件都必须要从他的服务器上下载,从国内访问非常慢。国内有人通过一些特殊方法制作了镜像,给我们带来了不少方便。

FreeBSD默认的软件源设置文件在

/etc/pkg/FreeBSD.conf

里面的内容

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+https://pkg.FreeBSD.org/${ABI}/quarterly",

mirror_type: "srv",

signature_type: "fingerprints",

fingerprints: "/usr/share/keys/pkg",

enabled: yes

}

{

url: "pkg+https://pkg.FreeBSD.org/{ABI}/kmods_quarterly_{VERSION_MINOR}",

mirror_type: "srv",

signature_type: "fingerprints",

fingerprints: "/usr/share/keys/pkg",

enabled: yes

}

它建议用户在/usr/local/etc/pkg/repos目录新建源的配置文件,而不是基于系统默认的源配置来修改

设定BSD的软件源需要

bash 复制代码
mkdir -p /usr/local/etc/pkg/repos
ee /usr/local/etc/pkg/repos/NJU.conf

因为我用的是南京大学的镜像,所以我的配置文件叫NJU.conf

https://help.mirror.nju.edu.cn/FreeBSD-pkg/?mirror=NJU

NJU.conf里面的内容

NJU: {

url: "https://mirror.nju.edu.cn/freebsd-pkg/${ABI}/quarterly"

}

FreeBSD: { enabled: no }

注意url的格式,FreeBSD官方源的默认格式是pkg+https开头的,而自建源的url是https开头的,没有pkg+

后缀的quarterly是季度更新,一般用这个就够了。如果想用最新的软件包,可以把quarterly改成latest,稳定性要差一些。

官方源里面还有一个FreeBSD-kmods但是非官方源里没有kmods,所以如果想要安装内核组件或者固件,还是要从官方源下载

设定好源以后,刷新

bash 复制代码
pkg update -f

安装pkg程序

pkg就是FreeBSD的包管理程序,它从网上软件源直接下载二进制包安装。

默认安装是不包含pkg程序的,所以

bash 复制代码
pkg install pkg

其实可以install任何包,因为pkg默认首次使用的时候会自动下载

修改fstab

/etc/fstab是启动时挂载各个硬盘分区的配置文件。如果说硬盘有增减,那么其硬路径会变,而fstab如果采用硬路径,那么一旦增减硬盘就会导致启动失败。但是FreeBSD的安装程序默认生成的fstab文件却是采用的硬路径,所以要修改过来。

https://forums.freebsd.org/threads/how-to-use-uuid-to-identify-partitions-on-freebsd.89163/

首先

bash 复制代码
lsblk

查看系统分区情况

ada1 0:125 238G GPT - -

ada1p1 0:139 260M efi gpt/efi -

ada1p2 0:140 234G freebsd-ufs gpt/freebsd-ufs -

ada1p3 0:141 4.0G freebsd-swap gpt/freebsd-swap -

<FREE> -:- 486M -

这样的话可以看到/dev/ada1这块硬盘上有3个分区,/dev/ada1p1是efi分区,/dev/ada1p2是/分区,/dev/ada1p3是交换分区

然后

bash 复制代码
gpart list ada1 | grep -E 'Name|rawuuid'

可以看到这几个分区的详细信息

  1. Name: ada1p1

rawuuid: 874f728b-a97f-11f0-9b4a-7c10c9a151d1

  1. Name: ada1p2

rawuuid: 87608106-a97f-11f0-9b4a-7c10c9a151d1

  1. Name: ada1p3

rawuuid: 876f87c5-a97f-11f0-9b4a-7c10c9a151d1

这样就得到了每个分区的rawuuid

然后修改/etc/fstab,把硬路径替换为uuid路径。要注意,先用ls检查一下/dev/gptid目录下有没有对应的文件,如果分区时选的不是GPT,可能会没有这个文件。

Device Mountpoint FStype Options Dump Pass#

#/dev/ada0p2 / ufs rw 1 1

/dev/gptid/87608106-a97f-11f0-9b4a-7c10c9a151d1 / ufs rw 1 1

#/dev/ada0p1 /boot/efi msdosfs rw 2 2

/dev/gptid/874f728b-a97f-11f0-9b4a-7c10c9a151d1 /boot/efi msdosfs rw 2 2

#/dev/ada0p3 none swap sw 0 0

/dev/gptid/876f87c5-a97f-11f0-9b4a-7c10c9a151d1 none swap sw 0 0

这样以后在增减硬盘的时候就不怕路径变化导致fstab失效了。

安装固件和内核组件(显卡、网卡)

前面系统安装阶段跳过了固件的下载和安装,现在系统已经安装好了,还是要安装固件和内核组件

bash 复制代码
pkg install drm-kmod

流行硬件所需的内核模块都会被安装,非常大。

AMD显卡

根据

https://docs.freebsd.org/en/books/handbook/x11/

可以

bash 复制代码
pciconf -lv | grep -B4 VGA

查看显卡型号。

根据显卡型号,让系统载入相应的内核模块就可以识别显卡。比如说我用的AMD的显卡,就可以这样识别。

bash 复制代码
sysrc kld_list+=amdgpu

其实sysrc命令就是在修改/etc/rc.conf文件,也就是说,其实可以手动编辑这个文件,在后面追加一行

kld_list="amdgpu"

其实kld_list既然是一个list,自然可以添加多个,这里只列出一个。

这个kmods源在国外,下载速度慢。如果你清楚自己的硬件所需的内核模块和固件,那么可以直接指定,下载量会小很多。如果你不知到,那在前面安装阶段的时候,有提示,记下来。

realtek网卡

前面提到关于stopping TXQ timed out的问题,根据提示,首先到

https://ports.freebsd.org/

检索realtek,然后在网卡相关的包里面查看各个包的changelog,因为realtek还有蓝牙组件,不需要的话还是别下载。根据changelog找到最新版,然后安装

bash 复制代码
pkg install realtek-re-kmod198

根据安装后的提示

bash 复制代码
sudo ee /boot/loader.conf

末尾增加两行

if_re_load="YES"

if_re_name="/boot/modules/if_re.ko"

识别声卡

https://docs.freebsd.org/en/books/handbook/multimedia/

编辑文件

bash 复制代码
ee /boot/loader.conf

里面增加一行

snd_driver_load="YES"

前面处理realtek网卡的时候,/boot/loader.conf文件内已经有内容了,那么这一行就是追加的。

就会在启动阶段载入声卡驱动

用以下命令可以看到机器里有哪些声卡设备

bash 复制代码
dmesg | grep -i audio

大多数情况下,主板上都有一个集成声卡。另外,显卡如果带hdmi接口,显卡上也会有一个声卡。所以这里输出的一般是两个。

hdaa0: <ATI R6xx Audio Function Group> at nid 1 on hdacc0

hdaa1: <Realtek ALC897 Audio Function Group> at nid 1 on hdacc1

更具体的,可以用以下命令

bash 复制代码
dmesg | grep pcm

比如说我的电脑输出

pcm0: <ATI R6xx (HDMI)> at nid 3 on hdaa0

pcm1: <ATI R6xx (HDMI)> at nid 5 on hdaa0

pcm2: <ATI R6xx (HDMI)> at nid 7 on hdaa0

pcm3: <ATI R6xx (HDMI)> at nid 9 on hdaa0

pcm4: <ATI R6xx (HDMI)> at nid 11 on hdaa0

pcm5: <ATI R6xx (HDMI)> at nid 13 on hdaa0

pcm6: <Realtek ALC897 (Rear Analog)> at nid 20 and 24,26 on hdaa1

pcm7: <Realtek ALC897 (Front Analog)> at nid 27 and 25 on hdaa1

pcm8: <Realtek ALC897 (Internal Digital)> at nid 17 on hdaa1

可以看到pcm0~5是显卡集成的声卡,pcm6~8是主板集成的声卡。一般情况下,对于台式机而言,音箱会连接主板集成的声卡中后置接口rear,所以

bash 复制代码
sysctl hw.snd.default_unit=6

这里的"6"是因为pcm6对应这主板声卡的后置接口。如果台式机使用耳机的前置接口,这个所谓的"前置接口"其实是主板内部接口通过机箱内部线连接到机箱前面的,也就是pcm8,这里自然就要把6改成8。如果是笔记本电脑,前置接口就是pcm7,这里就要改成7

如果是笔记本电脑,需要在前置耳机插入的时候,自动停止后置音频输出;拔出前置耳机的时候自动回复后置音频输出,那么需要在/boot/device.hints文件中追加

hint.hdac.0.cad0.nid27.config="as=1 seq=15 device=Headphones"

hint.hdac.0.cad0.nid20.config="as=2 seq=0 device=Speakers"

其中nid20和nid27就是前面列出的声卡接口

正常来讲,重新启动,就会载入声卡模块。如果不想重启,也可以

bash 复制代码
kldload snd_driver

载入声卡驱动。

然后输入命令

bash 复制代码
beep

声音设备发出蜂鸣音,说明声卡已经驱动起来了。

安装doas

BSD世界的doas就像当于Linux的sudo,OpenBSD觉得sudo太复杂,于是开发了简单的doas,FreeBSD也可以用doas

默认安装中是没有doas的,需要额外安装

bash 复制代码
pkg install doas

然后编辑配置文件

bash 复制代码
ee /usr/local/etc/doas.conf

对于绝大多数用户,只需要一句

permit :wheel

就是说wheel组全都有doas权限。这样如果以后需要增减管理员,只要把对应的人加入或者移出wheel组就可以了。这也是为什么前面创建普通用户的时候要加入wheel组。其他组其实也可一,不过一般大家默认约定是wheel组

FreeBSD使用pw命令调整用户组

bash 复制代码
pw groupmod wheel -m <username>

操作NTFS

ntfs-3g是目前常用的NTFS操作的软件包,不过FreeBSD并没有一个专门的ntfs-3g的包,要这样安装

bsdcn的书说,因为一些bug,不要用pkg安装二进制包,而是要用

bash 复制代码
cd /usr/ports/filesystems/ntfs
make config

在菜单中取消勾选UBLIO,然后再编译安装。安装后

bash 复制代码
sysrc kld_list+="fusefs"

通过/etc/rc.conf加载

不过我亲自实践无需如此操作

我亲自测试的方法如下

bash 复制代码
pkg install fusefs-ntfs fusefs-ntfs-compression

然后编辑/boot/loader.conf文件,追加

fusefs_load="YES"

重启以后就会载入fusefs模块,就有了读写ntfs的能力

如果不想重启,也可以运行命令

bash 复制代码
kld_load fusefs

载入模块后,就可以有读写ntfs的功能

安装桌面以后,可以在文件管理器中鼠标点击即可挂载

在早期这一行的内容是fuse_load="YES",到了13版本已经更新了。

正常情况下,读取NTFS是没有问题的,但是如果想要写入NTFS却有额外的要求。如果是Windows关机,然后重启进入FreeBSD或者Linux发行版,那么NTFS是不可写入的;如果是Windows重启进入,就是可以写入的。

kld_list的含义

在/etc/rc.conf中的这个kld_list其实就相当于/boot/loader.conf,只不过/boot/loader.conf里面可以包含更丰富的内容

/etc/rc.conf中的

kld_list="amdgpu snd_driver fusefs"

就相当于/boot/loader.conf中的

amdgpu_load="YES"

snd_driver_load="YES"

fusefs_load="YES"

不过/boot/loader.conf中的

if_re_load="YES"

if_re_name="/boot/modules/if_re.ko"

却不相当于/etc/rc.conf中的

kld_list="if_re"

因为/boot/loader.conf中还有其他内容

安装桌面

我习惯用KDE桌面

https://community.kde.org/FreeBSD/Setup/Ports

这个页面给的是kde5的安装方式,可是在2024年,很多发行版就已经更新到kde6了,那篇文章已经过时了。我的这篇文章是最新的。

用以下命令安装KDE桌面

bash 复制代码
pkg install kde sddm seated

xorg是kde的依赖项会自动安装。但sddm不是kde的依赖项,需要单独安装。至于seated包,我也不知道为什么,反正不装的话wayland桌面进不去。bsdcn也说必须要装seated

https://book.bsdcn.org/di-6-zhang-zhuo-mian-huan-jing/di-6.16-kde-wayland

实测,截至2025年10月,FreeBSD-14.3中的KDE在Wayland运行不太稳定。konqueror浏览器必崩溃。Firefox和输入法结合的很差,而且页面上的javascript运行也很慢。

图形界面需要显卡加速,所以要把用户加入video组

bash 复制代码
pw groupmod video -m <username>

把kde登录管理器sddm设为开机启动。因为sddm依赖dbus,所以必须要先启动dbus。

bash 复制代码
sysrc dbus_enable="YES"
sysrc sddm_enable="YES"

其实sysrc命令就是在修改/etc/rc.conf,为了保证dbus在sddm前启动,必须要把dbus放在sddm前面。如果错了,可以直接修改/etc/rc.conf

安装完kde以后,会提醒你需要启动webcam服务

bash 复制代码
sysrc webcamd_enable="YES"

这样可以消除每次开机的警告

KDE中文化

bsdcn说需要修改/etc/login.conf以实现用户分级

https://book.bsdcn.org/di-6-zhang-zhuo-mian-huan-jing/di-6.3-jie-an-zhuang-kde

我实测不需要。

KDE桌面安装完成后,默认显示的是英文,中文大都显示为方块。

先安装中文字体

bash 复制代码
pkg install zh-sourcehansans-sc-otf zh-sourcehansans-tc-otf zh-sourcehanserif-sc-otf zh-sourcehanserif-tc-otf noto-sc noto-tc

然后在"KDE控制中心->区域和语言->语言->添加语言",选择"简体中文",就可以正常显示中文了。

安装fcitx5中文输入法

bash 复制代码
pkg install fcitx5 fcitx5-qt6 fcitx5-gtk2 fcitx5-gtk3 fcitx5-gtk4 fcitx5-configtool-qt6 zh-fcitx5-chinese-addons

bsdcn.org建议把qt5的包也装上,但是我实践检验会冲突,而且在kde6已经可以在wayland上运行了,输入法对qt和gtk的依赖已经弱了很多。

只要在"KDE控制面板->键盘->虚拟键盘"启用"fcitx5虚拟键盘"即可通吃。

安装ibus中文输入法

如果是配合KDE桌面,最好是fcitx,但如果是GNOME,还是得搭配ibus。也有人喜欢在KDE桌面用ibus,我不推荐,这里只是简单记录一下

bash 复制代码
pkg install ibus zh-ibus-pinyin

只要在"KDE控制面板->键盘->虚拟键盘"启用"ibus虚拟键盘"即可。

fcitx和ibus只能装一个,千万不能两个都装

sddm中文化

https://forums.freebsd.org/threads/sddm-login-screen-with-kde-change-language.80535/

在/etc/rc.conf中添加一行可以改变sddm登录屏幕的语言

sddm_enable="YES"

sddm_lang="zh_CN"

sddm_lang必须在sddm_enable后面

相关推荐
skywalk81635 个月前
FreeBSD14.2因为爆内存而导致Xfce4视窗被卡,桌面变黑色,只能看到鼠标在窗体中心,鼠标无反应,键盘无反应
计算机外设·lightdm·freebsd·xfce4·视窗
skywalk81635 个月前
在一个FreeBSD的控制台,当移动鼠标时,就会有字符发生,这是怎么回事:35;62;18m35;60;
服务器·计算机外设·freebsd
skywalk81636 个月前
FreeBSD从14.1升级到14.2后桌面图标消失桌面背景消失且无法设置
运维·服务器·freebsd
skywalk81637 个月前
免费开源的NAS解决方案:TrueNAS
容器·开源·nas·freebsd·truenas
___波子 Pro Max.10 个月前
FreeBSD vs Linux:哪个开源操作系统更强大
linux·freebsd
skywalk816310 个月前
ThinkPad X250在 FreeBSD xfce4下小红点不能用、触摸板不能用以及键盘上下左右变成其它键
计算机外设·freebsd
skywalk81631 年前
install fcitx chinese input at FreeBSD14.1
运维·服务器·freebsd
skywalk81631 年前
ESXi里的FreeBSD装bhyve Ubuntu子系统,外网不通,子系统里无法ping通外面(使用NAT解决)
运维·服务器·ubuntu·freebsd
skywalk81631 年前
ESXi下装FreeBSD,尝试在FreeBSD里面使用cbsd装bhyve的Ubuntu子系统,结果启动失败
linux·运维·服务器·freebsd