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

Subversion リポジトリの参照

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5143 - (hide annotations) (download)
Sat Jun 18 14:39:59 2011 UTC (12 years, 11 months ago) by kumaneko
File size: 21038 byte(s)


1 kumaneko 4325 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 kumaneko 3102 <html lang="ja-JP">
3     <head>
4 kumaneko 4645 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
5     <meta http-equiv="content-style-type" content="text/css">
6     <link rel="stylesheet" href="../media/tomoyolinux.css" media="all" type="text/css">
7     <title>TOMOYO Linux 1.8.x : TOMOYO Linux on Android</title>
8 kumaneko 3102 </head>
9 kumaneko 4645
10 kumaneko 3102 <body>
11    
12 kumaneko 4645 <div id="titlebar">
13     <a href="../index.html.ja"><img src="../media/tomoyotitle.png" alt="tomoyotitle.png" width="320" height="40" border="0" align="left"></a>
14     </div>
15 kumaneko 3801
16 kumaneko 4645 <div id="navbar" class="tomoyo-documentation">
17     <ul id="navbarlist">
18     <li id="tomoyo-home"><a href="../index.html.ja" title="TOMOYO Linux ホーム">ホーム</a></li>
19     <li id="tomoyo-about"><a href="../about.html.ja" title="TOMOYO Linux の詳細">詳細</a></li>
20     <li id="tomoyo-download"><a href="../download.html.ja" title="TOMOYO Linux を入手">ダウンロード</a></li>
21     <li id="tomoyo-changelogs"><a href="../changelogs.html.ja" title="TOMOYO Linux 変更履歴">変更履歴</a></li>
22     <li id="tomoyo-documentation"><a href="../documentation.html.ja" title="公式ドキュメント">ドキュメント</a></li>
23     <li id="tomoyo-support"><a href="../support.html.ja" title="サポート情報">サポート</a></li>
24     <li id="tomoyo-links"><a href="../links.html.ja" title="Links">リンク</a></li>
25     </ul>
26     <ul id="switch-language">
27     <li id="tomoyo-switch-language"><a href="android-arm.html.en" title="Go to English page">English page</a></li>
28     </ul>
29     </div>
30    
31     <div id="content">
32    
33     <div id="regular-content">
34    
35     <h2>TOMOYO Linux on Android</h2>
36    
37 kumaneko 4712 <p>このページでは、 TOMOYO Linux を arm 用 Android エミュレータ上で動作させる手順について説明します。ホスト環境として x86_64 上で動作している Ubuntu 10.04.2 を使用します。</p>
38 kumaneko 3102
39 kumaneko 4645 <h3>ステップ1:必要なパッケージのインストール</h3>
40 kumaneko 3102
41 kumaneko 3765 <p><a href="http://source.android.com/source/download.html">http://source.android.com/source/download.html</a> に示されているとおり、必要なパッケージをインストールします。</p>
42 kumaneko 3102
43 kumaneko 4645 <pre class="command">
44 kumaneko 4712 sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
45     sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
46     sudo apt-get update
47     sudo apt-get install sun-java6-jdk
48     sudo update-java-alternatives -s java-6-sun
49     sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib \
50     g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
51 kumaneko 4645 </pre>
52 kumaneko 3102
53 kumaneko 4645 <h3>ステップ2:環境変数の設定</h3>
54 kumaneko 3102
55 kumaneko 4712 <p>以下の内容を環境変数として指定します。 ~/.bashrc などに追加しておくことをお勧めします。</p>
56 kumaneko 3102
57 kumaneko 4645 <pre class="command">
58     export ANDROID_HOME=$HOME/mydroid/
59     export ANDROID_IMG=$ANDROID_HOME/image/
60 kumaneko 4712 export ANDROID_TOOLCHAIN=$ANDROID_HOME/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
61 kumaneko 3102 export PATH=$PATH:$ANDROID_HOME/out/host/linux-x86/bin/:$ANDROID_TOOLCHAIN
62 kumaneko 4645 </pre>
63 kumaneko 3102
64 kumaneko 4712 <p>必要なディレクトリを作成します。</p>
65    
66     <pre class="command">
67     mkdir -p $ANDROID_HOME
68     mkdir -p $ANDROID_HOME/tmp
69     mkdir -p $ANDROID_HOME/tmp/policy
70     mkdir -p $ANDROID_IMG
71     mkdir -p $ANDROID_IMG/tmp
72     sudo mkdir /var/log/tomoyo
73     sudo chown -R `id -u` /var/log/tomoyo/
74     </pre>
75    
76 kumaneko 4645 <h3>ステップ3: Android 環境の構築</h3>
77 kumaneko 3102
78     <p>エミュレータをコンパイルします。</p>
79    
80 kumaneko 4645 <pre class="command">
81     cd $ANDROID_HOME
82     wget http://android.git.kernel.org/repo
83     chmod 755 repo
84 kumaneko 4712 ./repo init -u git://android.git.kernel.org/platform/manifest.git
85 kumaneko 4645 ./repo sync
86 kumaneko 3102 make
87 kumaneko 4645 </pre>
88 kumaneko 3102
89 kumaneko 4712 <h3>ステップ4:ホスト環境用ツールのインストール</h3>
90 kumaneko 3102
91 kumaneko 4712 <p>Android エミュレータを遠隔操作するために、ホスト側に TOMOYO Linux のツールをインストールします。</p>
92 kumaneko 3102
93 kumaneko 4645 <pre class="command">
94     cd $ANDROID_HOME/tmp/
95 kumaneko 4987 wget -O ccs-tools-1.8.1-20110511.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49693/ccs-tools-1.8.1-20110511.tar.gz'
96     wget -O ccs-tools-1.8.1-20110511.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49693/ccs-tools-1.8.1-20110511.tar.gz.asc'
97     gpg ccs-tools-1.8.1-20110511.tar.gz.asc
98     tar -zxf ccs-tools-1.8.1-20110511.tar.gz
99 kumaneko 4712 cd ccstools
100     make
101     sudo make install
102 kumaneko 4645 </pre>
103 kumaneko 3102
104 kumaneko 4712 <p>また、ポリシーをチューニングするためのツールを使うので、そのための準備を行います。</p>
105 kumaneko 3102
106 kumaneko 4645 <pre class="command">
107 kumaneko 4712 sudo /usr/lib/ccs/init_policy
108     sudo chown -R `id -u` /etc/ccs/
109     echo 'rewrite head_pattern /acct/uid/\$/' &gt;&gt; /etc/ccs/tools/patternize.conf
110 kumaneko 4645 </pre>
111 kumaneko 3102
112 kumaneko 4712 <p>また、ポリシーファイルをカーネルのソースコード内に埋め込むためのツールをコンパイルします。</p>
113 kumaneko 3102
114 kumaneko 4645 <pre class="command">
115     cd $ANDROID_HOME/tmp/
116 kumaneko 4712 wget -O tomoyo2c.c 'http://sourceforge.jp/projects/tomoyo/svn/view/branches/tomoyo2c.c?revision=HEAD&amp;root=tomoyo'
117     gcc -o tomoyo2c tomoyo2c.c
118 kumaneko 4645 </pre>
119 kumaneko 3102
120 kumaneko 4712 <h3>ステップ5:エミュレータ環境用ツールのインストール</h3>
121 kumaneko 3102
122     <p>Android エミュレータ側にインストールするためのエージェントをコンパイルします。</p>
123    
124 kumaneko 4645 <pre class="command">
125     cd $ANDROID_HOME/tmp/
126     wget -O agcc http://plausible.org/andy/agcc
127     chmod 755 agcc
128     ./agcc -o ccs-editpolicy-agent $ANDROID_HOME/tmp/ccstools/usr_lib_ccs/ccs-editpolicy-agent.c
129 kumaneko 4712 chmod 700 ccs-editpolicy-agent
130 kumaneko 4645 </pre>
131 kumaneko 3102
132 kumaneko 4712 <h3>ステップ6:初期ポリシーの作成</h3>
133 kumaneko 3102
134 kumaneko 4712 <p>カーネル内に埋め込んでおくためのポリシーを作成します。</p>
135 kumaneko 3102
136 kumaneko 4712 <ul>
137     <li>全てのドメインを学習モードに設定する。</li>
138     <li>ユーザIDまたはグループIDが 1 ~ 9999 に変化した時点で &lt;kernel&gt; //./system-user ドメインへと遷移する</li>
139     <li>ユーザIDまたはグループIDが 10000 以上に変化した時点で &lt;kernel&gt; //./app-user ドメインへと遷移する</li>
140     <li>予めある程度のアクセス許可を与えておく</li>
141     <li>個々の Android アプリは区別しない</li>
142     <li>ポリシーを変更できるのは /sbin/ccs-editpolicy-agent のみとする</li>
143     </ul>
144    
145     <p>という設定での例を示します。 &lt;kernel&gt; //./app-user ドメインに対して ANY_PATHNAME への書き込み許可は与えすぎです。実際に利用する場合には例えば /system/ 以下への書き込みを禁止するなどの対策を行うべきです。</p>
146    
147 kumaneko 4645 <pre class="command">
148 kumaneko 4712 cd $ANDROID_HOME/tmp/policy/
149     cat &gt; profile.conf &lt;&lt; "EOF"
150     PROFILE_VERSION=20100903
151     0-COMMENT=-----Disabled Mode-----
152     0-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 enforcing_penalty=0 }
153     0-CONFIG={ mode=disabled grant_log=no reject_log=yes }
154     1-COMMENT=-----Learning Mode-----
155     1-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 enforcing_penalty=0 }
156     1-CONFIG={ mode=learning grant_log=no reject_log=yes }
157     2-COMMENT=-----Permissive Mode-----
158     2-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 enforcing_penalty=0 }
159     2-CONFIG={ mode=permissive grant_log=no reject_log=yes }
160     3-COMMENT=-----Enforcing Mode-----
161     3-PREFERENCE={ max_audit_log=1024 max_learning_entry=2048 enforcing_penalty=0 }
162     3-CONFIG={ mode=enforcing grant_log=no reject_log=yes }
163     EOF
164     cat &gt; exception_policy.conf &lt;&lt; "EOF"
165     path_group ANY_PATHNAME /
166     path_group ANY_PATHNAME /\{\*\}/
167     path_group ANY_PATHNAME /\{\*\}/\*
168     path_group ANY_PATHNAME /\*
169     path_group ANY_PATHNAME \*:/
170     path_group ANY_PATHNAME \*:/\{\*\}/
171     path_group ANY_PATHNAME \*:/\{\*\}/\*
172     path_group ANY_PATHNAME \*:/\*
173     path_group ANY_PATHNAME \*:[\$]
174     path_group ANY_PATHNAME socket:[family=\$:type=\$:protocol=\$]
175     acl_group 0 file getattr @ANY_PATHNAME
176     acl_group 0 file ioctl @ANY_PATHNAME 0-0xFFFFFFFF
177     acl_group 0 file read /dev/urandom
178     acl_group 0 file read /system/bin/linker
179     acl_group 0 file read /system/lib/lib\*.so
180     acl_group 0 misc env _
181     acl_group 0 misc env ANDROID_ASSETS
182     acl_group 0 misc env ANDROID_BOOTLOGO
183     acl_group 0 misc env ANDROID_DATA
184     acl_group 0 misc env ANDROID_DNS_MODE
185     acl_group 0 misc env ANDROID_PROPERTY_WORKSPACE
186     acl_group 0 misc env ANDROID_ROOT
187     acl_group 0 misc env ANDROID_SOCKET_\*
188     acl_group 0 misc env ASEC_MOUNTPOINT
189     acl_group 0 misc env BOOTCLASSPATH
190     acl_group 0 misc env EXTERNAL_STORAGE
191     acl_group 0 misc env HOME
192     acl_group 0 misc env LD_LIBRARY_PATH
193     acl_group 0 misc env LOOP_MOUNTPOINT
194     acl_group 0 misc env ndns
195     acl_group 0 misc env PATH
196     acl_group 0 misc env qemu
197     acl_group 0 misc env RANDOM
198     acl_group 0 misc env SHELL
199     acl_group 0 misc env TERM
200 kumaneko 4713 acl_group 0 task auto_domain_transition &lt;kernel&gt; //./app-user task.gid=10000-4294967295
201     acl_group 0 task auto_domain_transition &lt;kernel&gt; //./app-user task.uid=10000-4294967295
202     acl_group 0 task auto_domain_transition &lt;kernel&gt; //./system-user task.gid=1-9999
203     acl_group 0 task auto_domain_transition &lt;kernel&gt; //./system-user task.uid=1-9999
204 kumaneko 4712 acl_group 1 file getattr @ANY_PATHNAME
205     acl_group 1 file ioctl @ANY_PATHNAME 0-0xFFFFFFFF
206     acl_group 1 file read /dev/urandom
207     acl_group 1 file read /system/bin/linker
208     acl_group 1 file read /system/lib/lib\*.so
209     acl_group 1 misc env _
210     acl_group 1 misc env ANDROID_ASSETS
211     acl_group 1 misc env ANDROID_BOOTLOGO
212     acl_group 1 misc env ANDROID_DATA
213     acl_group 1 misc env ANDROID_PROPERTY_WORKSPACE
214     acl_group 1 misc env ANDROID_ROOT
215     acl_group 1 misc env ANDROID_SOCKET_\*
216     acl_group 1 misc env ASEC_MOUNTPOINT
217     acl_group 1 misc env BOOTCLASSPATH
218     acl_group 1 misc env EXTERNAL_STORAGE
219     acl_group 1 misc env HOME
220     acl_group 1 misc env HOSTNAME
221     acl_group 1 misc env LD_LIBRARY_PATH
222     acl_group 1 misc env LOOP_MOUNTPOINT
223     acl_group 1 misc env MKSH
224     acl_group 1 misc env PATH
225     acl_group 1 misc env PS1
226     acl_group 1 misc env RANDOM
227     acl_group 1 misc env SHELL
228     acl_group 1 misc env TERM
229     acl_group 1 misc env USER
230     EOF
231     cat &gt; domain_policy.conf &lt;&lt; "EOF"
232     &lt;kernel&gt;
233     use_profile 1
234     use_group 0
235    
236     &lt;kernel&gt; //./system-user
237     use_profile 1
238     use_group 1
239    
240     file read/write/unlink/rmdir/truncate/symlink @ANY_PATHNAME task.euid=1-9999 task.egid=1-9999
241     file create/mkdir/mkfifo/mksock/chmod @ANY_PATHNAME 0-0777 task.euid=1-9999 task.egid=1-9999
242     file link/rename @ANY_PATHNAME @ANY_PATHNAME task.euid=1-9999 task.egid=1-9999
243    
244     &lt;kernel&gt; //./app-user
245     use_profile 1
246     use_group 1
247    
248     file read/write/unlink/rmdir/truncate/symlink @ANY_PATHNAME task.euid=10000-4294967295 task.egid=10000-4294967295
249     file create/mkdir/mkfifo/mksock/chmod @ANY_PATHNAME 0-0777 task.euid=10000-4294967295 task.egid=10000-4294967295
250     file link/rename @ANY_PATHNAME @ANY_PATHNAME task.euid=10000-4294967295 task.egid=10000-4294967295
251     EOF
252     echo /sbin/ccs-editpolicy-agent &gt; manager.conf
253     echo &gt; stat.conf
254 kumaneko 4645 </pre>
255 kumaneko 3102
256 kumaneko 4712 <h3>ステップ7: Android 用カーネルの構築</h3>
257 kumaneko 3102
258 kumaneko 4712 <p>カーネルのソースコードをダウンロードして展開します。</p>
259 kumaneko 3102
260 kumaneko 4645 <pre class="command">
261 kumaneko 4712 cd $ANDROID_HOME/tmp/
262     wget -O kernel-source.tar.gz \
263     'http://android.git.kernel.org/?p=kernel/common.git;a=snapshot;h=b0d93fb0426911d0329f861f22c59f1c72cff815;sf=tgz'
264     tar -zxf kernel-source.tar.gz
265     cd common-b0d93fb/
266     ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make goldfish_defconfig
267 kumaneko 4645 </pre>
268 kumaneko 3102
269 kumaneko 4712 <p>TOMOYO Linux パッチを適用します。</p>
270 kumaneko 3102
271 kumaneko 4712 <pre class="command">
272     cd $ANDROID_HOME/tmp/common-b0d93fb/
273 kumaneko 4987 wget -O ccs-patch-1.8.1-20110511.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.1-20110511.tar.gz'
274     wget -O ccs-patch-1.8.1-20110511.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.1-20110511.tar.gz.asc'
275     gpg ccs-patch-1.8.1-20110511.tar.gz.asc
276     tar -zxf ccs-patch-1.8.1-20110511.tar.gz
277 kumaneko 4712 patch -p1 &lt; patches/ccs-patch-2.6.29-android-goldfish.diff
278     sed -e 's/# CONFIG_CCSECURITY_USE_BUILTIN_POLICY is not set/CONFIG_CCSECURITY_USE_BUILTIN_POLICY=y/' \
279     -e 's/# CONFIG_CCSECURITY_ACTIVATE_FROM_THE_BEGINNING is not set/CONFIG_CCSECURITY_ACTIVATE_FROM_THE_BEGINNING=y/' \
280     -e '# CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER is not set/CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER=y/' -- config.ccs &gt;&gt; .config
281     $ANDROID_HOME/tmp/tomoyo2c $ANDROID_HOME/tmp/policy/ &gt; security/ccsecurity/builtin-policy.h
282     </pre>
283 kumaneko 3102
284 kumaneko 5143 <!--
285     <pre class="command">
286     cd $ANDROID_HOME/tmp/common-b0d93fb/
287     wget -O ccs-patch-1.8.1-20110511.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.1-20110511.tar.gz'
288     wget -O ccs-patch-1.8.1-20110511.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.1-20110511.tar.gz.asc'
289     gpg ccs-patch-1.8.1-20110511.tar.gz.asc
290     tar -zxf ccs-patch-1.8.1-20110511.tar.gz
291     patch -p1 &lt; patches/ccs-patch-2.6.29-android-goldfish.diff
292     sed -e 's/# CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER is not set/CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER=y/' -- config.ccs &gt;&gt; .config
293     cp -p $ANDROID_HOME/tmp/policy/*.conf &gt; security/ccsecurity/policy/
294     </pre>
295     -->
296    
297 kumaneko 4712 <p>カーネルをコンパイルします。</p>
298    
299 kumaneko 4645 <pre class="command">
300 kumaneko 4712 cd $ANDROID_HOME/tmp/common-b0d93fb/
301     ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make -s
302     cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img
303 kumaneko 4645 </pre>
304 kumaneko 3102
305 kumaneko 4712 <h3>ステップ8:イメージファイルのコピー</h3>
306 kumaneko 3102
307 kumaneko 4712 <p>Android エミュレータで指定するためのイメージファイルをコピーします。</p>
308 kumaneko 3102
309 kumaneko 4645 <pre class="command">
310 kumaneko 4712 cd $ANDROID_HOME/out/target/product/generic/
311     cp -p system.img ramdisk.img userdata.img $ANDROID_IMG
312 kumaneko 4645 </pre>
313 kumaneko 3102
314 kumaneko 4712 <h3>ステップ9:RAMディスクの編集</h3>
315 kumaneko 3102
316 kumaneko 4712 <p>Android エミュレータで使用するRAMディスクにエージェントをコピーし、自動的に起動されるようにします。</p>
317 kumaneko 3102
318 kumaneko 4645 <pre class="command">
319     cd $ANDROID_IMG/tmp/
320 kumaneko 4712 zcat ../ramdisk.img | cpio -id
321     echo &gt;&gt; init.rc
322     echo 'service ccs_agent /sbin/ccs-editpolicy-agent 0.0.0.0:7000' &gt;&gt; init.rc
323     echo '&nbsp;&nbsp;&nbsp;&nbsp;oneshot' &gt;&gt; init.rc
324     cp -p $ANDROID_HOME/tmp/ccs-editpolicy-agent sbin/
325     find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img
326     </pre>
327 kumaneko 4645
328 kumaneko 4712 <h3>ステップ10:エミュレータの起動</h3>
329 kumaneko 4645
330 kumaneko 4712 <p>Android エミュレータを起動します。カーネルはステップ7で作成したものを、RAMディスクはステップ9で作成したものを指定します。</p>
331 kumaneko 4645
332 kumaneko 4712 <pre class="command">
333     emulator -kernel $ANDROID_IMG/kernel.img -ramdisk $ANDROID_IMG/ramdisk.img -sysdir $ANDROID_IMG \
334     -data $ANDROID_IMG/userdata.img -show-kernel
335     </pre>
336 kumaneko 4645
337 kumaneko 4712 <h3>ステップ11:ポート転送の指定</h3>
338 kumaneko 4645
339 kumaneko 4712 <p>エミュレータ内で動作しているエージェントと通信するために、ポート転送を指定します。以下のように指定した場合、ホスト側でのポート 10000 への TCP 接続は、エミュレータ側でのポート 7000 へと転送されます。ステップ9で ccs-editpolicy-agent をポート 7000 で待機するように指定しているので、ホスト側でポート 10000 へ接続することにより、エージェントとの通信が可能になります。</p>
340    
341     <pre class="command">
342     adb forward tcp:10000 tcp:7000
343 kumaneko 4645 </pre>
344 kumaneko 3102
345 kumaneko 4712 <h3>ステップ12:エージェント経由での操作</h3>
346 kumaneko 3102
347 kumaneko 4712 <p>以下のように ccs-editpolicy を起動すると、エミュレータ内のエージェント経由で ポリシーを閲覧/編集できます。</p>
348 kumaneko 3102
349 kumaneko 4645 <pre class="command">
350 kumaneko 4712 /usr/sbin/ccs-editpolicy 127.0.0.1:10000
351 kumaneko 4645 </pre>
352 kumaneko 3102
353 kumaneko 4712 <p>以下のように ccs-auditd を起動すると、エミュレータ内のエージェント経由でアクセス許可ログ/拒否ログを取得して保存することができます。なお、アクセスログは大量に出力されるため、ディスクの空き容量に注意してください。</p>
354 kumaneko 3102
355 kumaneko 4712 <pre class="command">
356     /usr/sbin/ccs-auditd 127.0.0.1:10000
357     </pre>
358 kumaneko 3102
359 kumaneko 4712 <p>以下のように ccs-queryd を実行すると、エミュレータ内のエージェント経由で、強制モードでのポリシー違反を対話的に処理できます。 ccs-queryd を終了させるには Ctrl-C を押してください。</p>
360    
361 kumaneko 4645 <pre class="command">
362 kumaneko 4712 /usr/sbin/ccs-queryd 127.0.0.1:10000
363 kumaneko 4645 </pre>
364 kumaneko 3102
365 kumaneko 4712 <p>ワイルドカード化を行うには以下のようにしてください。ワイルドカード化のルールは /etc/ccs/tools/patternize.conf で定義されているので、適宜編集してください。</p>
366 kumaneko 3102
367 kumaneko 4645 <pre class="command">
368 kumaneko 4712 cd $ANDROID_HOME/tmp/policy/
369     /usr/sbin/ccs-savepolicy -d 127.0.0.1:10000 &gt; domain_policy.old
370     /usr/sbin/ccs-patternize &lt; domain_policy.old &gt; domain_policy.new
371     /usr/sbin/ccs-diffpolicy domain_policy.old domain_policy.new &gt; domain_policy.diff
372     less domain_policy.diff
373     /usr/sbin/ccs-loadpolicy -d 127.0.0.1:10000 &lt; domain_policy.diff
374 kumaneko 4645 </pre>
375 kumaneko 3102
376 kumaneko 4712 <h3>ステップ13:ポリシーのアップデート</h3>
377 kumaneko 3102
378 kumaneko 4712 <p>ポリシーはメモリ上にのみ存在しているため、エミュレータを終了すると失われてしまいます。エミュレータを終了する前に忘れずにポリシーを保存するようにしてください。</p>
379 kumaneko 3102
380 kumaneko 4645 <pre class="command">
381 kumaneko 4712 cd $ANDROID_HOME/tmp/policy/
382     /usr/sbin/ccs-savepolicy -e 127.0.0.1:10000 &gt; exception_policy.conf
383     /usr/sbin/ccs-savepolicy -d 127.0.0.1:10000 &gt; domain_policy.conf
384     /usr/sbin/ccs-savepolicy -p 127.0.0.1:10000 &gt; profile.conf
385 kumaneko 4645 </pre>
386 kumaneko 3102
387 kumaneko 4712 <p>また、保存したポリシーをカーネル内に埋め込むには以下のように行ってください。</p>
388 kumaneko 3102
389 kumaneko 4645 <pre class="command">
390 kumaneko 4712 cd $ANDROID_HOME/tmp/common-b0d93fb/
391     $ANDROID_HOME/tmp/tomoyo2c $ANDROID_HOME/tmp/policy/ &gt; security/ccsecurity/builtin-policy.h
392 kumaneko 4645 </pre>
393 kumaneko 3102
394 kumaneko 4712 <p>カーネルを再コンパイルします。</p>
395 kumaneko 3102
396 kumaneko 4645 <pre class="command">
397 kumaneko 4712 cd $ANDROID_HOME/tmp/common-b0d93fb/
398     ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make -s
399     cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img
400 kumaneko 4645 </pre>
401 kumaneko 3102
402 kumaneko 4712 <p>再度エミュレータを実行します。</p>
403 kumaneko 3102
404 kumaneko 4645 <pre class="command">
405 kumaneko 4712 emulator -kernel $ANDROID_IMG/kernel.img -ramdisk $ANDROID_IMG/ramdisk.img -sysdir $ANDROID_IMG \
406     -data $ANDROID_IMG/userdata.img -show-kernel
407 kumaneko 4645 </pre>
408 kumaneko 3102
409 kumaneko 4712 <p>最終的なポリシーが完成したら、カーネル内に埋め込まれている domain_policy.conf に enforcing mode 用のプロファイルを割り当てておく( use_profile 3 )ことにより、 /init が実行される時点からアクセス制御を有効にすることができます。その状態で正常に動作することを確認したら、ステップ9で追加した /sbin/ccs-editpolicy-agent を削除します。また、 /init.rc およびカーネル内に埋め込まれた profile.conf からも ccs-editpolicy-agent を削除します。</p>
410    
411     <h3>補足:ポリシーの更新を認めたい場合のヒント</h3>
412    
413     <p>Android ではユーザがアプリケーションを追加することができます。上記手順では、ユーザIDに基づいて3つのカテゴリに分類するという方法により、アプリケーションが追加されてもポリシーを更新する必要が無いような仕様になっています。</p>
414    
415     <p>しかし、追加されるアプリケーションによっては、ポリシーを更新したい場合があるかもしれません。そのような場合、起動時に必要になるポリシーとしてカーネル内に埋め込む固定分と、起動後に必要になるポリシーとしてカーネル内には埋め込まない変動分とを分離することで対処するという方法が考えられます。</p>
416    
417     <p>起動時に必要となるポリシーはカーネルを読み込み専用のパーティションに配置することで、改ざんされる可能性を減らすことができます。起動後に必要になるポリシーは読み書きが可能なパーティションに配置することになるので改ざんされる可能性が高くなります。そのため、例えば GPG で署名し、改ざんされていないことを確認できた場合にのみポリシーを追加読み込みするという方法が考えられます。</p>
418    
419     <p>TOMOYO Linux では強制モードにおけるポリシー違反を契機として外部のプログラムに問い合わせを行うことができます。 ccs-queryd 相当の処理を実装し、 ccs-editpolicy-agent の代わりに常駐させておくという方法を利用できます。</p>
420    
421 kumaneko 4645 </div><!-- regular-content -->
422    
423     </div><!-- content -->
424    
425     <div id="navfooter">
426 kumaneko 3102 <hr>
427 kumaneko 4645 <table>
428     <tr>
429     <td class="docs-previous">
430     </td>
431     <td class="docs-index">
432     <a href="index.html.ja">目次</a>
433     </td>
434     <td class="docs-next">
435     </td>
436     </tr>
437     <tr>
438     <td class="docs-previous-description">
439     </td>
440     <td class="docs-home">
441     </td>
442     <td class="docs-next-description">
443     </td>
444     </tr>
445     </table>
446     </div>
447 kumaneko 3102
448 kumaneko 4645 <div id="footer">
449     <p class="language">Go to <a href="android-arm.html.en">English page</a>.</p>
450     <p class="timestamp">Last modified: $Date$</p>
451     <p class="trademark">Linux&reg; は世界各国における Linus Torvalds の登録商標です。 TOMOYO&reg;<a href="http://www.nttdata.co.jp/">株式会社NTTデータ</a>の登録商標です。</p>
452 kumaneko 3102 <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>
453 kumaneko 4645 </div>
454    
455 kumaneko 3102 </body>
456     </html>

Properties

Name Value
svn:keywords Date

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