結論
ヤフオクでジャンク扱いされているI-O DATAの4ベイNAS「HDL4-XA」は、中身がIntel Atom C3000搭載の普通のx86_64サーバでした。一発で間違いなく、debian 13.5 が完璧に入ります。

画面なし・キーボードなし・シリアルなしで、
USBブート → DHCP → SSH → 遠隔インストールが可能。
そしてこの構成、例によって安い。
| 品目 | 価格 |
|---|---|
| HDL4-XA(ジャンク・HDDなし) | ヤフオク相場数千円〜 |
| SATA SSD 128GB(手持ち) | 0円 |
| USBメモリ(手持ち) | 0円 |
| Debian 13.5 | 無料 |
| 合計 | ほぼ本体代のみ |
ただしヘッドレスインストールには罠がたくさんありました。わかってしまえばどうということはないのですが・・・。
この記事は、筆者と Claude AI とちゃっぴぃ の苦闘の全記録です。
罠の予告編
- 電源は入るのにDHCP要求が一度も飛ばない → 見えない言語選択画面で無言停止しています
- それでもDHCPが飛ばない → NICが2つあるせいで、見えないインターフェース選択画面で無言停止しています
- なぜかGNOMEデスクトップがフルインストールされる → taskselが黙ってデフォルトを採用しています
ヘッドレス機の恐ろしいところは、 全部「無言」 なこと。
画面がないので、止まっているのか進んでいるのか、LEDの点滅を見つめて祈るしかない。
この記事の目的は、祈りの結果を皆さんに共有することです。
環境
| 項目 | 内容 |
|---|---|
| 機体 | I-O DATA HDL4-XA(4ベイNAS、ヤフオクでジャンク入手) |
| CPU | Intel Atom C3338 @ 1.50GHz(2コア/2スレッド) |
| メモリ | 2GB |
| NIC①(10GbE) | Aquantia AQtion AQC107 [1d6a:07b1] / atlanticドライバ |
| NIC②(1GbE) | Realtek RTL8111/8168 [10ec:8168] / r8169ドライバ |
| インストール先 | SATA SSD 128GB |
| OS | Debian 13.5 (trixie) netinst amd64 |
| USB作成 | Rufus(ISOモード展開) |
| 作業環境 | 画面なし・キーボードなし・シリアルなし。LANケーブルと電源と根性とdhcpサーバ |
そもそもHDL4-XAは「普通のx86サーバ」です
インストーラのシェルからlspciを確認した結果:
- UEFIブート可能(普通のUEFIファーム。ARM系LANDISKと違ってU-Bootではない)
- USBメモリからLinuxインストーラが起動する
- SATAもNICも標準ドライバで認識
つまりこの作業は「NASのハック」ではなく、
たまたまNASの形をしたヘッドレスx86サーバへのDebian投入」 です。
対象機種(映像出力がなくてヘッドレス強制のシリーズ)
Atom C3000(Denverton)はそもそもiGPUを持たないSoCなので、
このファミリーは物理的に映像出力が存在しません。
| シリーズ | 形態 |
|---|---|
| HDL2-XA | 2ベイBOX |
| HDL4-XA | 4ベイBOX(本記事の実証機) |
| HDL4-XA-U | 4ベイ1Uラックマウント |
| HDL4-XA/M | 4ベイBOX(特定用途版) |
| HDL2-XAB / HDL4-XAB | 5年保証付き後継。ハードは同系 |
| /TM5・/RM等の各バリアント | 型番違いの同系機 |
一方、お隣のシリーズには逃げ道があります:
- H/HEXシリーズ(HDL4-HEX等):背面にD-sub 15ピンあり。画面が出せるのでヘッドレス強制ではない
- Xシリーズ(HDL2-X等、XAの先代):Celeron N3010搭載で、DELまたはF2連打でBIOS画面に入れるとの報告あり
- HAシリーズ:同じDenverton系ですが映像出力の有無は未確認(情報求む)
- ARM系LANDISK(HDL-A、HDL-T等):ヘッドレスだけどARMなのでUART/u-bootの世界。本記事の手法は適用外
全体の流れ
USB起動
↓ (質問画面を出さない魔法の呪文つき)
DHCP取得(1GbE側)
↓
network-consoleがSSH待受
↓
ssh installer@<IP> でログイン
↓
SSH越しにいつものインストーラ画面が出る
↓
再起動 → 本番DebianにSSH → 完成
USBメモリの準備
-
debian-13.5.0-amd64-netinst.isoをRufusのISOモードでUSBに展開(パーティション構成だけGPTに変更。他は既定値。FAT32なのでWindowsからそのまま編集できます)
- USBのルート直下に
preseed.cfgを配置 -
/boot/grub/grub.cfgを書き換え
注意:どのgrub.cfgが読まれているのか問題
DebianのISOのUEFIブートチェーンはこうなっています:
EFI/boot/bootx64.efi
→ EFI/debian/grub.cfg
→ source $prefix/x86_64-efi/grub.cfg
→ (通常)source /boot/grub/grub.cfg
/boot/grub/x86_64-efi/grub.cfg の末尾が /boot/grub/grub.cfg をsourceしているのを
確認してから編集しましょう。
ここを確認せずに編集すると、**「一度も読まれていない設定ファイルを相手に、起動しない原因を延々と探す」**という虚無の時間が発生します。
grub.cfg
set timeout=3
set default=0
menuentry "Debian 13 Headless Install (1GbE only / network-console)" {
set gfxpayload=keep
linux /install.amd/vmlinuz modprobe.blacklist=atlantic auto=true priority=critical language=en country=JP locale=en_US.UTF-8 keymap=jp hostname=hdl4xa domain=local netcfg/choose_interface=auto netcfg/dhcp_timeout=60 netcfg/link_wait_timeout=15 preseed/file=/cdrom/preseed.cfg anna/choose_modules=network-console network-console/password=xxxxxxxx network-console/password-again=xxxxxxxx hw-detect/load_firmware=true --- quiet
initrd /install.amd/initrd.gz
}
呪文の解説(=罠の回避策そのもの)
auto=true priority=critical(罠①の対策)
これがないと、インストーラは起動直後の言語選択画面で入力を待ち続けます。
画面がないので、外から見ると「電源は入るのにDHCPが一度も飛ばない」ようにしか見えません。
最初の失敗はこれでした。
modprobe.blacklist=atlantic(罠②の対策・本記事の本丸)
本機はNICが2つ(10GbEのAQC107と1GbEのRTL8111)あるため、
netcfg/choose_interface=auto を指定していても、インターフェース選択の質問に落ちて無言停止します。
そこで10GbE側のatlanticドライバをカーネルレベルで無効化し、
インストーラから見えるNICを1GbEの1個だけにしてしまいます。
ポイントは2つ:
-
netcfg/choose_interface=enp3s0のような名前決め打ちは避けました。d-iと本番カーネルでNIC名がズレた場合、また無言停止して原因が見えなくなるからです。NICを物理的に1つにするほうが確実 - blacklistは
---より前に置いてあるので、インストール後の本番Debianには引き継がれません。再起動後はatlanticが普通にロードされ、10GbEはちゃんと使えます(実機確認済み)
netcfg/link_wait_timeout=15 — r8169のリンクアップに数秒かかる場合の保険。
hw-detect/load_firmware=true — Debian 12以降のnetinstはnon-freeファームウェア同梱。読み込み確認の質問を潰します。
preseed.cfg
方針は「SSHで入るまでを自動化、パーティション等はSSH上で手動」の最小構成です。
#_preseed_V1
### ロケール・キーボード(カーネル引数と重複=保険)
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/xkb-keymap select jp
### ネットワーク
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string hdl4xa
d-i netcfg/get_domain string local
d-i netcfg/dhcp_timeout string 60
d-i netcfg/link_wait_timeout string 15
d-i netcfg/wireless_wep string
### network-console(SSHでインストーラに入る)
d-i anna/choose_modules string network-console
d-i network-console/password password xxxxxxxx
d-i network-console/password-again password xxxxxxxx
### パッケージ選択
# 【重要】これを書かないとGNOMEがフルインストールされます(一敗)
tasksel tasksel/first multiselect standard, ssh-server
popularity-contest popularity-contest/participate boolean false
罠③:GNOMEが勝手に入ってくる
初回インストール時、taskselの2行を書いていませんでした。結果:
- パッケージ選択画面は一度も表示されず
- 非力なAtomが黙々と何かをインストールし続けること15分
- 「あれ?フルパッケージで入った感じだよ?」
- 気づいたときにはGNOMEデスクトップ完備のNASが誕生していました
誰も画面を見ることのないヘッドレスNASに、フル装備のデスクトップ環境。切ない。
原因は priority=critical の挙動で、質問の種類によって動きが違います:
| 質問の種類 | critical下の挙動 | 例 |
|---|---|---|
| デフォルト値なし | ちゃんと表示される | パスワード設定、パーティション確認 |
| デフォルト値あり | 無言でデフォルト採用 | tasksel、ミラー選択 |
taskselのデフォルトは「デスクトップ環境入り」なので、preseedで明示しない限りGNOMEが入ります。
「手動で答えたい質問」がデフォルト値持ちの場合は、preseedに書くか、
SSH接続後・Start installer前にメニューの「Change debconf priority」で優先度を下げるかの二択。
再現性の観点からpreseed明示をおすすめします。
(なおこの2行を入れた再インストール2周目は、想定通り最小構成で入りました。検証済み)
実行
- USBを挿して電源ON。3秒後に自動起動
- 2〜3分待つ(ここが最初のドキドキタイム)
- ルータのDHCPリース一覧で本機1GbEのMACアドレスを探し、IPを特定
- SSH接続:
ssh installer@<IP>
パスワードはgrub.cfg / preseed.cfgに書いた network-console/password の値です。
- メニューから Start installer を選択。以降、見慣れたdebianのウィザードがSSH上に表示されます
別セッションでシェルも取れる
もう1本SSHを張ってメニューから Execute a shell を選ぶと、インストーラ環境の生シェルが取れます。
進める前にこれだけ確認しておくと安心:
ip a # NICが1GbEの1個だけ見えていること
lsblk # インストール先SSDのデバイス名を目視確認
パーティション画面で消す対象を間違えると泣くので、lsblkの目視は強く推奨します。
再起動後
USBメモリを抜いてから再起動します。
ssh <ユーザー名>@<IP>
確認:
ip a # 1GbEにDHCPでIPが付いている
lspci -k | grep -A3 Ethernet # r8169もatlanticも両方ロード済み
cat /etc/debian_version # 13.5
blacklistはインストーラ限定なので、本番環境では10GbE(AQC107)もatlanticドライバでちゃんと認識されます。
IP未設定で上がってくるだけなので、あとから好きに設定してください。
おまけの罠④:USBの抜き忘れ
再起動後、「IPは振られてSSHも繋がるのに、設定したパスワードで入れない!」という現象に遭遇したら。
……それ、USBからもう一周インストーラが起動しています。
インストーラ環境もnetwork-consoleでsshdが上がるため、SSHが「繋がってしまう」せいで
かえって気づきにくいのが意地悪ポイント。設定したユーザーはSSDの中にいるのに、
あなたが今ログインを試みているのはUSBの中の世界です。そんなことってある?(ありました)
再起動前のUSB抜去、チェックリストに入れましょう。
完成後のハードウェア全体像(ドライバ、全部当たってます)
「で、本当に普通のLinux機として完成してるの?」への回答として、本番環境の実機出力を貼ります。
カーネルとCPU
$ uname -a
Linux hdl4xa 6.12.95+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.95-1 x86_64 GNU/Linux
$ lscpu | grep -E "Model name|Core|Thread"
Model name: Intel(R) Atom(TM) CPU C3338 @ 1.50GHz
Thread(s) per core: 1
Core(s) per socket: 2
$ free -h
total used free buff/cache available
Mem: 1.9Gi 215Mi 1.7Gi 88Mi 1.7Gi
Swap: 2.0Gi 0B 2.0Gi
CPUは**Atom C3338(2コア/2スレッド)**と確定。メモリは2GB。
アイドルで215MiBしか使っていないので、NAS用途なら十分に戦えます。
lspci -nnk(本記事のハイライト)
00:12.0 System peripheral: Intel Atom C3000 SMBus Controller - Host
Kernel driver in use: ismt_smbus
00:14.0 SATA controller: Intel Atom C3000 SATA Controller 1
Kernel driver in use: ahci
00:15.0 USB controller: Intel Atom C3000 USB 3.0 xHCI Controller
Kernel driver in use: xhci_hcd
00:1a.0 Serial controller: Intel Atom C3000 HSUART Controller
Kernel driver in use: 8250_mid
00:1a.1 Serial controller: Intel Atom C3000 HSUART Controller
Kernel driver in use: 8250_mid
00:1f.4 SMBus: Intel Atom C3000 SMBus controller
Kernel driver in use: i801_smbus
01:00.0 Ethernet controller: Aquantia Corp. AQtion AQC107 [Atlantic 10G] [1d6a:07b1]
Kernel driver in use: atlantic
03:00.0 Ethernet controller: Realtek RTL8111/8168/8211/8411 [10ec:8168]
Kernel driver in use: r8169
(紙面の都合でPCIeルートポート等は省略。ME HECIやSPIコントローラなど
ファームウェア管理系のブロックを除き、実用デバイスは全て Kernel driver in use: 付きです)
注目ポイントは3つ:
① atlanticとr8169が両方当たっている。
インストーラで modprobe.blacklist=atlantic により封印した10GbEも、
本番では何事もなかったかのように目を覚ましています。blacklistがインストーラ限定である証拠。
② HSUARTコントローラが2つ居る。
シリアルコンソールの魂は、SoCの中でちゃんと生きていました。外に端子が出ていないだけ。
基板上のパターンを探せばシリアルコンソールを生やせる可能性があります(未検証。誰かやりませんか)。
③ 標準カーネルのinboxドライバだけで完結。
ベンダー提供の謎ドライバ、カーネルのピン止め、DKMSの類は一切なし。
今後のapt upgradeで壊れる要素が最初から存在しません。
NICとストレージ
$ ip -br a
lo UNKNOWN 127.0.0.1/8
enp3s0 UP 192.168.0.25/22(+ IPv6)
enp1s0 DOWN
$ lsblk -o NAME,SIZE,MODEL,TRAN
NAME SIZE MODEL TRAN
sda 119.2G SAMSUNG MZ7TE128HMGR sata
├─sda1 976M
├─sda2 116.3G
└─sda3 2G
enp3s0(1GbE)が現役、enp1s0(10GbE)はケーブル未接続でDOWNなだけで認識済み。
まとめ
| 症状 | 原因 | 対策 |
|---|---|---|
| DHCPが飛ばない | 見えない言語選択で無言停止 | auto=true priority=critical |
| それでもDHCPが飛ばない | 2NICでインターフェース選択停止 | modprobe.blacklist=atlantic |
| GNOMEが勝手に入る | taskselが無言でデフォルト採用 | tasksel tasksel/first multiselect standard, ssh-server |
| パスワードが通らない | USB抜き忘れでインストーラ再演 | 再起動前にUSBを抜く |
ヘッドレスインストールの敵は難しさではなく、**「無言」**でした。
止まる場所さえ分かってしまえば、あとは呪文を4つ唱えるだけ。
ジャンク棚で緑のLEDを点滅させているHDL4-XAは、
10GbE付きAtomサーバとして第二の人生を待っています。
そして気づく。
あ、これもう専用OSに戻れないやつだこれ。

