先說心得。

買這台 11 代 i3 Intel NUC 迷你主機主要是當文書機,正式服役前被我借來裝 Debian 玩。入手後有先裝過 Windows 10 驗測硬體,安裝體驗很讚,不需額外下載任何驅動程式,裝完重開機裝置管理員就很完美,無不明裝置,無問號,不愧是 Intel。但如果你裝的是 Linux ,就是另一個世界了。

thumbnail

想裝 Linux 但不想太麻煩,對版本也沒堅持,可參考官方建議裝廠商認證相同的 Ubuntu 16.04 LTS 或 LibreElec 較省事。否則,你有很大的機會被迫參加顯示晶片或無線網卡的副本任務,宛如玩一場 RPG 冒險遊戲,不斷查攻略換武器試新路線,有工程師魂的人會在其中得到額外的樂趣,但前題是問題最後有被解掉,不然只會留下滿滿的賭爛。

因為放不下駭客情懷,Linux 版本我沒選正常人該選的 Ubuntu,而是挑了 Debian。有先做了功課,知道使用 Non-Free Firmware 安裝 Image可以省去額外找 NUC 無線網卡驅動的麻煩,而安裝過程果然順利識別出無線網卡:

順利走完安裝最後一步準備重開機,正當我覺得在 Intel NUC 裝 Linux 的體驗跟 Windows 一樣美好之際,Debian 重開機後隨即畫面全黑,螢幕顯示沒有偵測到視訊訊號,但鍵盤燈反應正常,感覺就是顯示驅動出了問題。

爬文發現這是 Linux 跟 Intel 顯示晶片相容的常見問題,不是 Debian 的專利,Ubuntu、Fedora 也有案例,也不只發生在 Intel NUC,在其他機型也會發生。Google 關鍵字 linux boot blank screen 能查到一大堆文章。研究跟嘗試了很久,大約知道是 Linux 核心與顯示晶片的相容問題,我對這塊所知有限,看不出個所以然,但最後摸索出 Workaround 避開問題的做法。(逃避雖可恥但有用呀!)

在 GRUB 畫面按 e 編輯啟動參數:圖片來源

找到下圖箭頭所指那行最後 quite,改成 quiet splash nomodeset,按 F10 開機:

新版 Linux 已將顯示模式設定移入核心,以便在開機階段使用較高解析度顯示,轉換到 Login 畫面時畫面也較不會閃動。設定 nomodeset 就不會啟用顯卡正式運作模式,改以 BIOS 模式運作,直接啟用 X 視窗為止。BIOS 顯示模式解析度底,字型醜,也沒省電功能,但好歹能看到畫面做事。我的 Debian 要當伺服器,以 ssh 遠端登入操作為主,讓我能用 BIOS 顯示模式設好網路及 SSH 伺服器就夠了。

能登入 Debian 後,第一次事要把 nomodeset 加進 GRUB 設定,不然每次開機都要按 e 改參數才有畫面。

su -
nano /etc/default/grub

在 GRUB_CMDLINE_LINUX_DEFAULT 加入 splash nomodeset。

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
GRUB_CMDLINE_LINUX=""

存檔後記得 update-grub 儲存,reboot 重開機就會自動改用 BIOS 顯示模式。除了 nomodeset,還有一些其他處理硬相容的啟動參數,可參考這篇整理:acpi_osi=linux、 nomodeset是什麼意思? by Gopher is cute

接著,我發現 Debian 有抓到無線網卡但沒啟動,安裝過程輸入 WiFi SSID 密碼的程序是安裝時期專用的,不會存成系統設定,故要手動設定無線網路。

用 ip a 找到無線網卡裝置名稱,我的是 wlo1,它在第一張照片也有出現過。ip link set wlo1 up 啟用無線網卡,接著修改 /etc/network/interfaces 設 基地台 SSID、密碼等:參考

su -
ip a
ip link set wlo1 up
nano  /etc/network/interfaces

DHCP 範例:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# WiFi
auto wlo1
iface wlo1 inet dhcp
wpa-ssid *****
wpa-psk ******

靜態 IP 範例:

auto wlo1 
iface wlo1 inet static 
address 192.168.0.100 
netmask 255.255.255.0
gateway 192.168.0.1 
dns-nameservers 192.168.0.1 8.8.8.8
wpa-ssid ***** 
wpa-psk ******

設定 reboot 重開機,無線網路就會在連線狀態了。

我選用的安裝媒體 debian-live-11.4.0-amd64-standard+nonfree.iso 安裝過程沒有地方挑選要安裝的項目,SSH 伺服器預設未啟用,要使用以下指令安裝:

sudo apt-get update
sudo apt-get install openssh-server

確定可以 ssh 登入,小主機當伺服器平時不接螢幕,顯示卡問題就不花時間解決了。

sudo dmesg 檢查,有以下紅字裝置錯誤:

DPC: RP PIO log size 0 is invalid
DPC: RP PIO log size 0 is invalid
iwlwifi 0000:00:14.3: firmware: failed to load iwl-debug-yoyo.bin (-2)
firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
snd_hda_intel 0000:00:1f.3: Cannot probe codecs, giving up

爬文,RP PIO log size 在 Dell 與 Lenovo 筆電上也常出現,與 Tiger Lake-LP Thunderbolt 4 PCI Express Root 有關,推測不嚴重。無法載入 iwl-debug-yoyo.bin 是假訊息,有必要可手動改掉,而 snd-hda_intel 跟音效卡有關,對伺服器沒差,不用管。

至此,一台能當伺服器的 Intel UNC Debian 就算裝好了。


Comments

# by Jim

如果不是非Debian不可的話,建議intel NUC 可用 clear linux https://clearlinux.org/ 畢竟是intel 自己的

# by Jeffrey

to Jim, 感謝分享,已筆記。 不過,網路資源多以 Ubuntu, Debian, RHEL/CentOS 為範例,為硬體相容用冷門版本難免寂寞空虛覺得冷 :P

# by Jackson273

https://bits.debian.org/2022/08/debian-turns-29.html Debian turns 29! On Tue 16 August 2022 Debian 慶生就是那麼樸實無華 XD

# by Jeffrey

to Jackson273, 雖然還是 C 語言麻瓜也不會編譯核心,Debian 的自由、分享精神讓我無恥地覺得也是 Debian 社群一員,哈。Debian 生日快樂!

Post a comment