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

Слово автора:
Это статья написана мной, т.е. , с использованием , которая не претендует на универсальность и открытие «Америки».Скорее она предназначена для ознакомления и в качестве деления личным опытом и размышлениями, ну и чутку для науки))))

Введение:
Данные скрипты-твики для init.d призванны улучшить работу гуглофона и настроить его под свои нужды.
Для работы твиков необходима поддержка init.d прошивкой вашего аппарата, а также .
Однако, поддержку init.d можно эмулировать с помощью таких программ как или , включив соответствующие пункты в программах. Причем в mcTweaker реализовано множество твиков для вашего аппарата.
Напомню, что в кастомных прошивках BusyBox может быть установлен, да и многие твики уже реализованы!
Все Вы делаете на свой страх и риск! Для манипуляций нужен root-доступ!

Общая информация:
Скрипты-твики необходимо класть по пути /system/etc/init.d/ :

Для редактирования/добавления/удаления скриптов я пользовался .
Если у Вас нет папки init.d , то значит скрипты работать не будут 100% !

Каждый файл скрипта начинается со строчки:

#!/system/bin/sh
Далее вставляется код твика, например: echo "500" >
echo "1000" >
Образец файла скрипта

#!/system/bin/sh
echo "500" > /proc/sys/vm/dirty_expire_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs


Каждый твик оформляется отдельным файлом! Все твики в один файл не кладем!

Файл скрипта называем по-любому, но так чтобы сами могли распознать их, например, Battery_tweak - твик аккумулятора.

Твики:
1)Твики скорости интернет-соединения

echo "0" > /proc/sys/net/ipv4/tcp_timestamps;
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse;
echo "1" > /proc/sys/net/ipv4/tcp_sack;
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle;
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling;
echo "5" > /proc/sys/net/ipv4/tcp_keepalive_probes;
echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl;
echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout;
echo "404480" > /proc/sys/net/core/wmem_max;
echo "404480" > /proc/sys/net/core/rmem_max;
echo "256960" > /proc/sys/net/core/rmem_default;
echo "256960" > /proc/sys/net/core/wmem_default;
echo "4096, 16384, 404480" > /proc/sys/net/ipv4/tcp_wmem;
echo "4096, 87380, 404480" > /proc/sys/net/ipv4/tcp_rmem;

2)Твики управления памятью виртуальной машины

echo "4096" > /proc/sys/vm/min_free_kbytes
echo "0" > /proc/sys/vm/oom_kill_allocating_task;
echo "0" > /proc/sys/vm/panic_on_oom;
echo "0" > /proc/sys/vm/laptop_mode;
echo "0" > /proc/sys/vm/swappiness
echo "50" > /proc/sys/vm/vfs_cache_pressure
echo "90" > /proc/sys/vm/dirty_ratio
echo "70" > /proc/sys/vm/dirty_background_ratio

3)Твики ядра

echo "8" > /proc/sys/vm/page-cluster;
echo "64000" > /proc/sys/kernel/msgmni;
echo "64000" > /proc/sys/kernel/msgmax;
echo "10" > /proc/sys/fs/lease-break-time;
echo "500, 512000, 64, 2048" > /proc/sys/kernel/sem;

4)Увеличиваем время жизни аккумулятора

echo "500" > /proc/sys/vm/dirty_expire_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs

5)Твик скорости чтения sd-карты(увеличение кеша карты)

echo "2048" > /sys/devices/virtual/bdi/179:0/read_ahead_kb;

6)Дефрагментация файлов баз данных?

for i in \
`find /data -iname "*.db"`
do \
sqlite3 $i "VACUUM;";
done

7)Отключаем логгеры(не будут записываться лог-файлы)

rm /dev/log/main

8)Настраиваем пороги, при которых будет происходить выгрузка приложений при нехватке памяти

echo "2048, 3072, 6144, 15360, 17920, 20480" > /sys/module/lowmemorykiller/parameters/minfree

9)Твики управления кэша

LOOP=`ls -d /sys/block/loop*`;
RAM=`ls -d /sys/block/ram*`;
MMC=`ls -d /sys/block/mmc*`;
for j in $LOOP $RAM
do
echo "0" > $j/queue/rotational;
echo "2048" > $j/queue/read_ahead_kb;
done

10)Твики процессора?

SAMPLING_RATE=$(busybox expr `cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency` \* 750 / 1000)
echo 95 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo $SAMPLING_RATE > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate

11)Перенос dalvik-кеша в раздел cache, чтобы разгрузить раздел data

CACHESIZE=$(df -k /cache | tail -n1 | tr -s " " | cut -d " " -f2)
if [ $CACHESIZE -gt 80000 ]
then
echo "Large cache detected, moving dalvik-cache to /cache"
if [ ! -d /cache/dalvik-cache ]
then
busybox rm -rf /cache/dalvik-cache /data/dalvik-cache
mkdir /cache/dalvik-cache /data/dalvik-cache
fi

