Software/Android/x86
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
]
開始行:
[[Software/Android]]
- 目次
#contents
* Android for x86 [#ve9179a5]
* Android kernel (AOSP版) tips for x86 [#h43eeb1c]
- 2010/06/24 現在~
AOSP から取得した Android kernel についての tips です。~
この項目ではandroid-x86.org版 ではなくAndroid Open Source...
** kernel 取得方法 [#p696774e]
$ mkdir kernel_work
$ cd kernel_work
$ git clone git://android.git.kernel.org/kernel/common.g...
$ cd android_kernel
2.6.29 の場合~
$ git checkout --track -b android-2.6.29 origin/android-...
2.6.32 の場合~
$ git checkout --track -b android-2.6.32 origin/android-...
** android-2.6.29 [#x974b9cd]
- 2010/06/24 現在~
android_kernel 内にkernel 2.6.29 が展開されています。~
.config は arch/x86/configs/i386_defconfig を使用しました...
$ cd ~/
$ cd kernel/android_kernel
$ cp arch/x86/configs/i386_defconfig .config
$ make menuconfig
Android に必要なモジュール(主に staging にあります)を導入...
ここで make を実行するとcpuset.c alarm.c でエラーが起こり...
1. kernel/cpuset.c ~
kernel/cpuset.c: In function ‘cpuset_can_attach’:
kernel/cpuset.c:1360: error: ‘task’ undeclared (first us...
kernel/cpuset.c:1360: error: (Each undeclared identifier...
kernel/cpuset.c:1360: error: for each function it appear...
make[1]: *** [kernel/cpuset.o] エラー 1
make: *** [kernel] エラー 2
これは kernel/cpuset.c の1354行目に記述ミスがあるためです...
(2010/06/24現在も修正されていませんでした)~
static int cpuset_can_attach(struct cgroup_subsys *ss,
struct cgroup *cont, struct...
{
struct cpuset *cs = cgroup_cs(cont);
int ret = 0;
+ // change task->tsk
+ // if ((current != task) && (!capable(CAP_SYS_ADM...
+ if ((current != tsk) && (!capable(CAP_SYS_ADMIN)...
const struct cred *cred = current_cred(),...
if (cred->euid != tcred->uid && cred->eu...
return -EPERM;
}
if (cpumask_empty(cs->cpus_allowed) || nodes_emp...
return -ENOSPC;
if (tsk->flags & PF_THREAD_BOUND) {
task を tsk に変更すると続きます。~
参考サイト~
http://zash-egg.seesaa.net/article/131182492.html ~
http://www.mail-archive.com/android-kernel@googlegroups.c...
~
続けていくともう一つエラーが起こります。~
~
2. drivers/rtc/alarm.c ~
もう一つのエラーはalarm.c で起こります。~
CC drivers/rtc/alarm.o
drivers/rtc/alarm.c:16:27: error: asm/mach/time.h: No su...
drivers/rtc/alarm.c: In function ‘alarm_suspend’:
~
time.h が見つからないというエラーが起こります。~
time.h が確認できませんでしたのでdrivers/rtc/alarm.cを以...
$ ls include/asm
asm-offsets.h
- alarm.c 12行目付近~
* GNU General Public License for more details.
*
*/
+ #ifdef __i386__
+ #else
#include <asm/mach/time.h>
+ #endif
#include <linux/android_alarm.h>
#include <linux/device.h>
- alarm.c 320行目付近~
static void alarm_triggered_func(void *p)
{
struct rtc_device *rtc = alarm_rtc_dev;
if (!(rtc->irq_data & RTC_AF))
return;
ANDROID_ALARM_DPRINTF(ANDROID_ALARM_PRINT_INT, ...
wake_lock_timeout(&alarm_rtc_wake_lock, 1 * HZ);
}
+ #ifdef __i386__
+ // Port this function from arch/arm/kernel/time.c
+ /**
+ * save_time_delta - Save the offset between system tim...
+ * @delta: pointer to timespec to store delta
+ * @rtc: pointer to timespec for current RTC time
+ *
+ * Return a delta between the system time and the RTC t...
+ * that system time can be restored later with restore_...
+ */
+ static void save_time_delta(struct timespec *delta, st...
+ {
+ set_normalized_timespec(delta,
+ xtime.tv_sec - rtc->tv_sec,
+ xtime.tv_nsec - rtc->tv_nsec);
+ }
+ #endif
int alarm_suspend(struct platform_device *pdev, pm_messa...
{
int err = 0;
参考サイト:~
https://review.source.android.com/#patch,sidebyside,6751,...
~
以上で、android-2.6.29 のx86版ビルドが完了します。~
~
* Android-x86 1.6-r2 [#m23df227]
- 2010/03/29 現在 ~
Android-x86 から 2010年3月中旬に Android-x86 1.6r2 がリリ...
http://www.android-x86.org/releases/releasenote_1_6_r2 ~
Eclair のポーティングも進んでいますが、リリースアナウンス...
Android-x86 1.6r2 を DUX 社製 組込向けAtom ボード[[HFMB-2...
AXIMOTEK 社製 Intel Atom 向けPico-ITX [[PICO821:http://ax...
動作させました。以下に手順を記載します。~
使用した HFMB-22,PICO821 は共にディスクレスです。
手順は共に同じ手順で記載しています、また USB Disk(2GB)で...
** ソースファイルの取得とビルド [#qa0117c0]
環境構築は、[[過去のバージョン]]のものを使用しています。~
OS は Ubuntu 8.04 です。~
~
- ソースファイルの取得 ~
ソースファイルの取得は、android-x86.org から取得していま...
ソースファイル取得のためのディレクトリを作成し、そのディ...
repo を実行します。 ~
$ mkdir android-x86-1.6r2
$ cd android-x86-1.6r2
$ repo init -u git://git.android-x86.org/platform/manife...
$ repo sync
- ビルド ~
動作をさせるx86 マシンは HFMB-22 ですが、TARGET_PRODUCT ...
$ make usb_img TARGET_PRODUCT=eeepc
ビルドが完了後に、android-x86-1.6r2/out/target/product/ee...
作成されています。このディレクトリ内の android-system/ に...
install.img、kernel、ramdisk.img、system.imgがあります。~
$ cd ~/android-x86-1.6r2/out/target/product/eeepc/usb_boot
$ ls android-system
initrd.img install.img kernel ramdisk.img system.img
** USB Disk boot [#f52e7d68]
USB Disk(2GB) をビルドしたマシンに挿し、ext3でフォーマッ...
android-system をUSB Disk にコピーします。~
# vfat でも動作できるとのことですが、今回は試していません...
#ここでは /media/disk にマウントされた場合で記載します。 ~
$ sudo cp -fr android-system /media/disk/
- grubのインストール ~
注:USB Disk の /dev 以下の位置を確認して作業してください...
$ sudo grub-install --root-directory=/media/disk --no-fl...
- grub の設定 ~
grub の menu.lst を編集します。~
$ sudo vi /media/disk/boot/grub
$ sudo vi menu.lst
menu.lst は android-x86-1.6r2/out/target/product/eeepc/us...
内容とほぼ同じです。~
# HFMB-22 のシステムコントローラハブが US15W ですので VE...
default=0
root (hd0,0)
title Live USB - VESA Mode
kernel /android-system/kernel root=/dev/ram0 and...
initrd /android-system/initrd.img
title Live USB - Debug Mode
kernel /android-system/kernel root=/dev/ram0 and...
initrd /android-system/initrd.img
以上で準備は完了です。~
HFMB-22 に上記 USB Disk を挿し、電源投入後、BIOSで USB Di...
grub の menu で VESA Mode を選択し Android が起動した写真...
#サスペンドに入ると復帰ができないのでディスプレイは常時点...
-PICO821
#ref(pico821_android.jpg,,50%)~
-HFMB-22
#ref(atom-android1.6_01.jpg,,50%);~
~
#ref(atom-android1.6_02.jpg,,60%);~
~
#ref(atom-android1.6_03.jpg,,60%);
* 過去のバージョン [#lae6a92c]
* 2009/04 cupcake [#r9fea9f7]
この項目はミラクル・リナックス中河 宏文さんによる[[ITpro>...
みずの@組み込みWGさんによる[[日本Androidの会 2009年3月...
(PDFファイル)を参考に作成しました。(2009年4月中旬時点)
''Androidは日々更新されているため、以下の内容は全て確認時...
ファイルの編集にあたり~
http://code.google.com/p/patch-hosting-for-android-x86-su...
にあるパッチ~
boot_able_img_v2.patch ~
cursor.patch ~
alarm.patch ~
e2fsprogs.patch ~
frameworks.patch (※)
を適用しました。~
※現在は frameworks_v2.patch に変更されているようです。
- 対象機種はLenovoのIdeaPad S10eになります。~
**USBディスクへの移植手順 [#va96115c]
- Ubuntu 8.04 or 8.10のマシンを用意します。~
*** ビルドに必要なパッケージのインストール [#u3570077]
Androidをビルドするために必要なパッケージをインストールす...
$ sudo apt-get update
$ sudo apt-get -y install git-core gnupg sun-java5-jdk f...
libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential z...
libncurses5-dev zlib1g-dev valgrind g++
注:前述の参考サイトではJDK6を利用していますが、
http://source.android.com/download ~
によると
''JDK 5.0, update 12 or higher. Java 6 is not supported,...
となっているため、今回はJDK5を利用しました(本ドキュメン...
利用可能かは未確認です)。
*** Androidの導入 [#t957e0d3]
- repoのインストール ~
$cd ~
$ mkdir bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
- JAVA_HOMEの設定 ~
$ export JAVA_HOME=/usr/lib/jvm/java-5-sun-1.5.hoge
注:hogeはインストールされたバージョンによって異なります...
バージョンの確認をして、設定をしてください。~
$ export PATH=$PATH:~/bin
- ソースコード取得 ~
今回はcupcakeを利用します。~
$ mkdir cupcake
$ cd cupcake
$ repo init -u git://android.git.kernel.org/platform/man...
$ repo sync
- manifestの作成 ~
IdeaPadへの導入であるがEeePC701のmanifestを使用する。~
$ vi ./.repo/local_manifest.xml
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendo...
</manifest>
- 再度 repo sync
$ repo sync
- Android ソースファイル修正 ~
電源管理インタフェースが無いと入力イベントを受け付けなく...
$ vi frameworks/base/services/java/com/android/server/Po...
344行目付近
// assume nothing is on yet
- mUserState = mPowerState = 0;
+ mUserState = mPowerState = SCREEN_BRIGHT;
また、~
http://code.google.com/p/patch-hosting-for-android-x86-su...
にある各patchをあてる
- Androidのビルド ~
上記準備が整ったらビルドします。
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREO...
*** kernelの準備 [#q5607ca4]
- kernelの設定
$ cd kernel
$ make i386_defconfig
$ make menuconfig
以下の設定は最低限必要になります。
General setup --->
(-android) <-作成したものをわかりやすくするためです。
[*] Enable the Anonymous Shared Memory Subsystem
Power management options --->
[*] Wake lock
Device Drivers --->
[*] Misc devices --->
[ ] Android pmem allocator <-これがあるとビルドの際エ...
<*> Binder IPC Driver
<*> Low memory killer
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
[*] Atheros L1E Gigabit Ethernet support (EXPERIMEN...
Graphics support --->
<*> Support for frame buffer devices --->
[*] VESA VGA graphics support
<*> Real Time Clock --->
[*] Android alarm driver
注:マウスを使用する場合は該当のマウスにチェックを入れて...
また、上記ではAtherosのEthernet Driverを使用していますが...
Ethernet Driverの種類が違いますので適宜変更してください。~
~
参考のためにconfigファイルを置いておきます。~
#ref(config-x86) ~
使用する際は ~
.config
とリネームして~
make oldconfig
make menuconfig
を実行してください。~
- カーネルビルド ~
$ make
$ cd ..
*** USBディスクでの起動準備 [#uc0cf459]
- USBディスクのフォーマット ~
$ sudo apt-get install gparted
「システム」−>「システム管理」ー>「パーティションエディ...
にて「ext3」でフォーマットする。
- ファイルのコピー ~
通常Ubuntuではオートマウントされます。 ~
マウント位置は/media/diskになります。 ~
$ sudo cp -fr out/target/product/eee_701/root/* /media/d...
$ sudo cp -fr out/target/product/eee_701/system/* /media...
$ sudo mkdir /media/disk/boot
$ sudo chmod 666 /media/disk/system/usr/keychars/*
$ sudo chmod 666 /media/disk/system/usr/keylayout/*
$ sudo cp kernel/arch/x86/boot/bzImage /media/disk/boot/...
オートマウントされない場合は以下を試してみてください。~
$ sudo mount -t ext3 /dev/sdb1 /mnt/usb
注意:/mnt/usbにした場合はコピー先のディレクトリ位置が
変わります。~
- initrcの編集 ~
$ sudo vi /media/disk/init.rc
添付ファイルのように編集する。
#ref(init.rc)
~
- init.usb.shの作成 ~
$ sudo vi /media/disk/system/etc/init.usb.sh
#!/system/bin/sh
netcfg eth0 dhcp
setprop net.dns1 4.2.2.2
実行権限を与える~
$ sudo chmod a+x /media/disk/system/etc/init.usb.sh
- grubの設定 ~
$ sudo mkdir /media/disk/boot/grub
$ sudo vi /media/disk/boot/grub/menu.lst
default 0
timeout 3
hiddenmenu
title Android
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sdb1 init=/init rw vga=as...
解像度一覧を出力するためvga=askとなっていますが、IdeaPad...
しか利用出来ないので今回は ~
kernel /boot/vmlinuz root=/dev/sdb1 init=/init rw vga=0x...
としました。~
- grubのインストール ~
注意:USBディスクの/dev以下の位置を十分に注意してください...
$ sudo grub-install --root-directory=/media/disk --no-fl...
$ sudo umount /media/disk
- USBディスクでの起動準備
+ BIOS画面上でUSBディスクから起動するようにします。
+ USBディスクをマシンに挿入し電源を入れます。
+ grubのmenuにAndroidが表示されるのでそれを選択します。
これでAndroidが起動できるはずです。 ~
ただし、USBディスクの認識が/dev/sdaになるものもあるなので ~
その場合はgrubを/dev/sdaに編集してください。 ~
以上で、USBディスク起動の場合は終了です。~
''制限事項:IdeaPadではUSBマウスのみ動作を確認しています...
''タッチパッドは現在動作しません。'' ~
''また、VESAでは640x480の解像度のみ動作を確認しています。...
''wifiは動作していません。'' ~
RIGHT:by syariten
終了行:
[[Software/Android]]
- 目次
#contents
* Android for x86 [#ve9179a5]
* Android kernel (AOSP版) tips for x86 [#h43eeb1c]
- 2010/06/24 現在~
AOSP から取得した Android kernel についての tips です。~
この項目ではandroid-x86.org版 ではなくAndroid Open Source...
** kernel 取得方法 [#p696774e]
$ mkdir kernel_work
$ cd kernel_work
$ git clone git://android.git.kernel.org/kernel/common.g...
$ cd android_kernel
2.6.29 の場合~
$ git checkout --track -b android-2.6.29 origin/android-...
2.6.32 の場合~
$ git checkout --track -b android-2.6.32 origin/android-...
** android-2.6.29 [#x974b9cd]
- 2010/06/24 現在~
android_kernel 内にkernel 2.6.29 が展開されています。~
.config は arch/x86/configs/i386_defconfig を使用しました...
$ cd ~/
$ cd kernel/android_kernel
$ cp arch/x86/configs/i386_defconfig .config
$ make menuconfig
Android に必要なモジュール(主に staging にあります)を導入...
ここで make を実行するとcpuset.c alarm.c でエラーが起こり...
1. kernel/cpuset.c ~
kernel/cpuset.c: In function ‘cpuset_can_attach’:
kernel/cpuset.c:1360: error: ‘task’ undeclared (first us...
kernel/cpuset.c:1360: error: (Each undeclared identifier...
kernel/cpuset.c:1360: error: for each function it appear...
make[1]: *** [kernel/cpuset.o] エラー 1
make: *** [kernel] エラー 2
これは kernel/cpuset.c の1354行目に記述ミスがあるためです...
(2010/06/24現在も修正されていませんでした)~
static int cpuset_can_attach(struct cgroup_subsys *ss,
struct cgroup *cont, struct...
{
struct cpuset *cs = cgroup_cs(cont);
int ret = 0;
+ // change task->tsk
+ // if ((current != task) && (!capable(CAP_SYS_ADM...
+ if ((current != tsk) && (!capable(CAP_SYS_ADMIN)...
const struct cred *cred = current_cred(),...
if (cred->euid != tcred->uid && cred->eu...
return -EPERM;
}
if (cpumask_empty(cs->cpus_allowed) || nodes_emp...
return -ENOSPC;
if (tsk->flags & PF_THREAD_BOUND) {
task を tsk に変更すると続きます。~
参考サイト~
http://zash-egg.seesaa.net/article/131182492.html ~
http://www.mail-archive.com/android-kernel@googlegroups.c...
~
続けていくともう一つエラーが起こります。~
~
2. drivers/rtc/alarm.c ~
もう一つのエラーはalarm.c で起こります。~
CC drivers/rtc/alarm.o
drivers/rtc/alarm.c:16:27: error: asm/mach/time.h: No su...
drivers/rtc/alarm.c: In function ‘alarm_suspend’:
~
time.h が見つからないというエラーが起こります。~
time.h が確認できませんでしたのでdrivers/rtc/alarm.cを以...
$ ls include/asm
asm-offsets.h
- alarm.c 12行目付近~
* GNU General Public License for more details.
*
*/
+ #ifdef __i386__
+ #else
#include <asm/mach/time.h>
+ #endif
#include <linux/android_alarm.h>
#include <linux/device.h>
- alarm.c 320行目付近~
static void alarm_triggered_func(void *p)
{
struct rtc_device *rtc = alarm_rtc_dev;
if (!(rtc->irq_data & RTC_AF))
return;
ANDROID_ALARM_DPRINTF(ANDROID_ALARM_PRINT_INT, ...
wake_lock_timeout(&alarm_rtc_wake_lock, 1 * HZ);
}
+ #ifdef __i386__
+ // Port this function from arch/arm/kernel/time.c
+ /**
+ * save_time_delta - Save the offset between system tim...
+ * @delta: pointer to timespec to store delta
+ * @rtc: pointer to timespec for current RTC time
+ *
+ * Return a delta between the system time and the RTC t...
+ * that system time can be restored later with restore_...
+ */
+ static void save_time_delta(struct timespec *delta, st...
+ {
+ set_normalized_timespec(delta,
+ xtime.tv_sec - rtc->tv_sec,
+ xtime.tv_nsec - rtc->tv_nsec);
+ }
+ #endif
int alarm_suspend(struct platform_device *pdev, pm_messa...
{
int err = 0;
参考サイト:~
https://review.source.android.com/#patch,sidebyside,6751,...
~
以上で、android-2.6.29 のx86版ビルドが完了します。~
~
* Android-x86 1.6-r2 [#m23df227]
- 2010/03/29 現在 ~
Android-x86 から 2010年3月中旬に Android-x86 1.6r2 がリリ...
http://www.android-x86.org/releases/releasenote_1_6_r2 ~
Eclair のポーティングも進んでいますが、リリースアナウンス...
Android-x86 1.6r2 を DUX 社製 組込向けAtom ボード[[HFMB-2...
AXIMOTEK 社製 Intel Atom 向けPico-ITX [[PICO821:http://ax...
動作させました。以下に手順を記載します。~
使用した HFMB-22,PICO821 は共にディスクレスです。
手順は共に同じ手順で記載しています、また USB Disk(2GB)で...
** ソースファイルの取得とビルド [#qa0117c0]
環境構築は、[[過去のバージョン]]のものを使用しています。~
OS は Ubuntu 8.04 です。~
~
- ソースファイルの取得 ~
ソースファイルの取得は、android-x86.org から取得していま...
ソースファイル取得のためのディレクトリを作成し、そのディ...
repo を実行します。 ~
$ mkdir android-x86-1.6r2
$ cd android-x86-1.6r2
$ repo init -u git://git.android-x86.org/platform/manife...
$ repo sync
- ビルド ~
動作をさせるx86 マシンは HFMB-22 ですが、TARGET_PRODUCT ...
$ make usb_img TARGET_PRODUCT=eeepc
ビルドが完了後に、android-x86-1.6r2/out/target/product/ee...
作成されています。このディレクトリ内の android-system/ に...
install.img、kernel、ramdisk.img、system.imgがあります。~
$ cd ~/android-x86-1.6r2/out/target/product/eeepc/usb_boot
$ ls android-system
initrd.img install.img kernel ramdisk.img system.img
** USB Disk boot [#f52e7d68]
USB Disk(2GB) をビルドしたマシンに挿し、ext3でフォーマッ...
android-system をUSB Disk にコピーします。~
# vfat でも動作できるとのことですが、今回は試していません...
#ここでは /media/disk にマウントされた場合で記載します。 ~
$ sudo cp -fr android-system /media/disk/
- grubのインストール ~
注:USB Disk の /dev 以下の位置を確認して作業してください...
$ sudo grub-install --root-directory=/media/disk --no-fl...
- grub の設定 ~
grub の menu.lst を編集します。~
$ sudo vi /media/disk/boot/grub
$ sudo vi menu.lst
menu.lst は android-x86-1.6r2/out/target/product/eeepc/us...
内容とほぼ同じです。~
# HFMB-22 のシステムコントローラハブが US15W ですので VE...
default=0
root (hd0,0)
title Live USB - VESA Mode
kernel /android-system/kernel root=/dev/ram0 and...
initrd /android-system/initrd.img
title Live USB - Debug Mode
kernel /android-system/kernel root=/dev/ram0 and...
initrd /android-system/initrd.img
以上で準備は完了です。~
HFMB-22 に上記 USB Disk を挿し、電源投入後、BIOSで USB Di...
grub の menu で VESA Mode を選択し Android が起動した写真...
#サスペンドに入ると復帰ができないのでディスプレイは常時点...
-PICO821
#ref(pico821_android.jpg,,50%)~
-HFMB-22
#ref(atom-android1.6_01.jpg,,50%);~
~
#ref(atom-android1.6_02.jpg,,60%);~
~
#ref(atom-android1.6_03.jpg,,60%);
* 過去のバージョン [#lae6a92c]
* 2009/04 cupcake [#r9fea9f7]
この項目はミラクル・リナックス中河 宏文さんによる[[ITpro>...
みずの@組み込みWGさんによる[[日本Androidの会 2009年3月...
(PDFファイル)を参考に作成しました。(2009年4月中旬時点)
''Androidは日々更新されているため、以下の内容は全て確認時...
ファイルの編集にあたり~
http://code.google.com/p/patch-hosting-for-android-x86-su...
にあるパッチ~
boot_able_img_v2.patch ~
cursor.patch ~
alarm.patch ~
e2fsprogs.patch ~
frameworks.patch (※)
を適用しました。~
※現在は frameworks_v2.patch に変更されているようです。
- 対象機種はLenovoのIdeaPad S10eになります。~
**USBディスクへの移植手順 [#va96115c]
- Ubuntu 8.04 or 8.10のマシンを用意します。~
*** ビルドに必要なパッケージのインストール [#u3570077]
Androidをビルドするために必要なパッケージをインストールす...
$ sudo apt-get update
$ sudo apt-get -y install git-core gnupg sun-java5-jdk f...
libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential z...
libncurses5-dev zlib1g-dev valgrind g++
注:前述の参考サイトではJDK6を利用していますが、
http://source.android.com/download ~
によると
''JDK 5.0, update 12 or higher. Java 6 is not supported,...
となっているため、今回はJDK5を利用しました(本ドキュメン...
利用可能かは未確認です)。
*** Androidの導入 [#t957e0d3]
- repoのインストール ~
$cd ~
$ mkdir bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
- JAVA_HOMEの設定 ~
$ export JAVA_HOME=/usr/lib/jvm/java-5-sun-1.5.hoge
注:hogeはインストールされたバージョンによって異なります...
バージョンの確認をして、設定をしてください。~
$ export PATH=$PATH:~/bin
- ソースコード取得 ~
今回はcupcakeを利用します。~
$ mkdir cupcake
$ cd cupcake
$ repo init -u git://android.git.kernel.org/platform/man...
$ repo sync
- manifestの作成 ~
IdeaPadへの導入であるがEeePC701のmanifestを使用する。~
$ vi ./.repo/local_manifest.xml
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendo...
</manifest>
- 再度 repo sync
$ repo sync
- Android ソースファイル修正 ~
電源管理インタフェースが無いと入力イベントを受け付けなく...
$ vi frameworks/base/services/java/com/android/server/Po...
344行目付近
// assume nothing is on yet
- mUserState = mPowerState = 0;
+ mUserState = mPowerState = SCREEN_BRIGHT;
また、~
http://code.google.com/p/patch-hosting-for-android-x86-su...
にある各patchをあてる
- Androidのビルド ~
上記準備が整ったらビルドします。
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREO...
*** kernelの準備 [#q5607ca4]
- kernelの設定
$ cd kernel
$ make i386_defconfig
$ make menuconfig
以下の設定は最低限必要になります。
General setup --->
(-android) <-作成したものをわかりやすくするためです。
[*] Enable the Anonymous Shared Memory Subsystem
Power management options --->
[*] Wake lock
Device Drivers --->
[*] Misc devices --->
[ ] Android pmem allocator <-これがあるとビルドの際エ...
<*> Binder IPC Driver
<*> Low memory killer
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
[*] Atheros L1E Gigabit Ethernet support (EXPERIMEN...
Graphics support --->
<*> Support for frame buffer devices --->
[*] VESA VGA graphics support
<*> Real Time Clock --->
[*] Android alarm driver
注:マウスを使用する場合は該当のマウスにチェックを入れて...
また、上記ではAtherosのEthernet Driverを使用していますが...
Ethernet Driverの種類が違いますので適宜変更してください。~
~
参考のためにconfigファイルを置いておきます。~
#ref(config-x86) ~
使用する際は ~
.config
とリネームして~
make oldconfig
make menuconfig
を実行してください。~
- カーネルビルド ~
$ make
$ cd ..
*** USBディスクでの起動準備 [#uc0cf459]
- USBディスクのフォーマット ~
$ sudo apt-get install gparted
「システム」−>「システム管理」ー>「パーティションエディ...
にて「ext3」でフォーマットする。
- ファイルのコピー ~
通常Ubuntuではオートマウントされます。 ~
マウント位置は/media/diskになります。 ~
$ sudo cp -fr out/target/product/eee_701/root/* /media/d...
$ sudo cp -fr out/target/product/eee_701/system/* /media...
$ sudo mkdir /media/disk/boot
$ sudo chmod 666 /media/disk/system/usr/keychars/*
$ sudo chmod 666 /media/disk/system/usr/keylayout/*
$ sudo cp kernel/arch/x86/boot/bzImage /media/disk/boot/...
オートマウントされない場合は以下を試してみてください。~
$ sudo mount -t ext3 /dev/sdb1 /mnt/usb
注意:/mnt/usbにした場合はコピー先のディレクトリ位置が
変わります。~
- initrcの編集 ~
$ sudo vi /media/disk/init.rc
添付ファイルのように編集する。
#ref(init.rc)
~
- init.usb.shの作成 ~
$ sudo vi /media/disk/system/etc/init.usb.sh
#!/system/bin/sh
netcfg eth0 dhcp
setprop net.dns1 4.2.2.2
実行権限を与える~
$ sudo chmod a+x /media/disk/system/etc/init.usb.sh
- grubの設定 ~
$ sudo mkdir /media/disk/boot/grub
$ sudo vi /media/disk/boot/grub/menu.lst
default 0
timeout 3
hiddenmenu
title Android
root (hd0,0)
kernel /boot/vmlinuz root=/dev/sdb1 init=/init rw vga=as...
解像度一覧を出力するためvga=askとなっていますが、IdeaPad...
しか利用出来ないので今回は ~
kernel /boot/vmlinuz root=/dev/sdb1 init=/init rw vga=0x...
としました。~
- grubのインストール ~
注意:USBディスクの/dev以下の位置を十分に注意してください...
$ sudo grub-install --root-directory=/media/disk --no-fl...
$ sudo umount /media/disk
- USBディスクでの起動準備
+ BIOS画面上でUSBディスクから起動するようにします。
+ USBディスクをマシンに挿入し電源を入れます。
+ grubのmenuにAndroidが表示されるのでそれを選択します。
これでAndroidが起動できるはずです。 ~
ただし、USBディスクの認識が/dev/sdaになるものもあるなので ~
その場合はgrubを/dev/sdaに編集してください。 ~
以上で、USBディスク起動の場合は終了です。~
''制限事項:IdeaPadではUSBマウスのみ動作を確認しています...
''タッチパッドは現在動作しません。'' ~
''また、VESAでは640x480の解像度のみ動作を確認しています。...
''wifiは動作していません。'' ~
RIGHT:by syariten
ページ名:
BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。