OpenCloudOS-Kernel/config-readme

136 lines
5.2 KiB
Plaintext

This file explains what's configs used for this kernel and how to use them.
For this kernel specific config options, they should be enable in tencentconfig
and disabled in notk.config for auto-testing support in our CI system.
There are two config manage systems, they are discribed as below.
*******************************************************************************
The Firs Config Manage System (Similar to kernel original method)
*******************************************************************************
1. How to generate configs
Config is generated by "make base-config delta-config" similarity. Like:
make tencentconfig /* Generate release config */
make tencentconfig debug.config
You could also read dist/configs/configs-generate.sh and use the script
to generate configs.
2. How to edit configs
Config sources are at the directories as below:
arch/x86/configs/
arch/arm64/configs/
kernel/configs/
Base configs is arch/$arch/configs/tencent.config, you should modify base
configs in most cases. $arch is support x86 and arm64 now.
It doesn't recommend to modify base configs only using vim. It recommend
to using the steps to modify base configs as below:
a, create .config:
make ARCH=$arch tencentconfig
b, modify .config as your expectation:
method1: make ARCH=$arch menuconfig to change the CONFIGs
method2: vim .config , and then make ARCH=$arch olddefconfig
Note: Using method2 need to check whether the CONFIG* which you
want to enable are really enabled, because the depend on
CONFIG* may haven't been eabled.
c, create defconfig:
make ARCH=$arch savedefconfig
d, update tencent.config:
mv defconfig arch/$arch/configs/tencent.config
Other configs (except config.pswitch) are delta configs, which will
overwrite the duplicate name CONFIG_* in base config (tencent.config).
Related Link:
https://iwiki.woa.com/pages/viewpage.action?pageId=4007623631
3. Configs introduction
tencentconfig
TK4 x86 private release version using this config to build kernel image.
TK4 aarch64 release version using this config to build kernel image.
debug.config
The configs with CONFIG_KASAN and other debug configs enabled, used for
debugging problems.
notk.config
The config for TK specific kernel options testing, *ANY TK specific configs*
should be disabled in this config then we could do testing in TKCI.
performance.config
This config is created and maintained by CSIG, used for highest
performing version.
cloud-game.config
This config is created and maintained by kevinclli (视频渲染组), used
for cloud game on arm64.
Cloud-game needing run android container, which using 4k page. So, they
can't using config.default directly.
pswitch.config
The programmble switch team need a different kernel config, which
include much old slow speed bus, which enlarge the kernel size.
BTW,
The default kernel will opensource as OC kernel, some specific feature should
be modulized.
*******************************************************************************
The Second Config Manage System (Similar to RedHat/Fedora's dist manage)
*******************************************************************************
1, How to generate configs
Changing directory (cd) to the top of kernel source dir, running:
make dist-config /* Equal to make dist-config CONFIG="generic-release" */
make dist-config CONFIG="generic-debug"
2, Configs introduction
tree -l dist/configs/, will display the content as below:
dist/configs/
├── 00base
│ ├── defconfig
│ │ ├── aarch64.config
│ │ ├── default.config
│ │ └── x86_64.config
│ └── generic
│ ├── aarch64.config -> ../../../../arch/arm64/configs/tencent.config
│ ├── default.config
│ └── x86_64.config -> ../../../../arch/x86/configs/tencent.config
├── 50variant
│ ├── debug
│ │ └── default.config -> ../../../../kernel/configs/debug.config
│ └── release
│ └── default.config
"make dist-config" is using:
dist/configs/00base/generic/default.config /* Which is empty */
+
dist/configs/00base/generic/$arch.config
+
dist/configs/50variant/release/default.config /* Which is empty */
+
dist/configs/50variant/release/$arch.config /* If have the file */
Becase dist/configs/00base/generic/$arch.config is link to
arch/$arch/configs/tencent.config, so "make dist-config" will generate
the same .config as "make tencentconfig".
"make dist-config CONFIG="generic-debug"" is using:
dist/configs/00base/generic/default.config /* Which is empty */
+
dist/configs/00base/generic/$arch.config
+
dist/configs/50variant/debug/default.config
+
dist/configs/50variant/debug/$arch.config /* If have the file */
Becase dist/configs/00base/generic/$arch.config is link to
arch/$arch/configs/tencent.config, and dist/configs/50variant/debug/default.config
is link to kernel/configs/debug.config.
So "make dist-config CONFIG="generic-debug"" will generate the same
.config as "make tencentconfig debug.config".
Note, When running "make dist-*" command (such as make dist-config), please make
sure all changes have commited to git repo. "make dist-*" command gets codes and
configs from git.