Busybox chown 1000:1000 /cache/dalvik-cache
busybox chmod 0771 /cache/dalvik-cache

# bind mount dalvik-cache so we can still boot without the sdcard
busybox mount -o bind /cache/dalvik-cache /data/dalvik-cache
busybox chown 1000:1000 /data/dalvik-cache
busybox chmod 0771 /data/dalvik-cache
else
echo "Small cache detected, dalvik-cache will remain on /data"
fi

12)Удаление кэша, tmp-файлов и прочего мусора

#remove cache, tmp, and unused files
rm -f /cache/*.apk
rm -f /cache/*.tmp
rm -f /data/dalvik-cache/*.apk
rm -f /data/dalvik-cache/*.tmp

if [ -e /data/system/userbehavior.db ]
then
rm -f /data/system/userbehavior.db
fi

if [ -d /data/system/usagestats ]
then
chmod 400 /data/system/usagestats
fi

if [ -d /data/system/appusagestats ]
then
chmod 400 /data/system/appusagestats
fi

#remove main log
if [ -e /dev/log/main ]
then
rm -f /dev/log/main
fi

13)Изменение приоритета процессов-только стандартных. Желательно перед использованием проверить название процессов на вашем аппарате. Призвано увеличить плавность работы аппарата и сделать отклик более приятным)

renice -20 "pidof com.android.phone"
renice -19 "pidof com.android.inputmethod.latin"
renice -19 "pidof com.swype.android.inputmethod"
renice -17 "pidof com.android.systemui"
renice -9 "pidof com.android.settings"
renice -9 "pidof com.android.vending"
renice -6 "pidof com.sec.android.app.camera"
renice -6 "pidof com.sec.android.app.fm"
renice -6 "pidof com.google.android.apps.maps"
renice -4 "pidof com.google.android.apps.googlevoice"
renice -3 "pidof android.process.media"



Назначение скриптов, помеченных вопросительным знаком, точно не знаю или их работа под вопросом!
В прикрепленном архиве лежат готовые скрипты-твики, которые осталось только закинуть в папку init.d. Нумерация скриптов сохранена!

p.s. Повторяюсь, все манипуляции над вашим аппаратом лежат на вашей совести! При использовании программ-твикеров типа mcTweaker удаляйте свои пользовательские скрипты да бы избежать неприятныз ситуаций и всегда делайте бэкап!
p.p.s. Статья будет пополняться новой информацией по мере возможности! Вопросы задаем в комментариях!

Прикрепленный файл #1:

Внимание! У вас нет прав, для просмотра скрытого текста.

Если Вы сам деятель науки или просто любознательный человек, и Вы частенько смотрите или читаете последние новости в сфере науки или техники. Именно для Вас мы создали такой раздел, где освещаются последние новости мира в сфере новых научных открытий, достижений, а также в сфере техники. Только самые свежие события и только проверенные источники.


В наше прогрессивное время наука двигается быстрыми темпами, так что не всегда можно уследить за ними. Какие-то старые догмы рушатся, какие-то выдвигаются новые. Человечество не стоит на месте и не должно стоять, а двигателем человечества, являются ученые, научные деятели. И в любой момент может произойти открытие, которое способно не просто поразить умы всего населения земного шара, но и в корне поменять нашу жизнь.


Особая роль в науке выделяется медицине, так как человек, к сожалению не бессмертен, хрупок и очень уязвим к всякого рода заболеваниям. Многим известно, что в средние века люди в среднем жили лет 30, а сейчас 60-80 лет. То есть, как минимум вдвое увеличилась продолжительность жизни. На это повлияло, конечно, совокупность факторов, однако большую роль привнесла именно медицина. И, наверняка 60-80 лет для человека не предел средней жизни. Вполне возможно, что когда-нибудь люди перешагнут через отметку в 100 лет. Ученые со всего мира борются за это.


В сфере и других наук постоянно ведутся разработки. Каждый год ученые со всего мира делаю маленькие открытия, потихоньку продвигая человечество вперед и улучшая нашу жизнь. Исследуется не тронутые человеком места, в первую очередь, конечно на нашей родной планете. Однако и в космосе постоянно происходят работы.


Среди техники особенно рвется вперед робототехника. Ведется создание идеального разумного робота. Когда-то давно роботы – были элементом фантастики и не более. Но уже на данный момент некоторые корпорации имеют в штате сотрудников настоящих роботов, которые выполняют различные функции и помогают оптимизировать труд, экономить ресурсы и выполнять за человека опасные виды деятельности.


Ещё хочется особое внимание уделить электронным вычислительным машинам, которые ещё лет 50 назад занимали огромное количество места, были медленными и требовали для своего ухода целую команду сотрудников. А сейчас такая машина, практически, в каждом доме, её уже называют проще и короче – компьютер. Теперь они не только компактны, но и в разы быстрее своих предшественников, а разобраться в нем может уже каждый желающий. С появлением компьютера человечество открыло новую эру, которую многие называют «технологической» или «информационной».


Вспомнив о компьютере, не стоит забывать и о создании интернета. Это дало тоже огромный результат для человечества. Это неиссякаемый источник информации, который теперь доступен практически каждому человеку. Он связывает людей с разных континентов и молниеносно передает информацию, о таком лет 100 назад невозможно было даже мечтать.


В этом разделе, Вы, безусловно, найдете для себя что-то интересное, увлекательное и познавательное. Возможно, даже когда-нибудь Вы сможете одним из первых узнать об открытии, которое не просто изменит мир, а перевернет Ваше сознание.

Версия Android : Android 2.2 и выше

Русский язык : нет

Разработчик : broodplank

Цена Google play : бесплатно

Скриншоты Init.d Toggler для Андроид

Init.d Toggler является очень простым в пользовании программой, которое позволяет включить или отключить поддержку init.d. Init.d представляет собой каталог,который может содержать скрипты и твики, которые будут выполняться во время загрузки системы. ROOT и Busybox обязательны для запуска сценариев init.d.

Подробная инструкция по проверки включился ли init.d

Скрипт, который позволит понять поддерживает ли ваша прошивка init.d (естественно, нужен ROOT, и если вы не уверены в своих силах сделайте nandroid backup через CWM.

1. Скачиваем это: Прикрепленный файл initd_testing.zip (631 байт)

2. Разархивируем.

3. Идем в папку «/system/etc/init.d/ » и кладем туда файл «initd_testing «, который лежал в архиве. ВНИМАНИЕ!!! Если в этой папке уже есть файл с таким же наименованием, меняем наименование файла на любое, которого нет в этой папке.

4. Выставляем ему права (разрешения), как на скриншоте (rwxr-x—).

5. Перезагружаем аппарат.

6. Идем в папку «/data/ «, если там есть файл с наименованием «initd_testing.txt «, в котором написано: «Hello from Bobko_904», значит прошивка поддерживает init.d, если нет такого файла, то прошивка, соответственно, не поддерживает.

7. Не забываем после всех, перечисленных действий обратно удалять файлы «/system/etc/init.d/initd_testind.txt » (или аналогичный, если вы меня наименование в пункте 3) и «/data/initd_testing.txt «

Init.d Toggler является очень простым в пользовании программой, которое позволяет включить или отключить поддержку init.d. Init.d представляет собой каталог,который может содержать скрипты и твики, которые будут выполняться во время загрузки системы. ROOT и Busybox обязательны для запуска сценариев init.d. Подробная инструкция по проверки включился ли init.d Скрипт, который позволит понять поддерживает ли ваша прошивка init.d (естественно, нужен ROOT, и если вы не уверены в своих силах сделайте nandroid backup через CWM. 1. Скачиваем это: Прикрепленный файл initd_testing.zip (631 байт)2. Разархивируем.3. Идем в папку "/system/etc/init.d/" и кладем туда файл "initd_testing", который лежал в архиве. ВНИМАНИЕ!!! Если в этой папке…

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

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

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

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

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

sudo apt-get install nautilus-open-terminal

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

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

sudo apt-get install abootimg

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

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

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

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

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

abootimg -x boot.img

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

4. Создадим новую папку (назовем ее rw ) внутри папки kernel , в терминале пишем

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

zcat ../initrd.img | cpio -i

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

7. Найдите и откройте файл init.rc

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

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

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

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

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

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

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

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 собрано! Далее вам необходимо прошить!

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

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

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

Способ 1. ОС Windows

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

  • Компьютер с ОС UBUNTU
  • Ядро boot.img от вашего смартфона или планшета Android
  • Инструкция как в ядро Android добавить поддержку init.d Способ 1. ОС Windows

    1. Ядро boot.img поместить рядом в папку Android Image Kitchen

    2. Перетянуть ядро на BAT-скрипт unpackimg.bat , после чего ядро будет разобрано

    3. Открыть папку ramdisk и найти файл init.rc , после чего открыть его через Notepad ++

    Добавить после 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 oneshot

    6. Запустить Bat-скрипт repackimg.bat после чего будет созданно новое ядро image-new.img

    Способ 2. ОС 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 снять галочку с параметра «создание резервной копии»

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

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

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

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

    Abootimg -x boot.img

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

    4 . Создадим новую папку (назовем ее rw ) внутри папки kernel, в терминале пишем

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

    Zcat ../initrd.img | cpio -i

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

    7 . Найдите и откройте файл init.rc

    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

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


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

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

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

    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 . Скачайте приложение