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

Subversion リポジトリの参照

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4861 by kumaneko, Sun Apr 10 08:03:36 2011 UTC revision 6246 by kumaneko, Sun May 12 11:38:46 2013 UTC
# Line 10  Line 10 
10  <body>  <body>
11    
12  <div id="titlebar">  <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>  <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>  </div>
15    
16  <div id="navbar" class="tomoyo-documentation">  <div id="navbar" class="tomoyo-documentation">
# Line 34  Line 34 
34    
35  <h2>TOMOYO Linux on Android</h2>  <h2>TOMOYO Linux on Android</h2>
36    
37  <p>このページでは、 TOMOYO Linux を arm 用 Android エミュレータ上で動作させる手順について説明します。ホスト環境として x86_64 上で動作している Ubuntu 10.04.2 を使用します。</p>  <p>このページでは、 TOMOYO Linux を arm 用 Android エミュレータ上で動作させる手順について説明します。ホスト環境として x86_64 上で動作している Ubuntu 10.04.3 を使用します。</p>
38    
39  <h3>ステップ1:必要なパッケージのインストール</h3>  <h3>ステップ1:必要なパッケージのインストール</h3>
40    
# Line 44  Line 44 
44  sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"  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"  sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
46  sudo apt-get update  sudo apt-get update
47  sudo apt-get install sun-java6-jdk  sudo apt-get install sun-java6-jdk
48  sudo update-java-alternatives -s java-6-sun  sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev \
49  sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib \  lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
50  g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
51  </pre>  </pre>
52    
53  <h3>ステップ2:環境変数の設定</h3>  <h3>ステップ2:環境変数の設定</h3>
# Line 57  g++-multilib libc6-dev-i386 lib32ncurses Line 57  g++-multilib libc6-dev-i386 lib32ncurses
57  <pre class="command">  <pre class="command">
58  export ANDROID_HOME=$HOME/mydroid/  export ANDROID_HOME=$HOME/mydroid/
59  export ANDROID_IMG=$ANDROID_HOME/image/  export ANDROID_IMG=$ANDROID_HOME/image/
 export ANDROID_TOOLCHAIN=$ANDROID_HOME/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/  
 export PATH=$PATH:$ANDROID_HOME/out/host/linux-x86/bin/:$ANDROID_TOOLCHAIN  
60  </pre>  </pre>
61    
62  <p>必要なディレクトリを作成します。</p>  <p>必要なディレクトリを作成します。</p>
# Line 69  mkdir -p $ANDROID_HOME/tmp Line 67  mkdir -p $ANDROID_HOME/tmp
67  mkdir -p $ANDROID_HOME/tmp/policy  mkdir -p $ANDROID_HOME/tmp/policy
68  mkdir -p $ANDROID_IMG  mkdir -p $ANDROID_IMG
69  mkdir -p $ANDROID_IMG/tmp  mkdir -p $ANDROID_IMG/tmp
70  sudo mkdir /var/log/tomoyo  sudo mkdir -p /var/log/tomoyo
71  sudo chown -R `id -u` /var/log/tomoyo/  sudo chown -R `id -u` /var/log/tomoyo/
72  </pre>  </pre>
73    
# Line 79  sudo chown -R `id -u` /var/log/tomoyo/ Line 77  sudo chown -R `id -u` /var/log/tomoyo/
77    
78  <pre class="command">  <pre class="command">
79  cd $ANDROID_HOME  cd $ANDROID_HOME
80  wget http://android.git.kernel.org/repo  wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo
81  chmod 755 repo  chmod 755 repo
82  ./repo init -u git://android.git.kernel.org/platform/manifest.git  ./repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
83  ./repo sync  ./repo sync
84    source build/envsetup.sh
85    lunch full-eng
86  make  make
87  </pre>  </pre>
88    
# Line 92  make Line 92  make
92    
93  <pre class="command">  <pre class="command">
94  cd $ANDROID_HOME/tmp/  cd $ANDROID_HOME/tmp/
95  wget -O ccs-tools.tar.gz \  wget -O ccs-tools-1.8.3-20130406.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49693/ccs-tools-1.8.3-20130406.tar.gz'
96  'http://sourceforge.jp/projects/tomoyo/svn/view/trunk/1.8.x/ccs-tools/ccstools.tar.gz?root=tomoyo&amp;view=tar'  wget -O ccs-tools-1.8.3-20130406.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49693/ccs-tools-1.8.3-20130406.tar.gz.asc'
97  tar -zxf ccs-tools.tar.gz  wget http://I-love.SAKURA.ne.jp/kumaneko-key
98  cd ccstools  gpg --import kumaneko-key
99    gpg ccs-tools-1.8.3-20130406.tar.gz.asc
100    tar -zxf ccs-tools-1.8.3-20130406.tar.gz
101    cd ccs-tools
102  make  make
103  sudo make install  sudo make install
104  </pre>  </pre>
# Line 108  sudo chown -R `id -u` /etc/ccs/ Line 111  sudo chown -R `id -u` /etc/ccs/
111  echo 'rewrite head_pattern /acct/uid/\$/' &gt;&gt; /etc/ccs/tools/patternize.conf  echo 'rewrite head_pattern /acct/uid/\$/' &gt;&gt; /etc/ccs/tools/patternize.conf
112  </pre>  </pre>
113    
 <p>また、ポリシーファイルをカーネルのソースコード内に埋め込むためのツールをコンパイルします。</p>  
   
 <pre class="command">  
 cd $ANDROID_HOME/tmp/  
 wget -O tomoyo2c.c 'http://sourceforge.jp/projects/tomoyo/svn/view/branches/tomoyo2c.c?revision=HEAD&amp;root=tomoyo'  
 gcc -o tomoyo2c tomoyo2c.c  
 </pre>  
   
