@@ -15,7 +15,7 @@ function dependency_pkg_install() {
1515 if command -v apt > /dev/null; then
1616 echo " Checking for required packages on a Debian-based system..."
1717
18- packages=(git make clang libbpf-dev llvm linux-tools-generic protobuf-compiler libprotobuf-dev libprotobuf-c-dev protobuf-c-compiler cmake pkg-config gcc-multilib)
18+ packages=(git make clang libbpf-dev llvm linux-tools-generic protobuf-compiler libprotobuf-dev libprotobuf-c-dev protobuf-c-compiler cmake pkg-config gcc-multilib pahole linux-headers )
1919
2020 update_needed=false
2121 for pkg in " ${packages[@]} " ; do
@@ -47,7 +47,7 @@ function dependency_pkg_install() {
4747 echo " Checking for required packages on a Red Hat-based system..."
4848
4949 # List of required packages
50- packages=(git make clang llvm libboundscheck protobuf protobuf-c protobuf-c-devel bpftool libbpf libbpf-devel cmake pkg-config glibc-devel libstdc++-devel)
50+ packages=(git make clang llvm libboundscheck protobuf protobuf-c protobuf-c-devel bpftool libbpf libbpf-devel cmake pkg-config glibc-devel libstdc++-devel dwarves )
5151
5252 # Install each missing package
5353 for pkg in " ${packages[@]} " ; do
@@ -104,6 +104,32 @@ function kmesh_set_env() {
104104 export EXTRA_CFLAGS=" -O0 -g"
105105}
106106
107+ function set_config() {
108+ sed -i -r -e " s/($1 )([ \t]*)([0-9]+)/\1\2$2 /" config/kmesh_marcos_def.h
109+ }
110+
111+ detect_config () {
112+ local kernel_version=$( uname -r)
113+
114+ if [ -f " /proc/config.gz" ]; then
115+ zcat /proc/config.gz 2> /dev/null
116+ return $?
117+ fi
118+
119+ if [ -f " /boot/config-$kernel_version " ]; then
120+ cat " /boot/config-$kernel_version " 2> /dev/null
121+ return $?
122+ fi
123+ }
124+
125+ CONFIG_CONTENT=$( detect_config)
126+
127+ check_config () {
128+ local config_name=$1
129+ value=$( echo " $CONFIG_CONTENT " | grep -w " $config_name " | cut -d= -f2)
130+ echo " $value "
131+ }
132+
107133function set_enhanced_kernel_env() {
108134 # we use /usr/include/linux/bpf.h to determine the runtime environment’s
109135 # support for kmesh. Considering the case of online image compilation, a
@@ -118,8 +144,17 @@ function set_enhanced_kernel_env() {
118144 export KERNEL_HEADER_LINUX_BPF=/usr/include/linux/bpf.h
119145 fi
120146
121- if grep -q " FN(parse_header_msg)" $KERNEL_HEADER_LINUX_BPF ; then
122- export ENHANCED_KERNEL=" enhanced"
147+ KERNEL_MAJOR=$( uname -r | awk -F ' .' ' {print $1}' )
148+
149+ zcat /proc/config.gz | grep BTF
150+ cat " /boot/config-$( uname -r) " | grep BTF
151+ check_config " CONFIG_DEBUG_INFO_BTF_MODULES"
152+ check_config " CONFIG_DEBUG_INFO_BTF"
153+ if grep -q " FN(parse_header_msg)" $KERNEL_HEADER_LINUX_BPF ||
154+ [ " $( check_config " CONFIG_DEBUG_INFO_BTF_MODULES" ) " == " y" ] &&
155+ [ " $( check_config " CONFIG_DEBUG_INFO_BTF" ) " == " y" ] &&
156+ [ " $KERNEL_MAJOR " -ge 6 ]; then
157+ export ENHANCED_KERNEL=" normal"
123158 else
124159 export ENHANCED_KERNEL=" normal"
125160 fi
0 commit comments