2015-03-13 18 views
7

Trong /init.rc và các tệp Android Init Language '.rc' khác, có thể có các phần 'hành động' bắt đầu: 'on' để thực thi một chuỗi các lệnh khi một sự kiện xảy ra trong tiến trình init. Danh sách của tất cả các 'gây nên' là gì? Dường như thấy một số trình kích hoạt từ khóa cụ thể, như 'khởi động', 'init', 'fs', 'đầu-init' và 'hậu-fs-dữ liệu'. Đây có phải là danh sách đầy đủ về những điều này không? Trong mã ở đâu đó? (Ngoài từ khóa kích hoạt có một số trigger ngôn luận, xem dưới đây.)Danh sách tất cả các trình kích hoạt ngôn ngữ của Android Init là gì?

Một số từ khóa gây nên tôi đã nhìn thấy, nó sẽ được tốt đẹp để biết khi nào và tại sao chúng được gọi là:

boot 
early-init 
init 
fs 
post-fs-data 
charger 
nonencrypted 

Trong Ngoài từ khóa, exmaples các biểu thức bao gồm:

property:ro.factory.tool=1  -- when a property is set to a value 
device-added-<path> -- Triggered when a node is added when the equipment 
device-removed-<path> -- When the device is removed to add nodes 
service-exited-<name> 

Trả lời

6

Lưu ý: tại thời điểm viết bài, tất cả các liên kết trỏ đến AOSP android-5.1.1_r18

Trình kích hoạt có thể được xác định bởi nhà phát triển (người bảo trì thiết bị), vì vậy chúng tôi không thể hy vọng tìm được một danh sách hoàn chỉnh. Nhưng, giả sử bạn quan tâm nhất trong những người có trong AOSP theo mặc định, đây là dòng chảy:

Hoạt động chế biến trong platform/system/core/init/init.c qua action_for_each_trigger():

  1. early-init
  2. init
  3. chargerhoặclate-init

Nếu charger là trình kích hoạt cuối cùng gặp phải, thì đây là phần cuối của danh sách được xác định AOSP. Các nhà sản xuất có thể bổ sung các hành động tiếp theo để tính phí offmode từ đây.

Nếu late-init là cò cuối cùng gặp phải, sau đó các init.rc cài đặt sẵn trong Android (platform/system/core/rootdir/init.rc) bắt đầu chạy trigger sau:

# Mount filesystems and start core system services. 
on late-init 
    trigger early-fs 
    trigger fs 
    trigger post-fs 
    trigger post-fs-data 

    # Load properties from /system/ + /factory after fs mount. Place 
    # this in another action so that the load will be scheduled after the prior 
    # issued fs triggers have completed. 
    trigger load_all_props_action 

    # Remove a file to wake up anything waiting for firmware. 
    trigger firmware_mounts_complete 

    trigger early-boot 
    trigger boot 
+0

Câu trả lời thú vị !! –

+0