114  <h3>ステップ5:エミュレータ環境用ツールのインストール</h3>  <h3>ステップ5:エミュレータ環境用ツールのインストール</h3>
115    
116  <p>Android エミュレータ側にインストールするためのエージェントをコンパイルします。</p>  <p>Android エミュレータ側にインストールするためのエージェントをコンパイルします。</p>
# Line 123  gcc -o tomoyo2c tomoyo2c.c Line 118  gcc -o tomoyo2c tomoyo2c.c
118  <pre class="command">  <pre class="command">
119  cd $ANDROID_HOME/tmp/  cd $ANDROID_HOME/tmp/
120  wget -O agcc http://plausible.org/andy/agcc  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  chmod 755 agcc
123  ./agcc -o ccs-editpolicy-agent $ANDROID_HOME/tmp/ccstools/usr_lib_ccs/ccs-editpolicy-agent.c  ./agcc -o ccs-editpolicy-agent $ANDROID_HOME/tmp/ccs-tools/usr_lib_ccs/ccs-editpolicy-agent.c
124  chmod 700 ccs-editpolicy-agent  chmod 700 ccs-editpolicy-agent
125  </pre>  </pre>
126    
# Line 258  echo &gt; stat.conf Line 254  echo &gt; stat.conf
254    
255  <pre class="command">  <pre class="command">
256  cd $ANDROID_HOME/tmp/  cd $ANDROID_HOME/tmp/
257  wget -O kernel-source.tar.gz \  git clone https://android.googlesource.com/kernel/goldfish
258  'http://android.git.kernel.org/?p=kernel/common.git;a=snapshot;h=b0d93fb0426911d0329f861f22c59f1c72cff815;sf=tgz'  cd goldfish/
259  tar -zxf kernel-source.tar.gz  git checkout origin/android-goldfish-2.6.29
260  cd common-b0d93fb/  ARCH=arm CROSS_COMPILE=$ANDROID_EABI_TOOLCHAIN/arm-linux-androideabi- make -s goldfish_armv7_defconfig
 ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make goldfish_defconfig  
