Как в ядро Android добавить поддержку init.d

В Android возможно встроить различные скрипты и твики которые начнут работать еще в процессе загрузки системы, для это нужна поддержка ядром init.d, но как ее добавить? Очень просто!

Более детально про init.d можете прочитать в wiki, если коротко, то с помощью данной системы инициализации, можно улучшить с помощью скриптов скорость работы 3G интернета, продлить время работы устройства от одного заряда аккумулятора, влиять на работу процессора и многое другое. Скрипты можно найти в интернет…

Что необходимо чтобы добавить поддержку init.d в Android?

Способ 1. ОС Windows

  1. Компьютер на ОС Windows (7/8/10)
  2. Ядро boot.img от вашего смартфона или планшета Android
  3. Скачать и распаковать архив с утилитой Android Image Kitchen
  4. Скачать и установить Notepad ++

Способ 2. ОС UBUNTU (Linux)

  1. Компьютер с ОС UBUNTU
  2. Ядро boot.img от вашего смартфона или планшета Android

Инструкция как в ядро Android добавить поддержку init.d

Способ 1. ОС Windows

  1. Ядро boot.img поместить рядом в папку Android Image Kitchen2016-05-05_12-18-54
  2. Перетянуть ядро на BAT-скрипт unpackimg.bat, после чего ядро будет разобрано
  3. Открыть папку ramdisk и найти файл init.rc, после чего открыть его через Notepad ++2016-05-05_12-20-36
  4. Добавить после service bootanim /system/bin/bootanimation …. следующие строки: # Execute files in /etc/init.d during boot
    service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
    class late_start
    user root
    group root
    oneshot2016-05-05_12-31-01
  5. Сохранить документ, закрыть Notepad ++, вернуться в папку Android Image Kitchen
  6. Запустить Bat-скрипт repackimg.bat после чего будет созданно новое ядро image-new.img2016-05-05_12-34-05
  7. Готовое ядро прошить через Fastboot

Способ 2. ОС Ubuntu

ubuntu

Подготовка

Установим пакет встраивающий открытие терминала в файловом менеджере

1. Открываем терминал и вводим следующую команду (с версии Ubuntu 15.10 терминал уже встроен в файловый менеджер Nautilus)

Для 32х разрядных систем:

sudo apt-get install nautilus-open-terminal:i386

Для 64х разрядных систем:

sudo apt-get install nautilus-open-terminal

2. После чего выполнить команду перезапуска файлового менеджера

nautilus -q

3. Установить пакет необходимый для работы с ядром Android

sudo apt-get install abootimg

В текстовом редакторе Gedit снять галочку с параметра «создание резервной копии»gedit

Работа с ядром

1. Создайте в папке home (Домашняя папка) папку с любым удобным именем и переместите туда ядро Android — boot.img. ( В примере будет указана папка kernel)Android добавить поддержку init.d

2. Перейдите в папку kernel, в любом пустом месте нажмите правую кнопку мыши и выбрать «Открыть в терминале»

3. В открывшемся терминале введите команду:

abootimg -x boot.img

Android добавить поддержку init.dПосле чего в папке kernel вы увидите что появились новые файлы (ядро распаковано)



Android добавить поддержку init.d4. Создадим новую папку (назовем ее rw) внутри папки kernel, в терминале пишем

mkdir rw

и далее пишем команду для перехода в нее

cd rw

Android добавить поддержку init.d5. Пишем команду в терминале для дальнейшей распаковки раздела initrd.img

zcat ../initrd.img | cpio -iAndroid добавить поддержку init.d

6. После чего в папке rw вы обнаружите множество файловAndroid добавить поддержку init.d

7. Найдите и откройте файл init.rcAndroid добавить поддержку init.d

8. В конце файла добавьте следующие строки

# Execute files in /etc/init.d during boot
service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
class late_start
user root
group root
oneshot

и сохраните файл и выйдете с него

Android добавить поддержку init.d

9. В терминале выполняем сборку файла initrd.img, пишем команду

find . | cpio -o -H newc | gzip > ../initrd.img

10.  Возвращаемся обратно в папку kernel, для этого в терминале  пишем

cd ..

11. Собираем ядро Android с внесенными изменениями

abootimg --create boot.img -k zImage -r initrd.img

и после еще одну команду

abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img

Если получаете ошибку что ядро стало большим:

boot.img: updated is too big for the Boot Image

тогда собираем с такой командой

 abootimg --create boot.img -k zImage -r initrd.img

 abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img -c "bootsize=размер_что_в_ошибке"

Ядро Android с поддержкой init.d собрано! Далее вам необходимо прошить!

[свернуть]

Как проверить поддерживает ли ядро init.d?

  1. Установите Busybox
  2. Через любой терминал (с помощью ПК или приложение) введите команду: grep busybox /init.rc
  3. Если появиться ответ со строкой: service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d Значит все работает как надо, ядро поддерживает init.d

Где должна быть создана папка init.d в Android для добавления скриптов?

  1. Скачайте приложение Root Browser
  2. Установите Busybox
  3. В приложение Root Browser перейдите в раздел /system/etc
  4. Создайте папку init.d
  5. Задайте права доступа для папки (Permissions) — rwxr-xr-x или 0755 или буквой «П»Android добавить поддержку init.d
  6. Откройте текстовый файл конфигурации build.prop находящийся в корне раздела /system и дописать строку: sys.initd=1

Перезагрузите Android и все готово!

На этом все! Оставайтесь с Android +1 и подписывайтесь в социальные группы! Дальше будет интересней!