4. Giải mã 100% code extract-ikconfig của Linux Kernel – Coi trước

Biên dịch nhân Linux để làm gì?

Compile Linux kernel mất bao nhiêu thời gian?

Linux kernel configuration được biên dịch ở dạng module rời gắn vào Linux kernel được trên Ubuntu Server 22.04

Compile Linux kernel cho Rocky Linux 9 trên máy ảo VMware Workstation

Alpine Linux có Linux kernel config khác gì với Red Hat Enterprise Linux – Ubuntu – Debian?

Loadable kernel module hay Linux kernel module built-in

extract-vmlinux lấy cảm hứng từ extract-ikconfig.

extract-ikconfig lấy ra file cấu hình .config của Linux kernel được nhét vào trong file Linux kernel là vmlinuz.

extract-ikconfig viết bằng shell script nên nếu bạn muốn học lập trình bash shell thực chiến hay học Linux chuyên sâu, thực chiến thì bạn cần đọc hiểu 100% code của extract-ikconfig.

Nếu bạn đã đọc hiểu và thực hành về extract-vmlinux thì extract-ikconfig cũng rứa.

Giải mã 100% code extract-vmlinux của Linux Kernel

Xài extract-ikconfig rất dễ chỉ với 1 câu lệnh như hình dưới

Nếu chỉ xài extract-ikconfig bạn sẽ không có ưu thế gì so với người khác vì ai cũng xài được, chỉ có học lập trình bash shell giúp bạn đọc hiểu 100% code extract-ikconfig rồi nấu nướng thêm khi cần mới giúp bạn có ưu thế vì không phải ai cũng làm được chuyện này.

kernel='https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/scripts/extract-ikconfig'

curl -Os $kernel

bash ./extract-ikconfig vmlinuz-6.6.7 > kernel-config.txt

head -20 kernel-config.txt 

#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 6.6.7 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=110400
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=23800
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=23800
CONFIG_LLD_VERSION=0
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_TOOLS_SUPPORT_RELR=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y

file vmlinuz-6.6.7 | tr ',' '\n'
vmlinuz-6.6.7: Linux kernel x86 boot executable bzImage
 version 6.6.7 (root@linuxkernel) #1 SMP PREEMPT_DYNAMIC Thu Dec 21 10:02:51 UTC 2023
 RO-rootFS
 swap_dev 0X7
 Normal VGA