Init never checked the return values of the calls made during first
stage init (since of course they're not going to fail, right?). But
of course commands can fail and they might not necessarily be obvious
when they do, so let's make it obvious.
Since the kernel log isn't up until later, this creates a list of the
failures that can then be sent to the kernel log once it's ready
(pending of course failures in setting it up...)
Test: boot bullhead, don't see errors
Change-Id: I8c12c61fa12e4368346e8b0e1c0bb0844b5d0377
This change removes the CAP_SYSLOG file based capability from bootstat,
since the intention is that it should not be accessing the logs in the
long term. In order to avoid bitrot, the fallback code that depends on
CAP_SYSLOG has also been removed.
Bug: 62845925
Test: system/core/bootstat/boot_reason_test.sh
Change-Id: I899be44ef3ac1c4d81072f801d55c928ae09bb15
This change moves logd's capabilities from being file based to being set
by init through ambient capabilities.
Bug: 62845925
Test: sailfish:/ # grep Cap /proc/`pidof logd`/status
CapInh: 0000000000000000
CapPrm: 0000000440000000
CapEff: 0000000440000000
CapBnd: 0000000440000040
CapAmb: 0000000000000000
$ capsh --decode=0x440000040
0x440000040=cap_setgid,cap_audit_control,cap_syslog
Test: liblog-unit-tests, logd-unit-tests, logcat-unit-tests
Change-Id: I28c7c4ad37ad5eafd399aef78c303ce31298a9ef
The params in kernel cmdline is expected to be consumed by kernel.
For bootloader <--> userland communication, we're moving it to
device-tree or system property.
Bug: 78615592
Test: boot a device
Change-Id: I26bc2ea4cda91241242eb9fd0210b5b10659a297
fs_mgr gets androidboot.vbmeta.{size, hash_alg, digest} from kernel
cmdline to assure the integrity of all vbmeta structs. This CL Allows
fs_mgr to get those parameters from device tree because they're only
consumed by userland instead of kernel.
https://android.googlesource.com/platform/external/avb/+/master#The-VBMeta-Digest
Bootloader could construct a device tree overlay at run time then merge
it into main device tree. e.g.,
firmware {
android {
vbmeta.size = "5245";
vbmeta.hash_alg = "sha256";
vbmeta.digest = "0c51233ca3ecaa...63c6d912e79b709";
};
};
Bug: 80168311
Test: boot a device using AVB
Change-Id: I6cf151713af04e6cf554d593e9f0b43e9e214d8c
This commit removes stale files from incremental builds:
* /system/etc/ld.config.txt,
* /system/etc/llndk.libraries.txt
* /system/etc/public.libraries.txt
These files are replaced by versioned ones.
Bug: 78605339
Test: Those files are removed in incremental builds
Merged-In: I7925fa45b47397829bde835ab3c479611faffa33
Change-Id: I7925fa45b47397829bde835ab3c479611faffa33
(cherry picked from commit 9afd9b488f)
Spans quoted with " are dealt with atomically, and are stripped from
the key/value results when parsing the kernel cmdline.
Test: compile, device boot, fs_mgr_unit_test
Bug: 109821005
Change-Id: I45f3d7395f34295edefdeaafa4c15c6ee25cc4da
We have moved away from BSD dd and grep, which is also shown in the
section for Android Q.
Test: N/A
Change-Id: I13484879e697a1cf2c8b82d7e28a167cb34c00fa
Switch from open-coded parsing of /proc/cmdline to built-in
fs_mgr_get_boot_config_from_kernel_cmdline function.
Test: compile and smoke boot test
Bug: 109821005
Change-Id: I935d2e76c76ad417cbcee398e2afbf9b061d1719
The default value for ContinuationIndentWidth inherited from the Google
style is 4. Since .clang-format-4 doubles the value of IndentWidth
from 2 to 4, it should also double ContinuationIndentWidth to retain
Google's double-indent style.
Before:
void forEachInterface(
const std::string& dirname,
const std::function<void(const std::string& path)) {
fn(dirname, "default");
DIR* dir = opendir(dirname.c_str());
After this patch:
void forEachInterface(
const std::string& dirname,
const std::function<void(const std::string& path)) {
fn(dirname, "default");
DIR* dir = opendir(dirname.c_str());
Test: applied to libsysutils/src/*.cpp and compared output.
Change-Id: I75c50fa9becd5291a17047933f443cc6db77838a
I don't think the StdioLogger test ever passed. Move GetFileBasename
to where we can use it from StdioLogger, and undo the mix of anonymous
namespace vs static to consistently use static (which is the majority)
while we're touching those lines.
Bug: N/A
Test: ran tests
Change-Id: I95b3966cdb8af642bed71752bd7d4e3a86ac84ca
As documented at go/gerrit-owners, per-file directives cannot
contain directory paths. Therefore the current per-file
directives in system/core/OWNERS have no effect.
Test: build/make/tools/checkowners.py system/core/{,libsysutils/src/,include/sysutils/}OWNERS
Change-Id: Ia88b2be42dd50346578bb51dd17fb6136a4591f1
This reverts commit 0ad41cf3f4.
Reason for revert: Breaks many tests, see b/109745952#comment18 b/109745952#comment20 and b/79838856#comment19 amongst others
Change-Id: I92db38d47cd1dcd7841091e37e3b65dce9456cdf
On svelte devices, CTS test liblog#android_logger_get_ fails on the
missing kernel buffer because it is not enabled to save space.
Test: gTest liblog_unit_tests
Bug: 109669791
Change-Id: Iaf46fe9713d3462a56885515a67db640544345ab
Also, remove recovery_dtbo_offset argument
for mkbootimg as this is calculated based
on sizes of kernel, ramdisk and second
binaries.
Also, modify unpack_bootimg to use the recovery_dtbo_offset
field to extract recovery_dtbo.
Test: make recoveryimage showcommands -j32
unpack_bootimg --boot_img $OUT/recovery.img
diff recovery_dtbo dtbo.img
Change-Id: I588ccc8b739c169b6f78c17ffe554c5562397d98
(partial cherry pick from commit fe3e762b6d)
Adding the boot sequence reported atom in ag/3518079 caused the duration
of bootstat to increase, as seen in b/72864061. I isolated the cause
down to calling BootReasonStrToReason. However, this function also gets
called in ReportBootReason, so I created another function that does the
parsing and sets the system boot reason property, and made
RecordBootReason and statsd logging get that property.
Bug: 72864061
Test: rebooted phone, verified boot events were received in adb shell
logcat -b stats and verified adb shell bootstat -p printed correct
values. Ran timing tests as well on walleye with 20 boots: before this
change, the average was ~150-160ms. After, it was ~80ms.
Change-Id: I92dbc9880328835647be7d9d50c7861b42f27bdb
Merged-In: I92dbc9880328835647be7d9d50c7861b42f27bdb
Received some clarity as to some of the boot reasons.
List of boot reasons and new translations to Canonical boot reason:
- "power_key" -> "cold,powerkey" (existing)
- "usb" -> "cold,charger" (existing)
- "rtc" -> "cold,rtc" (existing)
- "wdt" -> "reboot" (changed)
- "wdt_by_pass_pwk" -> "warm" (changed)
- "tool_by_pass_pwd" -> "reboot,tool" (changed)
- "2sec_reboot" -> "cold,rtc,2sec" (changed)
- "unknown" -> "reboot,unknown" (existing)
- "kernel_panic" (existing)
- "reboot" (existing)
- "watchdog" (existing)
Add the new string to enums for the new Boot Reason.
Test: boot_reason_test.sh (on affected device)
Bug: 74595769
Bug: 63736262
Change-Id: Iecedc3b1f7c47f26d0c77b1f316f745c6d2c1256
Some devices report the following canonical boot reason for all
shutdown operations:
reboot,kernel_power_off_charging__reboot_system
because shutdown switches to a charging kernel, and reboots into the
system when the user presses the power button. Thus last kernel
messages arrives as:
<0>.(0)[53:pmic_thread]reboot: Restarting system with command \
'kernel power off charging reboot system'
-> "shutdown" (w/o last boot reason)
-> "shutdown,<subreason>" (w/last boot reason)
The reboot reason from that charging instance propagates as a
fortified boot reason blocking interpretation of the last boot reason
that manages shutdown canonical boot reason determination. The fix
is to change reboot,kernel_power_off_charging__reboot_system to
shutdown, so that it is viewed as a blunt reason that can be
overridden by last boot reason.
We added the above boot reason to kBootReasonMap because the Bit
Error Handler can use it to reconstruct if there is any damage to
the last kernel messages content. The sad thing is that the enum
will never propagate as we are filtering it out and reporting
"shutdown" instead. Of course, we are now covered for a can not
happen.
Test: boot_reason_test.sh
Bug: 74595769
Bug: 63736262
Change-Id: I28987f0871af7d967cc4bbbffed43bd42349acdd