Ubuntu22.04编译安装实时内核

下载安装

1.查看自己系统目前的内核版本

uname -r

2.下载安装实时内核文件

目前系统版本是Ubuntu 22.04.5 LTS,内核版本是 6.8.0-40。因此我需要安装6.8.2版本的PREEMPT_RT内核,在这个网站。(安装和当前默认内核最接近的RT内核,遇到问题的可能性最小)

下载 patch-6.8.2-rt11.patch.gz


…/
incr/ 03-Apr-2024 15:36 -
older/ 03-Apr-2024 15:36 -
patch-6.8.2-rt11.patch.gz 03-Apr-2024 15:36 59K
patch-6.8.2-rt11.patch.sign 03-Apr-2024 15:36 438
patch-6.8.2-rt11.patch.xz 03-Apr-2024 15:36 51K
patches-6.8.2-rt11.tar.gz 03-Apr-2024 15:36 106K
patches-6.8.2-rt11.tar.sign 03-Apr-2024 15:36 438
patches-6.8.2-rt11.tar.xz 03-Apr-2024 15:36 83K
sha256sums.asc 03-Apr-2024 15:40 1253


这个网站linuxfoundation可以查看最新的PREEMPT_RT内核。

创建一个新的文件夹:

mkdir ~/kernel

进入这个文件夹:

cd ~/kernel

从这个网站 https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/ 去下载 6.8.2版本的内核文件:

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.8.2.tar.gz

你也可以手动下载这个文件,然后复制到kernel文件夹。

解压:

tar -xzf linux-6.8.2.tar.gz

下载对应的rt_preempt patch, 对我们来说就是刚刚的patch-6.8.2-rt11.patch.gz

wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/6.8/patch-6.8.2-rt11.patch.gz

你也可以手动下载,然后拷贝到kernel文件夹。

解压

gunzip patch-6.8.2-rt11.patch.gz

切换目录,打实时补丁

cd linux-*/
patch -p1 < ../patch-*.patch

复制当前引导的内核配置作为新实时内核的默认配置

cp -v /boot/config-$(uname -r) .config

打开“软件和更新”。在 Ubuntu 软件菜单中勾选“源代码”框

我们需要一些工具来构建内核,安装它们:

sudo apt-get build-dep linux
sudo apt-get install zstd
sudo apt-get install libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot

启用所有 Ubuntu 配置,我们只需使用:

yes '' | make oldconfig

然后我们需要在内核中启用rt_preempt:

make menuconfig

并设置以下内容:

# Enable CONFIG_PREEMPT_RT
-> General Setup
  -> Preemption Model (Fully Preemptible Kernel (Real-Time))
  (X) Fully Preemptible Kernel (Real-Time)

# Enable CONFIG_HIGH_RES_TIMERS
-> General setup
  -> Timers subsystem
  [*] High Resolution Timer Support

# Enable CONFIG_NO_HZ_FULL
-> General setup
  -> Timers subsystem
  -> Timer tick handling (Full dynticks system (tickless))
    (X) Full dynticks system (tickless)

# Set CONFIG_HZ_1000 (note: this is no longer in the General Setup menu, go back twice)
-> Processor type and features
  -> Timer frequency (1000 HZ)
  (X) 1000 HZ

# Set CPU_FREQ_DEFAULT_GOV_PERFORMANCE [=y]
->  Power management and ACPI options
  -> CPU Frequency scaling
  -> CPU Frequency scaling (CPU_FREQ [=y])
    -> Default CPUFreq governor (<choice> [=y])
    (X) performance

->  Cryptographic API 
 ->  Certificates for signature checking (at the very bottom of the list) 
  -> Provide system-wide ring of trusted keys 
   -> Additional X.509 keys for default system keyring
   Remove the “debian/canonical-certs.pem” from the prompt and press Ok

->  Cryptographic API 
 ->  Certificates for signature checking (at the very bottom of the list) 
  -> Provide system-wide ring of trusted keys 
   -> X.509 certificates to be preloaded into the system blacklist keyring 
   Remove the “debian/canonical-certs.pem” from the prompt and press Ok

保存以上配置,退出 。

编译内核:

make -j `nproc` bindeb-pkg

如果需要编译src pkg,请运行"make deb-pkg",但是你必须通过git拉取linux kernel的源代码树,并checkout v6.8.2 tag,然后按上面的过程打实时补丁,并修改内核配置文件。

git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux.git
git checkout v6.8.2

根据CPU性能大概需要10-30分钟。

然后我们安装所有内核 debian 软件包