Đối với [hiện tại chính (android> 6)] (https://android.googlesource.com/platform/system/core/+/master/init/init.cpp) nó trong phương thức 'am.QueueEventTrigger()' (init được viết lại thành C++). – pevik

7

Bạn cũng có thể liệt kê nó trên điện thoại thực sự với adb:

adb shell dmesg | grep "processing action" 
[ 4.376074] init: processing action 0x35480 (init) 
[ 4.440537] init: processing action 0x38c58 (init) 
[ 4.450009] init: processing action 0x35708 (early-fs) 
[ 5.531812] init: processing action 0x39c38 (console_init) 
[ 5.575831] init: processing action 0x2de70 (fs) 
[ 5.597799] init: processing action 0x35890 (fs) 
[ 7.089157] init: processing action 0x2df58 (post-fs) 
[ 7.091550] init: processing action 0x38cb8 (post-fs) 
[ 7.091818] init: processing action 0x2e288 (post-fs-data) 
[ 7.100189] init: processing action 0x39c80 (property_service_init) 
[ 7.110080] init: processing action 0x39cc8 (signal_init) 
[ 7.110177] init: processing action 0x39d10 (check_startup) 
[ 7.110248] init: processing action 0x2ea18 (boot) 
[ 7.126205] init: processing action 0x397e0 (boot) 
[ 8.183090] init: processing action 0x39d58 (queue_property_triggers) 
[ 8.183232] init: processing action 0x2f8f8 (nonencrypted) 
[ 8.183810] init: processing action 0x2fd98 (property:ro.debuggable=1) 
[ 8.184463] init: processing action 0x328f8 (property:sys.usb.config=none) 
[ 14.438626] init: processing action 0x2ffd0 (property:sys.sensors=1) 
[ 28.192393] init: processing action 0x31860 (property:sys.boot_completed=1) 
0

Có một vài từ khóa mà mọi người đều biết, nhưng nếu bạn muốn xem danh sách thuộc tính đang được đặt (và các thuộc tính khác được đặt mặc định) hãy thử lệnh adb này:

$ adb shell getprop 
[alsa.mixer.capture.headset]: [Capture] 
[alsa.mixer.capture.master]: [Capture] 
[alsa.mixer.playback.headset]: [Headphone] 
[alsa.mixer.playback.master]: [Playback] 
[alsa.mixer.playback.speaker]: [Playback] 
[back_camera_name]: [ov5640_mipi] 
[back_camera_orient]: [0] 
[camera.disable_zsl_mode]: [1] 
[dalvik.vm.dexopt-flags]: [m=y] 
[dalvik.vm.heapgrowthlimit]: [64m] 
[dalvik.vm.heapmaxfree]: [8m] 
[dalvik.vm.heapminfree]: [512k] 
[dalvik.vm.heapsize]: [384m] 
[dalvik.vm.heapstartsize]: [8m] 
[dalvik.vm.heaptargetutilization]: [0.75] 
[dalvik.vm.jniopts]: [warnonly] 
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt] 
[debug.egl.hw]: [1] 
[debug.force_rtl]: [0] 
[debug.sf.enable_hgl]: [1] 
[debug.sf.showfps]: [0] 
[dev.bootcomplete]: [1] 
[dhcp.eth0.result]: [failed] 
[front_camera_name]: [ov5642_camera,ov5640_camera] 
[front_camera_orient]: [0] 
[gsm.current.phone-type]: [1] 
[gsm.network.type]: [Unknown] 
[gsm.operator.alpha]: [] 
[gsm.operator.iso-country]: [] 
[gsm.operator.isroaming]: [false] 
[gsm.operator.numeric]: [] 
[gsm.ril.delay]: [15] 
[gsm.sim.state]: [NOT_READY] 
[hwc.enable_dither]: [1] 
[hwc.stretch.filter]: [1] 
[init.svc.adbd]: [running] 
[init.svc.bootanim]: [stopped] 
[init.svc.console]: [running] 
[init.svc.debuggerd]: [running] 
[init.svc.dhcpcd_eth0]: [stopped] 
[init.svc.drm]: [running] 
[init.svc.fuse_extsd]: [running] 
[init.svc.healthd]: [running] 
[init.svc.installd]: [running] 
[init.svc.keystore]: [running] 
[init.svc.media]: [running] 
[init.svc.netd]: [running] 
[init.svc.sdcard]: [running] 
[init.svc.servicemanager]: [running] 
[init.svc.surfaceflinger]: [running] 
[init.svc.ueventd]: [running] 
[init.svc.uim]: [stopped] 
[init.svc.vold]: [running] 
[init.svc.wifi_mac]: [stopped] 
[init.svc.zygote]: [running] 
[media.omxgm.enable-player]: [1] 
[media.omxgm.enable-record]: [1] 
[media.omxgm.enable-scan]: [1] 
[net.bt.name]: [Android] 
[net.change]: [net.qtaguid_enabled] 
[net.hostname]: [android-c49d34ff0fbd9f6] 
[net.qtaguid_enabled]: [1] 
[net.tcp.buffersize.default]: [4096,87380,110208,4096,16384,110208] 
[net.tcp.buffersize.edge]: [4093,26280,35040,4096,16384,35040] 
[net.tcp.buffersize.ethernet]: [524288,2097152,4194304,524288,2097152,4194304] 
[net.tcp.buffersize.evdo]: [4094,87380,262144,4096,16384,262144] 
[net.tcp.buffersize.gprs]: [4092,8760,11680,4096,8760,11680] 
[net.tcp.buffersize.hsdpa]: [4094,87380,262144,4096,16384,262144] 
[net.tcp.buffersize.hspa]: [4094,87380,262144,4096,16384,262144] 
[net.tcp.buffersize.hspap]: [4094,87380,1220608,4096,16384,1220608] 
[net.tcp.buffersize.hsupa]: [4094,87380,262144,4096,16384,262144] 
[net.tcp.buffersize.lte]: [524288,1048576,2097152,262144,524288,1048576] 
[net.tcp.buffersize.umts]: [4094,87380,110208,4096,16384,110208] 
[net.tcp.buffersize.wifi]: [524288,1048576,2097152,262144,524288,1048576] 
[persist.service.bdroid.bdaddr]: [22:22:12:0c:fb:0d] 
[persist.sys.dalvik.vm.lib]: [libdvm.so] 
[persist.sys.profiler_ms]: [0] 
[persist.sys.usb.config]: [mtp,adb] 
[qemu.hw.mainkeys]: [1] 
[ro.FSL_AAC_PARSER]: [1] 
[ro.FSL_ASF_PARSER]: [0] 
[ro.FSL_AVI_PARSER]: [1] 
[ro.FSL_FLAC_PARSER]: [1] 
[ro.FSL_FLV_PARSER]: [1] 
[ro.FSL_MKV_PARSER]: [1] 
[ro.FSL_MPG2_PARSER]: [1] 
[ro.FSL_REAL_PARSER]: [0] 
[ro.adb.secure]: [1] 
[ro.allow.mock.location]: [1] 
[ro.baseband]: [unknown] 
[ro.board.platform]: [imx6] 
[ro.boot.bootdev]: [mmcblk3] 
[ro.boot.hardware]: [freescale] 
[ro.boot.serialno]: [19b80271c6] 
[ro.bootloader]: [unknown] 
[ro.bootmode]: [unknown] 
[ro.build.characteristics]: [tablet] 
[ro.build.date.utc]: [1484264053] 
[ro.build.date]: [Thu Jan 12 17:34:13 CST 2017] 
[ro.build.description]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys] 
[ro.build.display.id]: [nitrogen6x-eng 4.4.3 2.0.1-ga 20160816 dev-keys] 
[ro.build.fingerprint]: [boundary/nitrogen6x/nitrogen6x:4.4.3/2.0.1-ga/20160816:eng/dev-keys] 
[ro.build.host]: [fbd-HP-ZBook-15] 
[ro.build.id]: [2.0.1-ga] 
[ro.build.product]: [nitrogen6x] 
[ro.build.tags]: [dev-keys] 
[ro.build.type]: [eng] 
[ro.build.user]: [fbd] 
[ro.build.version.codename]: [REL] 
[ro.build.version.incremental]: [20160816] 
[ro.build.version.release]: [4.4.3] 
[ro.build.version.sdk]: [19] 
[ro.carrier]: [unknown] 
[ro.config.alarm_alert]: [Alarm_Classic.ogg] 
[ro.config.notification_sound]: [OnTheHunt.ogg] 
[ro.crypto.state]: [unencrypted] 
[ro.debuggable]: [1] 
[ro.factorytest]: [0] 
[ro.hardware]: [freescale] 
[ro.kernel.android.checkjni]: [1] 
[ro.opengles.version]: [196608] 
[ro.product.board]: [] 
[ro.product.brand]: [boundary] 
[ro.product.cpu.abi2]: [armeabi] 
[ro.product.cpu.abi]: [armeabi-v7a] 
[ro.product.device]: [nitrogen6x] 
[ro.product.locale.language]: [en] 
[ro.product.locale.region]: [US] 
[ro.product.manufacturer]: [boundary] 
[ro.product.model]: [NITROGEN6X] 
[ro.product.name]: [nitrogen6x] 
[ro.revision]: [405522] 
[ro.ril.wake_lock_timeout]: [300] 
[ro.runtime.firstboot]: [582594834] 
[ro.secure]: [0] 
[ro.serialno]: [19b80271c6] 
[ro.sf.hwrotation]: [0] 
[ro.sf.lcd_density]: [160] 
[ro.tether.denied]: [false] 
[ro.wifi.channels]: [] 
[ro.zygote.disable_gl_preload]: [true] 
[rw.VIDEO_RENDER_NAME]: [video_render.surface] 
[service.bootanim.exit]: [1] 
[sys.boot_completed]: [1] 
[sys.emulated.battery]: [1] 
[sys.interactive]: [active] 
[sys.sysctl.extra_free_kbytes]: [12000] 
[sys.usb.config]: [mtp,adb] 
[sys.usb.state]: [mtp,adb] 
[system_init.startsurfaceflinger]: [0] 
[vold.post_fs_data_done]: [1] 
[wifi.ap.interface]: [wlan0] 
[wifi.interface]: [wlan0] 
[wlan.interface]: [wlan0] 

