2017-05-13 02:05:22 +02:00
|
|
|
//
|
|
|
|
// Copyright (C) 2017 The Android Open Source Project
|
|
|
|
//
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
|
|
|
//
|
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
//
|
|
|
|
|
|
|
|
cc_defaults {
|
|
|
|
name: "fs_mgr_defaults",
|
|
|
|
sanitize: {
|
|
|
|
misc_undefined: ["integer"],
|
|
|
|
},
|
|
|
|
local_include_dirs: ["include/"],
|
2017-10-03 00:20:07 +02:00
|
|
|
cflags: [
|
|
|
|
"-Wall",
|
|
|
|
"-Werror",
|
|
|
|
"-Wno-unused-variable",
|
|
|
|
],
|
first stage mount: support mount points like /vendor/abc
Current syntax of the fstab in device tree (fstab_dt) assumes the
node name is the mount point, which doesn't allow subdir:
vendor { <== using "vendor/abc" leads to syntax error in device tree
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";
};
This CL adds a new field "mnt_point" in the fstab_dt configuration:
vendor_abc {
compatible = "android,vendor_abc";
dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/abc";
type = "ext4";
mnt_flags = "ro,barrier=1,inode_readahead_blks=8";
mnt_point = "/vendor/abc"; <== new field
fsmgr_flags = "wait";
};
The new field is optional and will fallback to using node name as mount
point if it is absent.
Note that this CL also sorts fstab_dt by mount point, because
/vendor needs to be mounted first, which contains a directory
/vendor/abc, before /vendor/abc can be mounted.
Bug: 69955336
Test: first stage mount /vendor/abc on a device
Change-Id: Ie2e519f9801f211a7a221622f32c82bedd00353f
2017-12-11 17:47:43 +01:00
|
|
|
cppflags: [
|
|
|
|
"-std=gnu++1z",
|
|
|
|
],
|
2017-05-13 02:05:22 +02:00
|
|
|
}
|
|
|
|
|
2018-07-25 22:07:31 +02:00
|
|
|
cc_library {
|
2017-05-13 02:05:22 +02:00
|
|
|
name: "libfs_mgr",
|
|
|
|
defaults: ["fs_mgr_defaults"],
|
2018-05-24 07:11:00 +02:00
|
|
|
recovery_available: true,
|
2017-05-13 02:05:22 +02:00
|
|
|
export_include_dirs: ["include"],
|
|
|
|
include_dirs: ["system/vold"],
|
|
|
|
srcs: [
|
|
|
|
"fs_mgr.cpp",
|
|
|
|
"fs_mgr_format.cpp",
|
|
|
|
"fs_mgr_verity.cpp",
|
|
|
|
"fs_mgr_avb.cpp",
|
|
|
|
"fs_mgr_avb_ops.cpp",
|
init/fs_mgr: prototype first-stage dm-linear support
This adds an API to fs_mgr for reading dm-linear tables out of device trees
and issuing device-mapper ioctls. The device tree code will be
implemented separately. The dm-linear structures in fs_mgr are organized
assuming we may want to pull them from sources other than DT (for
example, text files, binary blobs, or something hardcoded for testing).
File systems which are mounted from these logical partitions have
specific fstab requirements. The block device must be a partition name,
and if Verified Boot is used, that name must match the vbmeta partition name.
Second, the entry must have the "logical" fs_mgr flag. Example fstab
entry:
vendor /vendor ext4 ro wait,logical
Example fstab entry in device tree:
vendor {
compatible = "android,fstab";
dev = "vendor";
type = "ext4";
mnt_flags = "ro";
fs_mgr_flags = "wait,slotselect,avb,logical";
};
Bug: 78914864
Test: N/A
Change-Id: I4d8878ea8858f26310119616cadc3ee0dd08566c
2018-05-02 02:09:17 +02:00
|
|
|
"fs_mgr_dm_linear.cpp",
|
2017-06-28 04:17:30 +02:00
|
|
|
],
|
2018-07-25 22:07:31 +02:00
|
|
|
shared_libs: [
|
2017-06-28 04:17:30 +02:00
|
|
|
"libfec",
|
|
|
|
"libfec_rs",
|
|
|
|
"libbase",
|
|
|
|
"libcrypto_utils",
|
|
|
|
"libcrypto",
|
2018-07-25 22:07:31 +02:00
|
|
|
"libcutils",
|
2017-06-28 04:17:30 +02:00
|
|
|
"libext4_utils",
|
2018-07-25 22:07:31 +02:00
|
|
|
"libkeyutils",
|
|
|
|
"liblog",
|
2017-06-28 04:17:30 +02:00
|
|
|
"libsquashfs_utils",
|
|
|
|
"libselinux",
|
2018-07-28 01:05:31 +02:00
|
|
|
"liblp",
|
2018-07-25 22:07:31 +02:00
|
|
|
],
|
|
|
|
static_libs: [
|
2017-06-28 04:17:30 +02:00
|
|
|
"libavb",
|
|
|
|
"libfstab",
|
2018-05-30 22:46:55 +02:00
|
|
|
"libdm",
|
2017-06-28 04:17:30 +02:00
|
|
|
],
|
|
|
|
export_static_lib_headers: [
|
|
|
|
"libfstab",
|
2018-05-30 22:46:55 +02:00
|
|
|
"libdm",
|
2018-07-28 01:05:31 +02:00
|
|
|
],
|
|
|
|
export_shared_lib_headers: [
|
2018-06-08 00:36:09 +02:00
|
|
|
"liblp",
|
2017-06-28 04:17:30 +02:00
|
|
|
],
|
|
|
|
whole_static_libs: [
|
2017-04-22 01:56:34 +02:00
|
|
|
"liblogwrap",
|
2018-05-30 22:46:55 +02:00
|
|
|
"libdm",
|
2017-06-28 04:17:30 +02:00
|
|
|
"libfstab",
|
2017-05-13 02:05:22 +02:00
|
|
|
],
|
2017-10-10 22:30:57 +02:00
|
|
|
cppflags: [
|
|
|
|
"-DALLOW_ADBD_DISABLE_VERITY=0",
|
|
|
|
],
|
2017-05-13 02:05:22 +02:00
|
|
|
product_variables: {
|
|
|
|
debuggable: {
|
2017-10-10 22:30:57 +02:00
|
|
|
cppflags: [
|
|
|
|
"-UALLOW_ADBD_DISABLE_VERITY",
|
|
|
|
"-DALLOW_ADBD_DISABLE_VERITY=1",
|
|
|
|
],
|
2017-05-13 02:05:22 +02:00
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
2017-06-28 04:17:30 +02:00
|
|
|
|
|
|
|
cc_library_static {
|
|
|
|
name: "libfstab",
|
|
|
|
vendor_available: true,
|
2018-05-24 07:11:00 +02:00
|
|
|
recovery_available: true,
|
2017-06-28 04:17:30 +02:00
|
|
|
defaults: ["fs_mgr_defaults"],
|
|
|
|
srcs: [
|
|
|
|
"fs_mgr_fstab.cpp",
|
|
|
|
"fs_mgr_boot_config.cpp",
|
|
|
|
"fs_mgr_slotselect.cpp",
|
|
|
|
],
|
|
|
|
export_include_dirs: ["include_fstab"],
|
|
|
|
header_libs: ["libbase_headers"],
|
|
|
|
}
|