Merge "init: don't import rc files during mount_all after Q" am: cbe0876f8b
am: 45f1c24509
Change-Id: I8c4e65b785e25faaf8df988d708261de972d90e9
This commit is contained in:
commit
a76edba308
2 changed files with 15 additions and 28 deletions
|
|
@ -35,24 +35,14 @@ locations on the system, described below.
|
|||
at the beginning of its execution. It is responsible for the initial
|
||||
set up of the system.
|
||||
|
||||
Devices that mount /system, /vendor through the first stage mount mechanism
|
||||
load all of the files contained within the
|
||||
Init loads all of the files contained within the
|
||||
/{system,vendor,odm}/etc/init/ directories immediately after loading
|
||||
the primary /init.rc. This is explained in more details in the
|
||||
Imports section of this file.
|
||||
|
||||
Legacy devices without the first stage mount mechanism do the following:
|
||||
1. /init.rc imports /init.${ro.hardware}.rc which is the primary
|
||||
vendor supplied .rc file.
|
||||
2. During the mount\_all command, the init executable loads all of the
|
||||
files contained within the /{system,vendor,odm}/etc/init/ directories.
|
||||
These directories are intended for all Actions and Services used after
|
||||
file system mounting.
|
||||
|
||||
One may specify paths in the mount\_all command line to have it import
|
||||
.rc files at the specified paths instead of the default ones listed above.
|
||||
This is primarily for supporting factory mode and other non-standard boot
|
||||
modes. The three default paths should be used for the normal boot process.
|
||||
Legacy devices without the first stage mount mechanism previously were
|
||||
able to import init scripts during mount_all, however that is deprecated
|
||||
and not allowed for devices launching after Q.
|
||||
|
||||
The intention of these directories is:
|
||||
|
||||
|
|
@ -88,14 +78,6 @@ monolithic init .rc files. This additionally will aid in merge
|
|||
conflict resolution when multiple services are added to the system, as
|
||||
each one will go into a separate file.
|
||||
|
||||
There are two options "early" and "late" in mount\_all command
|
||||
which can be set after optional paths. With "--early" set, the
|
||||
init executable will skip mounting entries with "latemount" flag
|
||||
and triggering fs encryption state event. With "--late" set,
|
||||
init executable will only mount entries with "latemount" flag but skip
|
||||
importing rc files. By default, no option is set, and mount\_all will
|
||||
process all entries in the given fstab.
|
||||
|
||||
Actions
|
||||
-------
|
||||
Actions are named sequences of commands. Actions have a trigger which
|
||||
|
|
@ -514,10 +496,12 @@ Commands
|
|||
will be updated if the directory exists already.
|
||||
|
||||
`mount_all <fstab> [ <path> ]\* [--<option>]`
|
||||
> Calls fs\_mgr\_mount\_all on the given fs\_mgr-format fstab and imports .rc files
|
||||
at the specified paths (e.g., on the partitions just mounted) with optional
|
||||
> Calls fs\_mgr\_mount\_all on the given fs\_mgr-format fstab with optional
|
||||
options "early" and "late".
|
||||
Refer to the section of "Init .rc Files" for detail.
|
||||
With "--early" set, the init executable will skip mounting entries with
|
||||
"latemount" flag and triggering fs encryption state event. With "--late" set,
|
||||
init executable will only mount entries with "latemount" flag. By default,
|
||||
no option is set, and mount\_all will process all entries in the given fstab.
|
||||
|
||||
`mount <type> <device> <dir> [ <flag>\* ] [<options>]`
|
||||
> Attempt to mount the named device at the directory _dir_
|
||||
|
|
@ -638,8 +622,9 @@ There are only three times where the init executable imports .rc files:
|
|||
`ro.boot.init_rc` during initial boot.
|
||||
2. When it imports /{system,vendor,odm}/etc/init/ for first stage mount
|
||||
devices immediately after importing /init.rc.
|
||||
3. When it imports /{system,vendor,odm}/etc/init/ or .rc files at specified
|
||||
paths during mount_all.
|
||||
3. (Deprecated) When it imports /{system,vendor,odm}/etc/init/ or .rc files
|
||||
at specified paths during mount_all, not allowed for devices launching
|
||||
after Q.
|
||||
|
||||
The order that files are imported is a bit complex for legacy reasons
|
||||
and to keep backwards compatibility. It is not strictly guaranteed.
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "builtins.h"
|
||||
|
||||
#include <android/api-level.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
|
@ -62,6 +63,7 @@
|
|||
|
||||
#include "action_manager.h"
|
||||
#include "bootchart.h"
|
||||
#include "host_init_stubs.h"
|
||||
#include "init.h"
|
||||
#include "mount_namespace.h"
|
||||
#include "parser.h"
|
||||
|
|
@ -588,7 +590,7 @@ static Result<Success> do_mount_all(const BuiltinArguments& args) {
|
|||
auto mount_fstab_return_code = fs_mgr_mount_all(&fstab, mount_mode);
|
||||
property_set(prop_name, std::to_string(t.duration().count()));
|
||||
|
||||
if (import_rc) {
|
||||
if (import_rc && SelinuxGetVendorAndroidVersion() <= __ANDROID_API_Q__) {
|
||||
/* Paths of .rc files are specified at the 2nd argument and beyond */
|
||||
import_late(args.args, 2, path_arg_end);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue