[Gta04-owner] We need an Android kernel

Dr. H. Nikolaus Schaller hns at goldelico.com
Wed Jul 17 13:48:18 CEST 2013


Hi all,

Am 17.07.2013 um 11:00 schrieb Dr. H. Nikolaus Schaller:
> 
> I did look into the neil-brown sources and we can simply enable some CONFIG_ANDROID
> features which are in 'staging'.
> 
> #
> # Android
> #
> -# CONFIG_ANDROID is not set
> +CONFIG_ANDROID=y
> +CONFIG_ANDROID_BINDER_IPC=y
> +CONFIG_ASHMEM=y
> +CONFIG_ANDROID_LOGGER=y
> +CONFIG_ANDROID_TIMED_OUTPUT=y
> +CONFIG_ANDROID_TIMED_GPIO=y
> +CONFIG_ANDROID_LOW_MEMORY_KILLER=y
> +CONFIG_ANDROID_INTF_ALARM_DEV=y
> # CONFIG_PHONE is not set
> # CONFIG_USB_WPAN_HCD is not set
> # CONFIG_IPACK_BUS is not set
> 
> I can't tell if this is complete or has problems, but it compiles fine and the extended kernel
> still works with Debian.
> 
> I have tried to boot the replicant 4.0 rootfs on this kernel, but it fails because it does
> not find the init process. And I was not yet able to find the location of the 'init' binary
> in the Replicant roofs to simply make a copy/symlink to /sbin/init (where the mainline
> kernel apparently tries to locate it).

Ok, I found the issue. The neil-brown-plus does not have the init ramdisk...

So I copied the 'root' to the root of the SD card partition, unpacked system.tar.bz2 to
/system and added a symlink for /sbin/init -> ../init. The kernel and the booargs.scr
are copied to /boot so that the U-Boot finds the partition. The kernel modules are
unpacked to /lib.

If someone wants to analyse my approach, here are the files and a makesd script:

<http://download.goldelico.com/gta04-replicant/4.0/unstable-3.7/>

Now it boots and I get a console on RS232. The display shows the dual Replicant/GTA04
combinations.

But it does not boot through to the GUI. I see this dmesg repeating:

[  245.890106] omap-dma-engine omap-dma-engine: allocating channel for 33
[  245.898132] omap-dma-engine omap-dma-engine: freeing channel for 33
[  250.259857] init: untracked pid 980 exited
[  250.278686] init: untracked pid 979 exited
[  250.793487] omap-dma-engine omap-dma-engine: allocating channel for 33
[  250.801300] omap-dma-engine omap-dma-engine: freeing channel for 33

This may be because the root and the system do not exactly match.

Maybe because not all partitions are mounted properly.

And maybe because depmod -a fails and therefore the kernel may not
load all modules.

Here is a ps:

130|root at android:/ # ps
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      1     0     320    180   c00b990c 0000877c S /sbin/init
root      2     0     0      0     c00464fc 00000000 S kthreadd
root      3     2     0      0     c004d9a0 00000000 S ksoftirqd/0
root      4     2     0      0     c0041df4 00000000 S kworker/0:0
root      5     2     0      0     c0041df4 00000000 S kworker/0:0H
root      7     2     0      0     c0041df4 00000000 S kworker/u:0H
root      8     2     0      0     c004d9a0 00000000 S watchdog/0
root      9     2     0      0     c0041b58 00000000 S khelper
root      10    2     0      0     c02806a8 00000000 S kdevtmpfs
root      12    2     0      0     c0090ce8 00000000 S bdi-default
root      13    2     0      0     c0041b58 00000000 S kblockd
root      14    2     0      0     c02cb00c 00000000 S khubd
root      15    2     0      0     c0068d98 00000000 S irq/72-omap_i2c
root      16    2     0      0     c0068d98 00000000 S irq/23-TWL4030-
root      17    2     0      0     c0068d98 00000000 S irq/73-omap_i2c
root      18    2     0      0     c0068d98 00000000 S irq/77-omap_i2c
root      19    2     0      0     c00677d8 00000000 S khungtaskd
root      20    2     0      0     c00886b0 00000000 S kswapd0
root      21    2     0      0     c00df120 00000000 S fsnotify_mark
root      22    2     0      0     c0041b58 00000000 S crypto
root      34    2     0      0     c0068d98 00000000 S irq/261-gpio-w2
root      35    2     0      0     c0041b58 00000000 S OMAP UART0
root      36    2     0      0     c0041b58 00000000 S OMAP UART1
root      37    2     0      0     c0041b58 00000000 S OMAP UART2
root      38    2     0      0     c0249494 00000000 S kapmd
root      39    2     0      0     c0041b58 00000000 S pvr_timer
root      40    2     0      0     c0041df4 00000000 S kworker/u:1
root      45    2     0      0     c02a5310 00000000 S mtdblock0
root      46    2     0      0     c02a5310 00000000 S mtdblock1
root      47    2     0      0     c02a5310 00000000 S mtdblock2
root      48    2     0      0     c02a5310 00000000 S mtdblock3
root      49    2     0      0     c02a5310 00000000 S mtdblock4
root      50    2     0      0     c0046020 00000000 S spi1
root      51    2     0      0     c0046020 00000000 S spi2
root      52    2     0      0     c0046020 00000000 S spi3
root      53    2     0      0     c0046020 00000000 S spi4
root      54    2     0      0     c03010b8 00000000 S w1_bus_master1
root      55    2     0      0     c0041df4 00000000 S kworker/0:2
root      56    2     0      0     c0041b58 00000000 S binder
root      57    2     0      0     c031c094 00000000 S mmcqd/0
root      58    2     0      0     c0041df4 00000000 S kworker/u:2
root      59    2     0      0     c0041b58 00000000 S deferwq
root      60    2     0      0     c02ba2c4 00000000 S ubi_bgt0d
root      61    2     0      0     c0041df4 00000000 S kworker/0:3
root      62    2     0      0     c0041df4 00000000 S kworker/0:1H
root      63    2     0      0     c014d820 00000000 S jbd2/mmcblk0p2-
root      64    2     0      0     c0041b58 00000000 S ext4-dio-unwrit
root      65    1     300    148   c00b990c 0000877c S /sbin/ueventd
root      76    2     0      0     c00cc0a8 00000000 S flush-179:0
system    90    1     828    292   c033c220 b6f787d0 S /system/bin/servicemanager
root      91    1     4016   744   ffffffff b6f5fdd4 S /system/bin/vold
root      93    1     692    284   c038aab8 b6f370d8 S /system/bin/debuggerd
bluetooth 97    1     1332   604   c00b990c b6f3c598 S /system/bin/dbus-daemon
root      101   1     768    420   c003c4a4 b6f0bfb4 S /system/bin/sh
root      103   1     1348   132   ffffffff 00008294 S /sbin/adbd
media     1297  1     19424  5500  ffffffff b6f787d0 S /system/bin/mediaserver
root      1298  1     6312   908   ffffffff b6f3add4 S /system/bin/netd
root      1312  101   956    344   00000000 b6f14598 R ps
root at android:/

So I would conclude that we *can* run Android on top of our 3.7 neil-plus
kernel [1]. We just need to configure the Android extensions and add the init ramdisk.

BR,
Nikolaus

[1]: https://github.com/goldelico/gta04-kernel/tree/neil-plus


More information about the Gta04-owner mailing list