Linux kernel được giải nén bằng công cụ gì?

Biên dịch Linux kernel ở dạng nén sẽ tạo ra file vmlinuz nằm ở /boot

Nói cách khác

Linux kernel ở dạng nén thường tên là vmlinuz.

vmlinuz được nén bằng zstd trên Ubuntu Server 22.04

grep CONFIG_KERNEL_ /boot/config-`uname -r`

# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
CONFIG_KERNEL_ZSTD=y

vmlinuz được nén bằng xz trên Debian 12 Bookworm

grep CONFIG_KERNEL /boot/config-`uname -r`

# CONFIG_KERNEL_GZIP is not set
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
CONFIG_KERNEL_XZ=y
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
# CONFIG_KERNEL_ZSTD is not set

vmlinuz được nén bằng gzip trên AlmaLinux 9

grep CONFIG_KERNEL /boot/config-`uname -r`

CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
# CONFIG_KERNEL_ZSTD is not set

Sau khi được giải nén Linux kernel thường được gọi là vmlinux

Linux kernel được giải nén bằng công cụ extract-linux viết bằng bash shell.

vmlinux có định dạng ELF chạy được (Executable file)

./extract-vmlinux /boot/vmlinuz-`uname -r` > vmlinux-`uname -r`

readelf -h vmlinux-`uname -r`
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x1000000
  Start of program headers:          64 (bytes into file)
  Start of section headers:          73400752 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         5
  Size of section headers:           64 (bytes)
  Number of section headers:         39
  Section header string table index: 38

Như bạn đã thấy xài extract-vmlinux rất dễ vì vậy nếu chỉ xài lệnh Linux bạn sẽ không có ưu thế gì so với người khác.

Hãy học lập trình bash shell thực chiến để hiểu rõ 100% code của extract-vmlinux.

Chỉ có học lập trình thực chiến bạn mới tăng kiến thức lập trình và kĩ năng lập trình để làm ra sản phẩm công nghệ thông tin.

Như mọi khi chúng tôi luôn có bài tập lập trình thực tế, lập trình thực chiến cho các bạn.

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