Ubuntu Weekly Recipe

第323回 1週(2週?)遅れのGW特別企画!・ECS LIVAでUbuntuを使う

この記事を読むのに必要な時間:およそ 6 分

Ubuntuインストールの準備

LIVAは「ベアボーンキット」という名目ではありますが,通常のベアボーン(CPUやメモリ・HDDを追加する必要があるもの)とは異なり,フルセットのPCとして機能する部品が揃っています。実質的にはモニタに接続するためのHDMIケーブル(ないしD-SUB15アナログケーブル)が必要ですが,このご時世では余っているHDMIケーブルの1本や2本はどこのご家庭にもあるはずなのでなんとかなるでしょう。

……ということで,⁠動きそう」という予断を基に,14.04 LTSをインストールしてみます。執筆時期的な都合で14.04 LTSのJapanese RemixのRC3を用いていますが,正式リリース版でも動作に影響する変更はとくにありませんので,RC3である必然性はまったくありません。ISOイメージを入手し,ddを用いてUSBメモリにインストールイメージを展開しました。

$ sudo dd if=ubuntu-ja-14.04.iso of=/dev/sdc bs=1M

このUSBメモリを用い,USB 2.0ポート(Ethernetポートの直下)にキーボードを,USB 3.0ポート(USB 2.0ポートのさらに1つ下)にUSBメモリを接続して起動したところ,まったく問題なくUbuntuのインストールが開始されました。

ひっかかりそうな点は,次の点です。

  • Ethernetポートは正常に認識され,利用できます。
  • WiFi/Bluetoothは予想どおり,そのままでは認識されません。インストール時点で利用するのは厳しいので,Ethernetポート経由でインターネットに接続するのが妥当です。
  • eMMCは/dev/mmcblk0(MMC/SDカード)として認識されます。扱いは通常のSATAデバイスとあまり変わりありません。デバイスノードが/dev/sdaにならない,SATA特有の拡張コマンド類(普通のユーザーが発行する可能性はあまりないもの)が使えない,という程度です。
  • eMMCは一般的に,⁠書き込みは遅いが読み込みは速い」という特性を持ちます。LIVAのeMMCもこの特性のとおりの挙動を示すため,インストールには時間がかかります(READがアベレージ80Mバイト/sec,WRITEが10Mバイト/sec程度)⁠インストール後は読み込みが主になるので非常に快適ですが,とくに,インストール後の各種パッケージ設定に時間がかかります。
  • オーディオもそのままで認識されるため,スピーカーを接続すれば音が出ます。
  • 筆者の場合,インストールに要した時間はおおむね20分ほどです(飽きてコーヒーを飲みに行って戻ってくるまでのタイムロス5分をを含む)⁠

インストールの様子は以下の動画を参照してください。ごく普通にインストールできる,ということがわかるはずです。なお,動画のうち約10分間はひたすらeMMCへの書き込みを待っています。

とりあえずインストール後の再起動では無事にシステムが起動しました。状態としては,⁠WiFiとBluetooth以外は問題なし」です。起動に要する時間は以下の動画で確認できます。

起動後は非常にスムーズに動作します。この数年のハイエンドデスクトップに比べると若干の引っかかりを感じますが,体感上はほとんど問題ありません。書き込みさえしなければeMMC由来の遅さも体感できないため,⁠日常的なネットワーク端末として使う」⁠ごく簡単な作業をするための常時起動端末として利用する」⁠日本国内でのBay Trailの用途として各社のAPACマーケティング担当者が把握しつつある特定のFlashゲームを動作させておいてリモートデスクトップ接続する」⁠画面表示が異常にリッチなVT100端末として使う」といった用途であれば困ることはほとんど無いでしょう。

ただし,後述の通り現状ではLinux上で問題なく利用できる無線LANドライバ(とNVRAM情報)が存在しないため,有線ネットワーク接続か,⁠これはISDN 128K接続なんだ」と思い込む強い心が必要です。

なお,UbuntuのデフォルトではFlashなどはインストールされていないので,たいていのデスクトップ用途において,⁠ubuntu-restricted-extras」パッケージを導入しておくと便利です。

無線LANファームウェアの導入

LIVAのWiFiチップは(少なくとも筆者の購入した分は)前述のとおりBroadcom BCM43142で,Linux的なドライバとしては「brcmfmac」⁠Broadcom SoftMac Devices)で動作します。実際,14.04 LTSの起動時にはbrcmsmacが自動ロードされています。

dmesg的には,次の出力が得られます。

[   37.643743] cfg80211: Calling CRDA to update world regulatory domain
[   37.658464] cfg80211: World regulatory domain updated:
[   37.658473] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   37.658477] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   37.658481] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   37.658484] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[   37.658487] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   37.658490] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   37.754583] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[   37.823479] brcmfmac: brcmf_sdio_chip_drivestrengthinit: No SDIO Drive strength init done for chip 4324 rev 5 pmurev 17
[   37.886886] brcmfmac_sdio mmc1:0001:2: Direct firmware load failed with error -2
[   37.886895] brcmfmac_sdio mmc1:0001:2: Falling back to user helper
[   37.888631] brcmfmac: brcmf_sdbrcm_get_fw: fail to request firmware brcm/brcmfmac43241b4-sdio.txt (-2)
[   37.888640] brcmfmac: _brcmf_sdbrcm_download_firmware: dongle nvram file download failed
[   37.888692] brcmfmac: brcmf_bus_start: brcmf_sdbrcm_bus_init failed -1
[   37.888696] brcmfmac: brcmf_sdbrcm_probe: dongle is not responding
[   37.891252] brcmfmac: brcmf_sdio_probe: device attach failed
[   37.891392] brcmfmac: brcmf_ops_sdio_probe: F2 error, probe failed -19...
[   37.891482] usbcore: registered new interface driver brcmfmac

