オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Annotation of /tags/htdocs/1.8/android-arm.html.ja

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3565 - (hide annotations) (download)
Thu Apr 1 07:18:37 2010 UTC (14 years, 1 month ago) by kumaneko
Original Path: tags/htdocs/1.7/android-arm.html.ja
File size: 13075 byte(s)


1 kumaneko 3102 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2     <html lang="ja-JP">
3     <head>
4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5     <meta http-equiv="Content-Style-Type" content="text/css">
6     <title>TOMOYO Linux 導入手順書</title>
7 kumaneko 3270 <link rel="stylesheet" href="http://tomoyo.sourceforge.jp/tomoyo.css" media="all" type="text/css">
8 kumaneko 3102 </head>
9     <body>
10     <p style="text-align:right;"><a href="android-arm.html.en">English Page</a></p>
11     <p style="text-align:right;">Last modified: $Date$</p>
12     <h1>TOMOYO on Android</h1>
13    
14     <p>このページでは、 TOMOYO Linux を arm 用 Android エミュレータ上で動作させる手順について説明します。ホスト環境として x86 上で動作している Ubuntu 8.04.3 を使用します。</p>
15    
16     <hr>
17    
18     <h2>ステップ1:必要なパッケージのインストール</h2>
19    
20     <p><a href="http://source.android.com/download">http://source.android.com/download</a> に示されているとおり、必要なパッケージをインストールします。</p>
21    
22     <table border="1">
23     <tr><td>
24     sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
25     </td></tr>
26     </table>
27    
28     <h2>ステップ2:環境変数の設定</h2>
29    
30     <p>以下の内容を環境変数として指定します。 ~/.bashrc などに追加しておくことをお勧めします。 arm-eabi-4.2.1 の部分は arm-eabi-4.3.1 または arm-eabi-4.4.0 にしても構いません。</p>
31    
32     <table border="1">
33     <tr><td>
34     export ANDROID_HOME=$HOME/mydroid/<br>
35     export ANDROID_IMG=$ANDROID_HOME/image/<br>
36     export ANDROID_TOOLCHAIN=$ANDROID_HOME/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/<br>
37     export PATH=$PATH:$ANDROID_HOME/out/host/linux-x86/bin/:$ANDROID_TOOLCHAIN
38     </td></tr>
39     </table>
40    
41     <h2>ステップ3: Android 環境の構築</h2>
42    
43     <p>エミュレータをコンパイルします。</p>
44    
45     <table border="1">
46     <tr><td>
47     mkdir -p $ANDROID_HOME<br>
48     cd $ANDROID_HOME<br>
49     wget http://android.git.kernel.org/repo<br>
50     chmod 755 repo<br>
51     ./repo init -u git://android.git.kernel.org/platform/manifest.git<br>
52     ./repo sync<br>
53     make
54     </td></tr>
55     </table>
56    
57     <h2>ステップ4: Android 用カーネルの構築</h2>
58    
59     <p>カーネルをコンパイルします。 TOMOYO Linux パッチを適用する以外は通常の手順と同じです。</p>
60    
61     <table border="1">
62     <tr><td>
63     mkdir -p $ANDROID_HOME/tmp<br>
64     cd $ANDROID_HOME/tmp/<br>
65     wget -O kernel-source.tar.gz 'http://android.git.kernel.org/?p=kernel/common.git;a=snapshot;h=9d8732354c9efc9f5eb6f70a92ab436ccbfdf119;sf=tgz'<br>
66     tar -zxf kernel-source.tar.gz<br>
67     cd common/<br>
68 kumaneko 3565 wget http://sourceforge.jp/frs/redir.php?f=/tomoyo/43375/ccs-patch-1.7.2-20100401.tar.gz<br>
69     tar -zxf ccs-patch-1.7.2-20100401.tar.gz<br>
70 kumaneko 3102 patch -p1 &lt; patches/ccs-patch-2.6.29-android-goldfish.diff<br>
71     sed -i -e 's:/sbin/modprobe /sbin/hotplug::' -e 's:/sbin/ccs-start:/init:' -- security/ccsecurity/Kconfig<br>
72     ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make goldfish_defconfig<br>
73     ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make -s<br>
74     mkdir -p $ANDROID_IMG/tmp<br>
75     cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img
76     </td></tr>
77     </table>
78    
79     <h2>ステップ5:イメージファイルのコピー</h2>
80    
81     <p>Android エミュレータで指定するためのイメージファイルをコピーします。</p>
82    
83     <table border="1">
84     <tr><td>
85     cd $ANDROID_HOME/out/target/product/generic/<br>
86     cp -p system.img ramdisk.img userdata.img $ANDROID_IMG
87     </td></tr>
88     </table>
89    
90     <h2>ステップ6:ホスト環境用ツールのインストール</h2>
91    
92     <p>Android エミュレータを遠隔操作するために、ホスト側に TOMOYO Linux のツールをインストールします。</p>
93    
94     <table border="1">
95     <tr><td>
96     cd $ANDROID_HOME/tmp/<br>
97 kumaneko 3565 wget http://sourceforge.jp/frs/redir.php?f=/tomoyo/43376/ccs-tools-1.7.2-20100401.tar.gz<br>
98     tar -zxf ccs-tools-1.7.2-20100401.tar.gz<br>
99 kumaneko 3102 cd ccstools<br>
100     sudo apt-get install libreadline5-dev<br>
101     make<br>
102     sudo make install
103     </td></tr>
104     </table>
105    
106     <h2>ステップ7:エミュレータ環境用ツールのインストール</h2>
107    
108     <p>Android エミュレータ側にインストールするためのエージェントをコンパイルします。</p>
109    
110     <table border="1">
111     <tr><td>
112     cd $ANDROID_HOME/tmp/<br>
113     wget -O agcc http://plausible.org/andy/agcc<br>
114     chmod 755 agcc<br>
115     ./agcc -o init_policy $ANDROID_HOME/tmp/ccstools/init_policy.c<br>
116     ./agcc -o ccs-editpolicy-agent $ANDROID_HOME/tmp/ccstools/ccs-editpolicy-agent.c<br>
117     ./agcc -o ccs-init $ANDROID_HOME/tmp/ccstools/ccs-init.c<br>
118     chmod 700 init_policy ccs-editpolicy-agent ccs-init
119     </td></tr>
120     </table>
121    
122     <h2>ステップ8:RAMディスクの編集</h2>
123    
124     <p>Android エミュレータで使用するRAMディスクにエージェントをコピーし、自動的に起動されるようにします。</p>
125    
126     <table border="1">
127     <tr><td>
128     cd $ANDROID_IMG/tmp/<br>
129     zcat ../ramdisk.img | cpio -id<br>
130     echo 'service ccs_agent /sbin/ccs-editpolicy-agent 0.0.0.0:7000' &gt;&gt; init.rc<br>
131     echo '&nbsp;&nbsp;&nbsp;&nbsp;oneshot' &gt;&gt; init.rc<br>
132     echo &gt;&gt; init.rc<br>
133     cp -p $ANDROID_HOME/tmp/init_policy $ANDROID_HOME/tmp/ccs-editpolicy-agent sbin/<br>
134     find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img
135     </td></tr>
136     </table>
137    
138     <h2>ステップ9:エミュレータの起動</h2>
139    
140     <p>Android エミュレータを起動します。カーネルはステップ4で作成したものを、RAMディスクはステップ8で作成したものを指定します。</p>
141    
142     <table border="1">
143     <tr><td>
144     emulator -kernel $ANDROID_IMG/kernel.img -ramdisk $ANDROID_IMG/ramdisk.img -sysdir $ANDROID_IMG -data $ANDROID_IMG/userdata.img -show-kernel
145     </td></tr>
146     </table>
147    
148     <h2>ステップ10:必要なファイルのコピー</h2>
149    
150     <p>TOMOYO Linux のポリシーローダである ccs-init の動作に必要なライブラリをRAMディスクにコピーします。なお、ステップ7で ccs-init をスタティックリンクした場合には、ステップ10は不要です。</p>
151    
152     <table border="1">
153     <tr><td>
154     cd $ANDROID_IMG/tmp/<br>
155     mkdir -p system/bin lib<br>
156     adb pull /system/bin/linker system/bin/<br>
157     adb pull /system/lib/libc.so lib/<br>
158     adb pull /system/lib/libm.so lib/<br>
159     chmod 755 system/bin/linker lib/libc.so lib/libm.so<br>
160     </td></tr>
161     </table>
162    
163     <h2>ステップ11:ポリシーの初期化</h2>
164    
165     <p>TOMOYO Linux が使用するための初期状態のポリシーを作成します。初期状態のポリシーファイルをRAMディスクの中の /etc/ccs/ ディレクトリにコピーします。</p>
166    
167     <table border="1">
168     <tr><td>
169     mkdir -p $ANDROID_IMG/tmp/etc/ccs/<br>
170     adb shell /sbin/init_policy policy_dir=/data/ccs/<br>
171     adb pull /data/ccs/ $ANDROID_IMG/tmp/etc/ccs/<br>
172     adb shell rm /data/ccs/\*<br>
173     adb shell rmdir /data/ccs/<br>
174     adb emu kill
175     </td></tr>
176     </table>
177    
178     <h2>ステップ12:ポリシーの修正</h2>
179    
180     <p>不足している file_pattern や allow_read などを例外ポリシーに追加します。以下の内容は一例です。ドメインポリシーでは全体をプロファイル1(学習モード)で動作させるように指定しています。マネージャにはエージェントプログラムだけを指定しています。</p>
181    
182     <table border="1">
183     <tr><td>
184     cd $ANDROID_IMG/tmp/<br>
185     (<br>
186     echo 'initialize_domain /init'<br>
187     echo 'initialize_domain /system/bin/app_process'<br>
188     <br>
189     echo 'file_pattern /dev/tty\$'<br>
190     <br>
191     echo 'file_pattern /system/lib/\@.so'<br>
192     echo 'allow_read /system/lib/\@.so'<br>
193     echo 'file_pattern /system/framework/\*.jar'<br>
194     echo 'allow_read /system/framework/\*.jar'<br>
195     echo 'file_pattern /system/media/audio/\*/\*'<br>
196     echo 'allow_read /system/media/audio/\*/\*'<br>
197     echo 'file_pattern /system/fonts/\*.ttf'<br>
198     echo 'allow_read /system/fonts/\*.ttf'<br>
199     echo 'file_pattern /data/tombstones/tombstone_\$'<br>
200     <br>
201     echo 'file_pattern /data/dalvik-cache/system@framework@\*.jar@classes.dex'<br>
202     echo 'file_pattern /data/dalvik-cache/system@app@\*.jar@classes.dex'<br>
203     echo 'file_pattern /data/dalvik-cache/data@app@\*@classes.dex'<br>
204     <br>
205     echo 'file_pattern /data/local/tmp/\*.apk'<br>
206     echo 'file_pattern /data/local/tmp/\*.apk'<br>
207     <br>
208     echo 'file_pattern /data/app/\*.tmp'<br>
209     echo 'file_pattern /data/data/\*/databases/\*'<br>
210     echo 'file_pattern /data/data/\*/databases/'<br>
211     <br>
212     echo 'file_pattern /data/dalvik-cache/system@framework@\*.jar@classes.dex'<br>
213     echo 'file_pattern /data/dalvik-cache/system@app@\*.apk@classes.dex'<br>
214     echo 'file_pattern /data/dalvik-cache/system@app-private@\*.apk@classes.dex'<br>
215     <br>
216     echo 'file_pattern /sdcard/dcim/.thumbnails/\$.jpg'<br>
217     echo 'file_pattern /sdcard/dcim/.thumbnails/.thumbdata\*'<br>
218     echo 'file_pattern /sdcard/dcim/.thumbnails/.thumbdata3--\$'<br>
219     <br>
220     echo 'path_group SYSTEM_APK /system/app/\@.apk'<br>
221     <br>
222     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_wmem_min'<br>
223     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_wmem_def'<br>
224     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_wmem_max'<br>
225     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_rmem_min'<br>
226     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_rmem_def'<br>
227     echo 'path_group SYS_FILES /sys/kernel/ipv4/tcp_rmem_max'<br>
228     <br>
229     echo 'allow_read /sys/devices/platform/\*battery\*/power_supply/ac/online'<br>
230     echo 'allow_read /sys/devices/platform/\*battery\*/power_supply/battery/\@'<br>
231     <br>
232     #App. specific data files<br>
233     echo 'file_pattern /data/data/com.android.browser/cache/webviewCache/\*'<br>
234     echo 'file_pattern /data/data/com.android.browser/app_thumbnails/\*'<br>
235     ) &gt;&gt; etc/ccs/exception_policy.conf<br>
236     (<br>
237     echo '&lt;kernel&gt;'<br>
238     echo 'use_profile 1'<br>
239     ) &gt; etc/ccs/domain_policy.conf<br>
240     echo /sbin/ccs-editpolicy-agent &gt; etc/ccs/manager.conf
241     </td></tr>
242     </table>
243    
244     <h2>ステップ13:ポリシーローダの追加</h2>
245    
246     <p>TOMOYO Linux を有効にするために、 ccs-init を追加します。</p>
247    
248     <table border="1">
249     <tr><td>
250     cd $ANDROID_IMG/tmp/<br>
251     rm sbin/init_policy<br>
252     cp -p $ANDROID_HOME/tmp/ccs-init sbin/<br>
253     find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img
254     </td></tr>
255     </table>
256    
257     <h2>ステップ14:エミュレータの起動</h2>
258    
259     <p>Android エミュレータを起動します。カーネルはステップ4で作成したものを、RAMディスクはステップ13で作成したものを指定します。</p>
260    
261     <table border="1">
262     <tr><td>
263     emulator -kernel $ANDROID_IMG/kernel.img -ramdisk $ANDROID_IMG/ramdisk.img -sysdir $ANDROID_IMG -data $ANDROID_IMG/userdata.img -show-kernel
264     </td></tr>
265     </table>
266    
267     <h2>ステップ15:ポート転送の指定</h2>
268    
269     <p>エミュレータ内で動作しているエージェントと通信するために、ポート転送を指定します。以下のように指定した場合、ホスト側でのポート 10000 への TCP 接続は、エミュレータ側でのポート 7000 へと転送されます。ステップ8で ccs-editpolicy-agent をポート 7000 で待機するように指定しているので、ホスト側でポート 10000 へ接続することにより、エージェントとの通信が可能になります。</p>
270    
271     <table border="1">
272     <tr><td>
273     adb forward tcp:10000 tcp:7000
274     </td></tr>
275     </table>
276    
277     <h2>ステップ16:エージェント経由での操作</h2>
278    
279     <p>以下のように ccs-editpolicy を起動すると、エミュレータ内のエージェント経由で ポリシーを閲覧/編集できます。</p>
280    
281     <table border="1">
282     <tr><td>
283     /usr/sbin/ccs-editpolicy 127.0.0.1:10000
284     </td></tr>
285     </table>
286    
287     <p>以下のように ccs-savepolicy を実行すると、エミュレータ内のエージェント経由で現在のポリシーをRAMディスク内の /etc/ccs/ ディレクトリに出力できます。</p>
288    
289     <table border="1">
290     <tr><td>
291     /usr/sbin/ccs-savepolicy edpm $ANDROID_IMG/tmp/etc/ccs/ 127.0.0.1:10000<br>
292     cd $ANDROID_IMG/tmp/<br>
293     find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img
294     </td></tr>
295     </table>
296    
297     <p>以下のように ccs-auditd を起動すると、エミュレータ内のエージェント経由でアクセス許可ログ/拒否ログを取得して保存することができます。なお、アクセスログは大量に出力されるため、ディスクの空き容量に注意してください。</p>
298    
299     <table border="1">
300     <tr><td>
301     /usr/sbin/ccs-auditd /tmp/grant_log /tmp/reject_log 127.0.0.1:10000
302     </td></tr>
303     </table>
304    
305     <p>以下のように ccs-queryd を実行すると、エミュレータ内のエージェント経由で、強制モードでのポリシー違反を対話的に処理できます。 ccs-queryd を終了させるには Ctrl-C を押してください。</p>
306    
307     <table border="1">
308     <tr><td>
309     /usr/sbin/ccs-queryd 127.0.0.1:10000
310     </td></tr>
311     </table>
312    
313     <hr>
314    
315     <p><a href="index.html.ja">目次へ戻る</a></p>
316     <p><a href="http://sourceforge.jp/"><img src="http://sourceforge.jp/sflogo.php?group_id=1973" width="96" height="31" alt="SourceForge.jp"></a></p>
317     </body>
318     </html>

Properties

Name Value
svn:keywords Date

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26