NUC 折腾笔记 - Linux 系统篇
创作立场声明:本文所测商品为自费购入,已在文中点明。坚持独立的评价观点是笔者创作的基本底线,绝不会因商品来源不同而有所偏颇,请各位放心。
写一篇迟到的折腾笔记:NUC8 8i5beh 。原本计划折腾 Hackintosh ,最后折腾了一台 Linux Homelab 设备。
本篇记录 NUC 基础系统配置中的一些细节。
写在前面
2021 年的第一个月,因为众所周知的原因,NUC 11 的到货迟到成为了现实,10 代产品的本地货源在两周前也比较捉急,好在口碑爆表的 8 代 NUC 的货源还是非常充足的,性价比也同样占优。
加上正巧最近在折腾 MacOS 客户端,心说如果 NUC 8 代产品靠谱的话,相比较笔记本来说无屏幕、功耗更低来说持续跑一些程序的话,优势还是不小的。(便宜大碗、坏了不心疼呀)
于是在网上找了一家“出售成套方案、到手即用”的店铺,入手了一台经典神机 NUC8(8i5beh),在 NUC 到手后通电后,产生了三个想法:
NUC 8 性能真不错,系统运行顺滑,但是在运行 Mac OS 时,风扇瞬间起飞(比MacBook 编译程序还要暴躁),散热是真的有压力,还好没有入手 NUC8 i7 版本以及 NUC 10 跑这个场景。NUC 11 应该值得等待,制程优化带来的散热问题应该有好转(已在 M1 Mac 上验证),加上性能也有质变,希望年后物流速度尽快恢复吧。虽然网上资料更多的是用 NUC 8 做 Hackintosh,但或许 Linux 或许更适合它,对核显需求更低、发热更低,加上本身不错的计算能力和扩展能力。
为了验证第三个想法,开始了折腾之旅。
Ubuntu 20.04 安装
考虑偶尔可以使用 HDMI 接显示器使用,并且想更省事的使用“官方默认”的 VNC 功能,所以这次的安装采用 Desktop 版本。
如果你不需要 VNC 和 Wi-Fi 功能,完全可以使用 Server 版镜像,毕竟复杂性更低,相对可靠性更高嘛。
启动盘制作
Mac 下的启动盘制作方案非常多,这里推荐一个“跨端”方案: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.com 和 security.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/1878045https://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 的数据盘
使用 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-with-mirror.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日 统计字数: 6230字 阅读时间: 13分钟阅读本文链接
OnLeaks
校验提示文案
TimoNing
校验提示文案
悬崖2011
校验提示文案
值友9125045258
校验提示文案
KingWong
校验提示文案
雨啊
校验提示文案
瑞士小熊
校验提示文案
soulteary
校验提示文案
DJ201204052848
校验提示文案
花随风去
校验提示文案
24k双花红棍
校验提示文案
AlphaTheta
校验提示文案
极速悍将
校验提示文案
东门张
校验提示文案
超级小吉祥
校验提示文案
littleneko
校验提示文案
虫-虫
校验提示文案
浮光yc
校验提示文案
清风X明月
校验提示文案
皮卡秋OO
校验提示文案
liu112
校验提示文案
皮卡秋OO
校验提示文案
清风X明月
校验提示文案
浮光yc
校验提示文案
虫-虫
校验提示文案
littleneko
校验提示文案
超级小吉祥
校验提示文案
雨啊
校验提示文案
东门张
校验提示文案
极速悍将
校验提示文案
AlphaTheta
校验提示文案
24k双花红棍
校验提示文案
花随风去
校验提示文案
DJ201204052848
校验提示文案
KingWong
校验提示文案
值友9125045258
校验提示文案
悬崖2011
校验提示文案
soulteary
校验提示文案
TimoNing
校验提示文案
瑞士小熊
校验提示文案