BeagleBoard-xMをVPNサーバにしてみる [beagleboard]
BeagleBoard-xMにはUbuntu 12.04をインストールして,USB WiFiを使えるようにした.
今回はこれをVPNサーバにしてみる.
プロトコルはPPTPが簡単らしいのだが,docomoのSPモードだと使えないのでL2TP/IPsecを使うことにする.あと,IPsecは事前共有鍵認証を使うことにする.
ではまず必要なパッケージとして,openswanとxl2tpdをインストールしてやる.
最初にopenswanのインストールだが,androidのICSにはバグがあってIPsecがつながらない.ただ,回避策はあって,openswanのソースにパッチを当ててビルドしてやればいい.
では,ソースとパッチのダウンロード.
ダウンロードしたら展開.
ビルドに必要なツールをインストール.
そしたらパッチをあててビルド,インストールしてやる.
ちなみに,Openswanの最新バージョンは,2.6.39のようだ.2.6.39ならパッチは必要ないかもしれないが確認していないので分からない.
では,次にxl2tpdをインストール.
こちらは単純に,
でOK.
そしたら,設定開始.
まずはカーネルパラメータの設定.
以下を追記
そしたら設定値の反映.
次にopenswanの設定.
元々ある記述のうち,config setupのprotostack=netkeyに変更するのと,conn ***以下を追記してやる.ファイル全体を示すと以下のようになる.
ちなみに,「left=10.0.1.100 # 自サーバの IPv4 アドレスを設定する。」の部分はあくまで例なので,自分のサーバのIPアドレスを設定してやる.
IPsecの事前共有鍵(pre-shared key)の設定.
ファイルがない場合は作成してやる.で,以下を追記してやる.
ここで,先頭のIPアドレスは上記で設定した自分のサーバのIPアドレスだ.また,hogehogeが事前共有鍵になる.なのでファイルのアクセス権を変更しておく.
ここまでできたら,IPsecを再起動.
設定の確認をしてみる.
N/A, WARNINGとDISABLEDは気にしなくていいらしいが,FAILEDが出るとNGだ.だが,openswanをソースからビルドすると,「Two or more interfaces found, checking IP forwarding」の部分がFAILEDと出ることがあるようだが気にしなくていいらしい.
次にxl2tpdの設定.
以下を追記してやる.
ここで,ip rangeはVPN接続してきたクライアントに割り当てるIPアドレスの範囲で,local ipは自分のサーバのIPアドレスだ.これもあくまで例なので,自分の環境にあわせて設定してやる.
pppの設定.
ファイルが無いので新規作成し以下を記入する.コメントがあるとうまく動かないようなので削除すべし.
chap認証設定.
以下を追記
ここで,hogehogeはUserName, fugafugaはパスワードになる.
ここで,いったんxl2tpdの再起動.
ファイヤーウォールでUDP/500とUDP/4500を通すように設定.
ESP を通すための設定と,xl2tpd を IPsec 以外から使えないようにする設定と,LAN の NAT をさせる設定とを適切な場所に追加.
*filter に対応する COMMIT の手前に(COMMITの直前に)以下を記載.
次に*filter の COMMIT の後に以下を記載.
フォワーディングはデフォルト許可に設定.
以下の設定に変更.
ufwを有効化.
IPsec自動起動設定.
あとは,ルーターの設定として,UDP/500とUDP/4500を自分のサーバに転送するように設定してやればOK.
これで完了.
お疲れさまでした.
参考サイト
いっぱいあるけど,特に参考にしたのは以下のサイトです.
Debian GNU/Linux で L2TP / IPsec を使用する VPN サーバを設定する (サーバ側で NAPT しない場合) – Open the Next
○○的な気まぐれ日記 » Androidから自宅サーバー(ubuntu12.04)にアクセスする
VPNでandroidと自宅LANがつながった | 人生崖っぷち
先人に感謝します.
今回はこれをVPNサーバにしてみる.
プロトコルはPPTPが簡単らしいのだが,docomoのSPモードだと使えないのでL2TP/IPsecを使うことにする.あと,IPsecは事前共有鍵認証を使うことにする.
ではまず必要なパッケージとして,openswanとxl2tpdをインストールしてやる.
最初にopenswanのインストールだが,androidのICSにはバグがあってIPsecがつながらない.ただ,回避策はあって,openswanのソースにパッチを当ててビルドしてやればいい.
では,ソースとパッチのダウンロード.
wget http://download.openswan.org/openswan/openswan-2.6.38.tar.gz
wget http://people.redhat.com/pwouters/osw/openswan-2.6.38-android-ics-natoa.patch
ダウンロードしたら展開.
tar -xzvf openswan-2.6.38.tar.gz
ビルドに必要なツールをインストール.
sudo apt-get install build-essential libgmp3-dev gawk flex bison
そしたらパッチをあててビルド,インストールしてやる.
cd openswan-2.6.38/
patch -p1 < ../openswan-2.6.38-android-ics-natoa.patch
sudo make ARCH=arm programs
sudo make ARCH=arm install
ちなみに,Openswanの最新バージョンは,2.6.39のようだ.2.6.39ならパッチは必要ないかもしれないが確認していないので分からない.
では,次にxl2tpdをインストール.
こちらは単純に,
sudo apt-get install xl2tpd
でOK.
そしたら,設定開始.
まずはカーネルパラメータの設定.
sudo vi /etc/sysctl.conf
以下を追記
###################################################################
# add settings
###################################################################
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.wlan0.send_redirects = 0
net.ipv4.conf.wlan0.accept_redirects = 0
そしたら設定値の反映.
sudo sysctl -p
次にopenswanの設定.
sudo vi /etc/ipsec.conf
元々ある記述のうち,config setupのprotostack=netkeyに変更するのと,conn ***以下を追記してやる.ファイル全体を示すと以下のようになる.
# /etc/ipsec.conf - Openswan IPsec configuration file
# This file: /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual: ipsec.conf.5
version 2.0 # conforms to second version of ipsec.conf specification
# basic configuration
config setup
# Do not set debug options to debug configuration issues!
# plutodebug / klipsdebug = "all", "none" or a combation from below:
# "raw crypt parsing emitting control klips pfkey natt x509 dpd private"
# eg:
# plutodebug="control parsing"
# Again: only enable plutodebug or klipsdebug when asked by a developer
#
# enable to get logs per-peer
# plutoopts="--perpeerlog"
#
# Enable core dumps (might require system changes, like ulimit -C)
# This is required for abrtd to work properly
# Note: incorrect SElinux policies might prevent pluto writing the core
dumpdir=/var/run/pluto/
#
# NAT-TRAVERSAL support, see README.NAT-Traversal
nat_traversal=yes
# exclude networks used on server side by adding %v4:!a.b.c.0/24
# It seems that T-Mobile in the US and Rogers/Fido in Canada are
# using 25/8 as "private" address space on their 3G network.
# This range has not been announced via BGP (at least upto 2010-12-21)
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
# OE is now off by default. Uncomment and change to on, to enable.
oe=off
# which IPsec stack to use. auto will try netkey, then klips then mast
# protostack=auto
protostack=netkey
# Use this to log to a file, or disable logging on embedded systems (like openwrt)
#plutostderrlog=/dev/null
# Add connections here
# sample VPN connection
# for more examples, see /etc/ipsec.d/examples/
#conn sample
# # Left security gateway, subnet behind it, nexthop toward right.
# left=10.0.0.1
# leftsubnet=172.16.0.0/24
# leftnexthop=10.22.33.44
# # Right security gateway, subnet behind it, nexthop toward left.
# right=10.12.12.1
# rightsubnet=192.168.0.0/24
# rightnexthop=10.101.102.103
# # To authorize this connection, but not actually start it,
# # at startup, uncomment this.
# #auto=add
conn L2TP-PSK-NAT
rightsubnet=0.0.0.0/0
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
forceencaps=yes
authby=secret
pfs=no
auto=add
keyingtries=3
ike=aes-sha1;modp3072 # ike phase1 の設定 (暗号化アルゴリズムは AES 、ハッシュアルゴリズムは SHA1 、Diffie-Hellman グループは 15 (3,072bit))
phase2=esp # ike phase2 の設定 (セキュリティプロトコルは ESP)
phase2alg=aes-sha1;modp3072 # ike phase2 の設定 (暗号化アルゴリズムは AES 、ハッシュアルゴリズムは SHA1 、Diffie-Hellman グループは 15 (3,072bit))
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=10.0.1.100 # 自サーバの IPv4 アドレスを設定する。
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
# 以下は iOS クライアント向けの設定。
dpddelay=40
dpdtimeout=130
dpdaction=clear
ちなみに,「left=10.0.1.100 # 自サーバの IPv4 アドレスを設定する。」の部分はあくまで例なので,自分のサーバのIPアドレスを設定してやる.
IPsecの事前共有鍵(pre-shared key)の設定.
sudo vi /etc/ipsec.secrets
ファイルがない場合は作成してやる.で,以下を追記してやる.
10.0.1.100 %any: PSK "hogehoge"
ここで,先頭のIPアドレスは上記で設定した自分のサーバのIPアドレスだ.また,hogehogeが事前共有鍵になる.なのでファイルのアクセス権を変更しておく.
sudo chmod 600 /etc/ipsec.secrets
ここまでできたら,IPsecを再起動.
sudo /etc/init.d/ipsec restart
設定の確認をしてみる.
sudo ipsec verify
N/A, WARNINGとDISABLEDは気にしなくていいらしいが,FAILEDが出るとNGだ.だが,openswanをソースからビルドすると,「Two or more interfaces found, checking IP forwarding」の部分がFAILEDと出ることがあるようだが気にしなくていいらしい.
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path [OK]
Linux Openswan U2.6.37/K3.2.0-51-omap (netkey)
Checking for IPsec support in kernel [OK]
SAref kernel support [N/A]
NETKEY: Testing XFRM related proc values [OK]
[OK]
[OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for NAT-T on udp 4500 [OK]
Two or more interfaces found, checking IP forwarding [OK] <--- FAILEDと出るかも
Checking NAT and MASQUERADEing [OK]
Checking for 'ip' command [OK]
Checking /bin/sh is not /bin/dash [WARNING]
Checking for 'iptables' command [OK]
Opportunistic Encryption Support [DISABLED]
次にxl2tpdの設定.
sudo vi /etc/xl2tpd/xl2tpd.conf
以下を追記してやる.
[global]
[lns default]
ip range = 10.0.1.201 - 10.0.1.210
local ip = 10.0.1.100
length bit = yes
refuse chap = yes
require authentication = yes
name = l2tp
pppoptfile = /etc/ppp/l2tpd-options
ここで,ip rangeはVPN接続してきたクライアントに割り当てるIPアドレスの範囲で,local ipは自分のサーバのIPアドレスだ.これもあくまで例なので,自分の環境にあわせて設定してやる.
pppの設定.
sudo vi /etc/ppp/l2tpd-options
ファイルが無いので新規作成し以下を記入する.コメントがあるとうまく動かないようなので削除すべし.
name l2tp # /etc/xl2tpd/xl2tpd.conf で設定した name と合わせる
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
ms-dns 10.0.1.1 # DNS サーバの IPv4 アドレス
proxyarp
nodefaultroute
lock
nobsdcomp
mtu 1280
mru 1280
chap認証設定.
sudo vi /etc/ppp/chap-secrets
以下を追記
hogehoge l2tp "fugafuga" *
ここで,hogehogeはUserName, fugafugaはパスワードになる.
ここで,いったんxl2tpdの再起動.
sudo /etc/init.d/xl2tpd restart
ファイヤーウォールでUDP/500とUDP/4500を通すように設定.
sudo ufw allow 500/udp
sudo ufw allow 4500/udp
ESP を通すための設定と,xl2tpd を IPsec 以外から使えないようにする設定と,LAN の NAT をさせる設定とを適切な場所に追加.
sudo vi /etc/ufw/before.rules
*filter に対応する COMMIT の手前に(COMMITの直前に)以下を記載.
# for ESP protocol of IPsec
-A INPUT -p 50 -j ACCEPT
# restricts l2tp to be used under ipsec
-A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT
-A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT
-A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable
次に*filter の COMMIT の後に以下を記載.
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from 192.168.222.0/24
-A POSTROUTING -s 10.0.1.0/24 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
# end of nat rules
フォワーディングはデフォルト許可に設定.
sudo vi /etc/default/ufw
以下の設定に変更.
DEFAULT_FORWARD_POLICY="ACCEPT"
ufwを有効化.
sudo ufw enable
IPsec自動起動設定.
sudo update-rc.d ipsec start 90 2 3 4 5 . stop 1 0 1 6 .
あとは,ルーターの設定として,UDP/500とUDP/4500を自分のサーバに転送するように設定してやればOK.
これで完了.
お疲れさまでした.
参考サイト
いっぱいあるけど,特に参考にしたのは以下のサイトです.
Debian GNU/Linux で L2TP / IPsec を使用する VPN サーバを設定する (サーバ側で NAPT しない場合) – Open the Next
○○的な気まぐれ日記 » Androidから自宅サーバー(ubuntu12.04)にアクセスする
VPNでandroidと自宅LANがつながった | 人生崖っぷち
先人に感謝します.
BeagleBoard-xMのUbuntuにUSB WiFiのドライバをインストールしてみる [beagleboard]
ずいぶんと前に,BeagleBoard-xMにUbuntu 12.04をインストールして,USB WiFiをつないでみた.
そのときのUSB WiFiは,PLANEXのGW-USValue-EZだ.残念ながらすでに終息製品扱いらしいが... まぁRealtek社のRTL8192CUを使ってるアダプタなら同じだと思うので参考になると思う.
で,以前,使ってみたときはUbuntuに標準で入ってるドライバで動かしてみたんだけど,いくつか気になる点があった.たとえば...
・GW-USValue-EZが恐ろしく熱くなる.
・青のLEDが点灯しっぱなしになってる.
・通信スピードが遅い気がする.
といったところだ.
で,調べたところ,どうやらRealtekのドライバを入れるといいらしいということが分かったのでインストールしてみる.
まずはドライバのダウンロード.ダウンロードはここからできる.
今だと,「RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip」がダウンロードできるようだ.
そしたら,展開して,展開したディレクトリ内にあるインストールスクリプトを実行すればいい.
が,実際はエラーが出てインストールできない.
で,調べてみたら,ここに対処方法が載ってた.kkAyatakaさんに感謝.その手順通りに作業をしてみる.
まずはカーネルのバージョンを確認.
どうやら3.2.0-51-omapらしい.
そしたら,対応バージョンのカーネルのヘッダをとってくる.
次にMakefileを修正する.
ここまでやったら再度インストール.
あとはUbuntu標準のドライバが読み込まれないように設定.
そしたらRebootしてやれば,これで完了.
で,そもそもの気になる点がどうなったかというと,
・GW-USValue-EZが恐ろしく熱くなる. ---> ほどほどに熱くなるぐらいになった.
・青のLEDが点灯しっぱなしになってる. ---> 点滅するようになった.
・通信スピードが遅い気がする. ---> んー,よくわからん.
といったところ.
まぁ,前よりはよくなったので良しとしよう.動作は特に問題なく安定しているようだ.
ただ,このインストール作業,カーネルのアップデートをすると再度やらないといけないので注意.
では,お試しあれ.
そのときのUSB WiFiは,PLANEXのGW-USValue-EZだ.残念ながらすでに終息製品扱いらしいが... まぁRealtek社のRTL8192CUを使ってるアダプタなら同じだと思うので参考になると思う.
で,以前,使ってみたときはUbuntuに標準で入ってるドライバで動かしてみたんだけど,いくつか気になる点があった.たとえば...
・GW-USValue-EZが恐ろしく熱くなる.
・青のLEDが点灯しっぱなしになってる.
・通信スピードが遅い気がする.
といったところだ.
で,調べたところ,どうやらRealtekのドライバを入れるといいらしいということが分かったのでインストールしてみる.
まずはドライバのダウンロード.ダウンロードはここからできる.
今だと,「RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip」がダウンロードできるようだ.
そしたら,展開して,展開したディレクトリ内にあるインストールスクリプトを実行すればいい.
$ unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip $ cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105/ $ sudo sh ./install.sh
が,実際はエラーが出てインストールできない.
で,調べてみたら,ここに対処方法が載ってた.kkAyatakaさんに感謝.その手順通りに作業をしてみる.
まずはカーネルのバージョンを確認.
$ uname -a Linux hogehoge 3.2.0-51-omap #77-Ubuntu Thu Jul 25 00:39:05 UTC 2013 armv7l armv7l armv7l GNU/Linux
どうやら3.2.0-51-omapらしい.
そしたら,対応バージョンのカーネルのヘッダをとってくる.
$ sudo apt-get install linux-headers-3.2.0-51-omap
次にMakefileを修正する.
$ sudo vi /lib/modules/3.2.0-51-omap/build/Makefile 200行目ぐらいにあるSRCARCHを設定しているところにarmを追加してやる SRCARCH := $(ARCH) SRCARCH := arm
ここまでやったら再度インストール.
$ sudo sh ./install.sh
あとはUbuntu標準のドライバが読み込まれないように設定.
$ sudo vi /etc/modprobe.d/blacklist.conf 以下を追記してやる blacklist rtl8192cu
そしたらRebootしてやれば,これで完了.
で,そもそもの気になる点がどうなったかというと,
・GW-USValue-EZが恐ろしく熱くなる. ---> ほどほどに熱くなるぐらいになった.
・青のLEDが点灯しっぱなしになってる. ---> 点滅するようになった.
・通信スピードが遅い気がする. ---> んー,よくわからん.
といったところ.
まぁ,前よりはよくなったので良しとしよう.動作は特に問題なく安定しているようだ.
ただ,このインストール作業,カーネルのアップデートをすると再度やらないといけないので注意.
では,お試しあれ.
GingerBreadのフォントを入れ替えてみる [beagleboard]
BeagleBoard-xMにインストールしたGingerBreadのフォントがいわゆる中華フォントなので,これを入れ替えてみる.
入れ替えるフォントは,Android 4.0で採用されたモトヤフォントを使ってみる.
フォントのダウンロードは,
からできる.
ここの,MTLc3m.ttfってのと,MTLmr3m.ttfってのがモトヤフォントだ.MTLc3m.ttfはモトヤLシーダ3等幅というやつでゴシック,MTLmr3m.ttfがモトヤLマルベリ3等幅で丸ゴシックだ.
Apache Licenseに基づき提供されてる.
モトヤのプレスリリースはこれ.
ちなみにモトヤフォントはChrome OSにも採用されてるらしい.
で,今回は丸ゴシックなMTLmr3m.ttfを使ってみる.
まず,Androidのフォントについて.
フォントは/system/fonts/に配置されてる.ここに,DroidSansFallback.ttfというファイルがあるはずだ.これがマルチバイト用のフォントで,いわゆる中華フォントの表示に使われているフォントだ.
普通,日本のAndroid端末とかだと,DroidSansJapanese.ttfというのが配置されているらしい.これは日本語用のフォントファイルだ.
日本語環境だと,DroidSansJapanese.ttfがあればこちらが使用されるが,なければDroidSansFallback.ttfが使われる.
で,今のBeagleBoard-xMの/system/fonts/下を見てみると,確かにDroidSansJapanese.ttfは見当たらなくて,つまり中華フォントであるDroidSansFallback.ttfが使われているということになる.
というわけで,DroidSansJapanese.ttfを用意してやれば,日本語フォントを入れ替えられる.
で,先ほどのモトヤフォントの出番だ.
作業はとっても簡単だ.
普通のスマートフォンだとroot取ったりしないとダメらしいが,BeagleBoard-xMならそんなの気にしなくていい.元からroot奪取済みなんだし.
というわけで,まず,ダウンロードしたMTLmr3m.ttfのファイル名をDroidSansJapanese.ttfに変更してやる.
で,あとはadbを使ってコピー.
そしたら再起動してやる.
フォントが変更されてるはずだ.
別にモトヤフォントじゃなくても,世にはいろいろフリーのフォントがあるので,気に入ったものに変更してもいい.手書きっぽいのとか,明朝なんかもいろいろあるようだ.
まぁこの辺はお好みで.
お試しあれ!
入れ替えるフォントは,Android 4.0で採用されたモトヤフォントを使ってみる.
フォントのダウンロードは,
https://github.com/android/platform_frameworks_base/tree/master/data/fonts
からできる.
ここの,MTLc3m.ttfってのと,MTLmr3m.ttfってのがモトヤフォントだ.MTLc3m.ttfはモトヤLシーダ3等幅というやつでゴシック,MTLmr3m.ttfがモトヤLマルベリ3等幅で丸ゴシックだ.
Apache Licenseに基づき提供されてる.
モトヤのプレスリリースはこれ.
ちなみにモトヤフォントはChrome OSにも採用されてるらしい.
で,今回は丸ゴシックなMTLmr3m.ttfを使ってみる.
まず,Androidのフォントについて.
フォントは/system/fonts/に配置されてる.ここに,DroidSansFallback.ttfというファイルがあるはずだ.これがマルチバイト用のフォントで,いわゆる中華フォントの表示に使われているフォントだ.
普通,日本のAndroid端末とかだと,DroidSansJapanese.ttfというのが配置されているらしい.これは日本語用のフォントファイルだ.
日本語環境だと,DroidSansJapanese.ttfがあればこちらが使用されるが,なければDroidSansFallback.ttfが使われる.
で,今のBeagleBoard-xMの/system/fonts/下を見てみると,確かにDroidSansJapanese.ttfは見当たらなくて,つまり中華フォントであるDroidSansFallback.ttfが使われているということになる.
というわけで,DroidSansJapanese.ttfを用意してやれば,日本語フォントを入れ替えられる.
で,先ほどのモトヤフォントの出番だ.
作業はとっても簡単だ.
普通のスマートフォンだとroot取ったりしないとダメらしいが,BeagleBoard-xMならそんなの気にしなくていい.元からroot奪取済みなんだし.
というわけで,まず,ダウンロードしたMTLmr3m.ttfのファイル名をDroidSansJapanese.ttfに変更してやる.
cp MTLmr3m.ttf DroidSansJapanese.ttf
で,あとはadbを使ってコピー.
adb push DroidSansJapanese.ttf /system/fonts/
そしたら再起動してやる.
フォントが変更されてるはずだ.
別にモトヤフォントじゃなくても,世にはいろいろフリーのフォントがあるので,気に入ったものに変更してもいい.手書きっぽいのとか,明朝なんかもいろいろあるようだ.
まぁこの辺はお好みで.
お試しあれ!
GingerBreadの画面をSXGAにしてみる [beagleboard]
以前ビルドしたGingerBreadの画面解像度がVGAのままだったので,変更してみる.
いま使ってるLCDモニタの解像度にあわせて,SXGAにしてみる.
変更するのは,boot scriptを作成しているところだ.
以前は,mkbootscrの,setenvのところを以下のようにしていたが,
今回は以下のようにしてやる(赤字部分を追記してやる).
そしたら以前と同様にboot.scrを作成してからSDカードを作成してやれば,SXGAで起動するはずだ.
それにしても,SXGAにしただけでかなり印象が変わる...
今までVGAの画像が引き延ばされてたからボケた感じだったけど,それがしゃっきりしたし,なにより画面が広い(当たり前だけど).
なんかいい感じだ.
いま使ってるLCDモニタの解像度にあわせて,SXGAにしてみる.
変更するのは,boot scriptを作成しているところだ.
以前は,mkbootscrの,setenvのところを以下のようにしていたが,
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M'
今回は以下のようにしてやる(赤字部分を追記してやる).
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y omapfb.mode=dvi:1280x1024MR-16 omapdss.def_disp="dvi" vram=8M omapfb.vram=0:8M'
そしたら以前と同様にboot.scrを作成してからSDカードを作成してやれば,SXGAで起動するはずだ.
それにしても,SXGAにしただけでかなり印象が変わる...
今までVGAの画像が引き延ばされてたからボケた感じだったけど,それがしゃっきりしたし,なにより画面が広い(当たり前だけど).
なんかいい感じだ.
BeagleBoard-xMのAndroidにUSB WiFiをつないでみるの続きの続きをやってみる [beagleboard]
前回の続きをやってみる.
まず,ドライバのディレクトリに行って,ファイルを展開してやる.
で,展開したディレクトリ下に移動して,
そこにあるMakefileを以下のように修正してやる.
で,ドライバのビルドをしたいところだが,カーネルコンフィグに「CONFIG_WIRELESS_EXT=y」を追加してやる必要がある(そうしないとドライバのビルドが失敗する).
そのために,USB ZD1201を組み込んでやる.別にUSB ZD1201なんて必要ないんだけど,CONFIG_WIRELESS_EXT=yにするのにお手軽なので.
で,
となるように設定する.
そしたら,カーネルをビルドして,
ドライバをビルド.
ビルドできたら,wifiディレクトリを作ってそこにwlan.koをコピー.
で,rootfsのビルド.
終わったら,root filesystemのtarballを作る.
SDカードの作成.さっき作ったuImageとrootfs.tar.bz2をコピーして,
そしたらSDカードに書き込み.
これで完了.
あとは,Android上のWiFiの設定をGUI上でやってくださいな.
設定->ワイヤレス設定で設定できるはず.
お試しあれ!
まず,ドライバのディレクトリに行って,ファイルを展開してやる.
cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/driver/ tar xzvf rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622.tar.gz
で,展開したディレクトリ下に移動して,
cd rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622/
そこにあるMakefileを以下のように修正してやる.
CONFIG_PLATFORM_I386_PC = y となっているので, CONFIG_PLATFORM_I386_PC = n に変更して, CONFIG_PLATFORM_BEAGLEBOARD = y を追記してやる. それから,以下を追記. ifeq ($(CONFIG_PLATFORM_BEAGLEBOARD), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := ~/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- KSRC := ~/rowboat-android/kernel MODULE_NAME := wlan endif
で,ドライバのビルドをしたいところだが,カーネルコンフィグに「CONFIG_WIRELESS_EXT=y」を追加してやる必要がある(そうしないとドライバのビルドが失敗する).
そのために,USB ZD1201を組み込んでやる.別にUSB ZD1201なんて必要ないんだけど,CONFIG_WIRELESS_EXT=yにするのにお手軽なので.
cd ~/rowboat-android/kernel/ make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig
で,
Linux/arm 2.6.37 Kernel Configuration Device Drivers > Network Device Support > Wireless LAN > <*> USB ZD1201 based Wireless device support
となるように設定する.
そしたら,カーネルをビルドして,
make ARCH=arm CROSS_COMPILE=arm-eabi- uImage
ドライバをビルド.
cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/driver/rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622 make
ビルドできたら,wifiディレクトリを作ってそこにwlan.koをコピー.
cd ~/rowboat-android/out/target/product/beagleboard/system mkdir wifi cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/driver/rtl8188C_8192C_usb_linux_v3.4.3_4369.20120622/ cp wlan.ko ~/rowboat-android/out/target/product/beagleboard/system/wifi/
で,rootfsのビルド.
cd ~/rowboat-android/ make TARGET_PRODUCT=beagleboard OMAPES=5.x -j2
終わったら,root filesystemのtarballを作る.
cd ~/rowboat-android/out/target/product/beagleboard mkdir android_rootfs cp -r root/* android_rootfs cp -r system android_rootfs sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
SDカードの作成.さっき作ったuImageとrootfs.tar.bz2をコピーして,
cd ~/rowboat-android cp kernel/arch/arm/boot/uImage image_folder/ cp out/target/product/beagleboard/rootfs.tar.bz2 image_folder/
そしたらSDカードに書き込み.
export LANG=C cd image_folder sudo ./mkmmc-android.sh /dev/sdb MLO u-boot.bin uImage boot.scr rootfs.tar.bz2
これで完了.
あとは,Android上のWiFiの設定をGUI上でやってくださいな.
設定->ワイヤレス設定で設定できるはず.
お試しあれ!
BeagleBoard-xMのAndroidにUSB WiFiをつないでみるの続きをやってみる [beagleboard]
前回の続きをやってみる.
具体的にどんなことをやってるのかは,ダウンロードしてきたドライバのandroid_reference_codesディレクトリ下にあるrealtek_wifi_SDK_for_android.txtに書かれてるので,ここでは単純に作業内容をメインに書いておく.
なんか気になることがあったら聞いてくださいな.
では...
まず,libwpa_clientの置き換え.
ひとまず,ダウンロードしてきたドライバのandroid_reference_codesディレクトリ下にあるファイルを展開する.
そしたら,いくつかファイルをコピー&置き換えてやる.
次は,libhardware_legacyの置き換え.
wpa_supplicant.confの作成.
~/rowboat-android/out/target/product/beagleboard/system/etc/下にwifiディレクトリを作って,
で,wifiディレクトリの下にwpa_supplicant.confファイルを作って以下の内容を記載してやる.
で,ドライバのビルド.
なんだけど,ちょっと長くなってきたので,続きはまた今度にしよう.
次回,ドライバのビルドをやったら完成だ!
具体的にどんなことをやってるのかは,ダウンロードしてきたドライバのandroid_reference_codesディレクトリ下にあるrealtek_wifi_SDK_for_android.txtに書かれてるので,ここでは単純に作業内容をメインに書いておく.
なんか気になることがあったら聞いてくださいな.
では...
まず,libwpa_clientの置き換え.
ひとまず,ダウンロードしてきたドライバのandroid_reference_codesディレクトリ下にあるファイルを展開する.
cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/android_reference_codes tar xzvf realtek_wifi_SDK_for_android_20120618.tar.gz
そしたら,いくつかファイルをコピー&置き換えてやる.
cd external/ cp -r hostapd-0.6.9_rtl/ ~/rowboat-android/external/ cd ~/rowboat-android/external/wpa_supplicant/ mv Android.mk Android.mk.bak cd ~/rowboat-android/external/wpa_supplicant_6/wpa_supplicant/ mv Android.mk Android.mk.bak cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/android_reference_codes/external/wpa_supplicant cp Android.mk ~/rowboat-android/external/wpa_supplicant/ cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/android_reference_codes/external/wpa_supplicant_6/wpa_supplicant cp Android.mk ~/rowboat-android/external/wpa_supplicant_6/wpa_supplicant/
次は,libhardware_legacyの置き換え.
cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/android_reference_codes/hardware/libhardware_legacy/wifi/ cp wifi_realtek.c ~/rowboat-android/hardware/libhardware_legacy/wifi/ cd ~/rowboat-android/hardware/libhardware_legacy/wifi/ mv Android.mk Android.mk.bak cd ~/RTL8188C_8192C_USB_linux_v3.4.3_4369.20120622/android_reference_codes/hardware/libhardware_legacy/wifi/ cp Android.mk ~/rowboat-android/hardware/libhardware_legacy/wifi/
wpa_supplicant.confの作成.
~/rowboat-android/out/target/product/beagleboard/system/etc/下にwifiディレクトリを作って,
cd ~/rowboat-android/out/target/product/beagleboard/system/etc/ mkdir wifi cd wifi
で,wifiディレクトリの下にwpa_supplicant.confファイルを作って以下の内容を記載してやる.
ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant GROUP=wifi update_config=1 ap_scan=1
で,ドライバのビルド.
なんだけど,ちょっと長くなってきたので,続きはまた今度にしよう.
次回,ドライバのビルドをやったら完成だ!
BeagleBoard-xMのAndroidにUSB WiFiをつないでみる [beagleboard]
前回,BeagleBoard-xM上のUbuntu 12.04にUSB WiFiをつないでみた.
そのときのUSB WiFiは,PLANEXのGW-USValue-EZだ.
今回は,AndroidのGingerbreadに対応させてみる.
まずは,以前やったように普通にソースコードからビルドする.よって以後の作業はUbuntu上で行うことになる.
で,正常に起動することを確認しておく.ここで正常に起動しなかったら,先に進んでもダメだからだ.
正常に起動するのが確認できたら,WiFiの組み込みを始める.
以前にも書いた通り,GW-USValue-EZに使われているのは,Realtek社のRTL8192CUだ.
Linux用のドライバは,Realtek社からダウンロードできる.
ダウンロード先は,ここ.
そこから,「RTL819xCU _USB_linux_v3.4.3_4369.20120622.zip」というファイルがダウンロードできるはずだ.
ダウンロードできたら,展開する.今回はホームディレクトリ直下にダウンロードして,で,展開先もホームディレクトリ直下にした.
展開すると,documentディレクトリに説明ファイルがいろいろあるし,androidへのポーティング関係は,Gingerbreadまでならandroid_reference_codesディレクトリに,ICSならandroid_reference_codes_ICS_nl80211にある.今回はGingerbreadなので,android_reference_codesディレクトリが対象だ.
で,今回のポーティング作業の詳細は,このディレクトリ内にある「realtek_wifi_SDK_for_android.txt」に書かれてて,これを参考に行ってる.ただし全部をやってる訳じゃなくて必要なとこだけなんだけど.
じゃあ具体的な作業はここから.
まず,BoardConfig.mkを編集する.このファイルは基板ごとの構成を設定するファイルだ.
編集するファイルは,~/rowboat-android/device/ti/beagleboard/下にある.ここのBoardConfig.mkを編集して,以下を末尾に追記してやる.
次は,init.rcを編集する.
編集するファイルは,~/rowboat-android/out/target/product/beagleboard/root/下にある.
まず,以下を末尾に追記.
それから,もともと記載されてる,wlan_loader,wpa_supplicantとdhcpcdはコメントアウト.
それから,wifi.interfaceがtiwlan0になってるのをwlan0に修正.
このあと,いくつかのモジュールをRealtek社提供のものと置き換える作業と,ドライバのビルドがあるんだけど,ちょっと長くなってきたので今回はここまで.
そのときのUSB WiFiは,PLANEXのGW-USValue-EZだ.
PLANEX 11n/g/b対応 150Mbpsハイパワー無線LAN USBアダプタ GW-USValue-EZ [フラストレーションフリーパッケージ(FFP)]
- 出版社/メーカー: プラネックス
- メディア: Personal Computers
今回は,AndroidのGingerbreadに対応させてみる.
まずは,以前やったように普通にソースコードからビルドする.よって以後の作業はUbuntu上で行うことになる.
で,正常に起動することを確認しておく.ここで正常に起動しなかったら,先に進んでもダメだからだ.
正常に起動するのが確認できたら,WiFiの組み込みを始める.
以前にも書いた通り,GW-USValue-EZに使われているのは,Realtek社のRTL8192CUだ.
Linux用のドライバは,Realtek社からダウンロードできる.
ダウンロード先は,ここ.
そこから,「RTL819xCU _USB_linux_v3.4.3_4369.20120622.zip」というファイルがダウンロードできるはずだ.
ダウンロードできたら,展開する.今回はホームディレクトリ直下にダウンロードして,で,展開先もホームディレクトリ直下にした.
cd ~/ unzip RTL819xCU _USB_linux_v3.4.3_4369.20120622.zip
展開すると,documentディレクトリに説明ファイルがいろいろあるし,androidへのポーティング関係は,Gingerbreadまでならandroid_reference_codesディレクトリに,ICSならandroid_reference_codes_ICS_nl80211にある.今回はGingerbreadなので,android_reference_codesディレクトリが対象だ.
で,今回のポーティング作業の詳細は,このディレクトリ内にある「realtek_wifi_SDK_for_android.txt」に書かれてて,これを参考に行ってる.ただし全部をやってる訳じゃなくて必要なとこだけなんだけど.
じゃあ具体的な作業はここから.
まず,BoardConfig.mkを編集する.このファイルは基板ごとの構成を設定するファイルだ.
編集するファイルは,~/rowboat-android/device/ti/beagleboard/下にある.ここのBoardConfig.mkを編集して,以下を末尾に追記してやる.
# for Realtek Wi-Fi RTL8192cu BOARD_USES_REALTEK_WIFI := true BOARD_WPA_SUPPLICANT_DRIVER := WEXT WPA_SUPPLICANT_VERSION := VER_0_6_X
次は,init.rcを編集する.
編集するファイルは,~/rowboat-android/out/target/product/beagleboard/root/下にある.
まず,以下を末尾に追記.
service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd disabled oneshot service dhcpcd_wlan0 /system/bin/dhcpcd -ABKL disabled oneshot
それから,もともと記載されてる,wlan_loader,wpa_supplicantとdhcpcdはコメントアウト.
# service wlan_loader /system/bin/wlan_loader -n \ # -f /system/etc/wifi/firmware.bin \ # -i /system/etc/wifi/tiwlan.ini # disabled # oneshot # service wpa_supplicant /system/bin/wpa_supplicant -Dtiwlan0 -itiwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd # socket wpa_tiwlan0 dgram 660 wifi wifi # disabled # oneshot # #service dhcpcd /system/bin/dhcpcd -o domain_name_servers -ABKL # service dhcpcd /system/bin/dhcpcd -ABKL tiwlan0 # disabled # oneshot
それから,wifi.interfaceがtiwlan0になってるのをwlan0に修正.
# setprop wifi.interface tiwlan0 setprop wifi.interface wlan0
このあと,いくつかのモジュールをRealtek社提供のものと置き換える作業と,ドライバのビルドがあるんだけど,ちょっと長くなってきたので今回はここまで.
BeagleBoard-xMにUSB WiFiをつないでみる [beagleboard]
BeagleBoard-xMを無線LANに対応させてみる.
BeagleBoard-xMにつなぐなら,とにかくちっちゃいのがいい!ということで,PLANEXのGW-USValue-EZを採用.
ホント小さい.そして安い.Amazonで¥900ぐらいで買える.
ちなみに,GW-USValue-EZで使われているチップは,Realtek社のRTL8192CUだ.
まずは,BeagleBoard-xM上のUbuntu 12.04で試してみる.
あとでAndroidでも試すが,まずはハードルの低そうなUbuntuから試してみる.
Linux用のドライバは,Realtek社からダウンロードできる.
ダウンロード先は,ここ.
が,しかし,今回はダウンロードしない.
実はUbuntu 12.04には既にこいつのドライバが含まれているのだ.
というわけで,BeagleBoard-xMのUSBポートにGW-USValue-EZをつっこんで,あとはUbuntu上でアクセスポイントに対してパスワードとか設定すれば,あっさりと接続完了.
まったく難しくない.
しかし,しばらく使ってると,GW-USValue-EZが恐ろしく熱くなる.どれぐらい熱いかって言うと,触り続けてたら身の危険を感じるぐらい.で,「熱っ!」って思わず言ってしまうぐらい.
あと,青のLEDが点灯しっぱなしになっているのと,通信スピードが遅い気がするのが,気になる点...
ま,とりあえずは普通に使えてるので良しとしよう.
追記:
Realtelのドライバをインストールしてみた.詳細はここ.
BeagleBoard-xMにつなぐなら,とにかくちっちゃいのがいい!ということで,PLANEXのGW-USValue-EZを採用.
PLANEX 11n/g/b対応 150Mbpsハイパワー無線LAN USBアダプタ GW-USValue-EZ [フラストレーションフリーパッケージ(FFP)]
- 出版社/メーカー: プラネックス
- メディア: Personal Computers
ホント小さい.そして安い.Amazonで¥900ぐらいで買える.
ちなみに,GW-USValue-EZで使われているチップは,Realtek社のRTL8192CUだ.
まずは,BeagleBoard-xM上のUbuntu 12.04で試してみる.
あとでAndroidでも試すが,まずはハードルの低そうなUbuntuから試してみる.
Linux用のドライバは,Realtek社からダウンロードできる.
ダウンロード先は,ここ.
が,しかし,今回はダウンロードしない.
実はUbuntu 12.04には既にこいつのドライバが含まれているのだ.
というわけで,BeagleBoard-xMのUSBポートにGW-USValue-EZをつっこんで,あとはUbuntu上でアクセスポイントに対してパスワードとか設定すれば,あっさりと接続完了.
まったく難しくない.
しかし,しばらく使ってると,GW-USValue-EZが恐ろしく熱くなる.どれぐらい熱いかって言うと,触り続けてたら身の危険を感じるぐらい.で,「熱っ!」って思わず言ってしまうぐらい.
あと,青のLEDが点灯しっぱなしになっているのと,通信スピードが遅い気がするのが,気になる点...
ま,とりあえずは普通に使えてるので良しとしよう.
追記:
Realtelのドライバをインストールしてみた.詳細はここ.
GingerBread 2.3.4のビルドの続きをやってみる [beagleboard]
前回はソースコードのダウンロードまでやったので,その続きをやってみる.
DevKitのダウンロード.ディレクトリはお好みで.
ダウンロードしたら展開.
Tool chainにパスを通しておく.
これも実際は.bash_profileに書いておく.
そしたらいよいよビルド作業開始.
まずx-loader.
これで,x-loader/下にx-load.binが生成される.
そしたらx-load.binからMLOファイルを生成する.
ちなみに,BeagleBoard-xMのブートシーケンスでは,bootromからx-loader(MLO)が起動され,そのあとu-bootが起動してからLinux(android)が起動するというようになっているようだ.
x-load.binからMLOを生成するにはsignGPというツールを使うのだが,こいつはさっきダウンロードしたDevKitに含まれてる.参考サイトの説明によれば,signGPはx-loaderディレクトリにコピーしろとあるので,コピーしてから実行する.最後にファイル名をMLOにしたら完了だ.
そしたら次はu-boot.
これで,u-boot/下にu-boot.binが生成される.
で,kernelのビルド.
そこそこ時間がかかる.
そしたら,Android filesystemのビルド.
そのままビルドしようとするとエラーとワーニングが出るので,ちょっと対策.
まずエラー対策.
以下のファイルを修正する.
~/rowboat-android/frameworks/base/libs/utils/Android.mk
次にワーニング対策.
以下のファイルを修正する.
~/rowboat-android/build/core/combo/HOST_linux-x86.mk
で,ビルド.
最後の「-j2」ってところの数字はビルドするマシンの環境(プロセッサ数)によって変わる.参考サイトによればプロセッサ数の2倍の値にしろとあるので-j2とした(うちのビルドマシンは古いのでシングルプロセッサなのである...).
で,こいつはkernelのビルドよりもずっと時間がかかる.
気長に待ちましょう.
終わったら,root filesystemのtarballを作る.
あとちょっと...
boot scriptを作成.
mkbootscrを編集.setenvのところを以下のように書き換える.
書き換えて保存したら,
これでboot.scrができる.
SDカードの作成.
まず必要なものを1つのディレクトリに集める.
そしたらSDカードに書き込み.
で,完了です.おつかれさまでした.
これで,BeagleBoard-xMにセットして電源ON!してやれば,Androidが起動するはずです.
DevKitのダウンロード.ディレクトリはお好みで.
cd ~/ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_GingerBread_2_3_4_DevKit_2_1/exports/TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz
ダウンロードしたら展開.
tar xzvf TI_Android_GingerBread_2_3_4_DevKit_2_1.tar.gz
Tool chainにパスを通しておく.
export PATH=~/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
これも実際は.bash_profileに書いておく.
そしたらいよいよビルド作業開始.
まずx-loader.
cd ~/rowboat-android/x-loader/ make CROSS_COMPILE=arm-eabi- distclean make CROSS_COMPILE=arm-eabi- omap3beagle_config make CROSS_COMPILE=arm-eabi-
これで,x-loader/下にx-load.binが生成される.
そしたらx-load.binからMLOファイルを生成する.
ちなみに,BeagleBoard-xMのブートシーケンスでは,bootromからx-loader(MLO)が起動され,そのあとu-bootが起動してからLinux(android)が起動するというようになっているようだ.
x-load.binからMLOを生成するにはsignGPというツールを使うのだが,こいつはさっきダウンロードしたDevKitに含まれてる.参考サイトの説明によれば,signGPはx-loaderディレクトリにコピーしろとあるので,コピーしてから実行する.最後にファイル名をMLOにしたら完了だ.
cd ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/signGP/ cp signGP ~/rowboat-android/x-loader/ cd ~/rowboat-android/x-loader/ ./signGP ./x-load.bin mv x-load.bin.ift MLO
そしたら次はu-boot.
cd ~/rowboat-android/u-boot/ make CROSS_COMPILE=arm-eabi- distclean make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_config make ARCH=arm CROSS_COMPILE=arm-eabi-
これで,u-boot/下にu-boot.binが生成される.
で,kernelのビルド.
cd ~/rowboat-android/kernel/ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean make ARCH=arm CROSS_COMPILE=arm-eabi- omap3_beagle_android_defconfig make ARCH=arm CROSS_COMPILE=arm-eabi- uImage
そこそこ時間がかかる.
そしたら,Android filesystemのビルド.
そのままビルドしようとするとエラーとワーニングが出るので,ちょっと対策.
まずエラー対策.
以下のファイルを修正する.
~/rowboat-android/frameworks/base/libs/utils/Android.mk
変更前:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
変更後:(-fpermissiveを追加)
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
次にワーニング対策.
以下のファイルを修正する.
~/rowboat-android/build/core/combo/HOST_linux-x86.mk
変更前:
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
変更後:(ーU_FORTIFY_SOURCEを追加)
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
で,ビルド.
cd ~/rowboat-android/ make TARGET_PRODUCT=beagleboard OMAPES=5.x -j2
最後の「-j2」ってところの数字はビルドするマシンの環境(プロセッサ数)によって変わる.参考サイトによればプロセッサ数の2倍の値にしろとあるので-j2とした(うちのビルドマシンは古いのでシングルプロセッサなのである...).
で,こいつはkernelのビルドよりもずっと時間がかかる.
気長に待ちましょう.
終わったら,root filesystemのtarballを作る.
cd ~/rowboat-android/out/target/product/beagleboard mkdir android_rootfs cp -r root/* android_rootfs cp -r system android_rootfs sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
あとちょっと...
boot scriptを作成.
cd ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr
mkbootscrを編集.setenvのところを以下のように書き換える.
setenv bootargs 'console=ttyO2,115200n8 androidboot.console=ttyO2 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootdelay=1 init=/init ip=off omap_vout.vid1_static_vrfb_alloc=y vram=8M omapfb.vram=0:8M'
書き換えて保存したら,
./mkbootscr
これでboot.scrができる.
SDカードの作成.
まず必要なものを1つのディレクトリに集める.
cd ~/rowboat-android mkdir image_folder cp kernel/arch/arm/boot/uImage image_folder/ cp u-boot/u-boot.bin image_folder/ cp x-loader/MLO image_folder/ cp ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-bootscr/boot.scr image_folder/ cp out/target/product/beagleboard/rootfs.tar.bz2 image_folder/ cp ~/TI_Android_GingerBread_2_3_4_DevKit_2_1/Tools/mk-mmc/mkmmc-android.sh image_folder/
そしたらSDカードに書き込み.
export LANG=C cd image_folder sudo ./mkmmc-android.sh /dev/sdb MLO u-boot.bin uImage boot.scr rootfs.tar.bz2
で,完了です.おつかれさまでした.
これで,BeagleBoard-xMにセットして電源ON!してやれば,Androidが起動するはずです.
GingerBread 2.3.4をビルドしてみる [beagleboard]
先日VAIOにUbuntu 12.04をインストールしたので,その環境でGingerBread 2.3.4をビルドしてみる.
参考にしたのは,「TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide」だ.
まず,ビルドに必要なツール類をインストール.
まず,Java 6のインストール用にリポジトリを追加.
なお,公開鍵エラーが出るので以下を実行しておく.
で,必要なものをまとめてインストール.Javaはjava-6-sunが使われるようにする.
javaのバージョンは以下で確認できる.
うちではこんな感じで表示された.
そしたら,ソースのダウンロード.
homeディレクトリにbinディレクトリを作ってパスを通しておく.
とりあえず上記でできるが,ま,面倒なので,.bash_profileに以下のように書いとく.
で,Repoスクリプトをダウンロードして,実行権限をつけてやる.
そしたらソースコードのダウンロードディレクトリを作ってから,ダウンロード(sync)実行.
途中で,名前とかメールアドレス.あと表示に色が使えるかとか聞かれるので答える.
かなりの量をダウンロードするのでとても時間がかかる.
寝る前に実行して夜中に回しとくのがいいかな...
とりあえず今回はここまで.次回はビルド作業だ.
参考にしたのは,「TI-Android-GingerBread-2.3.4-DevKit-2.1 DeveloperGuide」だ.
まず,ビルドに必要なツール類をインストール.
まず,Java 6のインストール用にリポジトリを追加.
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:flexiondotorg/java
sudo apt-get update
なお,公開鍵エラーが出るので以下を実行しておく.
sudo gpg --keyserver keyserver.ubuntu.com --recv 2EA8F35793D8809A
sudo gpg --export --armor 2EA8F35793D8809A | sudo apt-key add -
で,必要なものをまとめてインストール.Javaはjava-6-sunが使われるようにする.
sudo apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage expect
上記は1行で.
で,
sudo update-java-alternatives -s java-6-sun
javaのバージョンは以下で確認できる.
java -version
うちではこんな感じで表示された.
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing)
そしたら,ソースのダウンロード.
homeディレクトリにbinディレクトリを作ってパスを通しておく.
mkdir ~/bin
PATH=~/bin:$PATH
とりあえず上記でできるが,ま,面倒なので,.bash_profileに以下のように書いとく.
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=~/bin:$PATH export PATH
で,Repoスクリプトをダウンロードして,実行権限をつけてやる.
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
そしたらソースコードのダウンロードディレクトリを作ってから,ダウンロード(sync)実行.
mkdir rowboat-android
cd rowboat-android
repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-GingerBread-2.3.4-DevKit-2.1.xml
repo sync
途中で,名前とかメールアドレス.あと表示に色が使えるかとか聞かれるので答える.
かなりの量をダウンロードするのでとても時間がかかる.
寝る前に実行して夜中に回しとくのがいいかな...
とりあえず今回はここまで.次回はビルド作業だ.