===========================================================
Recovery klog
===========================================================
If you find : denied { write } for pid=183 comm="recovery" name="kmsg"
Moditfy : myandroid/external/sepolicy/recovery.te
Add : allow recovery kmsg_device:chr_file rw_file_perms;
----------------------------------------------------------------------------------------------------
recovery.cpp
#define RECOVERY_KLOG_LEVEL KLOG_INFO_LEVEL
in main to add :
klog_init();
klog_set_level(RECOVERY_KLOG_LEVEL
common.h
#include <cutils/klog.h>
#define LOGE(...) KLOG_INFO("<recovery>E", __VA_ARGS__); fprintf(stdout, "E:" __VA_ARGS__)
#define LOGW(...) KLOG_WARNING("<recovery>W", __VA_ARGS__); fprintf(stdout, "W:" __VA_ARGS__)
#define LOGI(...) KLOG_INFO("<recovery>I", __VA_ARGS__); fprintf(stdout, "I:" __VA_ARGS__)
#define LOGV(...) KLOG_INFO("<recovery>V", __VA_ARGS__); fprintf(stdout, "V:" __VA_ARGS__)
#define LOGD(...) KLOG_INFO("<recovery>D", __VA_ARGS__); fprintf(stdout, "D:" __VA_ARGS__)
screen_ui.cpp
in ScreenRecoveryUI::Print to add :
KLOG_INFO("<recovery>UI", "%s", buf);
===========================================================
Make /tmp/recovery.log & /tmp/last_install accessible
===========================================================
If you find : denied { open } for pid=194 comm="adbd" path="/tmp/recovery.log" dev="tmpfs"
adb pull /tmp/recovery.log
message : failed to copy '/tmp/recovery.log' to './recovery.log': Permission denied
adb pull /tmp/last_install
message : failed to copy '/tmp/last_install' to './last_install': Permission denied
Moditfy : external/sepolicy/adbd.te
Add : allow adbd tmpfs:file { open };
----------------------------------------------------------------------------------------------------
recovery.cpp
in main to add :
+chmod(TEMPORARY_LOG_FILE, 0644);
install.cpp
in main :
if (install_log) {
fputs(path, install_log);
fputc('\n', install_log);
+chmod(install_file, 0644);
}
===========================================================
Support recovery shell console
===========================================================
mksh/reboot/toubox Android.mk
LOCAL_STATIC_LIBRARIES += libc
LOCAL_FORCE_STATIC_EXECUTABLE := true
----------------------------------------------------------------------------------------------------
build/core/Makefile
recovery_ash_binary := $(call intermediates-dir-for,EXECUTABLES,ash)/ash
recovery_reboot_binary := $(call intermediates-dir-for,EXECUTABLES,rreboot)/rreboot
recovery_toybox_binary := $(call intermediates-dir-for,EXECUTABLES,rtoybox)/rtoybox
recovery_toybox_tools := \
youtools(ex. cat) \
recovery_toybox_symlinks := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(recovery_toybox_tools))
define build-recoveryimage-target
@echo ----- Making recovery image ------
$(hide) rm -rf $(TARGET_RECOVERY_ROOT_OUT)/res/*
$(hide) cp -f $(recovery_ash_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/
$(hide) cp -f $(recovery_reboot_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/reboot
$(hide) cp -f $(recovery_toybox_binary) $(TARGET_RECOVERY_ROOT_OUT)/sbin/
$(hide) $(foreach t,$(recovery_toybox_symlinks),ln -sf rtoybox $(t);)
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
$(INTERNAL_RECOVERYIMAGE_FILES) \
$(recovery_ash_binary) $(recovery_reboot_binary) $(recovery_toybox_binary) \
----------------------------------------------------------------------------------------------------
recovery/etc/init.rc
service console /sbin/ash
class core
console
user root
group root
seclabel u:r:recovery:s0
on property:ro.debuggable=1
start console
on property:service.adb.root=1
start console
===========================================================
===========================================================
----------------------------------------------------------------------------------------------------
===========================================================
===========================================================
----------------------------------------------------------------------------------------------------