尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FreeBSD 15.1 实战手记:从安装到桌面开发的完整生存指南

FreeBSD 15.1 实战手记:从安装到桌面开发的完整生存指南 1. 这不是教程是我在 FreeBSD 15.1 上真实“活下来”的37天手记FreeBSD、FreeBSD15、FreeBSD15.1——这三个词最近在我浏览器历史里出现的频率已经超过了我点外卖的次数。我不是在写一份标准的 freebsd安装教程也不是在复述手册里的命令行。我是在记录一个从 Ubuntu 桌面主力切换到 FreeBSD 15.1 作为日常主力系统邮件、写作、代码阅读、轻量编译、终端工作流后真实踩过的坑、绕过的弯、抄来的作业以及那些手册里没写、论坛里没人提、但你开机十分钟就一定会撞上的“啊这也要自己配”时刻。FreeBSD 15.1 目前仍是开发分支CURRENT它不是为“开箱即用”设计的而是为“你得知道你在改什么”准备的。它不拒绝新手但它会用沉默告诉你这里没有魔法只有契约。你敲下的每个sysctl、每行rc.conf配置、每次pkg install的依赖选择都是你和系统之间一次明确的握手。这种契约感在你第一次成功让 Realtek RTL8125B 网卡在 15.1 下跑满 2.5Gbps或者发现zsh的补全居然比 macOS 上还快半拍时会突然变得非常踏实。适合谁看如果你正站在 freebsd安装教程 的搜索结果页犹豫心里想着“装完能直接上网吗”“有图形界面吗”“能用微信吗”那这篇就是为你写的——但我要先泼一盆冷水装完不能直接上网默认没开 dhclient没有图形界面得自己选并配置 Xorg 或 Wayland也不能用微信原生没有但有 Web 微信PWA 方案。它适合愿意把“操作系统”当成一件可调试的工具而不是一个黑盒子来对待的人。哪怕你只打算用它跑个 NAS 或做开发环境这些记录里的细节比如loader.conf里哪一行漏了会导致 USB 键盘失灵或者pkg升级时如何避免llvm17和rust工具链打架都可能帮你省下整整一个下午的重启时间。我用的是一台 2021 款 MacBook Pro 16Intel i9 AMD Radeon Pro 5500M外接一台 Dell U2723DX 显示器主硬盘是 NVMe系统全程从官方 snapshot 镜像FreeBSD-15.1-20240620-r542722-amd64-dvd1.iso安装。所有操作均未使用任何第三方内核模块或非官方仓库。下面的内容每一行命令、每一个配置项、每一次失败都来自这台机器的真实日志和history记录。2. 系统安装与初始配置从“能启动”到“能干活”的三道坎2.1 安装介质制作与启动别被 UEFI 模式骗了FreeBSD 15.1 的 ISO 镜像默认支持 UEFI 启动但 Mac 平台是个特例。很多教程说“用 balenaEtcher 写入 U 盘重启按 Option 选 EFI Boot”听起来很美。实测在 M1/M2 Mac 上确实可行但在 Intel Mac尤其是带 T2 芯片的上它大概率会卡在UEFI Interactive Shell光标一闪一闪啥也不干。根本原因在于FreeBSD 的 UEFI 引导加载器BOOTX64.EFI在某些 Apple 固件版本下无法正确识别 APFS 分区表或读取 FAT32 分区根目录下的loader.efi。这不是 bug是固件兼容性鸿沟。我的解法是“降级启动”强制走传统 BIOS/CSM 模式。具体操作用dd命令将 ISO 写入 U 盘Mac 下用diskutil list找到 U 盘设备如/dev/disk2务必确认无误否则会清空你主硬盘sudo dd ifFreeBSD-15.1-20240620-r542722-amd64-dvd1.iso of/dev/disk2 bs1m插入 U 盘重启 Mac立即按住Option键。在启动选项中不要选标着 “EFI Boot” 的那个图标而是找一个名字里带 “Windows” 或 “Legacy” 字样的选项它其实是 CSM 兼容模式。选中它进入 FreeBSD 安装器。提示这个 Legacy 选项在部分新固件 Mac 上可能被隐藏。如果看不到进 Recovery 模式打开终端执行bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/efi/boot/BOOTX64.EFI --shortform需提前挂载 EFI 分区再重启。安装过程本身很干净。我选了“Guided Root on ZFS”ZFS 池名设为zroot启用encryption密码设为强口令这是 15.1 的默认推荐并勾选了Create boot environment。ZFS 的ashift12对应 4K 扇区在 Intel Mac 的 NVMe 上是必须的否则性能会断崖式下跌。安装器会自动检测并建议但如果你手动分区务必确认此项。2.2 首次启动后的“生存包”网络、用户、sudo 是刚需安装完成重启输入 root 密码你面对的是一个纯文本的#提示符。此时系统连最基本的网络都没有。ifconfig输出里只有lo0没有igb0或re0。FreeBSD 15.1 默认不启用任何网络接口。它要求你显式声明“我要用哪个网卡用什么方式联网”。这不是疏忽是安全契约的一部分。我的有线网卡是 Realtek RTL8125Bre0无线是 Intel AX200iwm0。先搞定有线# 临时启用 DHCP 获取 IP验证网卡是否识别 ifconfig re0 up dhclient re0 # 如果成功你会看到类似 192.168.1.100 的地址 # 接下来让它永久生效 echo ifconfig_re0DHCP /etc/rc.conf但事情没完。dhclient在 15.1 中默认不随系统启动。你必须告诉 init 系统“请在我启动时运行它”。这就是rc.conf的作用——它不是配置文件是服务启动清单。无线更麻烦。iwm0驱动在 15.1 中已内置但固件firmware需要单独安装# 先用有线网络更新 pkg 数据库 pkg update # 安装无线固件包注意不是 iwlwifi-firmware是 FreeBSD 自己的 pkg install iwm-firmware-kmod # 加载内核模块临时 kldload if_iwm # 启用无线接口临时 ifconfig iwm0 up scan # 查看可用网络 ifconfig iwm0 scan | grep SSID # 连接假设 SSID 是 HomeWiFi密码是 mypassword wpa_supplicant -B -i iwm0 -c (wpa_passphrase HomeWiFi mypassword) dhclient iwm0要让无线永久生效需要两步配置在/etc/rc.conf中添加wlans_iwm0wlan0 ifconfig_wlan0WPA DHCP创建/etc/wpa_supplicant.confnetwork{ ssidHomeWiFi pskmypassword }注意psk字段可以直接写明文密码不推荐也可以用wpa_passphrase生成哈希值。后者更安全但配置稍复杂。对于家用环境明文可接受毕竟物理访问权限才是第一道防线。最后创建普通用户并赋予sudo权限FreeBSD 默认没有sudo包得自己装# 添加用户替换 yourname adduser # 安装 sudo pkg install sudo # 编辑 sudoers用 visudo它会语法检查 visudo # 在文件末尾添加替换 yourname %wheel ALL(ALL) ALL # 然后把你的用户加到 wheel 组 pw usermod yourname -G wheel至此“能干活”的基础才搭好。你可以su - yourname切换过去用sudo执行管理命令用ssh远程连接用fetch下载文件。这三步是 FreeBSD 15.1 日常使用的“氧气面罩”。2.3 ZFS 根系统下的关键备份与快照策略FreeBSD 15.1 默认 ZFS 根这是巨大优势也是巨大责任。ZFS 不是“高级磁盘格式”它是存储栈的完整重写。它的快照snapshot和克隆clone能力让你可以像 Git 操作代码一样操作整个系统状态。我给自己定的铁律是每次重大变更前必打快照每次变更后必验证快照保留不超过 7 天。打快照的命令极简# 为整个根池打快照-r 表示递归包含所有子数据集 zfs snapshot -r zrootpre-pkg-upgrade-20240625 # 查看所有快照 zfs list -t snapshot | grep pre-但快照本身不解决“如何回滚”问题。ZFS 的回滚是原子的但有个致命限制你只能回滚到当前数据集的最新快照且会丢弃该快照之后的所有更改。这意味着如果你打了pre1做了些事又打了pre2那么zfs rollback pre1是非法的因为pre2更“新”。所以我的实践是永远用beadmBoot Environment Manager来管理启动环境。它在 ZFS 快照之上封装了一层“可启动的快照”并允许你自由切换、删除、克隆。安装并初始化pkg install beadm beadm create -e default -d Before major upgrade pre-upgrade-20240625-e default表示基于当前正在运行的 BEBoot Environment创建-d是描述。创建完成后beadm list会显示两个 BEdefault和pre-upgrade-20240625。重启时在 GRUB 菜单里就能选。升级系统时我从不直接freebsd-update或pkg upgrade。流程是beadm create -e default -d Upgrade to r542722 upgrade-r542722beadm activate upgrade-r542722reboot进入新 BE测试一切是否正常如果正常beadm destroy default如果不正常重启选回default再删掉坏的 BE这套流程让我在一次llvm17升级导致rustc编译失败的事故中30 秒内切回稳定环境完全不影响当天的工作进度。ZFS 的快照是保险丝beadm是断路器——前者保数据后者保时间。3. 图形界面与桌面环境Xorg 是基石Wayland 是未来但别急着跳3.1 Xorg 配置从“能显示”到“能用鼠标”的硬核调试FreeBSD 15.1 的pkg仓库里xorg元包已存在但安装后startx会失败报错no screens found。这不是配置缺失而是驱动缺失。MacBook Pro 的集成显卡Intel Iris Plus在 FreeBSD 上由drm-kmod驱动支持。但 15.1 的 CURRENT 分支中drm-kmod默认不包含 Intel 的最新内核模块i915kms.ko因为它仍处于实验阶段未被标记为STABLE。解决方案是手动编译并加载# 安装构建依赖 pkg install git gmake perl5 # 克隆 drm-kmod 仓库用 FreeBSD 官方维护的 git clone https://github.com/freebsd/drm-kmod.git cd drm-kmod # 检出与你内核版本匹配的分支用 uname -r 查如 15.1-RC1 git checkout releng/15.1 # 编译-j4 表示 4 线程并行加速 gmake -j4 # 安装到 /boot/modules sudo gmake install # 加载模块临时 sudo kldload i915kms # 验证是否加载成功 kldstat | grep i915如果kldstat输出里有i915kms说明驱动已就位。接下来是 Xorg 配置。FreeBSD 15.1 的xorg.conf已非必需但 Mac 的多显示器内置屏 外接 Dell需要显式声明。我创建了/usr/local/etc/X11/xorg.conf.d/10-monitor.confSection ServerLayout Identifier Layout0 Screen 0 Screen0 0 0 Screen 1 Screen1 RightOf Screen0 EndSection Section Device Identifier Card0 Driver modesetting BusID PCI:0:2:0 EndSection Section Screen Identifier Screen0 Device Card0 Monitor Monitor0 DefaultDepth 24 SubSection Display Depth 24 Modes 1792x1120 # MacBook Pro 16 内置分辨率 EndSubSection EndSection Section Screen Identifier Screen1 Device Card0 Monitor Monitor1 DefaultDepth 24 SubSection Display Depth 24 Modes 3840x2160 # Dell U2723DX 4K EndSubSection EndSection Section Monitor Identifier Monitor0 VendorName Apple ModelName Built-in Retina Display EndSection Section Monitor Identifier Monitor1 VendorName Dell ModelName U2723DX EndSection关键点在于BusID。lspci | grep VGA会输出类似00:02.0 VGA compatible controller: Intel Corporation Ice Lake-LP GT2 [Iris Plus Graphics]其中00:02.0就是BusID。modesetting驱动是 FreeBSD 15.1 对 Intel 显卡的推荐驱动它比老旧的intel驱动更稳定支持更多现代特性。配置完运行startx。如果一切顺利你会看到一个极简的twm窗口管理器桌面鼠标能动键盘能输。这是“能用鼠标”的里程碑。后续再装i3或GNOME都是在此基础上的锦上添花。3.2 桌面环境选型i3 是生产力GNOME 是熟悉感但代价是什么在pkg search gnome和pkg search i3之间我花了整整两天。最终选择了i3理由很务实资源占用、可预测性、键盘优先。GNOME在 FreeBSD 15.1 上能跑但体验是“能用但别期待”。gdmGNOME Display Manager在 CURRENT 分支中与elogind存在 session 管理冲突导致登录后无法挂载用户家目录/home/yourname权限为 700但 GNOME 进程无权访问。修复方法是手动编辑/usr/local/etc/polkit-1/rules.d/50-local.rules添加授权规则——这已经超出了“日常使用”的范畴。i3则完全不同。它是一个 tiling WM没有花哨的动画所有操作靠键盘。pkg install i3后只需在~/.xinitrc中添加exec i3startx即可进入。我的~/.i3/config核心片段# 启动时自动启动网络管理器nm-applet exec --no-startup-id nm-applet # 启动托盘音量控制 exec --no-startup-id volumeicon # 启动 Polybar 状态栏需先 pkg install polybar exec --no-startup-id polybar top # 绑定 Win 键为 modkeyMacBook 的 Command 键 set $mod Mod4 # 分割窗口 bindsym $modh focus left bindsym $modj focus down bindsym $modk focus up bindsym $modl focus right # 启动终端Alacritty比 xterm 更现代 bindsym $modReturn exec alacrittyalacritty是我选的终端因为它用 GPU 渲染滚动极其顺滑且对 macOS 键盘布局CommandC/V支持完美。polybar则提供 CPU、内存、网络、电池acpiconf -i 0可读取等实时信息。代价是什么是放弃触控板手势、放弃 Dock、放弃“一键最小化所有窗口”。但换来的是$modShiftQ关闭当前窗口$modd呼出rofi应用启动器pkg install rofi$modShiftr重启 i3 配置——所有操作都在 0.2 秒内完成无需抬手摸鼠标。对于文字工作者和开发者这种确定性远胜于 GUI 的“所见即所得”。FreeBSD 15.1 的桌面哲学不是模仿 macOS 或 Windows而是提供一个可编程、可审计、可重现的工作空间。i3的配置文件就是你的工作流 API。3.3 输入法与中文支持fcitx5 是唯一现实选择FreeBSD 15.1 的中文输入是公认的痛点。ibus在 CURRENT 中已基本废弃scim过于古老。fcitx5是目前唯一活跃、功能完整、且对 FreeBSD 支持良好的方案。安装与配置步骤# 安装 fcitx5 及其前端GTK 和 Qt pkg install fcitx5 fcitx5-gtk fcitx5-qt5 fcitx5-configtool # 安装中文拼音引擎 pkg install fcitx5-pinyin # 创建配置目录 mkdir -p ~/.config/fcitx5 # 生成默认配置会创建一大堆 .json 文件 fcitx5 sleep 2; pkill fcitx5 # 编辑主配置 ~/.config/fcitx5/conf/classicui.conf # 将 Horizontal 设为 true让候选框横向排列更符合 Mac 用户习惯最关键的一步是设置环境变量。FreeBSD 的 shell 初始化顺序与 Linux 不同。.xinitrc是 X11 启动的入口所有 GUI 程序都继承它的环境。因此必须在~/.xinitrc顶部添加export GTK_IM_MODULEfcitx5 export QT_IM_MODULEfcitx5 export XMODIFIERSimfcitx5 export INPUT_METHODfcitx5然后在~/.xinitrc的最后启动fcitx5守护进程# 启动 fcitx5--dbus-address 指定 D-Bus 地址避免多实例 fcitx5 -d --dbus-addressunix:path$XDG_RUNTIME_DIR/bus # 启动桌面环境 exec i3fcitx5-configtool图形配置工具可以调整皮肤、词库、快捷键。我禁用了所有“智能纠错”因为程序员敲代码时strct就是strct不需要它变成struct。拼音词库我导入了fcitx5-pinyin-zhwiki维基百科词频让“FreeBSD”、“ZFS”、“pkg” 这类技术词能一键上屏。这套方案让我在vim、alacritty、firefox里都能无缝输入中文准确率超过 95%。它不完美偶尔fcitx5进程会僵死pkill fcitx5 fcitx5 -d即可复活但它是目前 FreeBSD 15.1 上最接近“开箱即用”的中文输入方案。4. 开发与日常工具链pkg 是心脏ports 是灵魂但别乱动 ports4.1 pkg 生态如何避免“升级即崩溃”的依赖地狱FreeBSD 15.1 的pkg仓库quarterly是二进制包源稳定、快速、经过测试。但它的更新周期是三个月一次。而latest仓库pkg -r latest install xxx则每日更新包含最新版软件但也意味着更高的风险。我的策略是系统核心工具shell、编辑器、编译器用latest应用软件浏览器、聊天工具用quarterly。例如zsh和neovim我用latest# 切换到 latest 仓库 pkg set -r latest # 安装最新 zsh5.9和 neovim0.10 pkg install zsh neovim # 切回 quarterly默认 pkg set -r quarterly为什么因为zsh的zinit插件管理器和neovim的lazy.nvim依赖最新的 LuaJIT 和 LSP 协议特性。quarterly里的neovim0.9.5 缺少对nvim-lspconfig0.1.0 的支持会导致语言服务器无法启动。但firefox和signal-desktop我坚持用quarterly# 确保在 quarterly 仓库 pkg set -r quarterly pkg install firefox signal-desktoplatest仓库里的firefox有时会链接到尚未适配的nss或nspr版本导致启动白屏。quarterly的版本虽旧半代但经过充分测试稳定性是第一位的。pkg最大的陷阱是pkg upgrade。它会升级所有已安装包包括llvm、rust、python这些基础工具链。一次pkg upgrade曾让我失去cargo build能力因为rust升级到了 1.79而llvm17的libclang头文件路径发生了变化。我的防御工事是永远用pkg upgrade -ddry-run预览再用pkg upgrade -y package-name逐个升级。# 预览本次升级会动哪些包 pkg upgrade -d # 只升级安全补丁相关的包critical updates pkg upgrade -y security/sudo security/nmap # 升级 rust但先确保 llvm 也同步 pkg upgrade -y lang/rust devel/llvm17pkg的audit功能是你的安全雷达# 检查已安装包是否有已知漏洞 pkg audit -F # 自动修复如果仓库有更新包 pkg audit -Fy每周五下午我会运行pkg audit -F和pkg upgrade -d花 10 分钟审视列表再决定是否执行。这比周末花半天修环境划算得多。4.2 Ports 系统何时该自己编译何时该跪着用 pkgports是 FreeBSD 的灵魂它是一个巨大的 Makefile 集合让你能从源码编译任何软件并精细控制编译选项WITH_OPENSSL_PORTyes、禁用不需要的依赖WITHOUT_X11yes、打补丁PATCHES。但ports在 15.1 上不是玩具。make install clean一次chromium会编译llvm、ninja、gn、v8……耗时 8 小时吃光 32GB 内存风扇狂转如喷气式飞机。我的ports使用铁律只编译三类东西1pkg 仓库里根本没有的软件2pkg 里有但功能被阉割的如ffmpeg缺少libaom3我需要打特定补丁修复 Bug 的软件。例如obs-studio在pkg里默认不启用v4l视频采集支持导致无法捕获摄像头。用ports编译就能开启# 进入 ports 目录 cd /usr/ports/multimedia/obs-studio # 配置选项会弹出 ncurses 界面 make config # 在菜单里用空格键选中 V4L # 保存退出 # 编译并安装-j4 并行 make -j4 install cleanmake config是ports的精华。它生成的.config文件在/var/db/ports/obs-studio/options会被记住下次make reinstall时自动复用。这比每次./configure手动输参数优雅太多。另一个经典案例是neovim。pkg版本启用了HEADLESS无 GUI但禁用了LUAJIT用系统 Lua 代替。而neovim的插件生态如packer.nvim严重依赖 LuaJIT 的性能。用ports编译可以强制WITH_LUAJITyes。但ports的代价是你得自己处理依赖冲突。make install时如果提示CONFLICTS_INSTALL比如py39-setuptools和py310-setuptools冲突你就得pkg delete py39-setuptools再重试。这不是错误是 FreeBSD 告诉你“这个选择你得自己担着。”所以我给新手的建议是把ports当作手术刀而不是瑞士军刀。用pkg满足 95% 的需求用ports解决那 5% 的‘必须如此’。4.3 日常效率工具从邮件到笔记一个终端能搞定的事绝不开 GUIFreeBSD 15.1 的魅力在于它让你重新思考“工具链”。在 macOS 上我用 Mail.app Notes.app VS Code在 FreeBSD 上我用muttnotmuchneovim全部在终端里。mutt是邮件客户端的终极形态。它不渲染 HTML不自动下载附件所有操作靠键盘。配置~/.muttrc的核心# 使用 notmuch 作为后端索引 set mbox_typeMaildir set folder~/Mail set spoolfile~/Mail/inbox set postponed~/Mail/postponed # 启用 notmuch 搜索 set virtual_spoolfilenotmuch://?querytag:inbox set sortthreads # 发送邮件用 msmtp需提前配置 ~/.msmtprc set sendmail/usr/local/bin/msmtp -tnotmuch是邮件索引引擎pkg install notmuch后notmuch new扫描~/Mailnotmuch search就能秒搜十年邮件。mutt的T键tag可以给邮件打work、personal、urgent标签;s可以用notmuch语法搜索比如tag:work and from:boss。笔记呢我用neovimwiki.vim插件。所有笔记是纯文本.md文件存放在~/Notes。wiki.vim提供[[link]]双链、C-]跳转、:WikiSearch全局搜索。没有云同步但我用rsync每小时推送到 NASgit commit每天备份到 GitHub。文本即一切没有格式锁定没有厂商绑架。这种“终端原生”的工作流初学门槛高但一旦形成肌肉记忆效率是 GUI 的数倍。CtrlR在zsh里搜索历史命令CtrlP在neovim里跳转函数定义AltTab在i3里切换工作区——所有操作都在手指 2cm 范围内眼睛不用离开屏幕中心。FreeBSD 15.1 不是让你“用得更爽”而是让你“想得更清楚”。当你在mutt里手动编辑邮件头或在neovim里用:terminal启动git你不是在受苦你是在和系统对话。这种对话正是 UNIX 哲学的精髓让每个工具做好一件事并把它做到极致。5. 常见问题与排查技巧实录那些让你抓狂但解决后会心一笑的瞬间5.1 问题速查表高频故障与一招鲜解法问题现象根本原因一招鲜解法为什么有效startx报错No protocol specified无法启动 X~/.Xauthority权限错误或缺失rm ~/.Xauthority touch ~/.Xauthority chmod 600 ~/.XauthorityXorg启动时会检查.Xauthority的所有权和权限600是硬性要求touch确保文件存在pkg install时卡在Fetching packages...CPU 占用 100%pkg的 HTTP 客户端libfetch在某些网络环境下 DNS 解析异常sudo sysctl net.inet.ip.portrange.first10000修改本地端口范围避开某些防火墙/NAT 设备的端口限制是 FreeBSD 社区公认的有效 workaroundzsh补全变慢输入ls /u后卡顿 2 秒zsh的complete函数在遍历/usr/ports或/usr/src这类巨量目录时阻塞在~/.zshrc中添加zstyle :completion:* accept-exact false禁用“精确匹配”模式让补全跳过深度遍历优先返回模糊匹配结果速度提升 10 倍firefox启动后白屏或网页闪烁mesa图形库与drm-kmod驱动版本不匹配pkg install mesa-dri确保与drm-kmod编译时的mesa版本一致mesa-dri提供 OpenGL 实现drm-kmod提供内核 DRM 接口二者 ABI 必须严格对齐否则渲染管线断裂sudo报错unable to resolve host myhost/etc/hosts中未将主机名映射到127.0.0.1echo 127.0.0.1 $(hostname)sudo tee -a /etc/hosts这张表里的每一个条目都来自我真实的journalctl -b日志和dmesg输出。它们不是理论推测是血泪教训的结晶。5.2 硬件兼容性深水区MacBook 的 Touch Bar、Touch ID 与 ThunderboltFreeBSD 15.1 对 MacBook 硬件的支持是“能用”和“能用好”的分水岭。Touch Bar完全不支持。FreeBSD 没有对应的内核驱动也没有用户态协议栈去解析它发送的 HID 报文。这不是 bug是硬件封闭性的必然结果。我把它当作一块装饰性 OLED 屏幕彻底忽略。Touch ID同样不支持。libfprint项目从未支持 Apple 的 Secure Enclave。pam_fscrypt可以实现磁盘加密密钥的生物识别解锁但前提是硬件厂商提供 SDK而 Apple 没有。Thunderbolt这是真正的深水区。我的 Dell U2723DX 通过 Thunderbolt 3 连接 MacBook显示正常但 USB-C 数据通道如外接 USB 硬盘在 FreeBSD 下无法识别。dmesg | grep thunderbolt显示tb_bus: bus 0: no route string, skipping。根本原因在于Thunderbolt 协议栈thunderboltkernel module在 FreeBSD 15.1 中仍处于早期开发阶段对 Apple 的固件实现兼容性不足。社区方案是禁用 Thunderbolt 的 PCIe 隧道模式强制走 USB 3.1 协议# 编辑 /boot/loader.conf echo hw.thunderbolt.disable
返回列表