現時点で、masterがビルド出来る状態になっていたので、こちらも試してみた。
このビルドは非常に時間がかかり、メモリも大量に消費してしまうので、出来れば高いスペックのマシンを用意したいところ。
ようやくビルドが終わったところで確認したところ、新しいANDROIDのロゴを表示した後、リブートしてしまった。
カーネルの初期化が終わり、リブートするまでは、既にコンソールからのlogcatコマンドが有効な状態なので、ログを表示させたところ、
自らシャットダウンしているようだが、要因までは読み取れなかった。
関係有るのか無いのか、様々なエラーも出ているので、そちらも気になってしまうところだが、

http://groups.google.com/group/android-porting/browse_thread/thread/f2a274e17a4c0230/9f3b52215cc4f6a0?lnk=root
のほうにあるように、Elvisさんのワークアラウンドのように強制的にバッテリーを100%にしてしまうようにしたところ、この問題は解決したようだ。
バッテリーを持たないような機器では、サービスをOFFしてしまったほうがよいだろう。

こちらも前回と同様、ディスプレイ出力およびUSBイーサネットの動作は確認出来たが、USBマウスは機能しなかった。
USBキーボートは、上下左右キーが機能しないと思ったら、/system/usr/keychars/以下のファイルが開けないワーニング等が出ており、/system/以下のパーミッションを変更するのを忘れていただけだった。


いろいろとエラーも多いので、今後の為に、TARGET_BUILD_TYPEをデフォルトのreleaseではなくdebugとしてビルドしてみたところ、
libopencoredownload.soが大きすぎて、プレリンクのマップをオーバーしてしまうようなので、build/core/prelink-linux-arm.map
を適当に、例えばlibopencoredownload.soの次のライブラリ(libpvasfreg.so)のアドレスを0xA7B70000から0xA7B80000へ変更することでビルド出来た。
基本的にはlogcatの表示頼みで、こちらは誰も使っていないのかな?

googleのGet source の手順に従い、Androidのソース一式を取得し、ビルドすることが可能だが、まだまだバグも多く、
頻繁に更新される為、ビルド出来なくなったり、機能しなくなったりすることが度々発生する。
以前は、googleのリポジトリよりソースを取得し、ビルドする手順を紹介していたembinux も、現時点では、2009年3月中頃のクローンに、
embinux独自の変更が適用された状態のstable版が取得出来るような手順に変更されている。
独自の変更点は、以下のとおり。

Initial Commit
Hardware TLS Register Support.
Modified Keyboard mapping to support PC keyboard
Workaround for Hardware TLS register issue
Commenting yaffs mount, as we dont need it from init.
Initial Commit
Initial Commit

こちらをビルドし確認したところ、ディスプレイ出力およびUSBイーサネットの動作は確認出来たが、USBマウスは機能しなかった。
また、USBキーボートは、上下左右のキーが機能しなかった。
以前、embinux binary版で試した際は、qwerty.klのBACK, DPAD_DOWN, DPAD_UP, DPAD_LEFTおよびDPAD_RIGHTのWAKE_DROPPEDを
削除することで、エラーにはなるものの、ESCキーおよび上下左右キーとして機能していたのだが。



BeagleboardRevCValidation にあるカーネル(現時点で2.6.28)は、DSS(Display Subsystem)に対応しているので、こちらのカーネルに、前回のgoogleのAndroidカーネル(現時点で2.6.29)より、Android関連をマージする。
beagleboard-diagnostic-kernelの2.6.28-oe-rc8ブランチの取得は以下のコマンド。

$ mkdir beagleboad
$ cd beagleboad
$ git clone git://gitorious.org/beagleboard-diagnostic-kernel/mainline.git
$ cd mainline
$ git checkout --track -b 2.6.28-oe-rc8 origin/2.6.28-oe-r8

ARM関連もかなり異なっているので、今回はAndroid関連のコミット分のみを取り込むように気をつけたが、例えば、
staging: android: binder: Fix use of euid
というコミットを取り込むと、CRED関連も取り込むことになり、USBにまで影響した為、これは除外した。

arch/arm/configs/omap3_beagle_defconfigからの主な差分は以下

@@ -60,6 +60,7 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
+CONFIG_PANIC_TIMEOUT=0
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
@@ -80,6 +81,7 @@ CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
+CONFIG_ASHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
@@ -326,6 +328,8 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_MIN_TICKS=10
+CONFIG_CPU_FREQ_SAMPLING_LATENCY_MULTIPLIER=1000
# CONFIG_CPU_IDLE is not set

#
@@ -423,6 +428,7 @@ CONFIG_IPV6_NDISC_NODETYPE=y
# CONFIG_IPV6_TUNNEL is not set
# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_IPV6_MROUTE is not set
+CONFIG_ANDROID_PARANOID_NETWORK=y
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
@@ -624,10 +630,13 @@ CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
# CONFIG_ATA_OVER_ETH is not set
CONFIG_MISC_DEVICES=y
+CONFIG_ANDROID_PMEM=y
CONFIG_EEPROM_93CX6=y
# CONFIG_ICS932S401 is not set
# CONFIG_OMAP_STI is not set
# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_KERNEL_DEBUGGER_CORE is not set
+# CONFIG_UID_STAT is not set
# CONFIG_C2PORT is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set
@@ -850,6 +860,7 @@ CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVMEM=y
CONFIG_DEVKMEM=y
# CONFIG_SERIAL_NONSTANDARD is not set

@@ -1682,12 +1696,15 @@ CONFIG_TWL4030_USB=y
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_UNSAFE_RESUME=y
+# CONFIG_MMC_EMBEDDED_SDIO is not set
+# CONFIG_MMC_PARANOID_SD_INIT is not set

#
# MMC/SD/SDIO Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_MMC_BLOCK_PARANOID_RESUME=y
CONFIG_SDIO_UART=y
# CONFIG_MMC_TEST is not set

@@ -1733,6 +1751,7 @@ CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+CONFIG_RTC_INTF_ALARM=y
# CONFIG_RTC_DRV_TEST is not set

#
@@ -1790,6 +1809,24 @@ CONFIG_REGULATOR=y
# CONFIG_REGULATOR_BQ24022 is not set
CONFIG_REGULATOR_TWL4030=y
# CONFIG_UIO is not set
+CONFIG_STAGING=y
+# CONFIG_STAGING_EXCLUDE_BUILD is not set
+# CONFIG_USB_IP_COMMON is not set
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
+# CONFIG_ECHO is not set
+# CONFIG_USB_ATMEL is not set
+
+#
+# Android
+#
+CONFIG_ANDROID=y
+CONFIG_ANDROID_BINDER_IPC=y
+CONFIG_ANDROID_LOGGER=y
+# CONFIG_ANDROID_RAM_CONSOLE is not set
+CONFIG_ANDROID_TIMED_OUTPUT=y
+CONFIG_ANDROID_TIMED_GPIO=y
+# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set

#
# CBUS support

ディスプレイ出力、USBキーボード、USBイーサネットの動作は確認した。
USBマウスは、カーネルレベルでは動作していることを確認したが、Android上では機能しなかった。