Commit graph

1314 commits

Author SHA1 Message Date
bowgotsai
8dcf9bb29b Merge "Set libavb version into system property for Treble OTA" am: b47a22337b am: bfe7cf0e88 am: e8a04c4657
am: 9de7214703

Change-Id: I9d17be858ed8ff66c5b3144ae1d16ab618ffd92a
2017-02-16 10:30:35 +00:00
bowgotsai
763512795d Set libavb version into system property for Treble OTA
Treble allows framework-only (system.img) OTA. To libavb statically
linked in init/fs_mgr cannot parse the AVB metadata of system.img, add
this property for the Treble OTA match process.

Bug: 35236019
Test: Normal boots, use 'adb shell getprop' to check the property is set.
Test: Recovery boots, press 'Mount system' and use 'adb shell getprop'
      to check the property is set

Change-Id: I552be229c4efd45088d93252ac67176606f75d4d
2017-02-16 05:18:12 +00:00
Sandeep Patil
1ccb3b0050 Merge changes from topic 'pre-early-mount' am: 1549257ff5 am: c027aac7c8 am: 9e140bb206
am: 7f9c89ffcb

Change-Id: Ie4531a9e4457110d3e496bb3ba1b267c211ce5ef
2017-02-14 20:44:26 +00:00
Treehugger Robot
1549257ff5 Merge changes from topic 'pre-early-mount'
* changes:
  init: fstab: add support to read fstab entries from device tree
  init: early_mount: add support to mount non-verity partitions early
  init: remove the existing early_mount code
  init: refactor: add support for doing early coldboot
  ueventd: make selinux labeling optional for device creation
2017-02-14 20:34:35 +00:00
James Hawkins
872a8d6298 Merge "Revert "bootstat: Refactor init/utils/boot_clock into base/chrono_utils."" am: 91cf0bd5c0 am: a967cf817a am: be6efcb5bb
am: 0e690dbed2

Change-Id: If526cb07fe147f64014ab107ff99c031ab310d83
2017-02-14 19:39:49 +00:00
James Hawkins
c8ac067773 Revert "bootstat: Refactor init/utils/boot_clock into base/chrono_utils."
This reverts commit 7c92e48450.

Mac sdk still broken (despite testing locally).

Change-Id: I7d9206e15997cd0efe081bd3fa17d53d2b20ec32
2017-02-14 19:20:20 +00:00
James Hawkins
ad45ace145 Merge "bootstat: Refactor init/utils/boot_clock into base/chrono_utils." am: e968b73e19 am: 07af328555 am: fe65699408
am: 9a7ff0e111

Change-Id: I4a88ecf56b82cbdbe1ab019a2e1cc7c2ab7e9122
2017-02-14 19:10:51 +00:00
James Hawkins
7c92e48450 bootstat: Refactor init/utils/boot_clock into base/chrono_utils.
Use this for bootstat and init. This replaces the custom uptime parser in
bootstat.

This is a reland of aosp/332854 with a fix for Darwin.

Bug: 34352037
Test: chrono_utils_test
Change-Id: Ib2567d8df0e460ab59753ac1c053dd7f9f1008a7
2017-02-13 15:47:21 -08:00
Sandeep Patil
fc86f2442f init: fstab: add support to read fstab entries from device tree
for early mount, we need a way to tell init where to find vendor,
odm partitions (also system in case of non-A/B devices). Also, that
needs to be independent of kernel cmdline since the cmdline will likely
exceed its limit.

The change adds support for parse and create fstab entries that can be
directly sent to the fs_mgr for mounting partitions early in init first
stage.

Sample DT entry to mount vendor partition early on angler-

firmware {
    android {
        compatible = "android,firmware";
        fstab {
            compatible = "android,fstab";
            vendor {
                compatible = "android,vendor";
                dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor";
                type = "ext4";
                mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
                fsmgr_flags = "wait";
            };
        };
    };
};

b/27805372

Test: Boot angler and sailfish with early "vendor" partition mount by
adding aforementioned DT node and enable CONFIG_PROC_DEVICETREE in kernel

