#topicpath ** DN2820FYKH に Debian をインストールする [#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 がすんなり入らない。~ ~ *** ハードウエア [#x44f4c5a] - NUC DN2820FYKH について -- [[Intel のページ>http://www.intel.co.jp/content/www/jp/ja/nuc/nuc-board-dn2820fykh.html?wapkw=dn2820fykh]] -- [[Intel のページ(ブリーフ)>http://www.intel.co.jp/content/www/jp/ja/nuc/nuc-kit-dn2820fykh-brief.html]] - マシンの構成 #style(class=table_left){{ | |型番|購入価格|h | 本体 |NUC DN2820FYKH (celeron N2820 DDR3 ベアボーン)|RIGHT: 17980 | | SSD |ADT ASP600S3-128GM-C 7mm(2.5" SATAIII 128GB) |RIGHT: 7580 | |メモリ|ADT ADDS1600W4G11-R(SODIMM DDR3L-1600 4GB)|RIGHT: 4630 | |合計| |RIGHT: 30190 | }} *** Debian (wheezy) の導入 [#y6b3bad1] - 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. 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 のサイト>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 *** 起動しない問題と解決 [#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 起動する前にメッセージが出て止まる。 ~ -- 考えたこと~ 症状に再現性がないのは、モジュールの読み込みのタイミングなどが少しずれたりするからかと思う。~ とくに、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月リリース)は起動するようである。~ そこで、[[このページ>http://www.tecmint.com/kernel-compilation-in-debian-linux/]]を参考にカーネル 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 の認識 [#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 に含まれているバグらしい。