Редактирование rmdisk файлов
Важно: к сожалению, пока писал инструкцию понял, что тут не будет объяснения некоторых ньюансов как портировать рекавери для устройств у которых есть раздел custpack (Alcatel и TCL) или для устройств с файловой системой UBIFS (в принципе в custpack, наверное надо будет просто добавить пути для "custpack" и "mobile_info"). Инстркция получилась слишком объёмная, на custpack и ubifs меня не хватило. Так же эта инструкцию не подойдёт для устройств у которых отсутсвует раздел fat в dumchar_info, то есть внутренняя sdcard эмулируется. Но для большинства медиатеков, должно подойди всё.
1. Заходим в папку C:\michfood\carliv\rmdisk и находим там файл fstab.mt6582. Переименовываем файл в соответствии с тем какой MediaTek используется на вашем устройстве. То есть, если, например, ваше устройство работает на чипсете MediaTek MT6592, то файл следует переименовать в fstab.mt6592. Если не уверены на 100% какой у вас MediaTek, то откройте файл C:\michfood\recovery\rmdisk\default.prop и найдите там строку ro.mediatek.platform=MT65xx (где вместо xx будут две цифры модели вашего процессора)
2. Далее, при помощи текстового редактора, открываем наш dumchar_info.txt (который мы сохранили ранее), а в другом окне текстового редактора открываем файл recovery.fstab из C:\michfood\carliv\rmdisk\etc. Смотрим в dumchar_info на пути к разделам android, cache, usrdata, и выставляем такие же пути в recovery.fstab вместо /emmc@android, /emmc@cache и /emmc@usrdata, соответственно. После редактирования сохраняем изменения в recovery.fstab. Пример:
Код:
android 0x0000000038400000 0x0000000005180000 2 /dev/block/mmcblk0p5
cache 0x0000000007e00000 0x000000003d580000 2 /dev/block/mmcblk0p6
usrdata 0x0000000039c00000 0x0000000045380000 2 /dev/block/mmcblk0p7
Код:
/dev/block/mmcblk0p5 /system ext4 ro,noatime wait
/dev/block/mmcblk0p6 /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/dev/block/mmcblk0p7 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer]
3. Теперь откройте файл C:\michfood\boot\rmdisk\fstab в текстовом редакторе, а в другом окне редактора снова откройте C:\michfood\carliv\rmdisk\etc\recovery.fstab. Нам надо сверить точки монтирования /data, чтобы в recovery.fstab они соответствовали fstab. Как это должно выглядеть:
Код:
/emmc@usrdata /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check,encryptable=footer
/emmc@protect_f /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/emmc@protect_s /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
Код:
/dev/block/mmcblk0p5 /system ext4 ro,noatime wait
/dev/block/mmcblk0p6 /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/dev/block/mmcblk0p7 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
4. Продолжаем редактировать C:\michfood\carliv\rmdisk\etc\recovery.fstab. В данном файле, убираем запятую в строке 12 (в самом конце). Так же меняем sdcard0 и sdcard1 местами.
Оригинал:
Код:
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard1:8,
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard0:auto
Как должно быть:
Код:
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
5. Не спешите закрывать C:\michfood\carliv\rmdisk\etc\recovery.fstab. Снова откройте dumchar_info.txt и найдите там раздел fat. Смотрим на последнюю цифру в строке раздела fat и убеждаемся что она совпадает со строкой в recovery.fstab (если не совпадает то меняем на цифру из dumchar_info). Как это должно выглядеть смотрим ниже:
dumchar_info:
Код:
fat 0x000000006b580000 0x000000007ef80000 2 /dev/block/mmcblk0p8
recovery.fstab
Код:
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
6. Далее открываем файл C:\michfood\carliv\rmdisk\fstab.mt65xx (где вместо xx - полная модель вашего процессора) в текстовом редакторе. Здесь нам так же надо убедиться что цифра вконце строки sdcard0, соответствует нашему разделу fat из dumchar_info (если не соответствует, то меняем на цифру из fat):
dumchar_info:
Код:
fat 0x000000006b580000 0x000000007ef80000 2 /dev/block/mmcblk0p8
fstab.mt65xx
Код:
# vold-managed volumes
/devices/platform/mtk-msdc.0/mmc_host/mmc0 auto auto defaults voldmanaged=sdcard0:8
/devices/platform/mtk-msdc.1/mmc_host/mmc1 auto auto defaults voldmanaged=sdcard1:auto
7. Опять открываем C:\michfood\carliv\rmdisk\etc\recovery.fstab в одном окне редактора, а во втором C:\michfood\carliv\rmdisk\fstab.mt65xx. Копируем строки указанные ниже из recovery.fstab в fstab.mt65xx:
recovery.fstab:
Код:
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/dev/block/mmcblk0p5 /system ext4 ro,noatime wait
/dev/block/mmcblk0p6 /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/dev/block/mmcblk0p7 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
fstab.mt65xx:
Код:
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/dev/block/mmcblk0p5 /system ext4 ro,noatime wait
/dev/block/mmcblk0p6 /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/dev/block/mmcblk0p7 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/emmc@protect_f /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/emmc@protect_s /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
8. Снова открываем dumchar_info.txt в одном окне, а в другом открываем C:\michfood\carliv\rmdisk\fstab.mt65xx. Заменяем адреса разделов protect_f и protect_s из fstab.mt65xx на соответствующие из dumchar_info, как показано ниже:
dumchar_info:
Код:
protect_f 0x0000000000a00000 0x0000000000900000 2 /dev/block/mmcblk0p2
protect_s 0x0000000000a00000 0x0000000001300000 2 /dev/block/mmcblk0p3
fstab.mt65xx:
Код:
/dev/block/mmcblk0p5 /system ext4 ro,noatime wait
/dev/block/mmcblk0p6 /cache ext4 noatime,nosuid,nodev,noauto_da_alloc wait
/dev/block/mmcblk0p7 /data ext4 noatime,nosuid,nodev,noauto_da_alloc wait,encryptable=footer
/dev/block/mmcblk0p2 /protect_f ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
/dev/block/mmcblk0p3 /protect_s ext4 noatime,nosuid,nodev,noauto_da_alloc wait,check
9. Продолжаем редактировать C:\michfood\carliv\rmdisk\fstab.mt65xx. Откройте файл в текстовом редакторе. Если вы хотите чтобы в режиме recovery, на устройстве работала функция USB Mass Storage, то удалите из файла fstab.mt65xx строку указанную ниже. Она определяет работу USB OTG, если для вас это важнее то можете оставить строку, но, в таком случае, не будет работать USB Mass Storage:
Код:
/devices/platform/mt_usb/sda/sda1 auto auto defaults voldmanaged=usbotg:auto
10. Далее открываем C:\michfood\recovery\rmdisk\default.prop в одном окне редактора, а в другом C:\michfood\carliv\rmdisk. Проверяем указанные ниже значения в default.prop из папки carliv и заменяем их на соответствующие из default.prop из папки recovery (из recovery в carliv). В данном примере рассмотрен default.prop из UMI X1 Pro на Android 4.4 (синим указан параметр, а красным значение которое надо заменить). Так же все значения new из default.prop из папки carliv, следуем заменить на номер модели. Например в нашем примере это будет C471 (номер модели UMI X1 Pro), или, допустим, если бы смартфон был Lenovo A369i, то все значения new, надо было бы заменить на A369i. Но это еще не всё, так же, все значения mtk, следует заменить на производителя устройства, например, если устройство Lenovo A369i, то заменяем все значения mtk в default.prop из папки carliv на значения Lenovo (в нашем же примере производитель UMI):
default.prop из recovery
Код:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
persist.mtk.aee.aed=on
ro.debuggable=1
ro.adb.secure=1
persist.sys.usb.config=mtp,adb
persist.service.acm.enable=0
ro.mount.fs=EXT4
ro.persist.partition.support=no
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=KOT49H
ro.build.display.id=ImSmart.C471.V2.0_ 20140903-072946
ro.build.version.incremental=eng.scm.1409700452
ro.custom.build.version=1409700452
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.2
ro.build.date=Wed Sep 3 07:29:46 CST 2014
ro.build.date.utc=1409700586
ro.build.type=user
ro.build.user=scm
ro.build.host=v80
ro.build.tags=test-keys
ro.product.model=ImSmart C471
ro.product.brand=alps
ro.product.name=ImSmart.C471
ro.product.device=ImSmart.C471
ro.product.board=A25
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=MSUN
ro.product.locale.language=uk
ro.product.locale.region=UA
ro.wifi.channels=
ro.board.platform=MT82_A25
# ro.build.product is obsolete; use ro.product.device
ro.build.product=A25
# Do not try to parse ro.build.deion or .fingerprint
ro.build.deion=A25-user 4.4.2 KOT49H eng.scm.1409700452 test-keys
ro.build.fingerprint=alps/A25/A25:4.4.2/KOT49H/1409700452:user/test-keys
ro.build.flavor=mt82_a25_4706insmart_msun_kk_wcdma_mul
ro.build.characteristics=default
# end build properties
# begin mediatek build properties
ro.mediatek.version.release=ALPS.KK1.MP1.V2.10
ro.mediatek.platform=MT6582
ro.mediatek.chip_ver=S01
ro.mediatek.version.branch=KK1.MP1
ro.mediatek.version.sdk=2
# end mediatek build properties
#
# from out/target/product/vanzo82_cwet_kk/obj/CUSTGEN/config/system.prop
#
#
# system.prop for generic sdk
#
rild.libpath=/system/lib/mtk-ril.so
rild.libargs=-d /dev/ttyC0
# MTK, Infinity, 20090720 {
wifi.interface=wlan0
# MTK, Infinity, 20090720 }
# MTK, mtk03034, 20101210 {
ro.mediatek.wlan.wsc=1
# MTK, mtk03034 20101210}
# MTK, mtk03034, 20110318 {
ro.mediatek.wlan.p2p=1
# MTK, mtk03034 20110318}
# MTK, mtk03034, 20101213 {
mediatek.wlan.ctia=0
# MTK, mtk03034 20101213}
#
wifi.tethering.interface=ap0
#
ro.opengles.version=131072
wifi.direct.interface=p2p0
dalvik.vm.heapgrowthlimit=128m
dalvik.vm.heapsize=256m
# USB MTP WHQL
ro.sys.usb.mtp.whql.enable=0
# Power off opt in IPO
sys.ipo.pwrdncap=2
# Switching Menu of Mass storage and MTP
ro.sys.usb.storage.type=mtp,mass_storage
# USB BICR function
ro.sys.usb.bicr=yes
# USB Charge only function
ro.sys.usb.charging.only=yes
# audio
ro.camera.sound.forced=0
ro.audio.silent=0
ro.zygote.preload.enable=0
#
# switch bluetooth stack solution
#
ro.btstack=blueangel
#
# ADDITIONAL_BUILD_PROPERTIES
#
persist.gemini.sim_num=2
ro.gemini.smart_sim_switch=false
ro.gemini.smart_3g_switch=1
ril.specific.sm_cause=0
bgw.current3gband=0
ril.external.md=0
ro.btstack=blueangel
ro.sf.hwrotation=0
ril.current.share_modem=2
launcherplus.allappsgrid=2d
curlockscreen=1
ro.mediatek.gemini_support=true
persist.radio.fd.counter=15
persist.radio.fd.off.counter=5
persist.radio.fd.r8.counter=15
persist.radio.fd.off.r8.counter=5
drm.service.enabled=true
fmradio.driver.enable=1
ril.first.md=1
ril.flightmode.poweroffMD=1
ril.telephony.mode=1
dalvik.vm.mtk-stack-trace-file=/data/anr/mtk_traces.txt
persist.mtk.anr.mechanism=1
mediatek.wlan.chip=CONSYS_MT6582
mediatek.wlan.module.postfix=_consys_mt6582
ril.radiooff.poweroffMD=0
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.config.ringtone=Backroad.ogg
persist.mtk.wcn.combo.chipid=-1
ter.service.enable=0
mediatek.extmd.usbport=0
ro.lte.dc.support=0
ril.active.md=0
ro.init.time_format=24
persist.sys.timezone=Europe/Kiev
persist.sys.dalvik.vm.lib=libdvm.so
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
# begin fota properties
ro.fota.platform=MTK6592_KK
ro.fota.type=phone
ro.fota.oem=vanzo6592_KK
ro.fota.device=ImSmart C471
ro.fota.version=ImSmart.C471.V2.0_ 20140903-072946
# begin fota properties
default.prop из carliv
Код:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=0
ro.allow.mock.location=1
persist.mtk.aee.aed=on
ro.debuggable=1
persist.service.acm.enable=0
persist.sys.usb.config=mass_storage,adb
ro.bootloader.mode=download
ro.mount.fs=EXT4
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=KTU84Q
ro.build.display.id=cm_C471-eng 4.4.4 KTU84Q 347d7427a4 test-keys
ro.build.version.incremental=347d7427a4
ro.build.version.sdk=19
ro.build.version.codename=REL
ro.build.version.release=4.4.4
ro.build.date=Tue Dec 9 16:23:16 EET 2014
ro.build.date.utc=0
ro.build.type=eng
ro.build.user=carliv
ro.build.host=max
ro.build.tags=test-keys
ro.product.brand=UMI
ro.product.name=cm_C471
ro.product.board=A25
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=UMI
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
ro.board.platform=mt6582
# ro.build.product is obsolete; use ro.product.device
ro.build.product=C471
ro.product.model=C471
ro.product.device=ImSmart.C471
# Do not try to parse ro.build.deion or .fingerprint
ro.build.deion=cm_C471-eng 4.4.4 KTU84Q 347d7427a4 test-keys
ro.build.fingerprint=UMI/cm_C471/C471:4.4.4/KTU84Q/347d7427a4:eng/test-keys
ro.build.characteristics=default
ro.cm.device=C471
# end build properties
#
# from device/mtk/C471/system.prop
#
#
# system.prop for C471
#
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.rommanager.developerid=cyanogenmod
ro.com.google.clientidbase=android-google
keyguard.no_require_sim=true
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html
ro.com.android.wifi-watchlist=GoogleGuest
ro.setupwizard.enterprise_mode=1
ro.com.android.dateformat=MM-dd-yyyy
ro.com.android.dataroaming=false
ro.build.selinux=1
persist.sys.dalvik.multithread=false
persist.sys.dun.override=0
persist.sys.root_access=1
ro.cm.version=11-20141209-UNOFFICIAL-C471
ro.cm.releasetype=UNOFFICIAL
ro.modversion=11-20141209-UNOFFICIAL-C471
ro.cmlegal.url=http://www.cyanogenmod.org/docs/privacy
persist.sys.recovery_update=false
ro.cm.display.version=11-20141209-UNOFFICIAL-C471
ro.config.notification_sound=Argon.ogg
ro.config.alarm_alert=Hassium.ogg
ro.config.ringtone=Orion.ogg
ro.carrier=unknown
ro.ril.hsxpa=1
ro.ril.gprsclass=10
ro.adb.qemud=1
persist.sys.dalvik.vm.lib=libdvm.so
ro.kernel.android.checkjni=1
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
11. После редактирования default.prop из папки carliv, открываем новый файл, который находится C:\michfood\carliv\rmdisk\init.rc. Находим строку mkdir /emmc и изменяем значение /emmc, на значение из строки symlink /storage/sdcard1 /sdcard2, как показано ниже:
Код:
mkdir /datadata
mkdir /sdcard2
mkdir /system
mkdir /cache
Код:
symlink /storage/sdcard0 /sdcard
symlink /storage/sdcard0 /mnt/sdcard
symlink /storage/sdcard1 /sdcard2
symlink /storage/sdcard1 /mnt/sdcard2
Далее находим строку mkdir /storage 0050 root sdcard_r и меняем значение на 0055:
Код:
mkdir /storage 0050 root sdcard_r
Код:
mkdir /storage 0055 root sdcard_r
Далее находим строку symlink /system/etc /etc и добавляем после неё еще одну строку, как показано ниже (красным выделена строка которую надо добавить):
Код:
symlink /system/etc /etc
symlink /data/media/0 /storage/sdcard0
12. Далее открываем файл C:\michfood\boot\rmdisk\init.usb.rc и сравниваем его с C:\michfood\carliv\rmdisk\init.rc. В init.usb.rc, находим строку которая указана ниже, а копируем значение указанное ниже. Переносим данное значение в файл init.rc в папке carliv как значение idVendor:
init.usb.rc:
Код:
setprop sys.usb.vid 0BB4
init.rc:
Код:
write /sys/class/android_usb/android0/idVendor 0BB4
Далее находим функцию #5.mass_storage,adb в файле init.usb.rc и копируем оттуда значение idProduct, а затем переносим его в init.rc в папке carliv, так же как значение idProduct:
init.usb.rc:
Код:
#5.mass_storage,adb
on property:sys.usb.config=mass_storage,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/idProduct 0C03
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
init.usb:
Код:
write /sys/class/android_usb/android0/idProduct 0C03
13. Сохранине изменения в C:\michfood\carliv\rmdisk\init.rc, а затем снова откройте данный файл и C:\michfood\boot\rmdisk\init.usb.rc. В файле init.usb.rc, находим функцию #5.mass_storage,adb, и под ней находим значение idProduct:
Код:
#5.mass_storage,adb
on property:sys.usb.config=mass_storage,adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/idProduct 0C03
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
Копируем данное значение в init.rc из папки carliv, как значение idPdoruct в указаных ниже строках:
Код:
on property:sys.storage.ums_enabled=1
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C03
write /sys/class/android_usb/android0/functions mass_storage,adb
write /sys/class/android_usb/android0/enable 1
14. Далее находим функцию #2.adb в файле init.usb.rc, и смотрим там idProduct:
Код:
#2.adb
on property:sys.usb.config=adb
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idVendor $sys.usb.vid
write /sys/class/android_usb/android0/idProduct 0C01
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
Заменяем данное значение в файле init.rc в папке carliv как показано ниже (в самых нижних строках там):
Код:
on property:sys.storage.ums_enabled=0
write /sys/class/android_usb/android0/enable 0
write /sys/class/android_usb/android0/idProduct 0C01
write /sys/class/android_usb/android0/functions adb
write /sys/class/android_usb/android0/enable ${service.adb.root}
Сохраняем изменения в C:\michfood\carliv\rmdisk\init.rc
15. Всё, все файлы отредактированы. Теперь необходимо запаковать папку C:\michfood\carliv обратно в образ, для этого просто перетащите мышкой данную папку на файл MTK_pack.bat. Полученный образ и будет Carliv Touch Recovery v3.0 KitKat для вашего устройства. Полученный образ можно установить на устройство при помощи SP Flash Tool или же, если есть root права, при помощи Mobileuncle MTK Tools.