この数年、さまざまなARMデバイスが販売されるようになっています。今回はその中でも特に小型な高性能コンピューター、“ Trim Slice” を紹介します。
Trim Slice とは
Trim Slice は、イスラエルCompuLab社(fit-PCなどの小型PCで有名なハードウェアベンダ)が提供する、NVIDIA Tegra2を搭載した超小型デスクトップマシンです(図1 ) 。
図1 Trim Sliceを上から見た図。小型ながら、デスクトップPCに必要なほとんどの要素を満たしている
最大の特徴はその大きさで、底面積が130mm x 95mm 、厚み0.6cmほどと、「 名刺入れ二つ分」サイズです(図2・図3 ) 。また、価格も最低限の「Bareborn」モデルであれば$200弱と、一般的な組み込みボードに比べると安くなっています[1] 。
図2 Trim Sliceの横に名刺を置いてみた。「 縦」は名刺の長辺とほぼ同等
図3 Trim Sliceの上に2.5インチSSDを置いてみた
スペックそのものは次のとおりで、「 Tegra2搭載のAndroidタブレットから、モニタとバッテリーを取り外したもの」に、複数のUSBポートとGigabit Ethernetを追加したもの、と考えて良いでしょう。電源は付属のACアダプタ[2] を用います。
Trim Sliceのインターフェース(図4・図5 )
CPU: NVIDIA Tegra2(Cortex A9 dual core)
Memory: 1GB
USB2.0 x4ポート(通常サイズ)
USB2.0 x1ポート(microUSB)
HDMI出力
アナログステレオラインアウト
アナログステレオラインイン
デジタルオーディオ出力(S/PDIF)
SDカードスロット
microSDカードスロット
UARTポート(RS-232C)
DVI出力(オプション)
SATA(オプション)( 注3 )
11n WLAN(オプション)
Gigabit Ethernet[4]
図4 Trim Sliceの前面ポート。左からRS-232C/UART、SDカードスロット、電源スイッチ兼LED、USB2.0 x2、microUSB
図5 Trim Sliceの背面ポート。左からWLAN用アンテナ、USB2.0、アナログラインイン兼SPDIF Out、USB2.0、AC入力、ラインアウト、DVI-D(HDMI形状) 、Gigbit Ethernet、HDMI
ARM Cortex A9と1GBメモリを搭載し、GbEポートを持つ以上、「 最低限のデスクトップ環境」として利用することもできますし、省電力を生かした常時稼働サーバーとして利用することもできます。デフォルトで導入されたOSはUbuntu 11.04のカスタム版です。
ブートローダーはubootで、開発者向けに自前のubootへの入れ替えも可能となっているため、Android端末のように「OSの入れ替えが困難」といった問題はありません。Tegra2搭載Androidタブレットが3~4万円で入手できることを考えると、Ubuntuなど、好みのOSを利用できることと、Gigabit Ethernetが利用できることをどこまで評価するか、ということになります。
[1] このように聞くととても安いように聞こえますが、CompuLabのfit-PC2シリーズ(Atom Zシリーズを搭載した小型PC)は$300前後から入手できる ため、突出して安いわけではありません。
購入方法
Trim Sliceは現時点では日本国内に販売代理店が存在しないため、メーカーであるイスラエルCompuLab社の直販 を利用するしかありません……と(本稿の第一稿時点では)言及するつもりだったのですが、9月18日時点で確認したところ、リセラーとしてイーテック 社の名前が掲載されるようになっており、日本国内でも入手できるようになるかもしれません。
CompuLabから直接購入する場合は海外発送となります。筆者が購入した際はUPSによる国際便で、注文後4日ほどで到着しました。「 In Stock」( 在庫あり)ステータスな品については注文の翌日には発送手配がかかっていたので、海外通販としては「すぐに届く」部類と言えます。ですが、送料がかなりかかるので、初期不良を踏まないことを祈る必要があります。本体+送料に加えて、800円ほどの税がかかりました。
モデル選択
Trim Sliceには次の5モデルが存在します。ハードウェア的には3種類で、付属品の差で5モデルに展開されています。
Trim Slice Bareborn
Trim Slice Value
Trim Slice Pro
Trim Slice H Diskless
Trim Slice H250
BarebornとValueは最低限の機能を搭載したモデルで、Barebornに11nドングル・4GB microSDHC(Ubuntuプリインストール)を付属品として追加したものがValueです。
ProはBarebornに11n無線LANユニットとセカンダリモニタ出力(「 +DVI」と書かれているものの、端子はHDMI) ・Video入力を追加し、SATA SSD(ただしUSB=SATAコンバータ経由)を搭載したものに、付属品としてBluetoothドングルを追加したものです。
H DisklessとH250は、Proの基板を2.5inch HDD/SSDを搭載可能な筐体に入れ替えたものです。Disklessはその名の通りストレージなし、H250は2.5inch SATA HDDを搭載したモデルです。Bluetoothドングルも付属します。
日本国内で利用する場合、基本的にWLANとBluetoothは電波法の都合で利用できませんので、「 Barebornを購入して自分でOSをインストールする」「 Proを購入して、小型マシンとして使う」「 H Disklessを購入し、高さは諦める」の3パターンが基本になりそうです。筆者はBarebornを選択しました。
必要な周辺機器
Trim Sliceを「使う」ためには、本体以外に次のものが必要になります。
HDMIケーブル
HDMIもしくはDVI-Dで入力可能なモニタ
USBキーボード
USBマウス
イーサネットケーブル
RS-232Cクロスケーブル
RS-232Cポートが存在するPC(もしくはUSB=RS-232C変換アダプタとPC)
SDHCカードを読み書きできるPC
プラスドライバ
モデルによっては、次のメディアを準備しておく必要があります。
SDカード(OSインストール用)
microSDカード(内蔵ストレージ用。SSD搭載モデルや2.5inchHDD/SSD搭載可能モデルでは不要)
2.5inch HDD/SSD(内蔵ストレージ用。搭載可能モデルのみ)
次のものは本体に付属していますので、準備する必要はありません。
HDMI=DVI-D変換アダプタ
ACアダプタ
本体の小型RC-232C出力を標準的なDB9に変換するアダプタ
特にRC-232CクロスケーブルはOSインストールや初期設定時に利用するため、ほぼ必須です。ケーブルがないと悲しい思いをすることになるので、Trim Slice本体を注文したら購入しておきましょう(Valueなど、OSプリインストールモデルを利用する場合は初期セットアップ時点では不要ですが、「 なにか」が起きた場合やハードウェアの動作確認には必要になります) 。
セットアップ
Trim Sliceが無事に手元に届いた後は、メーカーが準備しているOSインストールイメージを用いて初期セットアップを行います[5] 。OSインストールには、インストールメディアとして利用するSDカードと、インストール先ストレージとなるmicroSDカード(もしくはUSBメモリ)とともに、HDMI接続で画面出力が可能なモニタと、USB接続マウスが必要です。
セットアップの基本的な手順は、Trim Slice Wiki に書かれた手順をそのままなぞるだけで行えます。以下で紹介する手順も、基本的にTrim Slice Wikiの手順と同じ、あるいは一般的なARM端末での標準的な設定方法だけです。
uboot環境への接続
作業の前に、uboot環境を取得するためコンソール接続が行える状態にしましょう。Trim Sliceの標準状態では、RS-232Cポートにクロスケーブルを接続して行います。
Trim Slice側の電源を切った状態でシリアルケーブルを接続し、ホストPC側で「screen /dev/ttyUSB0 115200」などとすることで接続できるはずです(USBシリアルケーブルを利用していて、/dev/ttyUSB0にシリアルポートがあるマシンからの接続の場合) 。
この状態でTrim Sliceの電源を入れると、ubootのブートメッセージが表示されます。
ubootイメージの更新
ubootイメージの更新を行います。ubootはPC-AT機におけるBIOSに相当するベースレベルファームウェアで、ハードウェア全体の挙動にも影響しうるため、なるべく最新のものを使った方が良いでしょう。特にTrim Sliceの場合、インストールに用いるユーティリティソフトウェアがv1.01以上のubootを要求するため、更新しておくべきです。
ubootの更新は簡単で、ubootイメージ を入手してusb-imagewriterを用いてSDカード上に展開し、SDカードを装着した状態で、本体横のセキュリティスロットを開き、スイッチを押しながら起動します(図6 ) 。破損したイメージを書き込んでしまうと致命的なので、zipファイルに破損がないかMD5の確認(md5sum firmware-updater.img.zip)を行っておきましょう。
起動から数秒でubootの書き換えが終了し、LEDが点滅する状態になります。シリアルポート経由で接続している場合、次のようなメッセージが出力されるはずです。この状態になったら電源をOffにし、再起動すれば更新は完了です。
図6 Firmware Update - Trim-Slice Wiki
Scanning ext2 mmc 0 on prefix / ...
Loading file "/boot.scr" from mmc device 0:1 (xxa1)
727 bytes read
boot.scr found! Executing ...
## Executing script at 00408000
starting boot.scr
Loading file "/u-boot.slice" from mmc device 0:1 (xxa1)
296960 bytes read
SF: Detected W25Q80BL with page size 256, total 1 MiB
1024 KiB W25Q80BL at 0:0 is now current device
Saving Environment to SPI Flash...
Erasing SPI flash...Writing to SPI flash...done
U-Boot update complete.
port:bit 3:2 = 0
port:bit 27:5 = 0
port:bit 3:2 = 1
port:bit 27:5 = 1
port:bit 3:2 = 0
インストールメディアの準備とインストール
Trim SliceへのUbuntuの導入には、専用のブートイメージを用います。
標準状態のUbuntuとの違いは、「 カーネルが専用のものになっている」「 ubuntu-desktopパッケージが専用のものになり、必要最小限の環境だけが導入されるようになっている」点です。導入手順はubootイメージ更新と同じで、zipファイルを入手する→zipファイルを展開してusb-imagewriterでメディアへ書き込む→SDカードを装着した状態で起動、となります(図7 ) 。この場合も安全のため、展開するzipファイルにデータ化けがないか、MD5ハッシュを確認しましょう。
図7 OS Installation and update - Trim-Slice Wiki
インストール先のストレージとしては、内蔵SDや2.5inchベイにHDD/SSDを搭載したもの、あるいはmicroSDカードを本体右側のセキュリティスロットから装着するか、USB2.0ポートにUSBメモリを装着することになります。ValueやBarebornではmicroSDかUSBメモリ、他のモデルでは内蔵されたデバイスに応じてストレージが決まることになるでしょう。
ubootの場合と異なり、ライブセッションが開始されてUbuntuのデスクトップ画面が表示されるため(図8 ) 、インストーラーアイコン(TrimSlice Installer)をダブルクリックしてインストール先を選定(図9 ) →インストール、という流れになります。このため、インストールにはUSBマウス・HDMI出力が表示できるモニタが必要になります(……実はUSBキーボードはなくても問題ありません) 。
基本的にSDカードやmicroSDカード・USBメモリへの書き込みになるので、Trim Slice本体の性能(バス幅)の問題もあり、非常に時間がかかります。じっくり待てる状態で作業を行うのが良いでしょう(図10 ) 。
図8 SDカードにOSインストーラーイメージを導入して起動したデスクトップ。Firefoxと各種アクセサリソフトウェアが利用できるので、このまま簡易デスクトップとして使うこともできる
図9 インストーラを起動し、インストール先ストレージを選択する画面
図10 インストール完了画面。筆者の環境(microSDHC 16GB Class10、Princeton製をストレージとして利用)で、約20分ほどかかっている
USBメモリからブートする(Bareborn/Valueモデル)
BarebornやValueモデルの場合、USBメモリにシステムを導入しても、正常にブートすることができません。これは、ubootスクリプトによる簡易ブートローダのデバイス選択ロジックに問題があり、「 USBメモリは/dev/sdbに存在する」ことを仮定しているためです(SSDを内蔵できるモデルであればSSD=sda、USBメモリ=sdbとなるので正しいのですが、BarebornやValueではこの挙動は正しくありません) 。
Trim Sliceでは、各デバイスに配置した「boot.scr」スクリプトをロードすることでブートデバイスを制御する仕組みとなっていますので、これを修正しておきましょう。
boot.scrの修正には、ubootの最新配布物 が必要です。次の操作を実行して、修正に必要なツールを準備します。
$ wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
$ tar jxvf u-boot-latest.tar.bz2
$ cd u-boot-2011.06
$ make tools
$ sudo install tools/mkimage /usr/local/bin
ツールの準備ができたら、インストールしたブートメディアをPCにに搭載して、boot.scrファイルを入手します。boot.scrの「テキスト部分」( “ echo starting boot.scr” 以降)をテキストファイルとして保存し「boot.txt」という名前で保存します。27〜28行目にある以下のブートデバイスの指定(root=/dev/sdb1)を、「 root=/dev/sda1」に書き換えます。
echo booting from external USB
setenv rootfs rw root=/dev/sdb1 nohdparm rootwait
書き換えが終わったら次のコマンドでboot.scrファイルを作成し、ブートメディアに含まれるファイルを置き換えます。
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Trim-Slice-Bareborn" -d ./boot.txt ./boot.scr
初期設定
Trim Sliceのインストールが終わっても、そのままでは少々使いにくい設定なので、修正が必要です。以下は筆者がインストール後に行った設定です。
GDMを止める
Trim SliceはHDMI経由でデスクトップ環境を利用することもできますが、性能面の問題から、やはりサーバーとして利用する方が便利でしょう。GDMを停止するため、「 sudo /bin/sh -c 'echo manual >> /etc/init/gdm.conf'」 を実行します。「 manual」スタンザは、Upstart設定において「自動起動しない」ことを指定する記述です。
これにより、システム起動時点ではGDMが起動しなくなります。デスクトップ環境が必要な場合、「 service gdm start」することでGDMやXを起動できます。
タイムゾーンとロケールの変更
デフォルトの状態では、タイムゾーンが「IDT」( イスラエル時間)になっています。日本国内で利用する場合は、「 sudo dpkg-reconfigure tzdata」を実行し、「 Asia/Tokyo」を選択しなおします。
また、ロケールもen_GBとen_INしか準備されていません。日本語ロケールを生成するために、「 sudo /bin/sh -c 'echo ja_JP UTF-8 >> /var/lib/locales/supported.d/local'」を実行し、「 sudo local-gen」します。
初期ユーザー名の変更
Trim Sliceのインストーラは、内部的には「動作する状態になったUbuntuイメージをddでコピーする」「 ストレージのサイズに合わせる形でファイルシステムをリサイズする」という、少し変わった方法でシステムをインストールします。
この方法の都合上、初期ユーザーは「trim」で固定となってしまっています。追加でユーザーを作成しても良いのですが、trimユーザーを削除する手間もあるので、ここでは「trimユーザーを利用したいユーザーに変換」する方法を取ります。
ユーザー名を変更する場合、コマンドで変更していくより、「 vipw」「 vipw -s」「 vigr」「 vigr -s」でユーザー指定を変更(ユーザ“ trim” を希望のユーザー名に変更)し、「 mv /home/trim /home/(希望のユーザー名) 」でホームディレクトリを移植する方が手早く処置できるでしょう。変更後はpasswd ( 希望のユーザー名)を実行し、パスワードを変更すれば完了です。
SSHの設定を修正する
インストーラーの仕様上、Trim SliceはSSHのHost Keyを含め初期導入が行われる仕様になっています。結果としてSSHのホスト鍵による識別機能が意味をなさなくなっているので、SSH Host Keyを再生成する必要があります。
次の操作を実行して、既存の鍵をバックアップディレクトリに移動させ、新しい鍵を生成します。
# cd /etc/ssh
# mv ssh_host_*_key* .bak
# dpkg-reconfigure openssh-server
# service ssh restart
また、Trim Sliceはrootユーザーにパスワードが付与されています。Ubuntuの標準ではSSHdの設定としてPermitRootLoginがyesになっていますので、「 no」に変更しておきましょう。変更後、service ssh restartを実行してSSHサーバーを再起動してください。
シリアルポートからの自動ログインを抑制する
Trim Sliceのデフォルトでは、ttyS0(=シリアルポート)からの接続時には暗黙でrootシェルが起動するようになっています。この設定を解除したい場合、/etc/init/ttyS0.confの「exec」行を修正し、「 exec /sbin/getty -n -8 115200 ttyS0」としてください。再起動以降有効になります。
また、この設定を行う場合はrootユーザーのパスワードを変更しておきましょう(rootシェルから「passwd」 ) 。デフォルトのパスワード「111111」で固定なので、そのままでは変更しても意味がありません。
おわりに
なにかの参考になるかもしれないので、Trim Sliceでブートした際のdmesg+lspci+lsusb+/proc/cpuinfoを紹介しておきます。ARMデバイス特有の、「 各種I/Oバス幅が狭いため、ストレージアクセスの性能が出にくい」という問題はあるものの、「 ふつう」のUbuntuマシンであることが見て取れるはずです。
1~2万円程度で購入できる廉価なサーバーマシンに飽きたら(あるいは部屋が狭くなりすぎたら) 、こうした小型のARMマシンにも手を出してみてはいかがでしょうか。
bootargs mem=384M@0M mem=512M@512M nvmem=128M@384M vmalloc=248M video=tegrafb console=ttyS0,115200n8 rw root=/dev/mmcblk1p1 rootwait
image ext2load mmc 0 0x408000 /boot/uImage
Loading file "/boot/uImage" from mmc device 0:1 (xxa1)
3621092 bytes read
## Booting kernel from Legacy Image at 00408000 ...
Image Name: Linux-2.6.38.3-trimslice-1.01-01
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3621028 Bytes = 3.5 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.6.38.3-trimslice-1.01-01637-gc2b2d3e (denis@denis-pc) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) ) #49 SMP PREEMPT Thu Jul 14 19:18:14 IDT 2011
[ 0.000000] CPU: ARMv7 Processor [411fc090] revision 0 (ARMv7), cr=10c5387f
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: trimslice
[ 0.000000] Ignoring unrecognised tag 0x54410008
[ 0.000000] Memory policy: ECC disabled, Data cache writealloc
[ 0.000000] Tegra Revision: A03 prime SKU: 8 CPU Process: 1 Core Process: 2 Speedo ID: 1
[ 0.000000] PERCPU: Embedded 8 pages/cpu @c1049000 s9280 r8192 d15296 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 227328
[ 0.000000] Kernel command line: mem=384M@0M mem=512M@512M nvmem=128M@384M vmalloc=248M video=tegrafb console=ttyS0,115200n8 rw root=/dev/mmcblk1p1 rootwait
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] allocated 5242880 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.000000] Memory: 384MB 512MB = 896MB total
[ 0.000000] Memory: 895876k/895876k available, 21628k reserved, 286720K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
[ 0.000000] vmalloc : 0xef000000 - 0xfe000000 ( 240 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xee800000 ( 744 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .init : 0xc0008000 - 0xc0051000 ( 292 kB)
[ 0.000000] .text : 0xc0051000 - 0xc073bb54 (7083 kB)
[ 0.000000] .data : 0xc073c000 - 0xc078e0f0 ( 329 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Preemptable hierarchical RCU implementation.
[ 0.000000] RCU-based detection of stalled CPUs is disabled.
[ 0.000000] Verbose stalled-CPUs detection is disabled.
[ 0.000000] NR_IRQS:448
[ 0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.000124] Calibrating delay loop... 1992.29 BogoMIPS (lpj=9961472)
[ 0.270060] pid_max: default: 32768 minimum: 301
[ 0.270226] Security Framework initialized
[ 0.270255] TOMOYO Linux initialized
[ 0.270356] Mount-cache hash table entries: 512
[ 0.270996] Initializing cgroup subsys ns
[ 0.271011] ns_cgroup deprecated: consider using the 'clone_children' flag without the ns_cgroup.
[ 0.271026] Initializing cgroup subsys cpuacct
[ 0.271075] Initializing cgroup subsys memory
[ 0.271110] Initializing cgroup subsys devices
[ 0.271121] Initializing cgroup subsys freezer
[ 0.271193] CPU: Testing write buffer coherency: ok
[ 0.271239] ftrace: allocating 20826 entries in 62 pages
[ 0.295995] Calibrating local timer... 249.94MHz, setting to 2.50MHz.
[ 0.350091] hw perfevents: enabled with ARMv7 Cortex-A9 PMU driver, 7 counters available
[ 0.351297] CPU1: Booted secondary processor
[ 0.353107] Brought up 2 CPUs
[ 0.353118] SMP: Total of 2 processors activated (2011.23 BogoMIPS).
[ 0.353511] devtmpfs: initialized
[ 0.353966] kworker/u:0 used greatest stack depth: 6240 bytes left
[ 0.357980] print_constraints: dummy:
[ 0.358229] NET: Registered protocol family 16
[ 0.358987] preserved: reserved 1MB at 0x2000000 (virtual c2000000)
[ 0.360000] host1x bus init
[ 0.361456] Suspend mode LP0 requested, but missing lp0_vec
[ 0.361479] Disabling LP0
[ 0.363367] kworker/u:0 used greatest stack depth: 6044 bytes left
[ 0.367503] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[ 0.367515] hw-breakpoint: 1 breakpoint(s) reserved for watchpoint single-step.
[ 0.367537] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.368081] tegra_iovmm_register: added iovmm-gart
[ 0.459288] PCI: bus0: Fast back to back transfers disabled
[ 0.459630] PCI: bus1: Fast back to back transfers disabled
[ 0.460346] pci 0000:00:00.0: BAR 9: assigned [mem 0xa0000000-0xa00fffff pref]
[ 0.460362] pci 0000:00:00.0: BAR 7: assigned [io 0x1000-0x1fff]
[ 0.460390] pci 0000:01:00.0: BAR 6: assigned [mem 0xa0000000-0xa001ffff pref]
[ 0.460406] pci 0000:01:00.0: BAR 4: assigned [mem 0xa0020000-0xa0023fff 64bit pref]
[ 0.460427] pci 0000:01:00.0: BAR 4: set to [mem 0xa0020000-0xa0023fff 64bit pref] (PCI address [0xa0020000-0xa0023fff])
[ 0.460443] pci 0000:01:00.0: BAR 2: assigned [mem 0xa0024000-0xa0024fff 64bit pref]
[ 0.460463] pci 0000:01:00.0: BAR 2: set to [mem 0xa0024000-0xa0024fff 64bit pref] (PCI address [0xa0024000-0xa0024fff])
[ 0.460490] pci 0000:01:00.0: BAR 0: assigned [io 0x1000-0x10ff]
[ 0.460507] pci 0000:01:00.0: BAR 0: set to [io 0x1000-0x10ff] (PCI address [0x1000-0x10ff])
[ 0.460520] pci 0000:00:00.0: PCI bridge to [bus 01-01]
[ 0.460531] pci 0000:00:00.0: bridge window [io 0x1000-0x1fff]
[ 0.460544] pci 0000:00:00.0: bridge window [mem disabled]
[ 0.460556] pci 0000:00:00.0: bridge window [mem 0xa0000000-0xa00fffff pref]
[ 0.479820] bio: create slab at 0
[ 0.481114] vgaarb: loaded
[ 0.481302] i2c-core: driver [tps6586x] using legacy suspend method
[ 0.481314] i2c-core: driver [tps6586x] using legacy resume method
[ 0.481948] SCSI subsystem initialized
[ 0.482306] usbcore: registered new interface driver usbfs
[ 0.482505] usbcore: registered new interface driver hub
[ 0.482708] usbcore: registered new device driver usb
[ 0.485497] Advanced Linux Sound Architecture Driver Version 1.0.23.
[ 0.486422] NetLabel: Initializing
[ 0.486432] NetLabel: domain hash size = 128
[ 0.486440] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.486495] NetLabel: unlabeled traffic allowed by default
[ 0.486531] Switching to clocksource timer_us
[ 0.486586] Switched to NOHz mode on CPU #0
[ 0.486640] Switched to NOHz mode on CPU #1
[ 0.499400] tegra-nvmap tegra-nvmap: created carveout iram (256KiB)
[ 0.499512] tegra-nvmap tegra-nvmap: created carveout generic-0 (118784KiB)
[ 0.520889] NET: Registered protocol family 2
[ 0.521184] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.522226] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.524378] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[ 0.525565] TCP: Hash tables configured (established 131072 bind 65536)
[ 0.525578] TCP reno registered
[ 0.525594] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.525632] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.526112] NET: Registered protocol family 1
[ 0.526825] RPC: Registered udp transport module.
[ 0.526835] RPC: Registered tcp transport module.
[ 0.526844] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.527444] PMU: registered new PMU device of type 0
[ 0.529134] audit: initializing netlink socket (disabled)
[ 0.529181] type=2000 audit(27.631:1): initialized
[ 0.594922] highmem bounce pool size: 64 pages
[ 0.612617] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.614221] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[ 0.614238] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 0.615086] msgmni has been set to 1189
[ 0.617322] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 0.617340] io scheduler noop registered
[ 0.617350] io scheduler deadline registered
[ 0.617438] io scheduler cfq registered (default)
[ 0.620407] tegra_grhost tegra_grhost: initialized
[ 0.620966] host1x: tegradc tegradc
[ 0.621779] tegradc tegradc.0: probed
[ 0.622191] tegradc tegradc.0: probed
[ 0.622552] tegradc tegradc.0: error reading edid
[ 0.622568] host1x: tegradc tegradc
[ 0.623358] nvhdcp: using "always on" policy.
[ 0.624156] tegradc tegradc.1: probed
[ 0.624666] tegradc tegradc.1: probed
[ 0.625557] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.886946] serial8250.0: ttyS0 at MMIO 0x70006000 (irq = 68) is a XScale
[ 1.651793] console [ttyS0] enabled
[ 1.727419] brd: module loaded
[ 1.735782] loop: module loaded
[ 1.740761] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 1.746385] PCI: enabling device 0000:01:00.0 (0140 -> 0143)
[ 1.752123] r8169 0000:01:00.0: no MSI. Back to INTx.
[ 1.758581] r8169 0000:01:00.0: eth0: RTL8168d/8111d at 0xef01e000, 00:01:c0:0b:d7:b2, XID 081000c0 IRQ 130
[ 1.786803] console [netcon0] enabled
[ 1.790462] netconsole: network logging started
[ 1.794987] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.805175] tegra-ehci tegra-ehci.2: Tegra EHCI Host Controller
[ 1.811195] tegra-ehci tegra-ehci.2: new USB bus registered, assigned bus number 1
[ 1.876615] tegra-ehci tegra-ehci.2: irq 129, io mem 0xc5008000
[ 1.896591] tegra-ehci tegra-ehci.2: USB 2.0 started, EHCI 1.00
[ 1.902591] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 1.909387] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.916610] usb usb1: Product: Tegra EHCI Host Controller
[ 1.922002] usb usb1: Manufacturer: Linux 2.6.38.3-trimslice-1.01-01637-gc2b2d3e ehci_hcd
[ 1.930177] usb usb1: SerialNumber: tegra-ehci.2
[ 1.935639] hub 1-0:1.0: USB hub found
[ 1.939409] hub 1-0:1.0: 1 port detected
[ 1.960679] ulpi_phy_power_on: ulpi write failed
[ 1.965293] tegra-ehci tegra-ehci.1: Failed to power on the phy
[ 1.971231] tegra-ehci: probe of tegra-ehci.1 failed with error -110
[ 1.980171] tegra-ehci tegra-ehci.0: Tegra EHCI Host Controller
[ 1.986118] tegra-ehci tegra-ehci.0: new USB bus registered, assigned bus number 2
[ 2.046600] tegra-ehci tegra-ehci.0: irq 52, io mem 0xc5000000
[ 2.066592] tegra-ehci tegra-ehci.0: USB 2.0 started, EHCI 1.00
[ 2.072561] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 2.079356] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 2.086580] usb usb2: Product: Tegra EHCI Host Controller
[ 2.091970] usb usb2: Manufacturer: Linux 2.6.38.3-trimslice-1.01-01637-gc2b2d3e ehci_hcd
[ 2.100149] usb usb2: SerialNumber: tegra-ehci.0
[ 2.105536] hub 2-0:1.0: USB hub found
[ 2.109308] hub 2-0:1.0: 1 port detected
[ 2.113949] usbcore: registered new interface driver cdc_acm
[ 2.119618] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters
[ 2.128142] Initializing USB Mass Storage driver...
[ 2.133212] usbcore: registered new interface driver usb-storage
[ 2.139259] USB Mass Storage support registered.
[ 2.144090] usbcore: registered new interface driver libusual
[ 2.150149] mousedev: PS/2 mouse device common for all mice
[ 2.156699] input: gpio-keys as /devices/platform/gpio-keys.0/input/input0
[ 2.165034] rtc-em3027 2-0056: rtc core: registered rtc-em3027 as rtc0
[ 2.171970] trpc_sema_init: registered misc dev 10:58
[ 2.177257] trpc_node_register: Adding 'local' to node list
[ 2.185167] trpc_node_register: Adding 'avp-remote' to node list
[ 2.191671] tegra_avp_probe: driver registered, kernel 1ff00000(ef200000), msg area 2e2ec000/2e2ec110
[ 2.202356] device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com
[ 2.211144] device-mapper: verity: dm-verity registered
[ 2.216367] device-mapper: verity-chromeos: dm-verity-chromeos registered
[ 2.224042] cpuidle: using governor ladder
[ 2.229236] cpuidle: using governor menu
[ 2.233301] sdhci: Secure Digital Host Controller Interface driver
[ 2.239489] sdhci: Copyright(c) Pierre Ossman
[ 2.243928] mmc0: Invalid maximum block size, assuming 512 bytes
[ 2.249957] mmc0: no vmmc regulator found
[ 2.254496] mmc0: SDHCI controller on platform [sdhci-tegra.0] using ADMA
[ 2.256654] usb 1-1: new high speed USB device using tegra-ehci and address 2
[ 2.269593] mmc1: Invalid maximum block size, assuming 512 bytes
[ 2.275607] mmc1: no vmmc regulator found
[ 2.280237] mmc1: SDHCI controller on platform [sdhci-tegra.3] using ADMA
[ 2.291143] usbcore: registered new interface driver usbhid
[ 2.296761] usbhid: USB HID core driver
[ 2.301778] kworker/u:1 used greatest stack depth: 5932 bytes left
[ 2.311697] AIC23 Audio Codec 0.1
[ 2.317371] asoc: tlv320aic23-hifi tegra-i2s.0 mapping ok
[ 2.324891] asoc: dit-hifi tegra-spdif mapping ok
[ 2.331022] ALSA device list:
[ 2.334037] #0: tegra-trimslice-analog
[ 2.338036] #1: tegra-trimslice-digital
[ 2.342179] Netfilter messages via NETLINK v0.30.
[ 2.346975] nf_conntrack version 0.5.0 (13998 buckets, 55992 max)
[ 2.354229] ctnetlink v0.93: registering with nfnetlink.
[ 2.361958] mmc0: host does not support reading read-only switch. assuming write-enable.
[ 2.370572] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 2.376047] TCP cubic registered
[ 2.380640] NET: Registered protocol family 10
[ 2.385187] mmc0: new high speed SDHC card at address 0007
[ 2.396000] ip6_tables: (C) 2000-2006 Netfilter Core Team
[ 2.401804] mmcblk0: mmc0:0007 SD08G 7.49 GiB
[ 2.401941] IPv6 over IPv4 tunneling driver
[ 2.405741] NET: Registered protocol family 17
[ 2.405833] Registering the dns_resolver key type
[ 2.405904] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 1
[ 2.422854] usb 1-1: New USB device found, idVendor=0424, idProduct=2514
[ 2.422865] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 2.424356] hub 1-1:1.0: USB hub found
[ 2.424461] hub 1-1:1.0: 4 ports detected
[ 2.424726] mmcblk0: p1
[ 2.451772] ThumbEE CPU extension supported.
[ 2.456065] Registering SWP/SWPB emulation handler
[ 2.467417] Disabling clocks left on by bootloader:
[ 2.472287] audio_2x
[ 2.474731] audio
[ 2.476966] disp1
[ 2.479153] 2d
[ 2.481074] 3d
[ 2.482996] uartd
[ 2.485177] dvc_i2c
[ 2.487565] nor
[ 2.489577] vde
[ 2.491585] bsev
[ 2.493680] bsea
[ 2.495782] spi
[ 2.497810] clk_d
[ 2.499998] pll_p_out4
[ 2.502616] pll_c_out1
[ 2.506731] registered taskstats version 1
[ 2.511366] rtc-em3027 2-0056: setting system clock to 2011-09-02 15:12:38 UTC (1314976358)
[ 2.520221] Waiting for root device /dev/mmcblk1p1...
[ 2.536079] mmc1: new high speed SDHC card at address b368
[ 2.542028] mmcblk1: mmc1:b368 NCard 29.8 GiB
[ 2.548416] mmcblk1: p1
[ 2.690853] EXT3-fs: barriers not enabled
[ 2.696275] kjournald starting. Commit interval 5 seconds
[ 2.708967] EXT3-fs (mmcblk1p1): using internal journal
[ 2.714195] EXT3-fs (mmcblk1p1): mounted filesystem with writeback data mode
[ 2.721280] VFS: Mounted root (ext3 filesystem) on device 179:17.
[ 2.730028] devtmpfs: mounted
[ 2.733065] Freeing init memory: 292K
[ 2.740415] Not activating Mandatory Access Control now since /sbin/tomoyo-init doesn't exist.
[ 3.071490] hostname used greatest stack depth: 5068 bytes left
[ 3.125809] hwclock used greatest stack depth: 4644 bytes left
[ 3.137189] plymouthd used greatest stack depth: 4564 bytes left
* Setting sensors limits [ OK ]
[ 9.181576] vgaarb: this pci device is not a vga device
[ 9.214512] vgaarb: this pci device is not a vga device
speech-dispatcher disabled; edit /etc/default/speech-dispatcher
* Starting bluetooth [ OK ]
* PulseAudio configured for per-user sessions
saned disabled; edit /etc/default/saned
* Enabling additional executable binary formats binfmt-support [ OK ]
Last login: Sun Jul 17 10:48:01 IDT 2011 on ttyS0
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38.3-trimslice-1.01-01637-gc2b2d3e armv7l)
* Documentation: https://help.ubuntu.com/
root@trimslice:~# lspci
00:00.0 PCI bridge: nVidia Corporation Device 0bf0 (rev a0)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
root@trimslice:~# lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@trimslice:~# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 0 (v7l)
processor : 0
BogoMIPS : 1992.29
processor : 1
BogoMIPS : 18.94
Features : swp half thumb fastmult vfp edsp thumbee vfpv3 vfpv3d16
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x1
CPU part : 0xc09
CPU revision : 0
Hardware : trimslice
Revision : 0000
Serial : 0000000000000000