惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
B
Blog RSS Feed
L
LangChain Blog
Jina AI
Jina AI
爱范儿
爱范儿
C
Check Point Blog
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
月光博客
月光博客
GbyAI
GbyAI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
V
V2EX
A
About on SuperTechFans
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
The GitHub Blog
The GitHub Blog
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
NUC 折腾笔记 - Linux 系统篇 - 少数派
2021-01-31 · via 少数派

写一篇迟到的折腾笔记:NUC8 8i5beh ,原本计划折腾 Hackintosh ,最后折腾了一台 Linux Homelab 设备。

本篇记录 NUC 基础系统配置中的一些细节。

写在前面

2021 年的第一个月,因为众所周知的原因,NUC 11 的到货迟到成为了现实,10 代产品的本地货源在两周前也比较捉急,好在口碑爆表的 8 代 NUC 的货源还是非常充足的,性价比也同样占优。

加上正巧最近在折腾 MacOS 客户端,心说如果 NUC 8 代产品靠谱的话,相比较笔记本来说无屏幕、功耗更低来说持续跑一些程序的话,优势还是不小的。(便宜大碗、坏了不心疼呀)

装配完毕的 NUC
装配完毕的 NUC

于是在网上找了一家“出售成套方案、到手即用”的店铺,入手了一台经典神机 NUC8(8i5beh),在 NUC 到手后通电后,产生了三个想法:

  1. NUC 8 性能真不错,系统运行顺滑,但是在运行 Mac OS 时,风扇瞬间起飞(比MacBook 编译程序还要暴躁),散热是真的有压力,还好没有入手 NUC8 i7 版本以及 NUC 10 跑这个场景。
  2. NUC 11 应该值得等待,制程优化带来的散热问题应该有好转(已在 M1 Mac 上验证),加上性能也有质变,希望年后物流速度尽快恢复吧。
  3. 虽然网上资料更多的是用 NUC 8 做 Hackintosh,但或许 Linux 或许更适合它,对核显需求更低、发热更低,加上本身不错的计算能力和扩展能力。

为了验证第三个想法,开始了折腾之旅。

Ubuntu 20.04 安装

考虑偶尔可以使用 HDMI 接显示器使用,并且想更省事的使用“官方默认”的 VNC 功能,所以这次的安装采用 Desktop 版本。

如果你不需要 VNC 和 Wi-Fi 功能,完全可以使用 Server 版镜像,毕竟复杂性更低,相对可靠性更高嘛。

启动盘制作

Mac 下的启动盘制作方案非常多,这里推荐一个“跨端”方案:balenaEtcher,一款高颜值的引导盘刷写工具,命令行过程中索然无味的等待将被配色清新的界面所取代。

balenaEtcher 使用界面
balenaEtcher 使用界面

使用方法很简单,只需要下载好镜像,然后戳戳戳,一路下一步就可以了。

进入U盘引导

NUC 默认启动速度很快,想要使用 U 盘引导安装系统,需要在启动过程中“疯狂”按 F10 ,进入启动菜单选择。

提升系统安装速度

在使用启动盘安装的过程中推荐断开网络(别插网线、别连无线),可以解决默认软件源下载更新缓慢的问题,从而大幅提升安装速度。

选择系统安装类型

安装模式选择正常安装(Normal installtion)和最小化安装(Minimal installtion)都可以,两者差别在于默认安装软件包的多寡。如果你希望保留默认的 VNC 工具、桌面的话可以考虑使用正常安装偷个懒。

如果你的 NUC 使用的是非 Intel 网卡,在安装的时候选择安装三方驱动(Install third-party software for graphics and Wi-Fi hardware...)可以在第一次正式系统的时候正常使用 Wi-Fi 网卡。

但是需要注意,不要着急更新系统,会出现网卡无法工作的情况。

拔掉引导盘

如果你习惯了服务器版在安装完毕后提示你“拔掉U盘”,那么在安装桌面版的时候要注意一下,桌面版并不会提示你安装完毕,请弹出可移动设备。

安装完毕需要自行拔掉 U 盘,避免循环启动安装镜像。

重复安装无法启动系统

如果你选择重复安装 Ubuntu,那么可能会因为 UEFI “残留数据” 导致需要进入 Grub 恢复模式重新初始化引导。

这里可能是 grub 在 nvme 设备下处理 EFI 分区有问题,虽然使用下面的命令可以修复卡在启动界面的系统:

grub rescue>set root=hd0,msdos5
grub rescue>set prefix=(hd0,msdos5)/boot/grub
grub rescue>insmod normal
grub rescue>normal

但是在“完整系统”中执行恢复“三招”会发现系统并不能被修复:

update-grub
grub-install /dev/nvme0n1
reboot

这时建议重新初始化硬盘,删除 NVME 磁盘前的引导记录。我这里使用 Mac 磁盘工具对 NUC 磁盘进行了初始化。

系统基础配置

在安装完毕之后,就是进行系统的基础配置了。

更换软件源

进入系统之后,使用默认的 vi 软件编辑软件源列表:

vim /etc/apt/sources.list

cn.archive.ubuntu.comsecurity.ubuntu.com 替换为国内速度更快的清华源:

:0,$ s/cn.archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn\/ubuntu/
:0,$ s/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn\/ubuntu/

然后保存文件,并执行 apt update 获取新的软件列表。但如果你是苹果网卡用户,请先不要更新系统。

配置 SSH 终端连接

还是老方法,安装 openssh-server 软件包即可:

apt install -y openssh-server

如果需要修改链接端口或者其他配置,可以修改 /etc/ssh/sshd_config 中的端口。

