当前位置: 首页 > news >正文

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的软件源需要

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,所以如果想要安装内核组件或者固件,还是要从官方源下载

设定好源以后,刷新

pkg update -f

安装pkg程序

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

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

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/

首先

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是交换分区

然后

gpart list ada1 | grep -E 'Name|rawuuid'

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

1. Name: ada1p1
  rawuuid: 874f728b-a97f-11f0-9b4a-7c10c9a151d1
2. Name: ada1p2
  rawuuid: 87608106-a97f-11f0-9b4a-7c10c9a151d1
3. 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失效了。

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

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

pkg install drm-kmod

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

AMD显卡

根据

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

可以

pciconf -lv | grep -B4 VGA

查看显卡型号。

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

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找到最新版,然后安装

pkg install realtek-re-kmod198

根据安装后的提示

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/

编辑文件

ee /boot/loader.conf

里面增加一行

snd_driver_load="YES"

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

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

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

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

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

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,所以

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就是前面列出的声卡接口

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

kldload snd_driver

载入声卡驱动。

然后输入命令

beep

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

安装doas

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

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

pkg install doas

然后编辑配置文件

ee /usr/local/etc/doas.conf

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

permit :wheel

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

FreeBSD使用pw命令调整用户组

pw groupmod wheel -m <username>

读取NTFS

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

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

cd /usr/ports/filesystems/ntfs
make config

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

sysrc kld_list+="fusefs"

通过/etc/rc.conf加载

不过我亲自实践这种方法无法正确使用NTFS分区

我亲自测试的方法如下

pkg install fusefs-ntfs

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

fusefs_load="YES"

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

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

kld_load fusefs

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

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

在早期这一行的内容是fuse_load="YES",到了13版本已经更新了。另外我自己尝试在/etc/rc.conf中无需增加fusefs_enable="YES"。网上很多古老的帖子都已经过时了。

传统上kernel阶段载入的内容放在/boot/loader.conf中,kernel启动后在启动服务阶段载入的内容放在/etc/rc.conf中。在前面所述的内容中,声卡驱动、ntfs文件系统驱动都是放在/boot/loader.conf里面的,只有amdgpu放在/etc/rc.conf中。我不知道为什么,但是FreeBSD官方文档中介绍X Windows系统时使用的是sysrc也就是修改/etc/rc.conf文件,所以我就照做。也许在FreeBSD眼中,图形系统不是必须的,算是启动后服务阶段吧。不过声音系统却是在启动阶段的,也许FreeBSD眼里,嗡鸣报警是必须的,必须在启动阶段就带上。

安装桌面

我习惯用KDE桌面

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

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

用以下命令安装KDE桌面

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组

pw groupmod video -m <username>

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

sysrc dbus_enable="YES"
sysrc sddm_enable="YES"

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

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

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桌面安装完成后,默认显示的是英文,中文大都显示为方块。

先安装中文字体

pkg install zh-sourcehansans-sc-otf zh-sourcehansans-tc-otf zh-sourcehanserif-sc-otf zh-sourcehanserif-tc-otf noto-sc noto-tc

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

安装fcitx5中文输入法

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,我不推荐,这里只是简单记录一下

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后面

http://www.dtcms.com/a/485897.html

相关文章:

  • 细说Docker命令
  • 大型门户网站建设效果好吗重庆网站建设公司怎么做
  • 【Web】LilCTF2025 WP(随便看看
  • Vue3+Ts+Element Plus 权限菜单控制节点
  • PP-OCRv5 MCP服务器在海光主板的部署与实战
  • Linux 服务器NFS文件共享
  • 吃透大数据算法-算法地图(备用)
  • 前端性能优化实战:从指标到落地的全流程指南
  • 120html
  • 四川建设人才官方网站制作app需要学哪些东西专业知识
  • 二叉搜索树 --- 概念 + 模拟
  • 系统安全-主流密码加密算法BCrypt 和PBKDF2详解
  • 【具身智能】具身机器人VLA算法入门及实战(一):具身智能系统及VLA
  • 网站设计_网站建设_手机网站建设免费申请域名的网站
  • (1)认识测试
  • 2025年--Lc188--221. 最大正方形(多维动态规划,矩阵)--Java版
  • 【Redis】缓存读/写操作流程
  • 网站开发的网页模板移动网站建设价格便宜
  • Grafana 数据展示全流程指南:从安装到高级可视化实践
  • 电脑没法ping通某个网段的ip
  • ​rxnfp 仓库介绍(https://rxn4chemistry.github.io/rxnfp)​
  • iOS 26 文件管理实战,多工具组合下的 App 数据访问与系统日志调试方案
  • 工信部网站找回不了密码网站用什么做
  • MaxScale:MySQL读写分离实战指南
  • 基于Vue的体检中心管理系统的开发bk1825s9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • RabbitMQ的概述
  • 使用PyTorch实现图像分类任务的全流程详解
  • JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
  • 吃谷机主题商城小程序的界面功能设计
  • 创建网站超市网络免费推广平台