1#
2# Copyright 2022 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17# FIXME: Split up and merge back in with shared/BoardConfig.mk
18
19TARGET_KERNEL_USE ?= 6.1
20TARGET_KERNEL_ARCH ?= $(TARGET_ARCH)
21TARGET_KERNEL_PATH ?= kernel/prebuilts/$(TARGET_KERNEL_USE)/$(TARGET_KERNEL_ARCH)/kernel-$(TARGET_KERNEL_USE)
22KERNEL_MODULES_PATH ?= \
23    kernel/prebuilts/common-modules/virtual-device/$(TARGET_KERNEL_USE)/$(subst _,-,$(TARGET_KERNEL_ARCH))
24PRODUCT_COPY_FILES += $(TARGET_KERNEL_PATH):kernel
25
26SYSTEM_DLKM_SRC ?= kernel/prebuilts/$(TARGET_KERNEL_USE)/$(TARGET_KERNEL_ARCH)
27
28# The list of modules strictly/only required either to reach second stage
29# init, OR for recovery. Do not use this list to workaround second stage
30# issues.
31RAMDISK_KERNEL_MODULES := \
32    failover.ko \
33    net_failover.ko \
34    virtio_net.ko \
35    virtio-rng.ko \
36
37BOARD_VENDOR_RAMDISK_KERNEL_MODULES := \
38    $(patsubst %,$(KERNEL_MODULES_PATH)/%,$(RAMDISK_KERNEL_MODULES))
39
40# GKI >5.15 will have and require virtio_pci_legacy_dev.ko
41BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(wildcard $(KERNEL_MODULES_PATH)/virtio_pci_legacy_dev.ko)
42# GKI >6.4 will have an required vmw_vsock_virtio_transport_common.ko and vsock.ko
43BOARD_VENDOR_RAMDISK_KERNEL_MODULES += \
44	$(wildcard $(KERNEL_MODULES_PATH)/vmw_vsock_virtio_transport_common.ko) \
45	$(wildcard $(KERNEL_MODULES_PATH)/vsock.ko)
46
47BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(SYSTEM_DLKM_SRC)/virtio_blk.ko
48BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(SYSTEM_DLKM_SRC)/virtio_console.ko
49BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(SYSTEM_DLKM_SRC)/virtio_pci.ko
50BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(SYSTEM_DLKM_SRC)/virtio_pci_modern_dev.ko
51BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(SYSTEM_DLKM_SRC)/vmw_vsock_virtio_transport.ko
52
53TARGET_NO_RECOVERY := true
54
55BOARD_VENDOR_RAMDISK_KERNEL_MODULES_BLOCKLIST_FILE := \
56    device/google/cuttlefish/shared/modules.blocklist
57
58BOARD_VENDOR_RAMDISK_KERNEL_MODULES_OPTIONS_FILE := \
59    device/google/cuttlefish/shared/config/first_stage_modules.options
60
61TARGET_BOOTLOADER_BOARD_NAME := cutf
62
63BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := ext4
64BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
65
66# Disable sparse on all filesystem images
67# This will prevent sparsing of super.img
68TARGET_USERIMAGES_SPARSE_EROFS_DISABLED ?= true
69TARGET_USERIMAGES_SPARSE_EXT_DISABLED ?= true
70TARGET_USERIMAGES_SPARSE_F2FS_DISABLED ?= true
71
72# FIXME: Not needed for minidroid, but needs fixes to CF assembler
73BOARD_USERDATAIMAGE_PARTITION_SIZE := 67108864
74BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := ext4
75TARGET_USERIMAGES_USE_EXT4 := true
76
77BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
78BOARD_INIT_BOOT_IMAGE_PARTITION_SIZE := 8388608
79BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 67108864
80
81BOARD_AVB_ENABLE := true
82BOARD_AVB_ALGORITHM := SHA256_RSA4096
83BOARD_AVB_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
84
85BOARD_AVB_VBMETA_SYSTEM := system
86BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
87BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA4096
88BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
89BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1
90
91BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
92BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA4096
93BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
94BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2
95
96BOARD_AVB_INIT_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
97BOARD_AVB_INIT_BOOT_ALGORITHM := SHA256_RSA4096
98BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP)
99BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX_LOCATION := 3
100
101TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM ?= sha256
102BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM)
103
104BOARD_MALLOC_ALIGNMENT := 16
105
106BOARD_USES_GENERIC_KERNEL_IMAGE := true
107
108PRODUCT_COPY_FILES += \
109    device/google/cuttlefish/dtb.img:dtb.img \
110    device/google/cuttlefish/required_images:required_images \
111
112BOARD_BOOTLOADER_IN_UPDATE_PACKAGE := true
113BOARD_RAMDISK_USE_LZ4 := true
114
115# Default to minidroid, if not set.
116LOCAL_ANDROIDBOOT_HARDWARE ?= minidroid
117# Default to minidroid's primary init .rc, if not set.
118LOCAL_ANDROIDBOOT_INIT_RC ?= /system/etc/init/hw/init.minidroid.rc
119
120BOARD_KERNEL_CMDLINE += printk.devkmsg=on
121BOARD_KERNEL_CMDLINE += audit=1
122BOARD_KERNEL_CMDLINE += panic=-1
123BOARD_KERNEL_CMDLINE += 8250.nr_uarts=1
124BOARD_KERNEL_CMDLINE += cma=0
125BOARD_KERNEL_CMDLINE += firmware_class.path=/vendor/etc/
126BOARD_KERNEL_CMDLINE += loop.max_part=7
127BOARD_KERNEL_CMDLINE += init=/init
128BOARD_BOOTCONFIG += androidboot.hardware=$(LOCAL_ANDROIDBOOT_HARDWARE)
129BOARD_BOOTCONFIG += \
130    androidboot.init_rc=$(LOCAL_ANDROIDBOOT_INIT_RC)
131BOARD_BOOTCONFIG += \
132    kernel.vmw_vsock_virtio_transport_common.virtio_transport_max_vsock_pkt_buf_size=16384
133BOARD_BOOTCONFIG += \
134    androidboot.microdroid.debuggable=1 \
135    androidboot.adb.enabled=1
136
137BOARD_INCLUDE_DTB_IN_BOOTIMG := true
138BOARD_BOOT_HEADER_VERSION := 4
139BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
140BOARD_INIT_BOOT_HEADER_VERSION := 4
141BOARD_MKBOOTIMG_INIT_ARGS += --header_version $(BOARD_INIT_BOOT_HEADER_VERSION)
142
143BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor
144# reserve 256MiB for dynamic partition metadata
145BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_SIZE := 268435456
146
147# 1MiB bigger than twice the dynamic partition to make build happy...
148BOARD_SUPER_PARTITION_SIZE := 537919488
149BOARD_SUPER_PARTITION_GROUPS := google_system_dynamic_partitions
150BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true
151BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
152
153TARGET_SKIP_OTA_PACKAGE := true
154TARGET_SKIP_OTATOOLS_PACKAGE := true
155
156BOARD_VENDOR_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor/seriallogging
157