• 使用docker简单编译k20pro内核


    简介#

    本文将介绍一下如何使用docker编译红米k20pro的内核。作者当时尝试构建内核的原因是为了将3年前(好像是吧)购买的k20pro至尊版(已退役,12GB内存,512GB硬盘)制作成一个小的服务器。而如果只有安卓系统,实在是过于简陋,因此作者想在该机器上安装docker以扩展到更加完整的功能。

    本人参考的教程有以下两个:CGCL-codes/Android-ContainerDocker on Android。这两个都是比较优秀的教程,前者的作者好像是国人,而且使用的也是k20pro(不愧是一代神机),但是使用的是安卓10的手机,并且指定了ROM。后者教程相对通用一些,建议可以两个教程结合一起看,求同存异。

    本文的主要目的是为了记录一下自己编译内核时的过程和一些坑,避免大家重蹈覆辙。

    本文编译使用的机器是centos 7,8核2.6GHz的AMD,16GB内存。k20pro使用基于安卓11的MIUI12.5稳定版。

    Clone内核源码#

    内核源码的来源有很多,可以去小米的开源仓库中寻找,也可以去找其他大神的定制内核源码。我这里使用的是在XDA论坛找到的Marisa内核源码,这个内核支持各种超频,虽然我对于超频并没有什么兴趣。

    首先我们将源码clone下来:

    git clone https://github.com/Laulan56/android_kernel_xiaomi_sm8150.git --depth=1 -b miui
    

    为了节省时间,作者指定了depth深度为1,并选择miui分支。这里也为后来的编译埋下了一个小坑,如果想避免这个坑,可以选择深度为2。

    然后接下来可以在源码目录中执行

    git submodule update --init
    

    克隆所有的子仓库,主要是因为这个内核中使用了exfat,并引入了对应的子仓库,所以需要如此。

    修改内核源码#

    实际上这个源码是可以直接编译成功的,但是因为我们有一些骚操作并且需要修改内核的编译配置,所以需要修改一定量的源码。

    首先是由于clone深度只有1导致的一个问题。在drivers/staging/qcacld-3.0/Kbuild:3356和第3363行。

    CLD_IDS = $(shell cd "$(WLAN_ROOT)" && \
    	git log -50 $(CLD_CHECKOUT)~..HEAD | \
    		sed -nE 's/^\s*Change-Id: (I[0-f]{10})[0-f]{30}\s*$$/\1/p' | \
    		paste -sd "," -)
    
    CMN_CHECKOUT = $(shell cd "$(WLAN_COMMON_INC)" && \
    	git reflog | grep -vm1 "}: cherry-pick: " | grep -oE ^[0-f]+)
    CMN_IDS = $(shell cd "$(WLAN_COMMON_INC)" && \
    	git log -50 $(CMN_CHECKOUT)~..HEAD | \
    		sed -nE 's/^\s*Change-Id: (I[0-f]{10})[0-f]{30}\s*$$/\1/p' | \
    		paste -sd "," -)
    

    $(CLD_CHECKOUT)$(CMN_CHECKOUT)后有一个波浪号,这个是指代上一个commit,但是我们因为只clone了一个commit,所以历史记录上没有的。为了保证不报错,直接将波浪号去掉就好(如果clone的层级较深,可以不考虑这个)。

    然后是在kernel/Makefile:124和128行。

    ifneq ($(CONFIG_MACH_XIAOMI_CEPHEUS),y)
    $(obj)/config_data.gz: arch/arm64/configs/cepheus_stock_defconfig FORCE
    endif
    
    ifneq ($(CONFIG_MACH_XIAOMI_RAPHAEL),y)
    $(obj)/config_data.gz: arch/arm64/configs/raphael_stock_defconfig FORCE
    endif
    

    这里会使用默认的配置覆盖我们使用的配置,为了解决这个问题,我们可以这两行(实际上应该修改一行就OK了)修改为

    ifneq ($(CONFIG_MACH_XIAOMI_CEPHEUS),y)
    $(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
    endif
    
    ifneq ($(CONFIG_MACH_XIAOMI_RAPHAEL),y)
    $(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
    endif
    

    编译环境(构建docker)#

    作者是不建议在自己电脑上直接构造编译环境的,作者比较推荐使用docker进行编译环境的构造,docker可以尽可能的减少各个方面对编译的影响。实际上,Marisa内核源码中也有对于自己的编译镜像的构建,在.drone.yml中,有兴趣的可以参考这个进行镜像的构建,但是我当时因为时间原因,没有尝试。

    作者使用的编译dockerfile,由于本人使用docker的时间也很短(实际上,就是为了编译内核特意学的),所以有很多不太合理的地方,大家可以自行修改。

    FROM ubuntu:bionic
    
    RUN echo "deb http://mirrors.tencent.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
    RUN echo "deb http://mirrors.tencent.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb http://mirrors.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "#deb http://mirrors.tencent.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "#deb http://mirrors.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb-src http://mirrors.tencent.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb-src http://mirrors.tencent.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb-src http://mirrors.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "#deb-src http://mirrors.tencent.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "#deb-src http://mirrors.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
    
    RUN apt clean all
    RUN apt update
    
    RUN apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev unzip openjdk-8-jdk language-pack-zh-hans python cpio
    
    COPY dtc /usr/bin/
    RUN chmod +x /usr/bin/dtc
    
    # 编译链
    RUN mkdir -p /compile/src
    
    ADD clang-4691093.tar.gz /compile/clang
    ADD pie-release.tar.gz /compile/gcc
    
    COPY build.sh /compile/src/
    WORKDIR /compile/src
    CMD bash build.sh
    

    首先是对应的编译器下载地址clang-4891093.tar.gzpie-release.tar.gz,dtc文件在这里下载[GUIDE] How To Compile Kernel & DTBO For Redmi K20 Pro,这些文件应该都要那啥才能下载。

    还有我自己写的一个编译脚本。

    export ARCH=arm64
    export SUBARCH=arm64
    export DTC_EXT=dtc
    
    rm -rf /dst/out
    cp -rf /dst/. /compile/src
    
    mkdir out
    make mrproper
    make O=out ${CONFIG_NAME}
    export PATH="/compile/clang/bin:/compile/gcc/bin:${PATH}"
    
    make -j8 O=out \
            ARCH=arm64 \
            CC=/compile/clang/bin/clang \
            CLANG_TRIPLE=aarch64-linux-gnu- \
            CROSS_COMPILE=/compile/gcc/bin/aarch64-linux-android- | tee out/kernel.log
    
    mv -f /compile/src/out /dst
    

    将以上的文件放到一个文件夹,然后使用命令

    docker build -t kernel-compiler:v0.0.1 .
    

    即可完成docker镜像的编译。

    编译内核#

    完成了docker的编译,我们就可以开始内核的编译了。在这一步,因为docker的构建,我们只需要使用命令

    docker run \
        --rm \
        -v android_kernel_xiaomi_sm8150:/dst \
        -e CONFIG_NAME=raphael_defconfig \
        kernel-compiler:v0.0.1
    

    即可完成内核的构建。

    刷入内核#

    我们在编译完成内核后,需要使用anykernel3进行打包,完成刷入内核的任务。我一开始是使用官方的anykernel3打包的,但是没有成功(应该是修改bash的时候路径写错了)。所以我这边直接使用Marisa的anykernel进行打包。

    git clone https://github.com/Laulan56/anykernel.git -b miui-q
    

    直接将编译好的内核out/arch/arm64/boot/Image-dtb复制到anykernel的文件夹,并打包成zip格式即可开始刷入自己的内核。

    我的kernel配置#

    这里附上我自己的kernel配置,有想试试docker的可以试试,当然还需要按照之前提的教程中,修改一些源码。

    CONFIG_HOTPLUG_SIZE_BITS=29
    CONFIG_LOCALVERSION="-Marisa"
    # CONFIG_LOCALVERSION_AUTO is not set
    # CONFIG_FHANDLE is not set
    CONFIG_AUDIT=y
    # CONFIG_AUDITSYSCALL is not set
    CONFIG_NO_HZ=y
    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_IRQ_TIME_ACCOUNTING=y
    CONFIG_SCHED_WALT=y
    CONFIG_TASKSTATS=y
    CONFIG_TASK_XACCT=y
    CONFIG_TASK_IO_ACCOUNTING=y
    CONFIG_RCU_EXPERT=y
    CONFIG_RCU_FAST_NO_HZ=y
    CONFIG_RCU_NOCB_CPU=y
    CONFIG_IKCONFIG=y
    CONFIG_IKCONFIG_PROC=y
    CONFIG_IKHEADERS=y
    CONFIG_LOG_CPU_MAX_BUF_SHIFT=17
    CONFIG_BLK_CGROUP=y
    CONFIG_CGROUP_FREEZER=y
    CONFIG_CPUSETS=y
    CONFIG_CGROUP_CPUACCT=y
    CONFIG_CGROUP_BPF=y
    CONFIG_SCHED_CORE_CTL=y
    CONFIG_NAMESPACES=y
    # CONFIG_PID_NS is not set
    CONFIG_SCHED_AUTOGROUP=y
    CONFIG_SCHED_TUNE=y
    CONFIG_CPUSET_ASSIST=y
    CONFIG_CPUSET_BG="0-1"
    CONFIG_CPUSET_CAMERA="0-3,6-7"
    CONFIG_CPUSET_FG="0-3,5-6"
    CONFIG_CPUSET_RESTRICTED="0-3"
    CONFIG_CPUSET_TOP_APP="0-7"
    CONFIG_CPUSET_SYSTEM_BG="0-3"
    CONFIG_DEFAULT_USE_ENERGY_AWARE=y
    CONFIG_BLK_DEV_INITRD=y
    # CONFIG_RD_XZ is not set
    # CONFIG_RD_LZO is not set
    # CONFIG_RD_LZ4 is not set
    CONFIG_KALLSYMS_ALL=y
    CONFIG_BPF_SYSCALL=y
    CONFIG_BPF_JIT_ALWAYS_ON=y
    CONFIG_EMBEDDED=y
    # CONFIG_SLUB_DEBUG is not set
    # CONFIG_COMPAT_BRK is not set
    CONFIG_SLAB_FREELIST_RANDOM=y
    CONFIG_SLAB_FREELIST_HARDENED=y
    CONFIG_PROFILING=y
    CONFIG_CC_STACKPROTECTOR_STRONG=y
    CONFIG_REFCOUNT_FULL=y
    # CONFIG_MODULES is not set
    CONFIG_BLK_INLINE_ENCRYPTION=y
    CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y
    CONFIG_PARTITION_ADVANCED=y
    CONFIG_CFQ_GROUP_IOSCHED=y
    CONFIG_ARCH_QCOM=y
    CONFIG_ARCH_SM8150=y
    CONFIG_PCI=y
    CONFIG_PCI_MSM=y
    CONFIG_PCI_MSM_MSI=y
    CONFIG_SCHED_MC=y
    CONFIG_NR_CPUS=8
    CONFIG_LITTLE_CPU_MASK=15
    CONFIG_BIG_CPU_MASK=112
    CONFIG_PRIME_CPU_MASK=128
    CONFIG_PREEMPT=y
    CONFIG_HZ_300=y
    CONFIG_MEMORY_HOTPLUG=y
    CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
    CONFIG_MEMORY_HOTPLUG_MOVABLE_NODE=y
    CONFIG_MEMORY_HOTREMOVE=y
    CONFIG_CMA=y
    CONFIG_ZSMALLOC=y
    CONFIG_BALANCE_ANON_FILE_RECLAIM=y
    CONFIG_SECCOMP=y
    CONFIG_OKL4_GUEST=y
    CONFIG_ARMV8_DEPRECATED=y
    CONFIG_SWP_EMULATION=y
    CONFIG_CP15_BARRIER_EMULATION=y
    CONFIG_SETEND_EMULATION=y
    CONFIG_ARM64_SW_TTBR0_PAN=y
    # CONFIG_ARM64_VHE is not set
    CONFIG_RANDOMIZE_BASE=y
    # CONFIG_EFI is not set
    CONFIG_BUILD_ARM64_UNCOMPRESSED_KERNEL=y
    CONFIG_KRYO_PMU_WORKAROUND=y
    CONFIG_BUILD_ARM64_DT_OVERLAY=y
    # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
    CONFIG_COMPAT=y
    CONFIG_PM_WAKELOCKS=y
    CONFIG_PM_WAKELOCKS_LIMIT=0
    # CONFIG_PM_WAKELOCKS_GC is not set
    CONFIG_CPU_IDLE=y
    CONFIG_ARM_CPUIDLE=y
    CONFIG_CPU_FREQ=y
    CONFIG_CPU_FREQ_STAT=y
    CONFIG_CPU_FREQ_TIMES=y
    CONFIG_CPU_FREQ_GOV_POWERSAVE=y
    CONFIG_CPU_FREQ_GOV_USERSPACE=y
    CONFIG_CPU_FREQ_GOV_ONDEMAND=y
    CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
    CONFIG_CPU_BOOST=y
    CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
    CONFIG_NET=y
    CONFIG_PACKET=y
    CONFIG_UNIX=y
    CONFIG_XFRM_USER=y
    CONFIG_XFRM_INTERFACE=y
    CONFIG_XFRM_STATISTICS=y
    CONFIG_NET_KEY=y
    CONFIG_INET=y
    CONFIG_IP_MULTICAST=y
    CONFIG_IP_ADVANCED_ROUTER=y
    CONFIG_IP_MULTIPLE_TABLES=y
    CONFIG_IP_ROUTE_VERBOSE=y
    CONFIG_IP_PNP=y
    CONFIG_IP_PNP_DHCP=y
    CONFIG_NET_IPGRE_DEMUX=y
    CONFIG_SYN_COOKIES=y
    CONFIG_NET_IPVTI=y
    CONFIG_INET_AH=y
    CONFIG_INET_ESP=y
    CONFIG_INET_IPCOMP=y
    CONFIG_INET_UDP_DIAG=y
    CONFIG_INET_DIAG_DESTROY=y
    CONFIG_IPV6_ROUTER_PREF=y
    CONFIG_IPV6_ROUTE_INFO=y
    CONFIG_IPV6_OPTIMISTIC_DAD=y
    CONFIG_INET6_AH=y
    CONFIG_INET6_ESP=y
    CONFIG_INET6_IPCOMP=y
    CONFIG_IPV6_MIP6=y
    CONFIG_IPV6_VTI=y
    CONFIG_IPV6_MULTIPLE_TABLES=y
    CONFIG_IPV6_SUBTREES=y
    CONFIG_NETFILTER=y
    CONFIG_NF_CONNTRACK=y
    CONFIG_NF_CONNTRACK_SECMARK=y
    CONFIG_NF_CONNTRACK_EVENTS=y
    CONFIG_NF_CONNTRACK_AMANDA=y
    CONFIG_NF_CONNTRACK_FTP=y
    CONFIG_NF_CONNTRACK_H323=y
    CONFIG_NF_CONNTRACK_IRC=y
    CONFIG_NF_CONNTRACK_NETBIOS_NS=y
    CONFIG_NF_CONNTRACK_PPTP=y
    CONFIG_NF_CONNTRACK_SANE=y
    CONFIG_NF_CONNTRACK_TFTP=y
    CONFIG_NF_CT_NETLINK=y
    CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
    CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
    CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
    CONFIG_NETFILTER_XT_TARGET_DSCP=y
    CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
    CONFIG_NETFILTER_XT_TARGET_HARDIDLETIMER=y
    CONFIG_NETFILTER_XT_TARGET_LOG=y
    CONFIG_NETFILTER_XT_TARGET_MARK=y
    CONFIG_NETFILTER_XT_TARGET_NFLOG=y
    CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
    CONFIG_NETFILTER_XT_TARGET_NOTRACK=y
    CONFIG_NETFILTER_XT_TARGET_TEE=y
    CONFIG_NETFILTER_XT_TARGET_TPROXY=y
    CONFIG_NETFILTER_XT_TARGET_TRACE=y
    CONFIG_NETFILTER_XT_TARGET_SECMARK=y
    CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
    CONFIG_NETFILTER_XT_MATCH_BPF=y
    CONFIG_NETFILTER_XT_MATCH_COMMENT=y
    CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
    CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
    CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
    CONFIG_NETFILTER_XT_MATCH_DSCP=y
    CONFIG_NETFILTER_XT_MATCH_ESP=y
    CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
    CONFIG_NETFILTER_XT_MATCH_HELPER=y
    CONFIG_NETFILTER_XT_MATCH_IPRANGE=y
    # CONFIG_NETFILTER_XT_MATCH_L2TP is not set
    CONFIG_NETFILTER_XT_MATCH_LENGTH=y
    CONFIG_NETFILTER_XT_MATCH_LIMIT=y
    CONFIG_NETFILTER_XT_MATCH_MAC=y
    CONFIG_NETFILTER_XT_MATCH_MARK=y
    CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
    CONFIG_NETFILTER_XT_MATCH_OWNER=y
    CONFIG_NETFILTER_XT_MATCH_POLICY=y
    CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
    CONFIG_NETFILTER_XT_MATCH_QUOTA=y
    CONFIG_NETFILTER_XT_MATCH_QUOTA2=y
    CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y
    # CONFIG_NETFILTER_XT_MATCH_SCTP is not set
    CONFIG_NETFILTER_XT_MATCH_SOCKET=y
    CONFIG_NETFILTER_XT_MATCH_STATE=y
    CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
    CONFIG_NETFILTER_XT_MATCH_STRING=y
    CONFIG_NETFILTER_XT_MATCH_TIME=y
    CONFIG_NETFILTER_XT_MATCH_U32=y
    CONFIG_NF_CONNTRACK_IPV4=y
    CONFIG_NF_SOCKET_IPV4=y
    CONFIG_IP_NF_IPTABLES=y
    CONFIG_IP_NF_MATCH_AH=y
    CONFIG_IP_NF_MATCH_ECN=y
    CONFIG_IP_NF_MATCH_RPFILTER=y
    CONFIG_IP_NF_MATCH_TTL=y
    CONFIG_IP_NF_FILTER=y
    CONFIG_IP_NF_TARGET_REJECT=y
    CONFIG_IP_NF_NAT=y
    CONFIG_IP_NF_TARGET_MASQUERADE=y
    CONFIG_IP_NF_TARGET_NETMAP=y
    CONFIG_IP_NF_TARGET_REDIRECT=y
    CONFIG_IP_NF_MANGLE=y
    CONFIG_IP_NF_RAW=y
    CONFIG_IP_NF_SECURITY=y
    CONFIG_IP_NF_ARPTABLES=y
    CONFIG_IP_NF_ARPFILTER=y
    CONFIG_IP_NF_ARP_MANGLE=y
    CONFIG_NF_CONNTRACK_IPV6=y
    CONFIG_NF_SOCKET_IPV6=y
    CONFIG_IP6_NF_IPTABLES=y
    CONFIG_IP6_NF_MATCH_RPFILTER=y
    CONFIG_IP6_NF_FILTER=y
    CONFIG_IP6_NF_TARGET_REJECT=y
    CONFIG_IP6_NF_MANGLE=y
    CONFIG_IP6_NF_RAW=y
    CONFIG_BRIDGE_NF_EBTABLES=y
    CONFIG_BRIDGE_EBT_BROUTE=y
    CONFIG_IP_SCTP=y
    CONFIG_L2TP=y
    CONFIG_L2TP_V3=y
    CONFIG_L2TP_IP=y
    CONFIG_L2TP_ETH=y
    CONFIG_BRIDGE=y
    CONFIG_NET_SCHED=y
    CONFIG_NET_SCH_HTB=y
    CONFIG_NET_SCH_PRIO=y
    CONFIG_NET_SCH_MULTIQ=y
    CONFIG_NET_SCH_INGRESS=y
    CONFIG_NET_CLS_FW=y
    CONFIG_NET_CLS_U32=y
    CONFIG_CLS_U32_MARK=y
    CONFIG_NET_CLS_FLOW=y
    CONFIG_NET_CLS_BPF=y
    CONFIG_NET_EMATCH=y
    CONFIG_NET_EMATCH_CMP=y
    CONFIG_NET_EMATCH_NBYTE=y
    CONFIG_NET_EMATCH_U32=y
    CONFIG_NET_EMATCH_META=y
    CONFIG_NET_EMATCH_TEXT=y
    CONFIG_NET_CLS_ACT=y
    CONFIG_NET_ACT_GACT=y
    CONFIG_NET_ACT_MIRRED=y
    CONFIG_NET_ACT_SKBEDIT=y
    CONFIG_NET_SWITCHDEV=y
    CONFIG_QRTR=y
    CONFIG_QRTR_SMD=y
    CONFIG_QRTR_MHI=y
    CONFIG_QRTR_FIFO=y
    CONFIG_BPF_JIT=y
    CONFIG_SOCKEV_NLMCAST=y
    CONFIG_BT=y
    CONFIG_MSM_BT_POWER=y
    CONFIG_CFG80211=y
    CONFIG_CFG80211_CERTIFICATION_ONUS=y
    CONFIG_CFG80211_REG_CELLULAR_HINTS=y
    CONFIG_CFG80211_INTERNAL_REGDB=y
    CONFIG_RFKILL=y
    CONFIG_NFC_NQ=y
    CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
    CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS=y
    CONFIG_DMA_CMA=y
    CONFIG_MHI_BUS=y
    CONFIG_MHI_QCOM=y
    CONFIG_MHI_NETDEV=y
    CONFIG_MHI_UCI=y
    CONFIG_ZRAM=y
    CONFIG_BLK_DEV_LOOP=y
    CONFIG_BLK_DEV_LOOP_MIN_COUNT=16
    CONFIG_BLK_DEV_RAM=y
    CONFIG_BLK_DEV_RAM_SIZE=8192
    CONFIG_HDCP_QSEECOM=y
    CONFIG_QSEECOM=y
    CONFIG_UID_SYS_STATS=y
    CONFIG_MEMORY_STATE_TIME=y
    CONFIG_OKL4_USER_VIRQ=y
    CONFIG_AKM09970=y
    CONFIG_TI_DRV8846=y
    CONFIG_SIMTRAY_STATUS=y
    CONFIG_SCSI=y
    CONFIG_BLK_DEV_SD=y
    CONFIG_CHR_DEV_SG=y
    CONFIG_CHR_DEV_SCH=y
    CONFIG_SCSI_CONSTANTS=y
    CONFIG_SCSI_SCAN_ASYNC=y
    CONFIG_SCSI_UFSHCD=y
    CONFIG_SCSI_UFSHCD_PLATFORM=y
    CONFIG_SCSI_UFS_QCOM=y
    CONFIG_SCSI_UFS_CRYPTO=y
    CONFIG_SCSI_UFS_CRYPTO_QTI=y
    CONFIG_MD=y
    CONFIG_BLK_DEV_DM=y
    CONFIG_DM_CRYPT=y
    CONFIG_DM_DEFAULT_KEY=y
    CONFIG_DM_SNAPSHOT=y
    CONFIG_DM_UEVENT=y
    CONFIG_DM_VERITY=y
    CONFIG_DM_VERITY_FEC=y
    CONFIG_DM_BOW=y
    CONFIG_NETDEVICES=y
    CONFIG_BONDING=y
    CONFIG_DUMMY=y
    CONFIG_TUN=y
    CONFIG_VETH=y
    CONFIG_SKY2=y
    CONFIG_RMNET=y
    CONFIG_SMSC911X=y
    CONFIG_PPP=y
    CONFIG_PPP_BSDCOMP=y
    CONFIG_PPP_DEFLATE=y
    CONFIG_PPP_FILTER=y
    CONFIG_PPP_MPPE=y
    CONFIG_PPP_MULTILINK=y
    CONFIG_PPPOE=y
    CONFIG_PPTP=y
    CONFIG_PPPOL2TP=y
    CONFIG_PPPOLAC=y
    CONFIG_PPPOPNS=y
    CONFIG_PPP_ASYNC=y
    CONFIG_PPP_SYNC_TTY=y
    CONFIG_USB_RTL8152=y
    CONFIG_USB_LAN78XX=y
    CONFIG_USB_USBNET=y
    CONFIG_WIL6210=y
    CONFIG_WCNSS_MEM_PRE_ALLOC=y
    CONFIG_CLD_LL_CORE=y
    CONFIG_CNSS_GENL=y
    CONFIG_INPUT_EVDEV=y
    CONFIG_KEYBOARD_GPIO=y
    # CONFIG_INPUT_MOUSE is not set
    CONFIG_INPUT_JOYSTICK=y
    CONFIG_JOYSTICK_XPAD=y
    CONFIG_INPUT_TOUCHSCREEN=y
    CONFIG_TOUCHSCREEN_XIAOMI_TOUCHFEATURE=y
    CONFIG_TOUCHSCREEN_GOODIX_GTX8=y
    CONFIG_INPUT_MISC=y
    CONFIG_INPUT_HBTP_INPUT=y
    CONFIG_INPUT_QPNP_POWER_ON=y
    CONFIG_INPUT_QTI_HAPTICS=y
    CONFIG_INPUT_UINPUT=y
    CONFIG_INPUT_FINGERPRINT=y
    CONFIG_FINGERPRINT_GOODIX_TA=y
    # CONFIG_SERIO_SERPORT is not set
    # CONFIG_VT is not set
    # CONFIG_LEGACY_PTYS is not set
    # CONFIG_DEVMEM is not set
    CONFIG_SERIAL_MSM_GENI=y
    CONFIG_HW_RANDOM=y
    CONFIG_HW_RANDOM_MSM_LEGACY=y
    # CONFIG_DEVPORT is not set
    CONFIG_DIAG_CHAR=y
    CONFIG_MSM_FASTCVPD=y
    CONFIG_MSM_ADSPRPC=y
    CONFIG_MSM_RDBG=y
    CONFIG_OKL4_PIPE=y
    CONFIG_I2C_CHARDEV=y
    CONFIG_I2C_QCOM_GENI=y
    CONFIG_SPI=y
    CONFIG_SPI_QCOM_GENI=y
    CONFIG_SPI_SPIDEV=y
    CONFIG_SPMI=y
    CONFIG_SPMI_MSM_PMIC_ARB_DEBUG=y
    CONFIG_SPMI_SIMULATOR=y
    CONFIG_PM8150_PMIC_SIMULATOR=y
    CONFIG_PM8150B_PMIC_SIMULATOR=y
    CONFIG_PM8150L_PMIC_SIMULATOR=y
    CONFIG_SLIMBUS_MSM_NGD=y
    CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
    CONFIG_PINCTRL_SM8150=y
    CONFIG_GPIO_SYSFS=y
    CONFIG_POWER_RESET_QCOM=y
    CONFIG_QCOM_DLOAD_MODE=y
    CONFIG_POWER_RESET_XGENE=y
    CONFIG_POWER_RESET_SYSCON=y
    CONFIG_QPNP_FG_GEN4=y
    CONFIG_QPNP_SMB5=y
    CONFIG_QPNP_QNOVO5=y
    CONFIG_SMB1390_CHARGE_PUMP=y
    CONFIG_THERMAL=y
    CONFIG_THERMAL_WRITABLE_TRIPS=y
    CONFIG_THERMAL_GOV_USER_SPACE=y
    CONFIG_THERMAL_GOV_LOW_LIMITS=y
    CONFIG_CPU_THERMAL=y
    CONFIG_DEVFREQ_THERMAL=y
    CONFIG_QCOM_SPMI_TEMP_ALARM=y
    CONFIG_THERMAL_TSENS=y
    CONFIG_QTI_THERMAL_LIMITS_DCVS=y
    CONFIG_QTI_VIRTUAL_SENSOR=y
    CONFIG_QTI_AOP_REG_COOLING_DEVICE=y
    CONFIG_QTI_QMI_COOLING_DEVICE=y
    CONFIG_QTI_QMI_SENSOR=y
    CONFIG_REGULATOR_COOLING_DEVICE=y
    CONFIG_QTI_BCL_PMIC5=y
    CONFIG_QTI_BCL_SOC_DRIVER=y
    CONFIG_QTI_ADC_TM=y
    CONFIG_MFD_I2C_PMIC=y
    CONFIG_MFD_SPMI_PMIC=y
    CONFIG_REGULATOR_FIXED_VOLTAGE=y
    CONFIG_REGULATOR_PROXY_CONSUMER=y
    CONFIG_REGULATOR_QPNP_AMOLED=y
    CONFIG_REGULATOR_QPNP_LCDB=y
    CONFIG_REGULATOR_REFGEN=y
    CONFIG_REGULATOR_RPMH=y
    CONFIG_REGULATOR_STUB=y
    CONFIG_MEDIA_SUPPORT=y
    CONFIG_MEDIA_CAMERA_SUPPORT=y
    CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
    CONFIG_MEDIA_CONTROLLER=y
    CONFIG_VIDEO_V4L2_SUBDEV_API=y
    CONFIG_VIDEO_ADV_DEBUG=y
    CONFIG_VIDEO_FIXED_MINOR_RANGES=y
    CONFIG_MEDIA_USB_SUPPORT=y
    CONFIG_USB_VIDEO_CLASS=y
    CONFIG_V4L_PLATFORM_DRIVERS=y
    CONFIG_SPECTRA_CAMERA=y
    CONFIG_MSM_VIDC_V4L2=y
    CONFIG_MSM_VIDC_GOVERNORS=y
    CONFIG_MSM_SDE_ROTATOR=y
    CONFIG_MSM_SDE_ROTATOR_EVTLOG_DEBUG=y
    CONFIG_MSM_NPU=y
    CONFIG_DVB_MPQ=y
    CONFIG_DVB_MPQ_DEMUX=y
    CONFIG_DVB_MPQ_TSPP1=y
    CONFIG_TSPP=y
    CONFIG_DRM=y
    CONFIG_DRM_MSM_REGISTER_LOGGING=y
    CONFIG_DRM_SDE_EVTLOG_DEBUG=y
    CONFIG_DRM_SDE_RSC=y
    CONFIG_DRM_LT_LT9611=y
    CONFIG_FB_ARMCLCD=y
    CONFIG_BACKLIGHT_QCOM_SPMI_WLED=y
    CONFIG_LOGO=y
    # CONFIG_LOGO_LINUX_MONO is not set
    # CONFIG_LOGO_LINUX_VGA16 is not set
    CONFIG_SOUND=y
    CONFIG_SND=y
    CONFIG_SND_DYNAMIC_MINORS=y
    CONFIG_SND_USB_AUDIO=y
    CONFIG_SND_USB_AUDIO_QMI=y
    CONFIG_SND_SOC=y
    CONFIG_UHID=y
    CONFIG_HID_APPLE=y
    CONFIG_HID_ELECOM=y
    CONFIG_HID_MAGICMOUSE=y
    CONFIG_HID_MICROSOFT=y
    CONFIG_HID_MULTITOUCH=y
    CONFIG_HID_NINTENDO=y
    CONFIG_HID_PLANTRONICS=y
    CONFIG_HID_PLAYSTATION=y
    CONFIG_PLAYSTATION_FF=y
    CONFIG_HID_SONY=y
    CONFIG_SONY_FF=y
    CONFIG_HID_QVR=y
    CONFIG_USB_HIDDEV=y
    CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
    CONFIG_USB_XHCI_HCD=y
    CONFIG_USB_EHCI_HCD=y
    CONFIG_USB_EHCI_HCD_PLATFORM=y
    CONFIG_USB_OHCI_HCD=y
    CONFIG_USB_OHCI_HCD_PLATFORM=y
    CONFIG_USB_STORAGE=y
    CONFIG_USB_DWC3=y
    CONFIG_USB_DWC3_MSM=y
    CONFIG_USB_ISP1760=y
    CONFIG_USB_ISP1760_HOST_ROLE=y
    CONFIG_USB_EHSET_TEST_FIXTURE=y
    CONFIG_USB_LINK_LAYER_TEST=y
    CONFIG_USB_REDRIVER_NB7VPQ904M=y
    CONFIG_NOP_USB_XCEIV=y
    CONFIG_USB_QCOM_EMU_PHY=y
    CONFIG_USB_MSM_SSPHY_QMP=y
    CONFIG_MSM_HSUSB_PHY=y
    CONFIG_DUAL_ROLE_USB_INTF=y
    CONFIG_USB_GADGET=y
    CONFIG_USB_GADGET_VBUS_DRAW=900
    CONFIG_USB_CONFIGFS=y
    CONFIG_USB_CONFIGFS_NCM=y
    CONFIG_USB_CONFIGFS_RNDIS=y
    CONFIG_USB_CONFIGFS_MASS_STORAGE=y
    CONFIG_USB_CONFIGFS_F_FS=y
    CONFIG_USB_CONFIGFS_F_MTP=y
    CONFIG_USB_CONFIGFS_F_PTP=y
    CONFIG_USB_CONFIGFS_F_ACC=y
    CONFIG_USB_CONFIGFS_F_AUDIO_SRC=y
    CONFIG_USB_CONFIGFS_UEVENT=y
    CONFIG_USB_CONFIGFS_F_UAC2=y
    CONFIG_USB_CONFIGFS_F_MIDI=y
    CONFIG_USB_CONFIGFS_F_HID=y
    CONFIG_USB_CONFIGFS_F_DIAG=y
    CONFIG_USB_CONFIGFS_F_CDEV=y
    CONFIG_USB_CONFIGFS_F_CCID=y
    CONFIG_USB_CONFIGFS_F_GSI=y
    CONFIG_USB_CONFIGFS_F_QDSS=y
    CONFIG_USB_PD_POLICY=y
    CONFIG_QPNP_USB_PDPHY=y
    CONFIG_MMC=y
    CONFIG_MMC_PERF_PROFILING=y
    CONFIG_MMC_BLOCK_MINORS=32
    CONFIG_MMC_BLOCK_DEFERRED_RESUME=y
    CONFIG_MMC_TEST=y
    CONFIG_MMC_PARANOID_SD_INIT=y
    CONFIG_MMC_CLKGATE=y
    CONFIG_MMC_SDHCI=y
    CONFIG_MMC_SDHCI_PLTFM=y
    CONFIG_MMC_SDHCI_MSM=y
    CONFIG_NEW_LEDS=y
    CONFIG_LEDS_CLASS=y
    CONFIG_LEDS_QPNP_FLASH_V2=y
    CONFIG_LEDS_QPNP_HAPTICS=y
    CONFIG_LEDS_QCOM_CLK=y
    CONFIG_LEDS_QTI_TRI_LED=y
    CONFIG_LEDS_TRIGGER_TIMER=y
    CONFIG_EDAC=y
    CONFIG_EDAC_KRYO_ARM64=y
    CONFIG_EDAC_KRYO_ARM64_PANIC_ON_UE=y
    CONFIG_RTC_CLASS=y
    CONFIG_RTC_DRV_QPNP=y
    CONFIG_DMADEVICES=y
    CONFIG_QCOM_GPI_DMA=y
    CONFIG_UIO=y
    CONFIG_UIO_MSM_SHAREDMEM=y
    CONFIG_STAGING=y
    CONFIG_ASHMEM=y
    CONFIG_ANDROID_SIMPLE_LMK=y
    CONFIG_ION=y
    CONFIG_QCA_CLD_WLAN=y
    CONFIG_QCOM_GENI_SE=y
    CONFIG_QPNP_REVID=y
    CONFIG_SPS=y
    CONFIG_SPS_SUPPORT_NDP_BAM=y
    CONFIG_USB_BAM=y
    CONFIG_IPA3=y
    CONFIG_IPA_WDI_UNIFIED_API=y
    CONFIG_RMNET_IPA3=y
    CONFIG_RNDIS_IPA=y
    CONFIG_IPA3_MHI_PROXY=y
    CONFIG_IPA3_MHI_PRIME_MANAGER=y
    CONFIG_IPA_UT=y
    CONFIG_MSM_11AD=y
    CONFIG_SEEMP_CORE=y
    CONFIG_IPA3_REGDUMP=y
    CONFIG_QCOM_MDSS_PLL=y
    CONFIG_SPMI_PMIC_CLKDIV=y
    CONFIG_MSM_CLK_AOP_QMP=y
    CONFIG_MSM_GCC_SM8150=y
    CONFIG_MSM_NPUCC_SM8150=y
    CONFIG_MSM_VIDEOCC_SM8150=y
    CONFIG_MSM_CAMCC_SM8150=y
    CONFIG_CLOCK_CPU_OSM=y
    CONFIG_MSM_DISPCC_SM8150=y
    CONFIG_MSM_DEBUGCC_SM8150=y
    CONFIG_MSM_CLK_RPMH=y
    CONFIG_MSM_GPUCC_SM8150=y
    CONFIG_HWSPINLOCK=y
    CONFIG_HWSPINLOCK_QCOM=y
    CONFIG_QCOM_APCS_IPC=y
    CONFIG_MSM_QMP=y
    CONFIG_IOMMU_IO_PGTABLE_FAST=y
    CONFIG_ARM_SMMU=y
    CONFIG_QCOM_LAZY_MAPPING=y
    CONFIG_IOMMU_DEBUG=y
    CONFIG_IOMMU_DEBUG_TRACKING=y
    CONFIG_IOMMU_TESTS=y
    CONFIG_RPMSG_CHAR=y
    CONFIG_RPMSG_QCOM_GLINK_SMEM=y
    CONFIG_RPMSG_QCOM_GLINK_SPSS=y
    CONFIG_RPMSG_QCOM_GLINK_SPI=y
    CONFIG_QCOM_MEM_OFFLINE=y
    CONFIG_OVERRIDE_MEMORY_LIMIT=y
    CONFIG_QCOM_CPUSS_DUMP=y
    CONFIG_QCOM_RUN_QUEUE_STATS=y
    CONFIG_QCOM_LLCC=y
    CONFIG_QCOM_SM8150_LLCC=y
    CONFIG_QCOM_LLCC_PERFMON=y
    CONFIG_QCOM_QMI_HELPERS=y
    CONFIG_QCOM_QMI_RMNET=y
    CONFIG_QCOM_QMI_DFC=y
    CONFIG_QCOM_QMI_POWER_COLLAPSE=y
    CONFIG_QCOM_SMEM=y
    CONFIG_QCOM_MEMORY_DUMP_V2=y
    CONFIG_QCOM_WATCHDOG_V2=y
    CONFIG_QCOM_FORCE_WDOG_BITE_ON_PANIC=y
    CONFIG_QCOM_SMP2P=y
    CONFIG_QPNP_PBS=y
    CONFIG_MSM_SERVICE_LOCATOR=y
    CONFIG_MSM_SERVICE_NOTIFIER=y
    CONFIG_MSM_SUBSYSTEM_RESTART=y
    CONFIG_MSM_PIL=y
    CONFIG_MSM_SYSMON_QMI_COMM=y
    CONFIG_MSM_PIL_SSR_GENERIC=y
    CONFIG_SETUP_SSR_NOTIF_TIMEOUTS=y
    CONFIG_SSR_SYSMON_NOTIF_TIMEOUT=20000
    CONFIG_SSR_SUBSYS_NOTIF_TIMEOUT=20000
    CONFIG_PANIC_ON_SSR_NOTIF_TIMEOUT=y
    CONFIG_MSM_BOOT_STATS=y
    CONFIG_QCOM_DCC_V2=y
    CONFIG_QCOM_SECURE_BUFFER=y
    CONFIG_ICNSS=y
    CONFIG_ICNSS_QMI=y
    CONFIG_QCOM_EUD=y
    CONFIG_QCOM_MINIDUMP=y
    CONFIG_QCOM_BUS_SCALING=y
    CONFIG_QCOM_BUS_CONFIG_RPMH=y
    CONFIG_QCOM_COMMAND_DB=y
    CONFIG_QCOM_EARLY_RANDOM=y
    CONFIG_MSM_SPSS_UTILS=y
    CONFIG_MSM_SPCOM=y
    CONFIG_QTI_RPMH_API=y
    CONFIG_QSEE_IPC_IRQ_BRIDGE=y
    CONFIG_QCOM_GLINK=y
    CONFIG_QCOM_GLINK_PKT=y
    CONFIG_QCOM_QDSS_BRIDGE=y
    CONFIG_QTI_RPM_STATS_LOG=y
    CONFIG_MSM_CDSP_LOADER=y
    CONFIG_QCOM_SMCINVOKE=y
    CONFIG_MSM_EVENT_TIMER=y
    CONFIG_MSM_PM=y
    CONFIG_MSM_QBT1000=y
    CONFIG_QCOM_FSA4480_I2C=y
    CONFIG_MEM_SHARE_QMI_SERVICE=y
    CONFIG_RMNET_CTL=y
    CONFIG_MSM_PERFORMANCE=y
    CONFIG_QMP_DEBUGFS_CLIENT=y
    CONFIG_QCOM_SMP2P_SLEEPSTATE=y
    CONFIG_QCOM_CDSP_RM=y
    CONFIG_QCOM_AOP_DDR_MESSAGING=y
    CONFIG_QCOM_AOP_DDRSS_COMMANDS=y
    CONFIG_QTI_CRYPTO_COMMON=y
    CONFIG_QTI_CRYPTO_TZ=y
    CONFIG_QCOM_HYP_CORE_CTL=y
    CONFIG_DEVFREQ_GOV_PASSIVE=y
    CONFIG_QCOM_BIMC_BWMON=y
    CONFIG_ARM_MEMLAT_MON=y
    CONFIG_QCOMCCI_HWMON=y
    CONFIG_QCOM_M4M_HWMON=y
    CONFIG_DEVFREQ_GOV_QCOM_BW_HWMON=y
    CONFIG_DEVFREQ_GOV_QCOM_CACHE_HWMON=y
    CONFIG_DEVFREQ_GOV_MEMLAT=y
    CONFIG_DEVFREQ_SIMPLE_DEV=y
    CONFIG_QCOM_DEVFREQ_DEVBW=y
    CONFIG_DEVFREQ_GOV_CDSPL3=y
    CONFIG_EXTCON_USB_GPIO=y
    CONFIG_IIO=y
    CONFIG_QCOM_SPMI_ADC5=y
    CONFIG_PWM=y
    CONFIG_PWM_QTI_LPG=y
    CONFIG_QCOM_KGSL=y
    CONFIG_ARM_GIC_V3_ACL=y
    CONFIG_QCOM_LLCC_PMU=y
    CONFIG_RAS=y
    CONFIG_ANDROID=y
    CONFIG_ANDROID_BINDER_IPC=y
    CONFIG_ANDROID_BINDERFS=y
    CONFIG_NVMEM_SPMI_SDAM=y
    CONFIG_SENSORS_SSC=y
    CONFIG_ESOC=y
    CONFIG_ESOC_DEV=y
    CONFIG_ESOC_CLIENT=y
    CONFIG_ESOC_MDM_4x=y
    CONFIG_ESOC_MDM_DRV=y
    CONFIG_ESOC_MDM_DBG_ENG=y
    CONFIG_MSM_TZ_LOG=y
    CONFIG_EXT4_FS=y
    CONFIG_EXT4_FS_POSIX_ACL=y
    CONFIG_EXT4_FS_SECURITY=y
    CONFIG_EXT4_ENCRYPTION=y
    CONFIG_F2FS_FS=y
    CONFIG_F2FS_FS_SECURITY=y
    CONFIG_F2FS_FS_ENCRYPTION=y
    CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
    CONFIG_FS_VERITY=y
    CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
    CONFIG_QUOTA=y
    CONFIG_QUOTA_NETLINK_INTERFACE=y
    CONFIG_QFMT_V2=y
    CONFIG_FUSE_FS=y
    CONFIG_OVERLAY_FS=y
    CONFIG_INCREMENTAL_FS=y
    CONFIG_MSDOS_FS=y
    CONFIG_VFAT_FS=y
    CONFIG_TMPFS_POSIX_ACL=y
    CONFIG_ECRYPT_FS=y
    CONFIG_ECRYPT_FS_MESSAGING=y
    CONFIG_SDCARD_FS=y
    CONFIG_NLS_CODEPAGE_437=y
    CONFIG_NLS_ISO8859_1=y
    CONFIG_NLS_UTF8=y
    CONFIG_PRINTK_TIME=y
    CONFIG_DEBUG_INFO=y
    CONFIG_PAGE_OWNER=y
    CONFIG_MAGIC_SYSRQ=y
    CONFIG_PANIC_TIMEOUT=-1
    CONFIG_SCHEDSTATS=y
    # CONFIG_DEBUG_PREEMPT is not set
    CONFIG_DEBUG_LIST=y
    CONFIG_IPC_LOGGING=y
    CONFIG_DEBUG_ALIGN_RODATA=y
    CONFIG_CORESIGHT=y
    CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y
    CONFIG_CORESIGHT_DYNAMIC_REPLICATOR=y
    CONFIG_CORESIGHT_STM=y
    CONFIG_CORESIGHT_CTI=y
    CONFIG_CORESIGHT_TPDA=y
    CONFIG_CORESIGHT_TPDM=y
    CONFIG_CORESIGHT_HWEVENT=y
    CONFIG_CORESIGHT_DUMMY=y
    CONFIG_CORESIGHT_REMOTE_ETM=y
    CONFIG_CORESIGHT_REMOTE_ETM_DEFAULT_ENABLE=0
    CONFIG_CORESIGHT_TGU=y
    CONFIG_CORESIGHT_EVENT=y
    CONFIG_SECURITY=y
    CONFIG_HARDENED_USERCOPY=y
    CONFIG_FORTIFY_SOURCE=y
    CONFIG_STATIC_USERMODEHELPER=y
    CONFIG_STATIC_USERMODEHELPER_PATH=""
    CONFIG_SECURITY_SELINUX=y
    CONFIG_SECURITY_SMACK=y
    CONFIG_CRYPTO_GCM=y
    CONFIG_CRYPTO_XCBC=y
    CONFIG_CRYPTO_TWOFISH=y
    CONFIG_CRYPTO_ANSI_CPRNG=y
    CONFIG_CRYPTO_DEV_QCOM_MSM_QCE=y
    CONFIG_CRYPTO_DEV_QCRYPTO=y
    CONFIG_CRYPTO_DEV_QCEDEV=y
    CONFIG_CRYPTO_DEV_QCOM_ICE=y
    CONFIG_ARM64_CRYPTO=y
    CONFIG_CRYPTO_SHA1_ARM64_CE=y
    CONFIG_CRYPTO_SHA2_ARM64_CE=y
    CONFIG_CRYPTO_GHASH_ARM64_CE=y
    CONFIG_CRYPTO_AES_ARM64_CE_CCM=y
    CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
    CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y
    CONFIG_STACK_HASH_ORDER_SHIFT=12
    CONFIG_MACH_XIAOMI=y
    CONFIG_MACH_XIAOMI_SM8150=y
    CONFIG_MACH_XIAOMI_RAPHAEL=y
    CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE=y
    CONFIG_IMG_GZ_DTB=y
    CONFIG_BUILD_ARM64_APPENDED_KERNEL_IMAGE_NAME="Image.gz-dtb"
    CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES=""
    CONFIG_RMNET_PERF=y
    CONFIG_RMNET_SHS=y
    CONFIG_DRM_MSM_KCAL_CTRL=y
    CONFIG_EXFAT_FS=y
    CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
    CONFIG_EXFAT_VIRTUAL_XATTR=y
    CONFIG_EXFAT_VIRTUAL_XATTR_SELINUX_LABEL="u:object_r:exfat:s0"
    CONFIG_NAMESPACES=y
    CONFIG_NET_NS=y
    CONFIG_PID_NS=y
    CONFIG_IPC_NS=y
    CONFIG_UTS_NS=y
    CONFIG_USER_NS=y
    CONFIG_CGROUPS=y
    CONFIG_CGROUP_CPUACCT=y
    CONFIG_CGROUP_DEVICE=y
    CONFIG_CGROUP_FREEZER=y
    CONFIG_CGROUP_SCHED=y
    CONFIG_CGROUP_PIDS=y
    CONFIG_CPUSETS=y
    CONFIG_MEMCG=y
    CONFIG_MEMCG_SWAP=y
    CONFIG_MEMCG_SWAP_ENABLED=y
    CONFIG_IP_VS=y
    CONFIG_IP_VS_NFCT=y
    CONFIG_IP_VS_PROTO_TCP=y
    CONFIG_IP_VS_PROTO_UDP=y
    CONFIG_IP_VS_PROTO_RR=y
    CONFIG_BLK_DEV_THROTTLING=y
    CONFIG_CGROUP_PERF=y
    CONFIG_CGROUP_HUGETLB=y
    CONFIG_NET_CLS_CGROUP=y
    CONFIG_CGROUP_NET_PRIO=y
    CONFIG_CFS_BANDWIDTH=y
    CONFIG_RT_GROUP_SCHED=y
    CONFIG_SECURITY_APPARMOR=y
    CONFIG_VXLAN=y
    CONFIG_BRIDGE_VLAN_FILTERING=y
    CONFIG_IPVLAN=y
    CONFIG_MACVLAN=y
    CONFIG_AUFS_FS=y
    CONFIG_BTRFS_FS=y
    CONFIG_BTRFS_FS_POSIX_ACL=y
    CONFIG_DM_THIN_PROVISIONING=y
    CONFIG_KEYS=y
    CONFIG_VETH=y
    CONFIG_BRIDGE=y
    CONFIG_BRIDGE_NETFILTER=y
    CONFIG_IP_NF_FILTER=y
    CONFIG_IP_NF_TARGET_MASQUERADE=y
    CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
    CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
    CONFIG_NETFILTER_XT_MATCH_IPVS=y
    CONFIG_NETFILTER_XT_MARK=y
    CONFIG_IP_NF_NAT=y
    CONFIG_NF_NAT=y
    CONFIG_POSIX_MQUEUE=y
    CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
    CONFIG_NF_NAT_IPV4=y
    CONFIG_NF_NAT_NEEDED=y
    CONFIG_OVERLAY_FS=y
    CONFIG_NETFILTER_ADVANCED=y
    

    Final#

    最后感谢Laulan56大佬给我们提供的内核源码、还有其他大佬提供的各种教程和工具~

  • 相关阅读:
    PostgreSQL中的技术内幕
    JavaWeb三大组件-Filter
    基于.NetCore开发博客项目 StarBlog - (5) 开始搭建Web项目
    JavaScript之JS事件机制
    关于部署docker swarm一些知识
    力扣:155. 最小栈(Python3)
    A*寻路基本概念和C++实现A*算法
    vue-quill-editor 富文本编辑器上传视频
    springboot引入redisson分布式锁及原理
    微软Build 2023两大主题:Copilots和插件
  • 原文地址:https://www.cnblogs.com/ink19/p/build_k20pro_kernel.html