これは,⁠ドライバそのものはロードされているが,必要なファームウェアファイルが読み出せない」ということを意味します(しかも,⁠Direct firmware load failed with error -2」で転んで「Falling back to user helper」したものの,⁠fail to request firmware brcm/brcmfmac43241b4-sdio.txt」でやっぱり転ぶ,という二重の失敗です)⁠

ここで思い出されるのが付属DVDのドライバ集です。確認すると「brcmfmac-sdio.zip」といういかにもなファイルが存在します。このファイルの横にはWiFi.txtというファイルが置いてあり,次のようにすると動作するかのように見えます。

1. Unzip and copy the files in /lib/firmware/brcm  (location)
2. Reboot

http://wireless.kernel.org/en/users/Drivers/brcm80211
http://askubuntu.com/questions/55868/how-to-install-broadcom-wireless-drivers-bcm43xx

が,14.04 LTSで使う分にはこの内容は罠で単にzipファイルの中身を/lib/firmware/brcmにコピーしてもファームウェアファイルとして認識されません。正しく動作させるには,zipファイルの中身それぞれをbrcmfmac43241b4-sdio.txt・brcmfmac43241b4-sdio.binにリネームして配置する必要があります。

$ mv brcmfmac-sdio.txt brcmfmac43241b4-sdio.txt
$ mv brcmfmac-sdio.bin brcmfmac43241b4-sdio.bin
$ sudo cp brcmfmac43241b4* /lib/firmware/brcm

これでひとまず無線LANとして動作するようになるのですが注2)⁠14.04 LTSの標準カーネルのままだと,AESで保護された無線LANアクセスポイントに接続した瞬間にインターフェースが落ちる,という呪われた挙動になります。このような場合、Ubuntu的にはLKMLで開発されているカーネルをそのままビルドした「Mainline Builds」を使うことになります。http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14.1-trusty/にあるカーネルファイルを導入することで,一応動作するようになります。残念ながらこの状態で無線接続して発揮できる性能は1Mbps程度で,10Kバイト/sec程度のダウンロード速度になることも珍しくありません。この種のデバイスを正しく動かすためのパラメータファイル(brcmfmac-sdio.txt)がリファレンスデザインのものそのもので,LIVAの実情に揃えられていないためです。本来はNVRAM(≒BIOS)から読み出される形でこれらのパラメータが補正されるのですが,LIVAはUEFI実装であるため,既存のツールで読み出すこともできません。さらに,このファイルをうかつに調整すると電波的にさまざまな問題を引き起こしかねないため,基本的にはベンダーから正しいファイルが提供されることを待つしかありません。

また,デバイスをうまく扱えていないことが原因なのか特定はできていませんが,しばしばKernel Oopsを引き起こしてデバイスとして沈黙します。ドライバをロードし直す(sudo modprobe -r bmcrfmac; sudo modprobe brcmfmac)で回復することもありますが,事実上使い物にならないと思っておく必要があります。どうしても無線で接続したい場合はUSB WLANドングルの類いを利用することになります(なりますが,ACアダプタで動作する以上,ケーブルが1本や2本増えてもあまり問題はないでしょう)⁠

注2)
なおこのとき,brcmfmac-sdio.txtの中身を見てしまうとインストールする気が激しく減退するので手を出さないことをお勧めします。なぜか「macaddr=」とかいう行がコメントアウトされており,OUIから見ると「00:90:4c=Epigram=Broadcom」のものから「24:0a:64=AzureWave」に書き換えられています。気配的に,リファレンスドライバの特定のパラメータを担当者の机の上で適当に書き換えたファイルであることが推定できるうえ,さらにそのつもりで調べると,この問答でやりとりされているbrcmfmac-sdio.zipと中身が完全に合致することがわかります。
$ lspci
00:00.0 Host bridge: Intel Corporation ValleyView SSA-CUnit (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation ValleyView Gen7 (rev 0c)
00:14.0 USB controller: Intel Corporation ValleyView USB xHCI Host Controller (rev 0c)
00:1a.0 Encryption controller: Intel Corporation ValleyView SEC (rev 0c)
00:1b.0 Audio device: Intel Corporation ValleyView High Definition Audio Controller (rev 0c)
00:1c.0 PCI bridge: Intel Corporation ValleyView PCI Express Root Port (rev 0c)
00:1c.1 PCI bridge: Intel Corporation ValleyView PCI Express Root Port (rev 0c)
00:1c.2 PCI bridge: Intel Corporation ValleyView PCI Express Root Port (rev 0c)
00:1c.3 PCI bridge: Intel Corporation ValleyView PCI Express Root Port (rev 0c)
00:1f.0 ISA bridge: Intel Corporation ValleyView Power Control Unit (rev 0c)
00:1f.3 SMBus: Intel Corporation ValleyView SMBus Controller (rev 0c)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c)

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

以上のように,⁠とりあえずデスクトップとして使う」という目的であれば,無線LANの存在さえ忘れてしまえばLIVA用にUbuntu 14.04を使うには何の苦労もありません。デスクトップとして力不足を感じたらサーバーやメディアプレーヤー的な用途に回すこともできますし,Linuxの入門機としても便利に利用することができるでしょう。2万円弱で入手できる小型・静音・省電力PCとして,強い地位を築く予感がします(ので,メーカーさん無線LANまわりのNVRAMファイル出してください)⁠

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入