这个配置适用于你使用“网线”、“无线”以及“雷电3”组网连接设备。有了 SSH ,接下来的配置会方便非常多,因为你可以复制下面的各种“现成的命令”啦。

Ubuntu 系统 BCM94360CS2 网卡驱动问题

NUC 是“原生”被 Ubuntu 支持的,但是我前文提过,我有购买“整套”的方案,卖家已经帮我处理掉了运行 MacOS 的网卡等硬件问题,将原始的网卡去掉,硬件改造几乎用不到的读卡器线路,换上 BCM94360CS2 。

这样做对于运行 MacOS 的好处是:让 DIY 爱好者头疼的蓝牙和无线功能会一切正常。并且在保证功能正常的前提下,可以以节约一个 M2 接口,来安装我的 Nvme 硬盘。

但是使用 Ubuntu 的话,这个网卡则会带来一个小问题:驱动与内核不兼容、只要升级 Ubuntu 软件包,功能必定 Crash 掉。

修复 BCM94360CS2 网卡驱动问题

如果你在安装过程中没有勾选“三方驱动”选项,那么在安装完毕之后,我们默认是不会有网卡无线驱动的,需要自行安装。网上给出的方案是手动执行(也是 Ubuntu 镜像中的默认三方驱动包):

apt-get install bcmwl-kernel-source

在不更新系统内核的情况下,你会发现网卡顺利的工作了,你可以使用网卡搜索到身边的信号,并且进行链接,但是一旦你执行系统升级命令,在过程中你将会看到类似这样的报错信息:

Building module:
cleaning build area...
make -j8 KERNELRELEASE=5.8.0-40-generic -C /lib/modules/5.8.0-40-generic/build M=/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build...(bad exit status: 2)
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/bcmwl-kernel-source.0.crash'
Error! Bad return status for module build on kernel: 5.8.0-40-generic (x86_64)
Consult /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log for more information.
   ...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.8.0-40-generic

倘若你勾选了“安装三方驱动”,那么得到的也仅仅是在首次系统安装完毕之后,无线能够使用而已,一旦你执行了系统升级命令,还是会得到和上面一样的错误信息。

这个问题在 launchpad 社区有人已经报过:

  • https://bugs.launchpad.net/bugs/1878045
  • https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/1878045

解决方案是彻底卸载掉“默认驱动包”,重新安装适合的软件包:

apt purge bcmwl-kernel-source
apt-get install broadcom-sta-source
apt-get install broadcom-sta-dkms
apt-get install broadcom-sta-common

执行完毕上述命令后,重新启动,系统便会一切正常。

系统进阶配置

NUC 默认支持使用两个盘位,建议使用 NVME 做为系统盘,我这里使用了新版国货之光:致钛PC005;而另外一个盘位支持的是 SATA 协议,我使用了另外一款口碑很棒的硬盘致钛 SC001。

配置数据盘

NUC 的数据盘
NUC 的数据盘

使用 fdisk 查看当前磁盘列表:

fdisk -l

Disk /dev/nvme0n1: 953.89 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: ZHITAI PC005 Active 1TB                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9D048B5E-4CXX-41XX-A8XX-0F9AXXXXXXXX

Device           Start        End    Sectors   Size Type
/dev/nvme0n1p1    2048    1050623    1048576   512M EFI System
/dev/nvme0n1p2 1050624 2000408575 1999357952 953.4G Linux filesystem


Disk /dev/sda: 953.89 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: ZHITAI SC001 Act
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

可以看到 /dev/sda 并未初始化,使用 fdisk 的交互模式来进行磁盘初始化。

fdisk -u /dev/vdb

# 交互式输入:p->n->p->enter->enter->enter->w

mkfs.ext4 /dev/sda
echo /dev/sda /data ext4 defaults 0 0 >> /etc/fstab
reboot

重启之后,再次使用 fdisk 查看:

Disk /dev/sda: 953.89 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: ZHITAI SC001 Act
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

可以看到磁盘已经就绪。

安装容器环境

安装容器的方法还是一如既往的简单,这里给出全部使用镜像来安装的命令:

apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

apt update && apt install -y docker-ce

为了方便使用,这里我写了一个更简单的脚本来进行安装:

curl -o- https://raw.githubusercontent.com/soulteary/linux-scripts/main/docker.sh | bash

安装 compose 也比较简单,我这里也写了一套简单的脚本:

#!/bin/bash

FILENAME="docker-compose-`uname -s`-`uname -m`"
VERSION=1.28.2

if [ -f "$FILENAME" ]; then
    echo "$FILENAME exists.";
else
    curl -L https://github.com/docker/compose/releases/download/${VERSION}/${FILENAME} -o ${FILENAME}
fi

curl -L https://github.com/docker/compose/releases/download/${VERSION}/${FILENAME}.sha256 -o ${FILENAME}.sha256

CHECK=$(shasum -c ${FILENAME}.sha256)

if [ $? != 0 ]; then
    echo "${FILENAME} checksum is not valid";
    exit 1;
fi

mv ${FILENAME} /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
rm ${FILENAME}.sha256
echo "done";
docker-compose -v

同样,有更简单的安装方式:

curl -o- https://raw.githubusercontent.com/soulteary/linux-scripts/main/docker-compose.sh | bash

安装常用软件

为了方便管理和监控系统运行状态,可以安装一些常用运维软件。

apt install net-tools htop iftop iotop -y

最后

下一篇内容,我们聊聊雷电接口加持下的性能小钢炮 NUC8 如何在日常中发挥威力。

--EOF


本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2021年01月31日
统计字数: 6218字
阅读时间: 13分钟阅读
本文链接: https://soulteary.com/2021/01/31/nuc-notes-linux-system.html