MS-NH1-W10にDebian 12を導入して省電力サーバ化する

マウスコンピューターの初代スティックPC「MS-NH1-W10」は、手のひらに収まる極小の筐体にクアッドコアのインテル Atom Z3735F、2GBのメインメモリ、32GBのeMMCを搭載したエポックメイキングな端末でした。しかし、スペックに対して過度に肥大化したWindows 10では日常的なブラウジングすらもたつき、常時稼働させるには極めて厳しい処理速度に陥っていました。

スティックPC「MS-NH1」にIntel純正クーラーを装着

さらにWindows 10の公式サポート期限が到来することを受け、セキュリティ面からもOSの更新、あるいは機器自体の廃棄を迫られる状況となりました。小型軽量かつ低消費電力という物理的な特性は、家庭内のマイクロサーバとして非常に優れた資質を備えています。ハードウェアの寿命を迎える前に、余計なリソースを消費しない軽量なLinuxを導入し、常時稼働の省電力ヘッドレスサーバとして再生を図ることにしました。

目次

広告

本投稿の目標

今回の延命化における実用基準は、外付けのUSBハブや有線LANアダプタ、USB Wi-Fiドングルなどの外部機器を一切増設せず、ハードウェア本体の機能のみで完結させる点にあります。

ディスプレイ、キーボード、マウスをすべて取り外した状態で、電源投入後に内蔵ストレージ(eMMC)から自動でOSが起動すること。さらに、内蔵Wi-Fi経由で自動的にローカルネットワークへ参加し、ブラウザから遠隔管理可能な状態を維持できること。

Ubuntu 26.04で直面した32bit UEFI破損とLinux 7.0の洗礼

当初は最新の長期サポートを見据えて「Ubuntu 26.04 minimal」の導入を試みましたが、変則的なハードウェア設計と最新カーネルの仕様変更による多重の障壁に直面しました。

MS-NH1-W10を含むBay Trail世代の端末は、「CPUは64bit命令セットに対応しているが、マザーボードのUEFIファームウェアは32bitで動作する」という変則的な構成(いわゆるMixed-mode UEFI)を採用しています。通常の64bit版インストーラを使用すると、32bit用のブートローダ(bootia32.efi)が生成されず、インストール処理の最終段階でGRUBの書き込みに失敗してシステムがクラッシュします。

さらに致命的だったのが、内蔵Wi-Fiチップである Realtek RTL8723BS(SDIO接続)の挙動です。Ubuntu 26.04が採用するLinux 7.0系カーネルでは、ネットワークスタックやパケットバッファ(skb)の内部構造が大幅に近代化されています。しかし、RTL8723BSのドライバは長年カーネルの「staging(開発途上)」ツリーに放置されており、最新のパケット処理ロジックに追従できていません。

その結果、Wi-Fi通信を試みた瞬間にパケット結合エラーが発生しました。

rtl8723bs mmc0:0001:1 wlan0: xmit_xmitframes: coalesce failed with error -22

ドライバが規格外の壊れたフレームを送出したことで、端末側は ASSOCIATING -> 4WAY_HANDSHAKE -> DISCONNECTED というミリ秒単位の無限切断ループに陥りました。大量の破損フレームと接続要求が浴びせられた結果、家庭内ルーターの通信デーモンが飽和し、ルーター本体が巻き添えで再起動を繰り返すパケットストーム事故へと発展しました。

Debian 12の採用と枯れたカーネル世代による安定化

最新カーネルとレガシードライバの絶望的な摩擦を解消するため、OSの選定方針を根本から見直し、安定版である「Debian 12 (Bookworm)」へ移行しました。

Debian 12の公式 amd64 インストールメディアは、標準で32bit UEFI用のブートファイル(bootia32.efi)を同梱したMulti-Arch仕様となっています。インストーラ自身がマザーボードのファームウェア仕様を自動検出し、OS本体は高効率な64bitを導入しつつ、ブートローダには32bit用の grub-efi-ia32 を自動構成するため、手動でのバイナリ工作を一切必要とせずに内蔵ストレージからの起動環境が整います。

Debian 13(Trixie)のKernel 6.12系でも動作する可能性は残されていますが、サポート期限の観点から将来的なアップグレードが必要になるリスクを理解した上で、今回は検証に伴うルーター落ちのリスクを完全に排除し、Kernel 6.1 LTSを搭載するDebian 12を選択して確実に安定稼働させる道を選びました。

