[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