Tôi đang chạy Android 4.4.2 trên bảng Sabrelite của Thiết bị biên giới. Xem liên kết cho lệnh adprop getprop here. Xem điều này blog để biết thêm thông tin.

0

Tôi biết rằng điều này là muộn, nhưng trong trường hợp nếu ai đó vẫn đang đối mặt với vấn đề tôi quyết định trả lời. Vào đầu Init- Đặt init và con chia đôi oom_adj Đặt bối cảnh bảo mật cho tất cả quá trình init. trên init- thiết lập môi trường toàn cầu Tạo gắn điểm trên fs- mount các phân vùng mtd về hậu fs- thay đổi sự cho phép của các thư mục hệ thống về sau fs-đĩa dữ liệu thay đổi quyền của/thư mục dữ liệu và thư mục con khi khởi động - init mạng cơ bản, Quản lý bộ nhớ service servicemana ger hệ thống khởi động quản lý để quản lý tất cả các dịch vụ bản địa như vị trí, âm thanh, sở thích chia sẻ, vv dịch vụ zygote- bắt đầu hợp tử như một app_process

Các nguồn cho các thông tin trên là http://www.onsandroid.com/2014/10/in-depth-android-boot-sequence-process.html

0

Nhất cách hiệu quả để tìm tất cả các trình kích hoạt chuẩn này là thực hiện grep cho từ "trình kích hoạt" trên tất cả các tệp *.rc trong system/core/rootdir directory.

grep trigger rootdir/* 
Các vấn đề liên quan