作为一名FreeBSD开发人员,我总是尽可能地使用FreeBSD--包括在桌面上。自2004年以来,我一直在笔记本电脑上运行FreeBSD;这并不总是那么容易,但这些年来,我发现情况总体上在改善。然而,我们仍然缺乏足够的文档-所以我写这篇文章是为了给用户提供一个例子,也是为了给Google诱饵提供一个例子,以防有人遇到我必须解决的一些问题。几个月前,在我的System76 Galago Pro经历了二次体验,出现了一个死气沉沉的/肿胀的小酒馆后,我决定是时候更换它了。2月15日,我订购了一台Dell Latitude 7390。这是一款较老的笔记本电脑--最初于2018年推出--但我一直发现戴尔Latitude的质量很好,而且这款笔记本的价格非常诱人:戴尔加拿大公司将其售价定为1049加元(750美元),而不是3599加元(2600美元)的原价。我只能假设这是他们最后的存货,他们想清空那条生产线。笔记本电脑随附:笔记本电脑在3月6日到货,我做了几项升级:我用英特尔660p 512 GB NVMe硬盘(94加元)取代了256 GB的固态硬盘。
除了给我双倍的磁盘空间,升级磁盘还允许我保持Windows安装的完好无损,以防我想让这台笔记本电脑在运行Windows时重新投入使用。在这些升级之后,我并没有我理想的笔记本电脑--我会更喜欢32 GB的RAM(戴尔的规格说明这款笔记本电脑最多支持16 GB)、第二块磁盘(理论上WWAN插槽可以容纳一个M.2 2242 NVMe磁盘,但网上的评论显示戴尔BIOS不允许在该插槽中安装固态硬盘)和TrackStick-但我支付的价格实际上可以&。我用我的旧笔记本电脑从最新的FreeBSD 12.1-STABL周快照下载了";Memtick&34;图像,并将其写入U盘。通常情况下,我会使用版本映像(这也会让后面的一些步骤变得更容易),但我最近做的一些更改和支持I2C触摸板所需的一些代码都不在上一个版本中。(如果您几个月后再阅读本文,请使用12.2或更高版本,而不是12-稳定分支。)。要从Dell Latitude 7390上的U盘启动,我需要在开机时按F12键才能进入启动盘选择菜单。安装FreeBSD对我来说很容易,因为我过去已经做过很多次了;但我确实更改了几个默认值:在选择要安装FreeBSD的哪些部分时,我包括了发行版。通常我不会这么做,但是我需要FreeBSD源代码来构建一些内核模块。
在配置ZFS时,我打开了全磁盘加密(就像我最近在所有笔记本电脑上所做的那样)。
我将交换空间从2 GB(默认)增加到16 GB。我希望这个系统永远不需要使用交换空间--但是如果它的16G的RAM还不够,那么2 GB的交换空间也不太可能有足够的帮助。
我关闭了sshd-我不打算远程连接到这台台式机-并打开了ntpd和powerd-我希望时钟保持准确,我想通过在CPU没有负载时放慢运行速度来节省电能。(稍后可以通过/etc/rc.conf启用或禁用它们,但是安装程序提供了它们,所以我想我也可以在这里这样做。)。
在系统强化屏幕中,我启用了clear_tmp、Disable_syslogd和DISABLE_Sendmail选项-前两个选项只是原则上的,而Sendmail是我不想要和不想要的(我改用qmail)。我没有启用任何其他的强化选项,因为它们没有任何显著的好处,但是我发现它们的移动功能很有用。
在创建我的用户帐户时,我将该帐户添加到了轮盘和视频组。前者是必需的,这样我才能通过su变成root用户;后者是应用程序访问加速视频功能所必需的。(如果您忘记了这些,您可以以root身份登录,稍后再添加它们,但这很麻烦-我在这里提到它们是因为我在很多情况下都需要这样做。)。
安装完成后,我要求安装程序重新启动系统并取出U盘。我做的第一件事是关闭恼人的大声控制台哔声:然后我告诉FreeBSD使用";链路聚合&34;网络,故障自动从有线以太网(如果连接)切换到WiFinetwork#sysrc WLANS_iwm0=";wlan0";#sysrc ifconfig_wlan0=";#sysrc ifconfig_em0=&。滞后proto故障转移滞后端口em0滞后端口wlan0 DHCP";
通过/etc/wpa_Supplicant.conf提供了我的WiFi网络凭据,并启动了网络(服务netif重新启动)。我想要一个防火墙,所以我用一个非常简单的配置启用了FreeBSD的PF:#echo";>;/etc/pf.conf#echo";在lo0";>;>;/etc/pf.conf#echo&34;/etc/pf.conf;/etc/pf.conf#sysrc PF_enable=&上设置跳过#34;>;>;/etc/pf.conf#sysrc PF_enable=&。
现在最烦人的部分是:因为我运行的是12.1-稳定版,而不是12.1-Release版(由于前面提到的补丁和最近添加的对I2C触摸板的支持),我不能完全依赖FreeBSDProject构建的软件包。相反,我需要通过端口树构建两个内核模块包-drm-kmod和iichid。这意味着:并锁定这些软件包,以确保它们不会自动升级到FreeBSD 12.1-Release:
如果我能够安装12.2-Release(在我撰写本文时它还不存在),那么这些步骤只需pkg install iichid DRM-KMOD即可。现在我已经准备好了这些软件包,我可以下载运行基本GUI所需的其他Onesi:然后进行一些基本配置来打开GUI:此时,我可以重新引导并观看我的笔记本电脑引导到GUI,在GUI中我以cpercia身份登录,打开一个控制台(Ctrl-Alt-T),然后使用su变成root,这样我就可以进行更多的配置。Dell Latitude 7390上的BIOS将扬声器和耳机插孔配置为独立的音频输出。这不是我想要的-我想让声音在默认情况下转到扬声器,但如果我插入耳机,就会切换到耳机插孔并自动将扬声器静音。为此,我告诉FreeBSD,耳机(这台笔记本电脑上的NID33)与扬声器属于同一音频设备(AS=1),但应该使用静音和切换到耳机的行为(顺序=15):说到音频,HDMI中有一个错误。地址2&34;上的命令超时)被记录到内核控制台。EdMaste一直致力于修复潜在的问题,但他提供了一个解决方法,让我可以让警告保持沉默:我喜欢的(KDE)环境不是#39;我不太需要D-BUS,但它需要的一个地方是允许GUI工具看到电池状态并与电源管理交互:CPU错误通常通过微码补丁得到修复,所以我想拥有这些:我希望我的笔记本电脑引导更快-这意味着如果我想要更改引导方式,不需要让引导加载器等待10秒,也不需要FreeBSD内核在挂载根文件系统之前等待USB设备(我知道我的根文件系统在NVMe磁盘上):如上所述,在挂载根文件系统(我知道我的根文件系统在NVMe磁盘上)之前,FreeBSD内核不需要等待USB设备(我知道我的根文件系统在NVMe磁盘上):我还使用spiped通过隧道将电子邮件发送到邮件服务器和从邮件服务器发送:#pkg install netqmail ucspi-tcp spiped#echo`hostname`>;/var/qmail/control/me#echo";:127.0.0.1:8025";>;/var/qmail/control/smtprouts#rm/var/qmail/alias/.qmail-*#echo cpercia>;/var/qmail。yes";#sysrc qmailsmtpd_enable=";yes";#sysrc qmailsmtpd_host=";127.0.0.1";#echo";127.0.0.1:允许";>;/etc/tcp.smtp#sysrc spiped_enable=";yes";#sysrc spiped_Pipes=";smtp。[127.0.0.1]:8025and#34;#sysrc spiped_pipe_SMTP_target=";mail.tarsnap.com:8025";#sysrc spiped_pipe_SMTP_key=";/etc/spiped/smtp.key";#sysrc spiped_PIPE_POP3_MODE=";CLIENT";#sysrc spiped_pipe_POP3_source=";[127.0.0.1]:110";#sysrc spiped_PIPE_POP3_TARGET=";mail.tarsnap.com:#sysrc spiped_pipe_POP3_key=";/etc/spiped/pop3.key";
最后,虽然已经安装了网络摄像头守护进程(kde5软件包将其作为依赖项引入),但我希望启用它,并希望cpercia用户能够访问它:此时,我已经有了一个功能齐全的桌面环境,但它并没有按照我想要的方式进行设置。我不喜欢默认的KDE墙纸,所以我安装了新的墙纸并告诉KDE使用它(右键单击桌面;#34;配置桌面向下滚动并选择正确的墙纸)。我希望能够从kde中打印,所以我启用了CUPS(它已经作为kde依赖项安装)并启动了它(因为我想在不重启的情况下使用它,所以是必要的):然后告诉kde我的打印机(";系统设置";->;&34;打印机";->;";AddPrinter";AddPrinter";http://192.168.1.60:631/ipp的手动URI和GenericPostScript打印机驱动程序)。我希望能够控制屏幕的亮度(又名。连接到英特尔视频芯片组的背光):尤其是能够通过戴尔通过ACPI展示的功能键(Fn+Up、Fn+Down)进行控制
一旦我确定我需要12.1稳定版(并确认通过适当编译的软件包,视频和触摸板都可以工作),我决定从12.1稳定版的ISO重新安装。我下载了Memtick的ISO,然后.。它已经腐烂了。或者更确切地说,被截断了;我猜那一周的快照镜像出了什么问题。
我想,不要紧,我可以使用迷你备忘录ISO来代替;这会在安装时下载您想要的FreeBSD部分,而不是将它们全部包含在ISO中。这个没有损坏--但是当安装程序下载我想要安装的部分时,它无法识别我的WiFi网络。幸运的是,这只是一件小事:我把笔记本电脑插入有线网络,一切都很正常。
有一次(我记不清是哪一次)我试图安装铬包,结果发现没有可用的包:那一周FreeBSD包构建集群中的构建失败了,因为不断增长的构建刚刚超过24小时限制,包构建者认为它一定是卡住了。我向FreeBSD端口经理团队报告了这一情况,他们提高了Chrome的时间限制,以便它可以成功构建-但与此同时,它的构建失败了,因为不断增长的构建刚刚超过了24小时的限制,而包构建者认为它肯定是卡住了。我向FreeBSD端口经理团队报告了这一情况,他们提高了Chrome的时间限制,以便它可以成功构建-但在平均时间内。
在我开始使用这台笔记本电脑之前,背光控制键会调整ACPI_VIDEO对亮度的概念,而英特尔背光工具可以调整实际亮度,但两者之间没有任何联系;我必须向FreeBSD内核添加代码以通过devd显示亮度变化,并编写必要的配置文件(acpi-video-intel-backlight.conf)来调用英特尔背光进行必要的更改。在此之前,我必须通过devd向FreeBSD内核添加代码以显示亮度变化,并编写必要的配置文件(acpi-video-intel-backlight.conf)来调用英特尔背光进行必要的更改。
当我第一次将LAGG接口设置为在有线和无线网络之间自动切换FreeBSD时,我发现我需要通过加载器加载WiFi驱动程序(和固件)内核模块。与通过最近添加的devMatch工具自动加载它们不同:如果我依赖devMatch,则FreeBSD的启动脚本将在加载wifi驱动程序之前尝试创建链路聚合接口,并且(毫不奇怪)无法聚合网络。t存在。对devmatch rc.d脚本的一行修复在引导过程中较早地移动了它,并使两个loader.conf行变得不必要。
最后,也是最令人困惑的是,我一度发现插上或拔下交流电源会导致笔记本电脑进入睡眠状态(S3挂起)。事实证明,这是由于ACPI、upowerd和KDE的电源管理选项之间的交互作用:如果在系统处于睡眠状态时打开笔记本电脑盖,则ACPI不会发送通知,导致upowerd认为笔记本电脑盖仍处于关闭状态。当KDE收到交流电源状态改变的消息时,它检查了所有与电源管理相关的状态,发现盖子是关闭的,并决定它应该进入睡眠状态。最后,我只需要对FreeBSD的ACPI代码进行一行修复,但是花了三天时间才找到这一行!
FreeBSD为桌面做好准备了吗?是也不是。是的,因为我有一台Verynice FreeBSD笔记本电脑,一切都可以按照我想要的方式工作。但事实并非如此,我在业余时间花了两个月的时间摆弄这些东西,才修复了一些出现的小故障;虽然没有什么特别具有挑战性的问题,但我预计,大多数人在解决我遇到的所有问题之前,早就会放弃了。另一方面,FreeBSD能为桌面做好准备吗?绝对可以。我已经修复了我遇到的问题-一旦我们有了FreeBSD 12.2版本,以及为该版本构建的包,启动GUI的过程也会容易得多。FreeBSD最需要的是让开发人员购买笔记本电脑,并仔细解决出现的问题;FreeBSD基金会已经开始这样做了,我希望在接下来的几个月里,他们-以及其他FreeBSD用户-将发布报告,告诉我们哪些笔记本电脑可以工作,他们需要什么配置。