{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The nandc boot image is the main boot partition which holds the kernel and "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "16388\ttablet/nandc.boot.img\r\n"
     ]
    }
   ],
   "source": [
    "# The partition size of the image in bytes\n",
    "\n",
    "!du tablet/nandc.boot.img"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tablet/nandc.boot.img: Android bootimg, kernel (0x40008000), ramdisk (0x41000000), page size: 2048, cmdline (console=ttyS0,115200 rw init=/init loglevel=4)\r\n"
     ]
    }
   ],
   "source": [
    "# We can use file to find out what kind of image we have.\n",
    "\n",
    "!file tablet/nandc.boot.img"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BOARD_KERNEL_CMDLINE console=ttyS0,115200 rw init=/init loglevel=4\r\n",
      "BOARD_KERNEL_BASE 40000000\r\n",
      "BOARD_PAGE_SIZE 2048\r\n"
     ]
    }
   ],
   "source": [
    "# We can unpack this type of image file using one of the tools from the android sdk\n",
    "\n",
    "!tools/unpackbootimg -i tablet/nandc.boot.img -o tablet/boot/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 9234\r\n",
      "drwxrwxrwx 1    4096 Mar 17 09:36 img-ramdisk\r\n",
      "-rwxrwxrwx 1       9 Mar 20 20:52 nandc.boot.img-base\r\n",
      "-rwxrwxrwx 1      46 Mar 20 20:52 nandc.boot.img-cmdline\r\n",
      "-rwxrwxrwx 1       5 Mar 20 20:52 nandc.boot.img-pagesize\r\n",
      "-rwxrwxrwx 1 1808423 Mar 20 20:52 nandc.boot.img-ramdisk.gz\r\n",
      "-rwxrwxrwx 1 7637412 Mar 20 20:52 nandc.boot.img-zImage\r\n",
      "-rwxrwxrwx 1      62 Mar 16 13:55 README.md\r\n"
     ]
    }
   ],
   "source": [
    "# And this is what we get from unpacking this image file\n",
    "\n",
    "!ls -lgG tablet/boot/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "8272 blocks\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "# Lets create a directory and unpack the ramdisk file\n",
    "\n",
    "cd tablet/boot/img-ramdisk/\n",
    "gunzip -c ../nandc.boot.img-ramdisk.gz | cpio -i"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 3994\r\n",
      "drwxrwxrwx 1       0 Mar 16 14:08 data\r\n",
      "-rwxrwxrwx 1     116 Mar 20 20:52 default.prop\r\n",
      "drwxrwxrwx 1       0 Mar 16 14:08 dev\r\n",
      "-rwxrwxrwx 1     851 Mar 20 20:52 fstab.sun8i\r\n",
      "-rwxrwxrwx 1  113536 Mar 20 20:52 init\r\n",
      "-rwxrwxrwx 1    2487 Mar 20 20:52 init.goldfish.rc\r\n",
      "-rwxrwxrwx 1 2457600 Mar 20 20:52 initlogo.rle\r\n",
      "-rwxrwxrwx 1   20824 Mar 20 20:52 init.rc\r\n",
      "-rwxrwxrwx 1     132 Mar 20 20:52 init.recovery.sun8i.rc\r\n",
      "-rwxrwxrwx 1    6557 Mar 20 20:52 init.sun8i.rc\r\n",
      "-rwxrwxrwx 1    3481 Mar 20 20:52 init.sun8i.usb.rc\r\n",
      "-rwxrwxrwx 1    1795 Mar 20 20:52 init.trace.rc\r\n",
      "-rwxrwxrwx 1    3947 Mar 20 20:52 init.usb.rc\r\n",
      "-rwxrwxrwx 1 1453290 Mar 20 20:52 nand.ko\r\n",
      "drwxrwxrwx 1       0 Mar 16 14:08 proc\r\n",
      "-rwxrwxrwx 1      58 Mar 16 13:59 README.md\r\n",
      "drwxrwxrwx 1     344 Mar 20 20:52 sbin\r\n",
      "drwxrwxrwx 1       0 Mar 16 14:08 sys\r\n",
      "drwxrwxrwx 1       0 Mar 16 14:08 system\r\n",
      "-rwxrwxrwx 1     272 Mar 20 20:52 ueventd.goldfish.rc\r\n",
      "-rwxrwxrwx 1    4024 Mar 20 20:52 ueventd.rc\r\n",
      "-rwxrwxrwx 1     995 Mar 20 20:52 ueventd.sun8i.rc\r\n"
     ]
    }
   ],
   "source": [
    "# And what we have here\n",
    "\n",
    "!ls -lgG tablet/boot/img-ramdisk/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# Copyright (C) 2012 The Android Open Source Project\r\n",
      "#\r\n",
      "# IMPORTANT: Do not create world writable files or directories.\r\n",
      "# This is a common source of Android security bugs.\r\n",
      "#\r\n",
      "\r\n",
      "import /init.usb.rc\r\n",
      "import /init.${ro.hardware}.rc\r\n",
      "import /init.trace.rc\r\n",
      "\r\n",
      "on early-init\r\n",
      "    # Set init and its forked children's oom_adj.\r\n",
      "    write /proc/1/oom_adj -16\r\n",
      "\r\n",
      "    # Set the security context for the init process.\r\n",
      "    # This should occur before anything else (e.g. ueventd) is started.\r\n",
      "    setcon u:r:init:s0\r\n",
      "\r\n",
      "    start ueventd\r\n",
      "\r\n",
      "# create mountpoints\r\n",
      "    mkdir /mnt 0775 root system\r\n",
      "\r\n",
      "on init\r\n",
      "\r\n",
      "sysclktz 0\r\n",
      "\r\n",
      "loglevel 6\r\n",
      "\r\n",
      "# setup the global environment\r\n",
      "    export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin\r\n",
      "    export LD_LIBRARY_PATH /vendor/lib:/system/lib\r\n",
      "    export ANDROID_BOOTLOGO 1\r\n",
      "    export ANDROID_ROOT /system\r\n",
      "    export ANDROID_ASSETS /system/app\r\n",
      "    export ANDROID_DATA /data\r\n",
      "    export ANDROID_STORAGE /storage\r\n",
      "    export ASEC_MOUNTPOINT /mnt/asec\r\n",
      "    export LOOP_MOUNTPOINT /mnt/obb\r\n",
      "    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar\r\n",
      "\r\n",
      "# Backward compatibility\r\n",
      "\tinsmod /nand.ko\r\n",
      "    symlink /system/etc /etc\r\n",
      "    symlink /sys/kernel/debug /d\r\n",
      "\r\n",
      "# Right now vendor lives on the same filesystem as system,\r\n",
      "# but someday that may change.\r\n",
      "    symlink /system/vendor /vendor\r\n",
      "\r\n",
      "# Create cgroup mount point for cpu accounting\r\n",
      "    mkdir /acct\r\n",
      "    mount cgroup none /acct cpuacct\r\n",
      "    mkdir /acct/uid\r\n",
      "\r\n",
      "    mkdir /system\r\n",
      "    mkdir /data 0771 system system\r\n",
      "    mkdir /cache 0770 system cache\r\n",
      "    mkdir /config 0500 root root\r\n",
      "\r\n",
      "    # See storage config details at http://source.android.com/tech/storage/\r\n",
      "    mkdir /mnt/shell 0700 shell shell\r\n",
      "    mkdir /storage 0050 root sdcard_r\r\n",
      "    #mkdir for interior sd card\r\n",
      "    mkdir /mnt/media 0770 media_rw media_rw\r\n",
      "\r\n",
      "\r\n",
      "    # Directory for putting things only root should see.\r\n",
      "    mkdir /mnt/secure 0700 root root\r\n",
      "    # Create private mountpoint so we can MS_MOVE from staging\r\n",
      "    mount tmpfs tmpfs /mnt/secure mode=0700,uid=0,gid=0\r\n",
      "\r\n",
      "    # Directory for staging bindmounts\r\n",
      "    mkdir /mnt/secure/staging 0700 root root\r\n",
      "\r\n",
      "    # Directory-target for where the secure container\r\n",
      "    # imagefile directory will be bind-mounted\r\n",
      "    mkdir /mnt/secure/asec  0700 root root\r\n",
      "\r\n",
      "    # Secure container public mount points.\r\n",
      "    mkdir /mnt/asec  0700 root system\r\n",
      "    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000\r\n",
      "\r\n",
      "    # Filesystem image public mount points.\r\n",
      "    mkdir /mnt/obb 0700 root system\r\n",
      "    mount tmpfs tmpfs /mnt/obb mode=0755,gid=1000\r\n",
      "\r\n",
      "    write /proc/sys/kernel/panic_on_oops 1\r\n",
      "    write /proc/sys/kernel/hung_task_timeout_secs 0\r\n",
      "    write /proc/cpu/alignment 4\r\n",
      "    write /proc/sys/kernel/sched_latency_ns 10000000\r\n",
      "    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000\r\n",
      "    write /proc/sys/kernel/sched_compat_yield 1\r\n",
      "    write /proc/sys/kernel/sched_child_runs_first 0\r\n",
      "    write /proc/sys/kernel/randomize_va_space 2\r\n",
      "    write /proc/sys/kernel/kptr_restrict 2\r\n",
      "    write /proc/sys/kernel/dmesg_restrict 1\r\n",
      "\twrite  /proc/sys/vm/legacy_va_layout 1\r\n",
      "    write /proc/sys/vm/mmap_min_addr 32768\r\n",
      "    write /proc/sys/kernel/sched_rt_runtime_us 950000\r\n",
      "    write /proc/sys/kernel/sched_rt_period_us 1000000\r\n",
      "\r\n",
      "# Create cgroup mount points for process groups\r\n",
      "    mkdir /dev/cpuctl\r\n",
      "    mount cgroup none /dev/cpuctl cpu\r\n",
      "    chown system system /dev/cpuctl\r\n",
      "    chown system system /dev/cpuctl/tasks\r\n",
      "    chmod 0660 /dev/cpuctl/tasks\r\n",
      "    write /dev/cpuctl/cpu.shares 1024\r\n",
      "    write /dev/cpuctl/cpu.rt_runtime_us 950000\r\n",
      "    write /dev/cpuctl/cpu.rt_period_us 1000000\r\n",
      "\r\n",
      "    mkdir /dev/cpuctl/apps\r\n",
      "    chown system system /dev/cpuctl/apps/tasks\r\n",
      "    chmod 0666 /dev/cpuctl/apps/tasks\r\n",
      "    write /dev/cpuctl/apps/cpu.shares 1024\r\n",
      "    write /dev/cpuctl/apps/cpu.rt_runtime_us 800000\r\n",
      "    write /dev/cpuctl/apps/cpu.rt_period_us 1000000\r\n",
      "\r\n",
      "    mkdir /dev/cpuctl/apps/bg_non_interactive\r\n",
      "    chown system system /dev/cpuctl/apps/bg_non_interactive/tasks\r\n",
      "    chmod 0666 /dev/cpuctl/apps/bg_non_interactive/tasks\r\n",
      "    # 5.0 %\r\n",
      "    write /dev/cpuctl/apps/bg_non_interactive/cpu.shares 52\r\n",
      "    write /dev/cpuctl/apps/bg_non_interactive/cpu.rt_runtime_us 700000\r\n",
      "    write /dev/cpuctl/apps/bg_non_interactive/cpu.rt_period_us 1000000\r\n",
      "\r\n",
      "# Allow everybody to read the xt_qtaguid resource tracking misc dev.\r\n",
      "# This is needed by any process that uses socket tagging.\r\n",
      "    chmod 0644 /dev/xt_qtaguid\r\n",
      "\r\n",
      "on fs\r\n",
      "# mount mtd partitions\r\n",
      "    # Mount /system rw first to give the filesystem a chance to save a checkpoint\r\n",
      "    mount yaffs2 mtd@system /system\r\n",
      "    mount yaffs2 mtd@system /system ro remount\r\n",
      "    mount yaffs2 mtd@userdata /data nosuid nodev\r\n",
      "    mount yaffs2 mtd@cache /cache nosuid nodev\r\n",
      "\r\n",
      "on post-fs\r\n",
      "    # once everything is setup, no need to modify /\r\n",
      "    # mount rootfs rootfs / ro remount\r\n",
      "    # mount shared so changes propagate into child namespaces\r\n",
      "     mount rootfs rootfs / shared rec\r\n",
      "    mount tmpfs tmpfs /mnt/secure private rec\r\n",
      "\r\n",
      "    # We chown/chmod /cache again so because mount is run as root + defaults\r\n",
      "    chown system cache /cache\r\n",
      "    chmod 0770 /cache\r\n",
      "    # We restorecon /cache in case the cache partition has been reset.\r\n",
      "    restorecon /cache\r\n",
      "\r\n",
      "    # This may have been created by the recovery system with odd permissions\r\n",
      "    chown system cache /cache/recovery\r\n",
      "    chmod 0770 /cache/recovery\r\n",
      "    # This may have been created by the recovery system with the wrong context.\r\n",
      "    restorecon /cache/recovery\r\n",
      "\r\n",
      "    #change permissions on vmallocinfo so we can grab it from bugreports\r\n",
      "    chown root log /proc/vmallocinfo\r\n",
      "    chmod 0440 /proc/vmallocinfo\r\n",
      "\r\n",
      "    chown root log /proc/slabinfo\r\n",
      "    chmod 0440 /proc/slabinfo\r\n",
      "\r\n",
      "    #change permissions on kmsg & sysrq-trigger so bugreports can grab kthread stacks\r\n",
      "    chown root system /proc/kmsg\r\n",
      "    chmod 0440 /proc/kmsg\r\n",
      "    chown root system /proc/sysrq-trigger\r\n",
      "    chmod 0220 /proc/sysrq-trigger\r\n",
      "    chown system log /proc/last_kmsg\r\n",
      "    chmod 0440 /proc/last_kmsg\r\n",
      "\r\n",
      "    # create the lost+found directories, so as to enforce our permissions\r\n",
      "    mkdir /cache/lost+found 0770 root root\r\n",
      "\r\n",
      "on post-fs-data\r\n",
      "    # We chown/chmod /data again so because mount is run as root + defaults\r\n",
      "    chown system system /data\r\n",
      "    chmod 0771 /data\r\n",
      "    # We restorecon /data in case the userdata partition has been reset.\r\n",
      "    restorecon /data\r\n",
      "\r\n",
      "    # Create dump dir and collect dumps.\r\n",
      "    # Do this before we mount cache so eventually we can use cache for\r\n",
      "    # storing dumps on platforms which do not have a dedicated dump partition.\r\n",
      "    mkdir /data/dontpanic 0750 root log\r\n",
      "\r\n",
      "    # Collect apanic data, free resources and re-arm trigger\r\n",
      "    copy /proc/apanic_console /data/dontpanic/apanic_console\r\n",
      "    chown root log /data/dontpanic/apanic_console\r\n",
      "    chmod 0640 /data/dontpanic/apanic_console\r\n",
      "\r\n",
      "    copy /proc/apanic_threads /data/dontpanic/apanic_threads\r\n",
      "    chown root log /data/dontpanic/apanic_threads\r\n",
      "    chmod 0640 /data/dontpanic/apanic_threads\r\n",
      "\r\n",
      "    write /proc/apanic_console 1\r\n",
      "\r\n",
      "    # create basic filesystem structure\r\n",
      "    mkdir /data/misc 01771 system misc\r\n",
      "    mkdir /data/misc/adb 02750 system shell\r\n",
      "    mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack\r\n",
      "    mkdir /data/misc/keystore 0700 keystore keystore\r\n",
      "    mkdir /data/misc/keychain 0771 system system\r\n",
      "    mkdir /data/misc/sms 0770 system radio\r\n",
      "    mkdir /data/misc/vpn 0770 system vpn\r\n",
      "    mkdir /data/misc/systemkeys 0700 system system\r\n",
      "    # give system access to wpa_supplicant.conf for backup and restore\r\n",
      "    mkdir /data/misc/wifi 0770 wifi wifi\r\n",
      "    chmod 0660 /data/misc/wifi/wpa_supplicant.conf\r\n",
      "    chown system wifi /data/misc/wifi/wpa_supplicant.conf\r\n",
      "\tmkdir /data/misc/wifi/sockets 0770 wifi wifi\r\n",
      "\tmkdir /data/misc/dhcp 0770 dhcp dhcp\r\n",
      "\tchown dhcp dhcp /data/misc/dhcp\r\n",
      "    mkdir /data/local 0751 root root\r\n",
      "\r\n",
      "    # star add for camera recorder\r\n",
      "    mkdir /data/camera 0751 media media\r\n",
      "\r\n",
      "    # For security reasons, /data/local/tmp should always be empty.\r\n",
      "    # Do not place files or directories in /data/local/tmp\r\n",
      "    mkdir /data/local/tmp 0771 shell shell\r\n",
      "    mkdir /data/data 0771 system system\r\n",
      "    mkdir /data/app-private 0771 system system\r\n",
      "    mkdir /data/app-asec 0700 root root\r\n",
      "    mkdir /data/app-lib 0771 system system\r\n",
      "    mkdir /data/app 0771 system system\r\n",
      "    mkdir /data/property 0700 root root\r\n",
      "    mkdir /data/ssh 0750 root shell\r\n",
      "    mkdir /data/ssh/empty 0700 root root\r\n",
      "\r\n",
      "    # create dalvik-cache, so as to enforce our permissions\r\n",
      "    mkdir /data/dalvik-cache 0771 system system\r\n",
      "\r\n",
      "    # create resource-cache and double-check the perms\r\n",
      "    mkdir /data/resource-cache 0771 system system\r\n",
      "    chown system system /data/resource-cache\r\n",
      "    chmod 0771 /data/resource-cache\r\n",
      "\r\n",
      "    # create the lost+found directories, so as to enforce our permissions\r\n",
      "    mkdir /data/lost+found 0770 root root\r\n",
      "\r\n",
      "    # create directory for DRM plug-ins - give drm the read/write access to\r\n",
      "    # the following directory.\r\n",
      "    mkdir /data/drm 0770 drm drm\r\n",
      "\r\n",
      "    # If there is no fs-post-data action in the init.<device>.rc file, you\r\n",
      "    # must uncomment this line, otherwise encrypted filesystems\r\n",
      "    # won't work.\r\n",
      "    # Set indication (checked by vold) that we have finished this action\r\n",
      "    #setprop vold.post_fs_data_done 1\r\n",
      "\r\n",
      "on boot\r\n",
      "# basic network init\r\n",
      "    ifup lo\r\n",
      "    hostname localhost\r\n",
      "    domainname localdomain\r\n",
      "\r\n",
      "# set RLIMIT_NICE to allow priorities from 19 to -20\r\n",
      "    setrlimit 13 40 40\r\n",
      "\r\n",
      "# Memory management.  Basic kernel parameters, and allow the high\r\n",
      "# level system server to be able to adjust the kernel OOM driver\r\n",
      "# parameters to match how it is managing things.\r\n",
      "    write /proc/sys/vm/overcommit_memory 1\r\n",
      "    write /proc/sys/vm/min_free_order_shift 4\r\n",
      "    chown root system /sys/module/lowmemorykiller/parameters/adj\r\n",
      "    chmod 0664 /sys/module/lowmemorykiller/parameters/adj\r\n",
      "    chown root system /sys/module/lowmemorykiller/parameters/minfree\r\n",
      "    chmod 0664 /sys/module/lowmemorykiller/parameters/minfree\r\n",
      "\r\n",
      "    # Tweak background writeout\r\n",
      "    write /proc/sys/vm/dirty_expire_centisecs 200\r\n",
      "    write /proc/sys/vm/dirty_background_ratio  5\r\n",
      "\r\n",
      "    # Permissions for System Server and daemons.\r\n",
      "    chown radio system /sys/android_power/state\r\n",
      "    chown radio system /sys/android_power/request_state\r\n",
      "    chown radio system /sys/android_power/acquire_full_wake_lock\r\n",
      "    chown radio system /sys/android_power/acquire_partial_wake_lock\r\n",
      "    chown radio system /sys/android_power/release_wake_lock\r\n",
      "    chown system system /sys/power/autosleep\r\n",
      "    chown system system /sys/power/state\r\n",
      "    chown system system /sys/power/wakeup_count\r\n",
      "    chown radio system /sys/power/wake_lock\r\n",
      "    chown radio system /sys/power/wake_unlock\r\n",
      "    chmod 0660 /sys/power/state\r\n",
      "    chmod 0660 /sys/power/wake_lock\r\n",
      "    chmod 0660 /sys/power/wake_unlock\r\n",
      "\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/timer_rate\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/boost\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boost\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/input_boost\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/input_boost\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration\r\n",
      "\r\n",
      "    # Assume SMP uses shared cpufreq policy for all CPUs\r\n",
      "    chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq\r\n",
      "    chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq\r\n",
      "\r\n",
      "    chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor\r\n",
      "\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/fantasys/max_power\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/fantasys/max_power\r\n",
      "\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/fantasys/pulse\r\n",
      "    chmod 0660 /sys/devices/system/cpu/cpufreq/fantasys/pulse\r\n",
      "\r\n",
      "    chown system system /sys/class/sw_powernow/mode\r\n",
      "    chown system system /sys/class/sw_powernow/available_modes\r\n",
      "\r\n",
      "    chown system system /sys/devices/system/cpu/cpufreq/fantasys/hotplug_lock\r\n",
      "\r\n",
      "    chown system system /sys/class/devfreq/sunxi-dramfreq/vans/max_freq_lock\r\n",
      "    chmod 0660 /sys/class/devfreq/sunxi-dramfreq/vans/max_freq_lock\r\n",
      "\r\n",
      "    chown system system /sys/class/devfreq/sunxi-dramfreq/vans/wake_lock\r\n",
      "    chmod 0660 /sys/class/devfreq/sunxi-dramfreq/vans/wake_lock\r\n",
      "\r\n",
      "    chown system system /sys/class/power_supply/battery/chgen\r\n",
      "    chmod 0660 /sys/class/power_supply/battery/chgen\r\n",
      "\r\n",
      "    chown system system /sys/class/timed_output/vibrator/enable\r\n",
      "    chown system system /sys/class/leds/keyboard-backlight/brightness\r\n",
      "    chown system system /sys/class/leds/lcd-backlight/brightness\r\n",
      "    chown system system /sys/class/leds/button-backlight/brightness\r\n",
      "    chown system system /sys/class/leds/jogball-backlight/brightness\r\n",
      "    chown system system /sys/class/leds/red/brightness\r\n",
      "    chown system system /sys/class/leds/green/brightness\r\n",
      "    chown system system /sys/class/leds/blue/brightness\r\n",
      "    chown system system /sys/class/leds/red/device/grpfreq\r\n",
      "    chown system system /sys/class/leds/red/device/grppwm\r\n",
      "    chown system system /sys/class/leds/red/device/blink\r\n",
      "    chown system system /sys/class/leds/red/brightness\r\n",
      "    chown system system /sys/class/leds/green/brightness\r\n",
      "    chown system system /sys/class/leds/blue/brightness\r\n",
      "    chown system system /sys/class/leds/red/device/grpfreq\r\n",
      "    chown system system /sys/class/leds/red/device/grppwm\r\n",
      "    chown system system /sys/class/leds/red/device/blink\r\n",
      "    chown system system /sys/class/timed_output/vibrator/enable\r\n",
      "    chown system system /sys/module/sco/parameters/disable_esco\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_wmem_min\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_wmem_def\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_wmem_max\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_rmem_min\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_rmem_def\r\n",
      "    chown system system /sys/kernel/ipv4/tcp_rmem_max\r\n",
      "    chown root radio /proc/cmdline\r\n",
      "    chmod 0777 /system/bin/updatesoftwinner\r\n",
      "\r\n",
      "# Define TCP buffer sizes for various networks\r\n",
      "#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,\r\n",
      "    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208\r\n",
      "    setprop net.tcp.buffersize.wifi    524288,1048576,2097152,262144,524288,1048576\r\n",
      "    setprop net.tcp.buffersize.lte     524288,1048576,2097152,262144,524288,1048576\r\n",
      "    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208\r\n",
      "    setprop net.tcp.buffersize.hspa    4094,87380,262144,4096,16384,262144\r\n",
      "    setprop net.tcp.buffersize.hsupa   4094,87380,262144,4096,16384,262144\r\n",
      "    setprop net.tcp.buffersize.hsdpa   4094,87380,262144,4096,16384,262144\r\n",
      "    setprop net.tcp.buffersize.hspap   4094,87380,1220608,4096,16384,1220608\r\n",
      "    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040\r\n",
      "    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680\r\n",
      "    setprop net.tcp.buffersize.evdo    4094,87380,262144,4096,16384,262144\r\n",
      "\r\n",
      "# Set this property so surfaceflinger is not started by system_init\r\n",
      "    setprop system_init.startsurfaceflinger 0\r\n",
      "\r\n",
      "    class_start core\r\n",
      "    class_start main\r\n",
      "\r\n",
      "on nonencrypted\r\n",
      "    class_start late_start\r\n",
      "\r\n",
      "on charger\r\n",
      "    class_start charger\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_reset_main\r\n",
      "    class_reset main\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_load_persist_props\r\n",
      "    load_persist_props\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_post_fs_data\r\n",
      "    trigger post-fs-data\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_restart_min_framework\r\n",
      "    class_start main\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_restart_framework\r\n",
      "    class_start main\r\n",
      "    class_start late_start\r\n",
      "\r\n",
      "on property:vold.decrypt=trigger_shutdown_framework\r\n",
      "    class_reset late_start\r\n",
      "    class_reset main\r\n",
      "\r\n",
      "## Daemon processes to be run by init.\r\n",
      "##\r\n",
      "service ueventd /sbin/ueventd\r\n",
      "    class core\r\n",
      "    critical\r\n",
      "    seclabel u:r:ueventd:s0\r\n",
      "\r\n",
      "on property:selinux.reload_policy=1\r\n",
      "    restart ueventd\r\n",
      "    restart installd\r\n",
      "\r\n",
      "service console /system/bin/sh\r\n",
      "    class core\r\n",
      "    console\r\n",
      "    disabled\r\n",
      "    user shell\r\n",
      "    group log\r\n",
      "\r\n",
      "on property:ro.debuggable=1\r\n",
      "    start console\r\n",
      "\r\n",
      "# adbd is controlled via property triggers in init.<platform>.usb.rc\r\n",
      "service adbd /sbin/adbd\r\n",
      "    class core\r\n",
      "    socket adbd stream 660 system system\r\n",
      "    disabled\r\n",
      "    seclabel u:r:adbd:s0\r\n",
      "\r\n",
      "# adbd on at boot in emulator\r\n",
      "on property:ro.kernel.qemu=1\r\n",
      "    start adbd\r\n",
      "\r\n",
      "service  sensors  /system/bin/busybox  sh  /system/bin/sensors.sh\r\n",
      "    user root\r\n",
      "    group root\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "on property:sys.sensors=1\r\n",
      "    start sensors\r\n",
      "\r\n",
      "service servicemanager /system/bin/servicemanager\r\n",
      "    class core\r\n",
      "    user system\r\n",
      "    group system\r\n",
      "    critical\r\n",
      "    onrestart restart zygote\r\n",
      "    onrestart restart media\r\n",
      "    onrestart restart surfaceflinger\r\n",
      "    onrestart restart drm\r\n",
      "\r\n",
      "service vold /system/bin/vold\r\n",
      "    class core\r\n",
      "    socket vold stream 0660 root mount\r\n",
      "    ioprio be 2\r\n",
      "\r\n",
      "service netd /system/bin/netd\r\n",
      "    class main\r\n",
      "    socket netd stream 0660 root system\r\n",
      "    socket dnsproxyd stream 0660 root inet\r\n",
      "    socket mdns stream 0660 root system\r\n",
      "\r\n",
      "service debuggerd /system/bin/debuggerd\r\n",
      "    class main\r\n",
      "\r\n",
      "service updatesoftwinner /system/bin/updatesoftwinner\r\n",
      "    class main\r\n",
      "    user root\r\n",
      "  \tgroup root\r\n",
      "\r\n",
      "service surfaceflinger /system/bin/surfaceflinger\r\n",
      "    class main\r\n",
      "    user system\r\n",
      "    group graphics drmrpc\r\n",
      "    onrestart restart zygote\r\n",
      "\r\n",
      "service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server\r\n",
      "    class main\r\n",
      "    socket zygote stream 660 root system\r\n",
      "    onrestart write /sys/android_power/request_state wake\r\n",
      "    onrestart write /sys/power/state on\r\n",
      "    onrestart restart media\r\n",
      "    onrestart restart netd\r\n",
      "\r\n",
      "service drm /system/bin/drmserver\r\n",
      "    class main\r\n",
      "    user drm\r\n",
      "    group drm system inet drmrpc\r\n",
      "\r\n",
      "service media /system/bin/mediaserver\r\n",
      "    class main\r\n",
      "    user media\r\n",
      "    group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc sdcard_rw media_rw\r\n",
      "    ioprio rt 4\r\n",
      "\r\n",
      "service bootanim /system/bin/bootanimation\r\n",
      "    class main\r\n",
      "    user graphics\r\n",
      "    group graphics\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service installd /system/bin/installd\r\n",
      "    class main\r\n",
      "    socket installd stream 600 system system\r\n",
      "\r\n",
      "service flash_recovery /system/etc/install-recovery.sh\r\n",
      "    class main\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service racoon /system/bin/racoon\r\n",
      "    class main\r\n",
      "    socket racoon stream 600 system system\r\n",
      "    # IKE uses UDP port 500. Racoon will setuid to vpn after binding the port.\r\n",
      "    group vpn net_admin inet\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service mtpd /system/bin/mtpd\r\n",
      "    class main\r\n",
      "    socket mtpd stream 600 system system\r\n",
      "    user vpn\r\n",
      "    group vpn net_admin inet net_raw\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service keystore /system/bin/keystore /data/misc/keystore\r\n",
      "    class main\r\n",
      "    user keystore\r\n",
      "    group keystore drmrpc\r\n",
      "    socket keystore stream 666\r\n",
      "\r\n",
      "service dumpstate /system/bin/dumpstate -s\r\n",
      "    class main\r\n",
      "    socket dumpstate stream 0660 shell log\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service sshd /system/bin/start-ssh\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "\r\n",
      "service mdnsd /system/bin/mdnsd\r\n",
      "    class main\r\n",
      "    user mdnsr\r\n",
      "    group inet net_raw\r\n",
      "    socket mdnsd stream 0660 mdnsr inet\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service dhcpcd_wlan0 /system/bin/dhcpcd -aABDKL\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service dhcpcd_p2p /system/bin/dhcpcd -aABKL\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service dhcpcd_eth /system/bin/dhcpcd -ABDKL\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service dhcpcd_bnep0 /system/bin/dhcpcd -ABKL\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service iprenew_wlan0 /system/bin/dhcpcd -n\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service iprenew_p2p /system/bin/dhcpcd -n\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "\r\n",
      "service iprenew_eth /system/bin/dhcpcd -n\r\n",
      "    class main\r\n",
      "    disabled\r\n",
      "    oneshot\r\n",
      "service  preinstall  /system/bin/busybox  sh  /system/bin/preinstall.sh\r\n",
      "  user root\r\n",
      "  group root\r\n",
      "  disabled\r\n",
      "  oneshot\r\n",
      "on property:sys.boot_completed=1\r\n",
      "    start preinstall\r\n"
     ]
    }
   ],
   "source": [
    "!cat tablet/boot/img-ramdisk/init.rc"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}