Linux five-step build kernel tree

Linux five-step build kernel tree

0. The kernel tree that comes with the system

Sometimes, the installed system already comes with Linux內核樹that is sufficient for compiling the driver.

The built-in kernel tree is usually located in

/lib/modules/<system kernel version>/build

Among them, the system kernel version can be viewed using uname -r

$ uname -r
5.11.0-41-generic

However, the built-in kernel tree seems incomplete, so it is recommended to compile a complete kernel tree according to the following method.

1. Environment Configuration

first step

To configure the kernel tree for the first time, you need to install some necessary environments

sudo apt-get build-dep linux linux-image-$(uname -r)

(If you get an error message Error :: You must put some 'source' URIs in your sources.list , please refer to here)

Step 2

In addition to the above environment, you also need to install these

sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf dwarves

2. Download source code

sudo apt-get source linux-image-unsigned-$(uname -r)

After this step, there will be three more files.

linux-hwe-5.11_5.11.0-41.45~20.04.1.diff.gz
linux-hwe-5.11_5.11.0-41.45~20.04.1.dsc
linux-hwe-5.11_5.11.0.orig.tar.gz

And a folder where the kernel source code is located

linux-hwe-5.11-5.11.0

(Note: The file name may vary depending on the system version)

3. Build Preparation

(Note: If you get permission denied at any time when running a command, just add sudo at the beginning of the command and run it again)

Enter linux-hwe-5.11-5.11.0 folder and enter

make menuconfig

After a little loading, you will enter this page

insert image description here

You don’t need to modify anything here, just close the interface (use the arrow keys to select Exit and press Enter, or press Esc twice to exit), the reason is at the end of this chapter.

Then, this dialog box will be displayed

insert image description here

After selecting Yes in the blue box, press Enter to exit.

This will generate a .config file in the current directory (you can find this file by typing ls -a ), ensuring that the subsequent make can be executed smoothly.

4. Build the kernel

Enter the following command to start the build (if you encounter permission denied , add sudo at the beginning of the command and run it again)

make

You have to wait a long time here, usually one to several hours. You can use concurrency to speed up by using -j <最大并發任務數> command.最大并發任務數can generally be twice the number of CPUs.

(Note: By using make help , you can find that when you enter make , it will automatically execute the following three actions: 1) make vmlinux (build the original kernel), 2) make bzImage (build the compressed kernel), and 3) make modules (build modular drivers separately))

5. Install the module

Finally, install the module to the /lib/modules/$(uname -r) directory

sudo make modules_install 

Summarize

This is the end of this article about the five-step Linux kernel tree building. For more relevant Linux kernel tree content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Analysis of Linux kernel scheduler source code initialization
  • Some suggestions for Linux system optimization (kernel optimization)
  • How to compile the Linux kernel

<<:  The button has a gray border that is ugly. How to remove it?

>>:  Complete steps to quickly build a vue3.0 project

Recommend

24 Practical JavaScript Development Tips

Table of contents 1. Initialize the array 2. Arra...

Practical record of vue using echarts word cloud chart

echarts word cloud is an extension of echarts htt...

A "classic" pitfall of MySQL UPDATE statement

Table of contents 1. Problematic SQL statements S...

Pure CSS3 to achieve pet chicken example code

I have read a lot of knowledge and articles about...

Teach you how to get the pointer position in javascript

The method of obtaining the position of the point...

Implementation of single process control of Linux C background service program

introduce Usually a background server program mus...

Summary of the understanding of virtual DOM in Vue

It is essentially a common js object used to desc...

html+css+js to realize the function of photo preview and upload picture

Preface: When we are making web pages, we often n...

How to use cookies to remember passwords for 7 days on the vue login page

Problem Description In the login page of the proj...

Introduction to installing and configuring JDK under CentOS system

Table of contents Preface Check and uninstall Ope...

Usage and scenario analysis of npx command in Node.js

npx usage tutorial Tonight, when I was learning V...

Detailed explanation of ECharts mouse event processing method

An event is an action performed by the user or th...