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

How to install common components (mysql, redis) in Docker

Docker installs mysql docker search mysql Search ...

React Hook usage examples (6 common hooks)

1. useState: Let functional components have state...

JavaScript to achieve accordion effect

This article shares the specific code for JavaScr...

WeChat applet implements a simple handwritten signature component

Table of contents background: need: Effect 1. Ide...

Detailed explanation of the method of comparing dates in MySQL

If there is a table product with a field add_time...

Example of how to install nginx to a specified directory

Due to company requirements, two nginx servers in...

mysql update case update field value is not fixed operation

When processing batch updates of certain data, if...

MySQL installation and configuration methods and precautions under Windows platform

2.1、msi installation package 2.1.1、Installation I...

Vue implements tree table

This article example shares the specific code of ...

Analysis of rel attribute in HTML

.y { background: url(//img.jbzj.com/images/o_y.pn...

How to use CSS attribute selectors to splice HTML DNA

CSS attribute selectors are amazing. They can hel...

The implementation process of Linux process network traffic statistics

Preface Linux has corresponding open source tools...