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

Subversion リポジトリの参照

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

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

revision 5509 by kumaneko, Thu Sep 29 11:40:47 2011 UTC revision 6149 by kumaneko, Mon Oct 15 14:12:07 2012 UTC
# 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-1.8.3-20110929.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49693/ccs-tools-1.8.3-20110929.tar.gz'  wget -O ccs-tools-1.8.3-20120805.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49693/ccs-tools-1.8.3-20120805.tar.gz'
96  wget -O ccs-tools-1.8.3-20110929.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49693/ccs-tools-1.8.3-20110929.tar.gz.asc'  wget -O ccs-tools-1.8.3-20120805.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49693/ccs-tools-1.8.3-20120805.tar.gz.asc'
97  gpg ccs-tools-1.8.3-20110929.tar.gz.asc  wget http://I-love.SAKURA.ne.jp/kumaneko-key
98  tar -zxf ccs-tools-1.8.3-20110929.tar.gz  gpg --import kumaneko-key
99  cd ccstools  gpg ccs-tools-1.8.3-20120805.tar.gz.asc
100    tar -zxf ccs-tools-1.8.3-20120805.tar.gz
101    cd ccs-tools
102  make  make
103  sudo make install  sudo make install
104  </pre>  </pre>
# Line 116  echo 'rewrite head_pattern /acct/uid/\$/ Line 118  echo 'rewrite head_pattern /acct/uid/\$/
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 251  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-1.8.3-20110929.tar.gz 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.3-20110929.tar.gz'  wget -O ccs-patch-1.8.3-20121015.tar.gz 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49684/ccs-patch-1.8.3-20121015.tar.gz'
268  wget -O ccs-patch-1.8.3-20110929.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?f=/tomoyo/49684/ccs-patch-1.8.3-20110929.tar.gz.asc'  wget -O ccs-patch-1.8.3-20121015.tar.gz.asc 'http://sourceforge.jp/frs/redir.php?m=jaist&amp;f=/tomoyo/49684/ccs-patch-1.8.3-20121015.tar.gz.asc'
269  gpg ccs-patch-1.8.3-20110929.tar.gz.asc  gpg ccs-patch-1.8.3-20121015.tar.gz.asc
270  tar -zxf ccs-patch-1.8.3-20110929.tar.gz  tar -zxf ccs-patch-1.8.3-20121015.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_OMIT_USERSPACE_LOADER is not set/CONFIG_CCSECURITY_OMIT_USERSPACE_LOADER=y/' -- config.ccs &gt;&gt; .config  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/  cp -p $ANDROID_HOME/tmp/policy/*.conf security/ccsecurity/policy/
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 297  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 364  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  cp -p $ANDROID_HOME/tmp/policy/*.conf $ANDROID_HOME/tmp/common-b0d93fb/security/ccsecurity/policy/  cp -p $ANDROID_HOME/tmp/policy/*.conf $ANDROID_HOME/tmp/goldfish/security/ccsecurity/policy/
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 400  emulator -kernel $ANDROID_IMG/kernel.img Line 404  emulator -kernel $ANDROID_IMG/kernel.img
404    
405  <pre class="command">  <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  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/  cp -p $ANDROID_HOME/tmp/policy/*.conf security/ccsecurity/policy/
409  </pre>  </pre>
410    
411  <p>という部分を</p>  <p>という部分を</p>
412    
413  <pre class="command">  <pre class="command">
414  cat config.ccs &gt;&gt; .config  sed -e 's:/sbin/init:/init:' -- config.ccs &gt;&gt; .config
415  </pre>  </pre>
416    
417  <p>に置き換えてください。このようにした場合、ポリシーローダとして /sbin/ccs-init (および /sbin/ccs-init が依存するファイルとして /system/bin/linker /lib/libc.so /lib/libm.so )もRAMディスク内にコピーしてください。( /sbin/ccs-init が実行される時点では /system/ パーティションがマウントされていないため、シンボリックリンクでの代用はできません。)</p>  <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">  <pre class="command">
420  cd $ANDROID_HOME/tmp/  cd $ANDROID_HOME/tmp/
421  ./agcc -o ccs-init $ANDROID_HOME/tmp/ccstools/sbin/ccs-init.c  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  chmod 700 ccs-init  ./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>  </pre>
432    
 <p>また、 ccs-init.c はポリシーを /etc/ccs/ から読み込むようになっていますので、適宜修正(例えば $ANDROID_HOME/tmp/policy/*.conf の内容を ccs-init.c に埋め込んでしまうなど)してください。</p>  
   
433  </div><!-- regular-content -->  </div><!-- regular-content -->
434    
435  </div><!-- content -->  </div><!-- content -->

Legend:
Removed from v.5509  
changed lines
  Added in v.6149

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