DN2820FYKH に Debian をインストールする †
背景 †
- NUC
Next Unit of Computing。発想としては、 IoT (Internet of Things)に近い。
Intel のことだから、x86 の CPU を使ってほしいし、これまでの遺産が受け継がれますよ、ということ。
その割には Debian GNU/Linux がすんなり入らない。
ハードウエア †
- NUC DN2820FYKH について
- マシンの構成
| 型番 | 購入価格 |
本体 | NUC DN2820FYKH (celeron N2820 DDR3 ベアボーン) | 17980 |
SSD | ADT ASP600S3-128GM-C 7mm(2.5" SATAIII 128GB) | 7580 |
メモリ | ADT ADDS1600W4G11-R(SODIMM DDR3L-1600 4GB) | 4630 |
合計 | | 30190 |
Debian (wheezy) の導入 †
- BIOS
- NUC DN2820FYKH の BIOS のアップグレード
- ダウンロード
ダウンロードページ
ダウンロードページから FY0025.BIO (2014-03-16 (日) 13:13:50で最新)を選んで USBメモリに入れる。
- 更新
上記 USB メモリを挿して起動する。F7 を押してアップグレードできる。
これまで BIOS のバージョンは 0015 だった。これで 0025 になった。
- BIOS の設定
※ このマシンは BIOS の設定が結構重要なようだ。
- Intel の説明
1. USB3.0(XHCI mode)をEnable に。(しかし、残念ながら、USB menu に USB3.0 (XHCI mode) support の項目はない!)
2. SATA を AHCI に(最初からなっている。)
3. Legacy Boot に。UEFI Boot のチェックを外す。
4. Boot Configuration を Windows 8 に。(最初からなっている。)
- ネットワークカード
BIOS を調べると Advanced > On Board Peripheral > LAN のチェックを入れる。
(ネットワークカードが Debian Live CD では認識できなかったことで発覚。)
- Debian Live CD
Live CD を用いてインストールした。ところが、起動が不安定であった。Live CD からも、インストールしたシステムからも。(後述)
- ダウンロード
別のマシンでDebian のサイト から debian-live-7.4-amd64-standard.iso を選んでダウンロード。
- 作成
そのマシンで焼いて作成。
- インストール
- Live CD から指示にしたがってインストール。
- 追加で入れたパッケージ
起動しない問題と解決 †
- 問題点
Live CD も、SSD にインストールしたシステムも、起動が極めて不安定である。時々、うまくいくようで、
時々うまくいかない。うまくいかないときには、次のような症状が出る。
いつものように、こういうことが起こると、とても嫌な感じになる。Google 先生がすぐ教えてくれるならいいけど。
- 例1
SQUASHFS error: squashfs_read_data failed to read block
完全にハングアップする。
- 例2
[ 0.840672] xhci_hcd 0000:00:14.0: can't find IRQ for PCI INT A; probably buggy MP table
...
[ 6.521303] xhci_hcd 0000:00:14.0: Timeout while waiting for address device command
[ 6.725268] xhci_hcd 0000:00:14.0: ERROR no room on ep ring
[ 6.725330] xhci_hcd 0000:00:14.0: ERR: No room for command on command ring
[ 6.929292] usb 1-4: device not accepting address 4, error -12
入力ができなくなる。ネットワーク経由で入れる。
- 例3
usb 3-1: device not accepting address 2, error -110
ehci_hcd 0000:00:1d.0: port 1 reset error -110
時間がかかってこんなメッセージが表示される。USB デバイスは使えなくなる。
- 例4
fast TSC calibration failed
起動する前にメッセージが出て止まる。
- 考えたこと
症状に再現性がないのは、モジュールの読み込みのタイミングなどが少しずれたりするからかと思う。
とくに、ehci(USB 2.0)や xhci(USB 3.0) といった USB デバイスが問題のようである。そこで、
次のような対策が考えられる。
- USB デバイスを外して起動
そもそもタイミングがずれるのは、とくに光学ディスクのデバイスの認識に時間差があるからかな、
と想像される。(ほんとかな?)そこで、デバイスを外して起動すれば、再現性が高くなるのではないか。
→ 関係なさそう。
- ehci_hcd を外して起動
USB 2.0 のドライバである ehci_hcd を読み込ませないようにする。
/etc/modprobe.d/blacklist.conf を作成し、
blacklist ehci_hcd
blacklist pcspkr
とする。ちなみに、pcspkr (PC Speaker, PC のビープ音のためのモジュール)も引っかかったし、不必要
なので読み込まない。
→ とりあえず起動するようになった。
- カーネルの更新
Google で検索すると、多くの場合、カーネルのバクであるとされている。Ubuntu 13.10 (2013年10月リリース)は起動するようである。
そこで、このページを参考にカーネル 3.12 を入れてみる。
注:
・CONCURRENCY_LEVEL の後の数字は、CPU のコアの数+1 を設定するようだ。
・このマシンで、カーネル作成に 1時間40分ぐらいかかった。
# cd /usr/src/
# apt-get install fakeroot kernel-package
# wget -c https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.12.tar.xz
# tar -xvJf linux-3.12.tar.xz
# cd linux-3.12
# apt-get install libncurses5-dev
# cp /boot/config-`uname -r` .config
# make menuconfig
# make-kpkg clean
# export CONCURRENCY_LEVEL=3
# fakeroot make-kpkg --append-to-version "-customkernel" --revision "1" --initrd kernel_image kernel_headers
# dpkg -i linux-image-3.12.0-customkernel_1_i386.deb linux-headers-3.12.0-customkernel_1_i386.deb
→ 起動が早くなった。
- とりあえずの結論
次のようにする。
- ehci_hcd を読み込まないようにする。
- カーネルを 3.12 にする。
無線LAN Intel 7260 の認識 †
- 問題点
無線LAN(Wifi)用に Intel 製品 7260BN が内蔵されている。ところが、これが認識されていない。これを認識させる必要がある。
- 解決策
- ファームウエアの導入
non-free でパッケージ化されている。ところが、wheezy のパッケージには、7260 用のファームウエアが入っていない。そこで、sid
のパッケージをここからダウンロードする。そして導入。
# dpkg -i firmware-iwlwifi_0.41_all.deb
- カーネルモジュール
これで、
# modprobe iwlwifi
を行えば認識すると思った。しかし、なぜか、コンパイルした kernel 3.12 で認識しない。調べてみると、カーネルのソースコードには
iwl-7000.c というファイルがあるのに、コンパイルされていない。make menuconfig でこれをコンパイルするための設定を探したけれど
見つからない。そこで、諦めて、別途コンパイルすることにする。ここを参考にした。
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.11-rc3/backports-3.11-rc3-1.tar.bz2
# tar xjf backports-3.11-rc3-1.tar.bz2
# make defconfig-iwlwifi
# make
# make instal
# modprobe -r iwlwifi
# modprobe iwlwifi
ちょっと気持ち悪いけど、これで認識した。
カーネルのメッセージ †
https://bugs.freedesktop.org/show_bug.cgi?id=71392