#topicpath ** DN2820FYKH [#k9c9b07c] *** 背景 [#q05022b3] - [[NUC>http://ja.wikipedia.org/wiki/NUC]]~ Next Unit of Computing。発想としては、 [[IoT>http://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8E%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88]] (Internet of Things)に近い。~ Intel のことだから、x86 の CPU を使ってほしいし、これまでの遺産が受け継がれますよ、ということ。~ その割には Debian GNU/Linux がすんなり入らない。~ ~ - SSD~ SSD が安くなってきた。しかも、寿命についてハードウエアの向上もあれば、[[ソフトウエア的な対策>../SSDとLinux]]についての情報も集めやすくなって~ きてる。これらを組み合わせると、エネルギー効率が高くて静かなシステムができるはずである。~ ~ - 一般的な NUC の使われ方?~ NUC は Raspberry Pi とかぶる使い方がされているようだ。[[OpenELEC>http://sourceforge.jp/projects/sfnet_openelec/]](Open Embedded Linux Entertainment Center)とか、~ [[XBMC>http://xbmc.inpane.com/main/setup/]](Xbox Media Center) とか、インターネット接続したメディアプレーヤーという位置づけで使われることもある。~ ちなみに、自分も、Raspberry Pi とこれをタイムラスプ/インターバル撮影用に使いたい。実家の防犯カメラは早く整備する必要がある。~ ~ *** ハードウエア [#x44f4c5a] - NUC DN2820FYKH について -- [[Intel のページ>http://www.intel.co.jp/content/www/jp/ja/nuc/nuc-board-dn2820fykh.html?wapkw=dn2820fykh]](Linux 対応と書いてあるが…) -- [[Intel のページ(ブリーフ)>http://www.intel.co.jp/content/www/jp/ja/nuc/nuc-kit-dn2820fykh-brief.html]]~ #style(class=table_left){{ | CPU | Celeron® プロセッサー N2820 (Atom の改良版らしい) | |メモリ| 別売 DDR3L SODIMM x 1 (1.35Vのもの)| |HDD or SDD | 別売 2.5 インチ HDD または SSD 搭載可能| |LAN | イーサネット・ポート + 無線LAN | |その他| ACアダプタつき| }} - 組み上げたマシンの構成 #style(class=table_left){{ | |型番| | 購入価格|h | 本体 |&amazon(B00HVKLSVC,image);|&amazon(B00HVKLSVC);|RIGHT: 17980 | | SSD |&amazon(B009SX6VLC,image);|&amazon(B009SX6VLC);(2.5" 7mm) |RIGHT: 7580 | |メモリ|&amazon(B00HY3WTZA,image); |&amazon(B00HY3WTZA);|RIGHT: 4630 | |合計| | |RIGHT: 30190 | }} ** Debian (wheezy) の導入 [#r3bae244] *** BIOS の設定 [#l9765272] - BIOS ++ NUC DN2820FYKH の BIOS のアップグレード~ --- ダウンロード~ [[ダウンロードページ>https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23606&ProdId=3782&lang=jpn&OSVersion=%0A%09%09%09%09%09%09%09%09%0A%09%09%09%09%09%09%09&DownloadType=]]~ ダウンロードページから FY0025.BIO (2014-03-16 (日) 13:13:50で最新)を選んで USBメモリに入れる。 --- 更新~ 上記 USB メモリを挿して起動する。F7 を押してアップグレードできる。~ これまで BIOS のバージョンは 0015 だった。これで 0025 になった。~ ++ BIOS の設定~ ※ このマシンは BIOS の設定が結構重要なようだ。 --- [[Intel の説明>http://downloadmirror.intel.com/23573/eng/DN2820FYK_OS_install_v01.pdf]]~ 1. Legacy Boot に。UEFI Boot のチェックを外す。~ 2. USB3.0(XHCI mode)をEnable に。(しかし、残念ながら、USB menu に USB3.0 (XHCI mode) support の項目はない!)~ 3. SATA を AHCI に(最初からなっている。)~ 4. Boot Configuration を Windows 8 に。(最初からなっている。)~ ~ --- 実際に設定した項目~ まず Advanced をクリックしてそこの設定項目を設定する。 1. Boot / Boot Priority : UEFI Boot のチェックを外す。~ 2. Boot / Boot Configuration : Windows 8.x を選んで(もUEFIではないので関係ないようにも思うけど)次の項目をチェック。~ Boot USB Devices First~ Boot Network Devices Last~ USB~ Optical~ Network~ 3. Boot / Secure Boot : 全てチェックを外す。~ 4. Devices and Peripherals / USB : USB Legacy にチェックを入れる。~ 5. Devices and Peripherals / SATA : Chipset SATA にチェックを入れ、AHCI モードにする。~ 6. Devices and Peripherals / Onboard Devices : 全てにチェックを入れる。~ (ネットワークカードが Debian Live CD では認識できなかったことで発覚。)~ ~ *** ネットワークインストール [#b507ff5a] - Debian Live CD~ Live CD を用いてインストールした。ところが、起動が不安定であった。Live CD からも、インストールしたシステムからも。(後述) -- ダウンロード~ 別のマシンで[[Debian のサイト>http://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/]] から debian-live-7.4-amd64-standard.iso を選んでダウンロード。 -- 作成~ そのマシンで焼いて作成。 - インストール~ -- Live CD から指示にしたがってインストール。 -- 追加で入れたパッケージ --- 目的に応じて入れたパッケージ~ apache2 ffmpeg mplayer mencoder pppoe ssh sshfs lshw lm-sensors *** 問題点と解決方法 [#udbf2671] - 問題点~ 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 起動する前にメッセージが出て止まる。 ~ - 解決方法(考えたこと)~ ++ USB のカーネルモジュール~ 症状に再現性がないのは、モジュールの読み込みのタイミングなどが少しずれたりするからかと思う。~ とくに、ehci(USB 2.0)や xhci(USB 3.0) といった USB デバイスが問題のようである。そこで、~ 次のような対策が考えられる。 +++ 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月リリース)は起動するようである。~ そこで、[[このページ>http://www.tecmint.com/kernel-compilation-in-debian-linux/]]を参考にカーネル 3.12 を入れてみる。~ 注:~ --- CONCURRENCY_LEVEL の後の数字は、CPU のコアの数+1 を設定するようだ。~ --- このマシンで、カーネル作成に 1時間40分ぐらいかかった。~ --- USB で ウェブカムを用いる場合には、オプションを選定する。~ Device Drivers > Multimedia Support > Media USB Adapters > USB Video Class など適宜。 # 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 にする。~ 作ったカーネルを提供しますが、例によって自己責任で。~ ・ [[Debian (wheezy) 用 kernel 3.12 image>http://robo.mydns.jp/Lecture/DATA/Linux/linux-image-3.12.0-customkernel_2_amd64.deb]]~ ・ [[Debian (wheezy) 用 kernel 3.12 headers>http://robo.mydns.jp/Lecture/DATA/Linux/linux-headers-3.12.0-customkernel_2_amd64.deb]]~ ~ *** 無線LAN Intel 7260 の認識 [#aeb7596c] - 問題点~ 無線LAN(Wifi)用に Intel 製品 7260BN が内蔵されている。ところが、これが認識されていない。これを認識させる必要がある。~ ~ - 解決策 ++ ファームウエアの導入~ non-free でパッケージ化されている。ところが、wheezy のパッケージには、7260 用のファームウエアが入っていない。そこで、sid ~ のパッケージを[[ここ>https://packages.debian.org/ja/sid/all/firmware-iwlwifi/download]]からダウンロードする。そして導入。 # dpkg -i firmware-iwlwifi_0.41_all.deb ++ カーネルモジュール~ これで、 # modprobe iwlwifi を行えば認識すると思った。しかし、なぜか、コンパイルした kernel 3.12 で認識しない。調べてみると、カーネルのソースコードには~ iwl-7000.c というファイルがあるのに、コンパイルされていない。make menuconfig でこれをコンパイルするための設定を探したけれど~ 見つからない。そこで、諦めて、別途コンパイルすることにする。[[ここ>http://askubuntu.com/questions/322511/no-wireless-with-intel-centrino-advanced-n-7260]]を参考にした。 # 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 ちょっと気持ち悪いけど、これで認識した。 *** カーネルのメッセージ [#t2a1047f] - 問題点~ 次のようなメッセージがログに残る。 WARNING: CPU 0 PID:xxxx at drivers/gpu/drm/i915/intel_display.c:8806 ...(以下省略)... ディスプレーは接続していないので、実用上問題なさそうだけど、気になる。 - 解決の鍵~ [[ここ>https://bugs.freedesktop.org/show_bug.cgi?id=71392]]によると、Kernel 3.12 に含まれているバグらしい。