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

Subversion リポジトリの参照

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6332 - (show annotations) (download)
Sun Jun 1 04:02:11 2014 UTC (9 years, 11 months ago) by kumaneko
File size: 22298 byte(s)


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

Properties

Name Value
svn:keywords Date

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