インストーラメニューでは、描画負荷やメモリ消費を最小化するために通常のテキストモード(Install)を選択し、インストーラ終盤の「ソフトウェアの選択」画面でデスクトップ環境のチェックをすべて外し、標準ユーティリティとSSHサーバのみを選択して導入します。

導入後、Debian特有のセキュリティ仕様により一般ユーザーにsudo権限が付与されていないため、コンソールからroot環境へ移行して権限を付与し、作業効率向上のためデフォルトエディタをvimへ固定しました。


# rootセッションへ移行
su -

# sudoパッケージの導入と一般ユーザーへの権限付与
apt update
apt install -y sudo vim
usermod -aG sudo ユーザー名

# デフォルトエディタをvimに切り替え
update-alternatives --config editor
exit

Kernel 6.1 LTS環境下では、Ubuntuで発生していたパケット結合エラー(-22)は一切発生せず、RTL8723BSの内蔵Wi-Fiはルーター側の2.4GHz帯へ極めてスムーズにハンドシェイクを完了しました。

Cockpitの導入とlm-sensorsによる熱暴走対策

ディスプレイや入力機器を取り外して運用するため、Webブラウザ経由でシステムを集中管理できる「Cockpit」を導入しました。Cockpitはソケット待機(Socket Activation)によりブラウザから接続された瞬間のみ稼働するため、アイドル時の常駐メモリを浪費しません。


# Cockpitの導入とソケットの有効化
sudo apt update
sudo apt install -y cockpit
sudo systemctl enable --now cockpit.socket

また、MS-NH1-W10は極小のファンレス・超小型ファン構造であり、放熱性能に余裕がありません。サーマルスロットリングや熱暴走を監視するため、ハードウェアセンサー読み取りツールの lm-sensors と、Cockpit用拡張プラグイン cockpit-sensors を導入してCPU温度を可視化しました。


# ハードウェアセンサー検知ツールの導入
sudo apt install -y lm-sensors
sudo sensors-detect --auto

# Cockpit用センサープラグインの導入
cd /tmp
curl -s https://api.github.com/repos/ocristopfer/cockpit-sensors/releases/latest

| grep "browser_download_url.deb"

| cut -d : -f 2,3

| tr -d "

| wget -qi -
sudo dpkg -i cockpit-sensors.deb
sudo apt-get install -f -y

# Webブラウザから以下のURLへアクセスすることで、ダッシュボード上にリアルタイムのCPU温度ゲージが統合されます。

https://スティックPCのIPアドレス:9090

内蔵ストレージ単独起動の達成とシステムリソースの実測値

すべての周辺機器を抜き、電源ケーブルのみを接続した状態で再起動試験を実施しました。内蔵eMMCの32bit UEFI領域からDebian 12が手動介入なしで自律起動し、内蔵Wi-Fiを経由して数十秒でネットワークへ接続されることを確認しました。

ブラウザのCockpitダッシュボードおよびコンソール上で測定したシステムリソースの実測データは以下の通りです。

# free -h
total used free shared buff/cache available
Mem: 1.9Gi 391Mi 839Mi 976Ki 825Mi 1.5Gi
Swap: 975Mi 0B 975Mi

# df -h /
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mmcblk2p2 27G 2.1G 24G 9% /</pre>
# sensors
soc_dts1-virtual-0
Adapter: Virtual device
temp1: +41.0°C

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +41.0°C (high = +90.0°C, crit = +90.0°C)
Core 1: +41.0°C (high = +90.0°C, crit = +90.0°C)
Core 2: +42.0°C (high = +90.0°C, crit = +90.0°C)
<pre>

GUI環境を完全に排したことで、OS起動直後のメモリ使用量は約118MB、ストレージ使用量は1.8GBに抑え込まれました。待機時のCPU温度も46〜47℃前後で極めて安定しており、ファンレス運用でも熱的な危険域に入ることなく、安定した常時稼働環境が構築できました。

まとめ

動作が重くサポート期限を迎える初代スティックPC(MS-NH1-W10)を省電力Linuxサーバへ再生しました。Ubuntu 26.04では32bit UEFIとLinux 7.0系カーネルによるWi-Fiドライバの自爆事故に見舞われましたが、Multi-Arch仕様とKernel 6.1 LTSを備えるDebian 12を採用することで諸問題を根本解決しました。内蔵機能のみでの完全自動起動とWi-Fi常時接続を達成し、Cockpitによる温度監視体制のもと、メモリ消費約118MBの超軽量ヘッドレスサーバとして安定稼働を実現しました。