Change-Id: I669013e3fdb157e88719436534f63989dec95d60
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-13 12:35:39 -08:00
Sandeep Patil
35403ebaf8 init: early_mount: add support to mount non-verity partitions early
This is done by parsing 'androidboot.fstab=<fstab>' kernel cmdline
option to get the fstab file that *only* specifies partitions to be
mounted early (i.e. in init's first stage).

Note that, the same fstab file may not be used as an argument to
mount_all later in the boot as that will cause fs_mgr to fail with
EBUSY.

TODO:
- Possibly add a new mount_mode so the same fstab can be used for
early_mount, 'mount_all --early/--late' etc.
- Add support for dm-verity enabled partitions to mount early.
- Add support for getting fstab arguments through DT instead of kernel
cmdline.

Bug: 27805372

Test:
Boot angler by passing a seperate fstab file using the kernel
cmdline option to mount vendor partition early, remove the vendor
partition entry from the main fstab file for the test.

Boot sailfish by passing a seperate fstab entry via device tree
to mount vendor partition early. Remove vendor partition entry from
the main fstab file for the test

Change-Id: I18785b893c54c8cee960ab44d5e8f83e5d624aa8
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-13 11:17:51 -08:00
Jorge Lucangeli Obes
b3cd3574ec Merge "Add a sample service for testing init." am: d7b5c7b2da am: 41aa8f07b2 am: 7fec45ee32
am: df6494f050

Change-Id: I7be6b059e1b14acbc7a11b2e51d976c3216a3099
2017-02-10 01:48:28 +00:00
Treehugger Robot
d7b5c7b2da Merge "Add a sample service for testing init." 2017-02-10 01:40:12 +00:00
Sandeep Patil
44a3ee2cd1 init: remove the existing early_mount code
keeps parts of the code that are still needed for the fs_mgr
+ dt based implementation

b/27805372

Test: boot angler, sailfish without regressions

Change-Id: I1b08f8b7b4f2e67118d328443a5011c0f5ead919
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-09 15:39:06 -08:00
Sandeep Patil
957e4ab0b5 init: refactor: add support for doing early coldboot
We don't want to spend time creating devices that are unncessesary
during early (init first-stage) mount. So, refactor the devices code
tha allows us to call into coldboot and has the

- ability to only create devices that are specified by the caller
- ability to stop coldboot cycle when all devices that the caller is
interested in
- ability to run coldboot for a specific syspath
- ability to run ueventd code unmodified

Test: Tested boot on angler, sailfish

Change-Id: Id8f3492380696760414eadc20d624d300c904f8e
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-09 15:30:20 -08:00
Jorge Lucangeli Obes
28e980b59c Add a sample service for testing init.
I find myself using something like this every time I add functionality
to init. I cannot possibly be the only one doing this. On the other
hand, if this hasn't been added for so long, maybe there's a reason
for that.

The advantage of using a test service versus modifying an existing
service is that the test service doesn't *require* any permissions or
privileges, so you can add and/or remove whatever you need to test
without breaking the service.

I found it useful to have the service check its own /proc/<pid>/status
from command-line arguments, so that's what the service does.

This CL also adds a .clang-format file for init.

Bug: None
Test: Service runs and exits successfully.

Change-Id: I3e7841a7283158e10c0bf55e0103c03902afb1f0
2017-02-09 18:23:09 -05:00
Sandeep Patil
e16de5b13f Merge "ueventd: source ueventd configs from vendor and odm" am: d54d4c275e am: 48b32bf398 am: 7d045980d5
am: 7a3b317f96

Change-Id: I27bf4678a9701dbe8261bb036a6daf8852e41329
2017-02-09 21:42:18 +00:00
Treehugger Robot
d54d4c275e Merge "ueventd: source ueventd configs from vendor and odm" 2017-02-09 21:25:44 +00:00
James Hawkins
9eaeba9040 Merge "Revert "bootstat: Remove custom uptime parser in favor of elapsedRealtime."" am: 23f4e6b0a5 am: cefdacef3c am: 39ce80f0e0
am: 0a2efefbe9

Change-Id: I9fcfe3120f15b50efdb25a5d6487b9ea33a0bc30
2017-02-09 02:47:08 +00:00
Sandeep Patil
ea23983a9c ueventd: make selinux labeling optional for device creation
This is to setup a way for us to run coldboot during init first stage
and also at ueventd startup. We do not have all of the file context
during the first stage, so the "early" coldboot needs to proceed without
labelling the device nodes. However, the follow up in ueventd must label
these nodes. This change allows us to do both.

b/27805372

Test: Boot angler successfully and compare do before/after comparison of
      the output of 'ls -AclpqRZ /dev' to ensure there are no differences.

Change-Id: I5e88bd7da8a1d2cc41e3abba30dda463ecbde32e
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-08 14:40:18 -08:00
James Hawkins
0e3167e203 Revert "bootstat: Remove custom uptime parser in favor of elapsedRealtime."
This reverts commit 26f40c04c3.

This change broke the Darwin SDK target.

Test: none
Change-Id: Ia54fe2c31da8d8fa2825e023b035fb8321dcd457
2017-02-08 14:16:51 -08:00
Sandeep Patil
bf298e6d0c ueventd: source ueventd configs from vendor and odm
While keeping the old /ueventd.$ro.hardware.rc configuration for devices
without early mount or vendor,odm split

b/34967636

Test: Boot angler and sailfish without regressions

Change-Id: I8d671911fd23fb1c0b5624ae209bad86137c88b7
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-02-08 13:51:02 -08:00
James Hawkins
d4f9d6eaf0 Merge "bootstat: Remove custom uptime parser in favor of elapsedRealtime." am: 914955ae9e am: cdfe67f575 am: 5078d30bc6
am: ea3bd7ba57

Change-Id: Ia76ba313cb62098426314099240fa4705ad3730f
2017-02-08 20:47:59 +00:00
James Hawkins
26f40c04c3 bootstat: Remove custom uptime parser in favor of elapsedRealtime.
Refactored init/utils/boot_clock into base/chrono_utils.

Bug: 34352037
Test: none
Change-Id: Ied0c00867336b85922369d7ff37520e3d28fc61e
2017-02-07 15:43:32 -08:00
Wei Wang
0fb3e90eab Merge "init: clean up exec command" am: 564aeca94e am: b1a519a2bd am: acc81455a1
am: d8d64be608

Change-Id: Ie4107c338ade6efe51cd696190e13892d81f19df
2017-02-03 21:01:33 +00:00
Wei Wang
2d0fdaaafc init: clean up exec command
Add wait time log for exec service execution time
Fix memory leak when exec service failed to start

Test: on marlin
Bug: 34518530
Change-Id: I01736bd9b1429414f3dc91dd5d02d88a681f0985
2017-02-03 10:40:39 -08:00
Paul Lawrence
d4f0e4e1e0 Merge "Revert "Enable seccomp in init with generated policy"" am: d85cf0fb7d am: fa5524fa6e am: 0fc04d8ced
am: 81b7fa069f

Change-Id: I66240087a249d41138c13942c872f1bacb5fb81c
2017-02-02 23:14:29 +00:00
Paul Lawrence
c4af05f8a3 Revert "Enable seccomp in init with generated policy"
This reverts commit db929bf9b7.

Seccomp is now inserted at the zygote level, not in init

Bug: 34710876
Test: Boots, seccomp policy in zygote & zygote64 but not init
Change-Id: I9075a79793171a4eaccf6228e9ff3398c791f8bd
2017-02-02 09:27:49 -08:00
Wei Wang
611c067b25 Merge "init: add wait_for_prop builtin command" am: d25e4c5819 am: 7f1dbd8f68 am: 6426815ecc
am: 4d847cbef1

Change-Id: I502b067071bce2ae9feee7db1718a81d4d0fd4c7
2017-02-02 16:57:06 +00:00
Alex Shlyapnikov
bb10e49faf Merge "Expand seccomp whitelist" am: 0f0caf95c9 am: c84d14088e am: 18853fdc22
am: 61bd8e4fb5

Change-Id: I56d2ee2df31f0edc1dbe10cfe8d4e524aacc92d2
2017-02-02 16:56:47 +00:00
Treehugger Robot
d25e4c5819 Merge "init: add wait_for_prop builtin command" 2017-02-02 04:45:36 +00:00
Todd Poynor
92c343fc40 powerctl: add thermal-shutdown command
Add sys.powerctl property interface for initiating thermal shutdown.

Bug: 30994946
Test: Manual: setprop sys.powerctl thermal-shutdown
Change-Id: Iffce60bd3cb4b40a5859623d10b91bee5101f168
2017-02-02 04:00:36 +00:00
Alex Shlyapnikov
2e71ceb0f4 Expand seccomp whitelist
Add syscalls required by sanitizers.

Bug: 34606909
Test: Make sure Android boots when built with SANITIZE_TARGET='address'
Change-Id: Ifa223fb663a4ff43c8b8df9b7bf9452e41079e2e
2017-02-01 18:03:08 -08:00
Wei Wang
132ac31b47 init: add wait_for_prop builtin command
There are many use cases from vendors to exec service in background and then
use a shell scriprt to wait for the command done.

This CL is to add a wait_for_prop command to suppor those use cases.

Bug: 34746108
Test: on marlin
Change-Id: Ia81290b0928f9d375710d2daa546714f0cd65b72
2017-02-01 16:11:33 -08:00
Treehugger Robot
2cd07e8b97 Merge "Expand seccomp whitelist" 2017-02-01 01:17:43 +00:00
Paul Lawrence
8afdd2aac6 Expand seccomp whitelist
Bug: 34817266
Test: Boots, app starts
Change-Id: I39026064ec6c7130256ae463163c1f7634e3bdd4
2017-01-31 15:26:00 -08:00
Treehugger Robot
301e7e2cdb Merge "Expand seccomp whitelist" 2017-01-31 22:44:44 +00:00
Paul Lawrence
ae3f906093 Expand seccomp whitelist
Bug: 34813887
Bug: 34809883
Bug: 34767389
Bug: 34719286
Test: Device boots, the app in b/34719286 runs when it didn't before
Change-Id: Iad198e3ca620e7a07464b0d182f969bb807bd948
2017-01-31 08:35:00 -08:00
Sandeep Patil
d04b1ac006 Merge "init: split property context into platform & non-platform components" 2017-01-30 19:16:17 +00:00
Elliott Hughes
795798d62c bionic and init don't need to share knowledge of property file locations.
So move them into init.

Bug: http://b/33926793
Test: boots
Change-Id: I5a9601180df589b8c87ac8195a02ee24b531d4da
2017-01-27 16:21:55 -08:00
Treehugger Robot
d0ff90afef Merge "Allow failing app through seccomp policy" 2017-01-27 20:02:56 +00:00
James Hawkins
7dde4fa4e2 Merge "boottime/init: Report ro.boottime.init* properties in milliseconds." 2017-01-27 18:37:22 +00:00
Paul Lawrence
e4ddaa4f2f Allow failing app through seccomp policy
Bug: 34651972
Test: Made sure failing app went to login screen
Change-Id: I111a379f3e8283aa829d9ceb97f95b34bbee4055
2017-01-27 18:32:11 +00:00
James Hawkins
27c052263c boottime/init: Report ro.boottime.init* properties in milliseconds.
* Nanosecond precision ended up being harder to grok.
* This change modifies the Timer class to have duration_ms instead of
duration_ns.

Bug: 34466121
Test: adb logcat | grep bootstat
Change-Id: Ibd1c27dc3cb29d838a956e342281b2fb98d752a6
2017-01-27 08:26:14 -08:00
Paul Lawrence
73f6e44c8b Allow __NR_perf_event_open
Bug: 34732712
Test: strace simpleperf32 record -g runs
Change-Id: Id2ffd1e808587bf809a7ff0303163816a0e8fbce
2017-01-27 08:25:56 -08:00
Sandeep Patil
7a5db4ec7f init: split property context into platform & non-platform components
Bug: 33746484
Test: Successfully boot with original service and property contexts.
Test: Successfully boot with split serivce and property contexts.
Test: 'getprop -Z'
Change-Id: Ib9c087115040c1609aa64a3ed66d4e67e937e33d
Signed-off-by: Sandeep Patil <sspatil@google.com>
2017-01-26 15:31:10 -08:00
Paul Lawrence
31b2a9d7a3 Allow __NR_pipe for 32-bit processes
Used by 32-bit debuggers

Bug: 34716063
Test: Make sure a Chrome crash produces a valid stack trace in logcat
Change-Id: Ie42f035da7f19ace403eb2111524f02c0bbfd0d5
2017-01-26 12:31:55 -08:00
Treehugger Robot
0a3c2392c7 Merge "fs_mgr: support using libavb to enable dm-verity" 2017-01-25 18:24:30 +00:00
Robert Sesek
ca2da60206 Ensure property_set connection sockets are CLOEXEC.
When handling a property control message to start a service, the
connection socket was being left open. The child socket FD would then be
inherited by the service from init as "/null".

Bug: 34698883

Test: adb shell start webview_zygote32; adb shell ls -l /proc/<pid>/fd,
      no "/null" FD open.

Change-Id: I25f34e1bfc1414e6143acf23414b05f5a241cace
2017-01-25 08:08:51 -05:00
bowgotsai
b51722b4e2 fs_mgr: support using libavb to enable dm-verity
external/avb/libavb provides the new Android Verified Boot (AVB) flow.
It has different verity metadata format than previous formats in
fs_mgr_verity.cpp fs_mgr should support using libavb to read the metadata
(a.k.a. HASHTREE descriptor in AVB) to enable dm-verity in kernel.

Two important files in this commit:

 - fs_mgr_avb_ops.c: an implementation of struct AvbOps* for libavb to do
   platform dependent I/O operations, e.g., read_from_partition.

 - fs_mgr_avb.cpp: it reads the metadata (a.k.a. vbmeta images in AVB) from
   all partitions, verifies its integrity against the values of
   androidboot.vbmeta.{hash_alg, size, digest} passed from bootloader in
   kernel command line. Then enable dm-verity for partitions having the
   corresponding HASHTREE descriptor and with an 'avb' fstab flag.

Bug: 31264231
Test: Enable dm-verity on /system partition
Test: Enable dm-verity with FEC on /system partition

Change-Id: I4652806984fe5a30c61be0839135b5ca78323d38
2017-01-25 18:03:20 +08:00
Dimitry Ivanov
c9bb0338bc Revert "Revert "New protocol for property_service""
This reverts commit 70c4ecf2b5.
Bug: http://b/33926793
Bug: http://b/34670529
Test: run bionic-unit-tests --gtest_filter=prop*

Change-Id: I75b28146805ff37fbdcf0543ccb515ee5895eb2a
2017-01-24 13:01:13 -08:00