ls -l ../*.deb
-rw-r--r-- 1 zt zt    9881878 10月 27 14:10 ../linux-headers-6.8.2-rt11_6.8.2-5_amd64.deb
-rw-r--r-- 1 zt zt  173899106 10月 27 14:09 ../linux-image-6.8.2-rt11_6.8.2-5_amd64.deb
-rw-r--r-- 1 zt zt 1320705494 10月 27 14:44 ../linux-image-6.8.2-rt11-dbg_6.8.2-5_amd64.deb
-rw-r--r-- 1 zt zt    1398982 10月 27 14:09 ../linux-libc-dev_6.8.2-5_amd64.deb
sudo dpkg -i ../*.deb

现在应该安装实时内核了。重新启动系统并检查新的内核版本

sudo reboot

zt@zt-ROScube-I-ET:~$ uname -a
Linux zt-ROScube-I-ET 6.8.2-rt11 #5 SMP PREEMPT_RT Sun Oct 27 13:59:50 CST 2024 x86_64 x86_64 x86_64 GNU/Linux

测试实时性

1.git 仓库源码安装

git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git

2.进入git仓库

cd rt-tests 

3.安装依赖并使用make编译

sudo apt-get install apt-file libnuma-dev 

4.编译

make

4.测试

sudo ./cyclictest -t1 -p 80 -n -i 10000 -l 10000

我使用这个命令测试的结果如下:

# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.28 0.31 0.19 1/685 2625

T: 0 ( 2587) P:80 I:10000 C:  10000 Min:      2 Act:    2 Avg:    2 Max:      11

输出结果含义:
T: 0 序号为0的线程
P: 80 线程优先级为80
C: 7348 计数器。线程的时间间隔每达到一次,计数器加1
I: 10000 时间间隔为10000微秒(us)
Min: 最小延时(us)
Act: 最近一次的延时(us)
Avg:平均延时(us)
Max: 最大延时(us)

所以我们当前的机器上最小延时为2,平均为2,最大的为 11。

### 回答1: 可以通过以下步骤在Ubuntu22.04编译内核: 1. 首先,下载Linux内核源代码。可以从https://www.kernel.org/ 上下载最新版本的内核源代码。 2. 安装所需的编译工具。在终端中运行以下命令: ``` sudo apt-get update sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev ``` 3. 解压内核源代码,进入源代码目录。在终端中运行以下命令: ``` tar xvf linux-x.y.z.tar.gz cd linux-x.y.z ``` 其中,"x.y.z"是内核版本号。 4. 配置内核。可以使用默认配置或自定义配置。运行以下命令启动配置: ``` make menuconfig ``` 在此过程中,您可以选择需要的内核选项。完成后保存配置并退出。 5. 编译内核。在终端中运行以下命令: ``` make -j $(nproc) ``` "nproc"将使用所有可用的CPU核心进行编译编译时间可能会很长。 6. 安装内核。在终端中运行以下命令: ``` sudo make modules_install install ``` 此命令将安装内核及其模块。 7. 重启计算机以使用新内核。在终端中运行以下命令: ``` sudo reboot ``` 注意:编译安装内核是一个高级任务,需要一定的Linux编译知识。请确保您了解您正在进行的操作,并备份您的数据。 ### 回答2: Ubuntu 22.04 是一个基于Linux内核的操作系统,要编译内核,需要进行以下步骤: 1. 准备编译环境:安装必要的软件包和工具,包括gcc、make、libncurses-dev和git等。通过终端输入命令`sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev`来安装这些软件包。 2. 下载内核源代码:从官方网站或镜像网站上下载最新的Ubuntu内核源代码。通过终端进入下载目录,输入命令`git clone git://kernel.ubuntu.com/ubuntu/ubuntu-<version>.git`来下载源代码(`<version>`是对应的Ubuntu版本号)。 3. 配置内核:进入源代码目录,通过命令`make menuconfig`来打开配置界面。在这里可以根据需要进行内核功能的添加、删除或修改,然后保存退出。 4. 编译内核:通过命令`make -jX`进行内核编译,其中X表示并行编译的线程数,可以根据机器的配置来设定。编译时间可能较长,请耐心等待。 5. 安装内核编译完成后,可以通过命令`sudo make modules_install install`来安装编译好的内核到系统中。然后重启计算机,选择新编译内核启动。 6. 验证内核:启动后,在终端输入命令`uname -sr`来查看当前正在使用的内核版本号,确认是否成功安装了自己编译内核编译内核需要一定的技术和时间投入,如果没有特殊需求或专业知识,建议使用官方发布的Ubuntu内核,以确保系统的稳定性和兼容性。 ### 回答3: 编译Ubuntu 22.04内核需要以下步骤: 1. 下载源代码:首先,从Ubuntu的官方网站或GitHub上下载Ubuntu 22.04内核源代码。可以使用wget命令或者浏览器下载源代码压缩包。 2. 解压源代码:将下载的源代码压缩包解压到一个指定的目录下,可以使用tar命令解压压缩包。 3. 安装必要的编译工具:在编译内核之前,需要先安装一些必要的工具和依赖项。可以使用以下命令安装: ``` sudo apt update sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev ``` 4. 配置内核:进入源代码目录,使用make命令生成Makefile,并使用make menuconfig命令来配置内核。在配置界面中,根据需求选择所需的内核选项和驱动程序,并保存配置。 5. 编译内核:使用make命令开始编译内核。这个过程可能需要一些时间,取决于计算机的性能和编译选项。 6. 安装编译好的内核编译完成后,使用sudo make install命令将编译好的内核安装到系统中。 7. 更新GRUB引导:更新GRUB引导以添加新安装内核。使用sudo update-grub命令更新引导。 8. 重启系统:完成以上步骤后,可以重新启动计算机并选择新编译内核进行启动。 请注意,在编译内核之前,确保了解正在进行的操作,备份重要文件,并且具备一定的Linux系统和编译知识。编译内核可能会对系统产生一些影响,如果遇到任何问题,可以通过恢复备份或者重新安装系统来解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值