Ubuntu Weekly Recipe

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

ECS LIVAは、1万8,000円前後で入手できる、Bay Trail-M搭載の小型PCベアボーンキットです。非常に簡単な組み立て(いわゆる「プラモデルよりも簡単」というレベル)だけで、メモリやストレージ・WiFiカードなども同梱されているため、単体でPCとして機能します。

ECS LIVAのスペックなど

筆者が購入した個体は次のスペックのものです。

LIVA-B3-2G-32G
Main SoCCeleon N2806(Stepping:B3)
Memory2Gバイト
Storage32GバイトeMMC
WiFi/BluetoothAzureWave AW-NB136NF (SDIO, Half Size PCI Express Card Form Factor) Broadcom BCM43142; 802.11a/b/g/n+Bt 4.0

搭載されているCeleron N2806はCeleronの名前を与えられていますが、SoCとしてはBay Trail-Mで、タブレットに搭載されているAtom Z36xx/Z37xxシリーズと同じチップです。販売領域が異なるのでAtom ZではなくCeleron Nのシリーズ名を与えられているだけで、コア数や周波数、各種インターフェースなどが異なるバリエーション製品です。

端的には、⁠Atom搭載Windowsタブレットから、液晶とバッテリーを除去したもの」という構成だと思って良いでしょう。

ECS LIVAは、出荷ロットによってSoCや搭載メモリ・ストレージなどは拡張されて行く、という宣言が行われているため購入時期によって仕様が異なる可能性があります。筆者が購入した個体の場合、通常動作周波数1.58GHz、一時バースト2GHz、コア数2のBay Trail-Mが搭載されていることになります。通常周波数1.58GHzと聞くとやや非力にも思われますが、Atom Z37xx搭載のWindows 8タブレットのバースト状態の周波数とおおむね同等で、⁠日常的な」OSの利用にはまったく支障ありません。VT-xにも対応しているため各種仮想化ホストとしても利用できます(とは言え、メモリは2Gバイトなので少々厳しいものがあるのですが⁠⁠。

気になるCPUパフォーマンス等は置いておいて、先に進みましょう。

Ubuntu導入の可否

ストレージに制約があるとは言え、x64に対応し、かつ2GバイトメモリのPCが2万円以下で購入できるPCキット、となると、全体コストに占めるOSの値段が気になってきます。Bay Trail-M世代のタブレットPCではMicrosoft/Intelの戦略的値引きの結果、LIVAと同等の構成に液晶とバッテリーが付き、さらにWindows 8.1とMicrosoft Officeがついて約4万円、という相場が形成されているものの、LIVAに利用できるようなDSP版Windowsにはこうした特例はなく、⁠1.8万円の本体に1.2万円前後のWindows 8.1を追加する」という、なんとなく本末転倒な気配が漂う選択をする必要があります。

こうした時に、Ubuntuの「無料で利用できる」という特性が役に立ちます[1]⁠。

……と考えたときに気になるには「LIVAにはUbuntuを導入することができるのか」という点ですが、ECS LIVAのマニュアル(USER GUIDE。ペラ紙ではなく小冊子スタイルのマニュアル)には「Ubuntu 13.10がインストール可能」という記述とともに、なぜかhttp://cdimage.ubuntu.com/daily-live/current/へのリンクが掲載されています。開発時期が2013年10月よりも遅いことはあまり考えられないので、⁠単にURLをまちがえた」のか、⁠13.10のつもりで14.04開発版でテストしてしまった」のかはよくわかりません。……よくわかりませんが、とりあえずUbuntuが利用できそうだ、ということがわかります。

LIVAを実際に動作させたところ、⁠いわゆるBIOS」AMI Aptio(UEFI実装の中でも非常によく見掛けられるものの一つ)で、UEFI/CMOS(BIOS互換)の両方をサポートし、Secure Bootにも対応(無効化も可能⁠⁠、となっています。明らかにUbuntuが入らない理由がなさそうな構成です。

また基本的に、Bay Trail-MはCPUコア以外は「ありもの」を組み合わせることで開発されたSoCであること、また、PCI ID類の追加は約一年前にLKMLにもたらされていることから、Linux上で動く可能性は高い、という傍証もあるので、いきなりインストールを試みてみます。

気になるのがWiFi/Bluetooth関連のドライバですが、こちらは付属DVDを見るとそれらしきものが含まれています。

図1 付属DVDのインデックス表示。⁠Ubuntu」というディレクトリが含まれている
図1 付属DVDのインデックス表示。「Ubuntu」というディレクトリが含まれている

ここで一緒に置いてあるIntel製のドキュメントが「あれ、これは世間に出していいほうのやつ?」と筆者の動揺を誘ったりしましたが、Confidentialという文字列は含まれていないので、深くは気にしないことにしました。また、実はこのドキュメントは14.04 LTSを使う限りいっさい読む必要がないので、英文でマニュアルを書かないといけない状況に追い込まれる可能性がない方は読み飛ばしても問題ありません。英文でマニュアルを書く可能性がある方は、このドキュメントを真似するだけでインストールガイドぐらいは書けるようになるので、何らかの形で保存しておくことをお勧めしておきます。いずれにせよ、本来の用途である「LIVAを動かす」ためには一切必要ありません。

図2 問題のIntel製ドキュメント
図2 問題のIntel製ドキュメント

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本増えてもあまり問題はないでしょう⁠⁠。

$ 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ファイル出してください⁠⁠。

おすすめ記事

記事・ニュース一覧