261  </pre>  </pre>
262    
263  <p>TOMOYO Linux パッチを適用します。</p>  <p>TOMOYO Linux パッチを適用します。</p>
264    
265  <pre class="command">  <pre class="command">
266  cd $ANDROID_HOME/tmp/common-b0d93fb/  cd $ANDROID_HOME/tmp/goldfish/
267  wget -O ccs-patch.tar.gz 'http://sourceforge.jp/projects/tomoyo/svn/view/trunk/1.8.x/ccs-patch.tar.gz?root=tomoyo&amp;view=tar'  wget -O ccs-patch-1.8.3-20130512.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49684/ccs-patch-1.8.3-20130512.tar.gz'
268  tar -zxf ccs-patch.tar.gz --strip 1  wget -O ccs-patch-1.8.3-20130512.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49684/ccs-patch-1.8.3-20130512.tar.gz.asc'
269    gpg ccs-patch-1.8.3-20130512.tar.gz.asc
270    tar -zxf ccs-patch-1.8.3-20130512.tar.gz
271  patch -p1 &lt; patches/ccs-patch-2.6.29-android-goldfish.diff  patch -p1 &lt; patches/ccs-patch-2.6.29-android-goldfish.diff
272  sed -e 's/# CONFIG_CCSECURITY_USE_BUILTIN_POLICY is not set/CONFIG_CCSECURITY_USE_BUILTIN_POLICY=y/' \  sed -e 's/# CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER is not set/CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER=y/' -- config.ccs &gt;&gt; .config
273  -e 's/# CONFIG_CCSECURITY_ACTIVATE_FROM_THE_BEGINNING is not set/CONFIG_CCSECURITY_ACTIVATE_FROM_THE_BEGINNING=y/' \  mkdir -p security/ccsecurity/policy/
274  -e '# CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER is not set/CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER=y/' -- config.ccs &gt;&gt; .config  cp -p $ANDROID_HOME/tmp/policy/*.conf security/ccsecurity/policy/
 $ANDROID_HOME/tmp/tomoyo2c $ANDROID_HOME/tmp/policy/ &gt; security/ccsecurity/builtin-policy.h  
275  </pre>  </pre>
276    
277  <p>カーネルをコンパイルします。</p>  <p>カーネルをコンパイルします。</p>
278    
279  <pre class="command">  <pre class="command">
280  cd $ANDROID_HOME/tmp/common-b0d93fb/  cd $ANDROID_HOME/tmp/goldfish/
281  ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make -s  ARCH=arm CROSS_COMPILE=$ANDROID_EABI_TOOLCHAIN/arm-linux-androideabi- make -s
282  cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img  cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img
283  </pre>  </pre>
284    
# Line 304  cd $ANDROID_IMG/tmp/ Line 300  cd $ANDROID_IMG/tmp/
300  zcat ../ramdisk.img | cpio -id  zcat ../ramdisk.img | cpio -id
301  echo &gt;&gt; init.rc  echo &gt;&gt; init.rc
302  echo 'service ccs_agent /sbin/ccs-editpolicy-agent 0.0.0.0:7000' &gt;&gt; init.rc  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  echo '&nbsp;&nbsp;&nbsp;&nbsp;oneshot' &gt;&gt; init.rc
305  cp -p $ANDROID_HOME/tmp/ccs-editpolicy-agent sbin/  cp -p $ANDROID_HOME/tmp/ccs-editpolicy-agent sbin/
306  find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img  find . -print0 | cpio -o0 -H newc | gzip -9 &gt; ../ramdisk.img
# Line 371  cd $ANDROID_HOME/tmp/policy/ Line 368  cd $ANDROID_HOME/tmp/policy/
368  <p>また、保存したポリシーをカーネル内に埋め込むには以下のように行ってください。</p>  <p>また、保存したポリシーをカーネル内に埋め込むには以下のように行ってください。</p>
369    
370  <pre class="command">  <pre class="command">
371  cd $ANDROID_HOME/tmp/common-b0d93fb/  cp -p $ANDROID_HOME/tmp/policy/*.conf $ANDROID_HOME/tmp/goldfish/security/ccsecurity/policy/
 $ANDROID_HOME/tmp/tomoyo2c $ANDROID_HOME/tmp/policy/ &gt; security/ccsecurity/builtin-policy.h  
372  </pre>  </pre>
373    
374  <p>カーネルを再コンパイルします。</p>  <p>カーネルを再コンパイルします。</p>
375    
376  <pre class="command">  <pre class="command">
377  cd $ANDROID_HOME/tmp/common-b0d93fb/  cd $ANDROID_HOME/tmp/goldfish/
378  ARCH=arm CROSS_COMPILE=$ANDROID_TOOLCHAIN/arm-eabi- make -s  ARCH=arm CROSS_COMPILE=$ANDROID_EABI_TOOLCHAIN/arm-linux-androideabi- make -s
379  cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img  cp -p arch/arm/boot/zImage $ANDROID_IMG/kernel.img
380  </pre>  </pre>
381    
# Line 402  emulator -kernel $ANDROID_IMG/kernel.img Line 398  emulator -kernel $ANDROID_IMG/kernel.img
398    
399  <p>TOMOYO Linux では強制モードにおけるポリシー違反を契機として外部のプログラムに問い合わせを行うことができます。 ccs-queryd 相当の処理を実装し、 ccs-editpolicy-agent の代わりに常駐させておくという方法を利用できます。</p>  <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 -->  </div><!-- regular-content -->
434    
435  </div><!-- content -->  </div><!-- content -->
# Line 433  emulator -kernel $ANDROID_IMG/kernel.img Line 461  emulator -kernel $ANDROID_IMG/kernel.img
461  <p class="language">Go to <a href="android-arm.html.en">English page</a>.</p>  <p class="language">Go to <a href="android-arm.html.en">English page</a>.</p>
462  <p class="timestamp">Last modified: $Date$</p>  <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>  <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="SourceForge.jp"></a></p>  <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>  </div>
466    
467  </body>  </body>

Legend:
Removed from v.4861  
changed lines
  Added in v.6246

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