树莓派Raspiberry 编译Linux实时内核PREEMPT-RT 实战

树莓派4B 实时内核(Preempt_RT)的配置和编译
https://blog.csdn.net/zlp_zky/article/details/114994444

基本按照这个blog来操作.

几点问题:
1. 官方raspios 只有4.19.y-rt 是打过补丁的,可以直接下载编译.

其它版本需要自己下载raspi 源码并打补丁.

(2)blog中编译命令
make -j4 zImage modules dtbs

其中 zImage 已经没有了(我的arm64平台上没有了). . . 可以直接编译成 deb的包形式,方便安装.

对应的编译目标为: deb-pkg

如下命令可以放到后台,之后关机睡觉, 第二天早上看是否编译完成
nohup make -j4 zImage modules dtbs deb-pkg &> ~/maketask.out &

查看编译的命令:
watch -n 0.5 tail ~/maketask.out -n20

查看后台make是否运行:
ps -aux | grep make

  1. 编译过程中, 会产生一个编译错误,导致编译退出. 建议先修改好源码, 在开始编译, 在关机睡觉~~~否则第二天一场空.

/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc’; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
————————————————
解决: 采用此贴中的方法一, 并没有注释那行, 而是加上 extern 就好了.

https://blog.csdn.net/weixin_42792088/article/details/121657463

  1. 编译完成后, 在源代码同一级目录下产生3个deb包:

linux-headers-4.19.71-rt24-v8_4.19.71-rt24-v8-1_arm64.deb
linux-image-4.19.71-rt24-v8_4.19.71-rt24-v8-1_arm64.deb
linux-libc-dev_4.19.71-rt24-v8-1_arm64.deb

  1. 安装本地deb包, 没有yum localinstall xxx 的类似命令, 可使用gdebi代替:
    apt install gdebi-core
    gdebi linux-image-4.19.71-rt24-v8_4.19.71-rt24-v8-1_arm64.deb

  2. 安装前是5.10的内核,但是不带实时补丁.

(https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2021-11-08/2021-10-30-raspios-bullseye-arm64-lite.zip)
Linux ProfinetPI 5.10.63-v8+ #1459 SMP PREEMPT Wed Oct 6 16:42:49 BST 2021 aarch64 GNU/Linux
测试实时性:
apt-get install rt-tests
cyclictest -t 5 -p 80 -n
新版本参数-n没有了, 改为次数10000, 即: -l 10000, 结果
cyclictest -t 5 -p 80 -l 10000
WARN: cyclictest was not built with the numa option
/dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.24 0.17 0.10 1/134 262521

T: 0 (262515) P:80 I:1000 C: 10000 Min: 12 Act: 26 Avg: 22 Max: 178
T: 1 (262516) P:80 I:1500 C: 6669 Min: 11 Act: 29 Avg: 19 Max: 102
T: 2 (262517) P:80 I:2000 C: 5001 Min: 13 Act: 30 Avg: 23 Max: 196
T: 3 (262518) P:80 I:2500 C: 4001 Min: 14 Act: 29 Avg: 23 Max: 104
T: 4 (262519) P:80 I:3000 C: 3334 Min: 14 Act: 29 Avg: 23 Max: 135

  1. 安装更改配置文件/boot/config.txt, 以切换新的内核.

$ vi /boot/config.txt 最后一行添加:
kernel=vmlinuz-4.19.71-rt24-v8
之后重启~~

  1. 验证是否是刚编译的内核:
    uname -a
    Linux ProfinetPI 4.19.71-rt24-v8 #1 SMP PREEMPT RT Wed Jan 26 01:35:13 CST 2022 aarch64 GNU/Linux
    再次运行测试:
    WARN: cyclictest was not built with the numa option
    /dev/cpu_dma_latency set to 0us
    policy: fifo: loadavg: 0.93 0.63 0.27 1/147 741

T: 0 ( 737) P:80 I:1000 C: 10000 Min: 9 Act: 30 Avg: 24 Max: 93
T: 1 ( 738) P:80 I:1500 C: 6673 Min: 9 Act: 30 Avg: 24 Max: 109
T: 2 ( 739) P:80 I:2000 C: 5005 Min: 11 Act: 33 Avg: 24 Max: 101
T: 3 ( 740) P:80 I:2500 C: 4004 Min: 10 Act: 32 Avg: 27 Max: 99
T: 4 ( 741) P:80 I:3000 C: 3336 Min: 11 Act: 29 Avg: 25 Max: 94

Max值好像小了不少. 总体差别不到 . . . . 空载时候估计也不会有啥差别, 等cpu任务繁忙时再测试.

Original: https://www.cnblogs.com/zhw618/p/15847531.html
Author: zhw618
Title: 树莓派Raspiberry 编译Linux实时内核PREEMPT-RT 实战

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581792/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring 进入Controller前参数校验

    在进入Controller前完成参数的校验,针对对象参数 分为两个验证方式 (1)直接使用已定义的校验方式 1、在需要进行校验的属性上增加校验类型注解 import java.ut…

    Linux 2023年6月7日
    0131
  • 重启电脑后Mysql无法在cmd运行

    问题描述:如果在cmd窗口显示 ‘mysql’不是内&#x90…

    Linux 2023年6月15日
    0145
  • Linux中CentOS 7版本安装JDK、Tomcat、MySQL、lezsz、maven软件详解

    软件安装 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rp…

    Linux 2023年6月6日
    0106
  • Linux服务器配置git服务

    现在 Github 已经支持个人建立私有仓库,包括国内的一些开源平台如 Gitee 等也支持私有仓库,所以直接去建立私有仓库即可。或者可以自己买服务器搭建 GitLab。但是这篇文…

    Linux 2023年6月14日
    0111
  • Windows 添加nginx到服务

    一、下载nginx 地址:http://nginx.org/en/download.html (稳定版) 解压到相应的磁盘,本文是:E:\nginx\nginx-1.18.0 二、…

    Linux 2023年6月8日
    0116
  • 【vue 引入cdn加载失败 解决办法】

    在项目index.html中放上 生产环境下自动加载 src下可以把文件放到自己服务器,本地加载 Original: https://www.cnblogs.com/Slience…

    Linux 2023年6月8日
    0110
  • Centos7 安装部署Kubernetes(k8s)集群

    一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernet…

    Linux 2023年6月7日
    0104
  • Docker Compose 安装

    方法一:这种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,可以尝试使用网络上提供的国内安装的方法将@version 替换为要安装的版本号 sudo curl -L …

    Linux 2023年6月13日
    0102
  • Android BLE 蓝牙开发——扫码枪基于BLESSED

    一、蓝牙模式HID与BLE 当扫码枪与手机连接时,通常采用的是 蓝牙HID(Human Interface Device)模式。本质上是一个把扫码枪作为一个硬件键盘,按照键盘协议把…

    Linux 2023年6月13日
    0109
  • 聊聊.netcore采坑那一些事之系统时间and文件路径

    聊聊 .netcore 采坑那一些事之系统时间and 文件路径 Hi,小伙伴大家好,最近工作比较忙,很久没有和大家分享点东西了。这个周末都加了两天班。公司的新项目都是采用.netc…

    Linux 2023年6月14日
    079
  • podman无根用户基本设置和使用

    在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置 cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使…

    Linux 2023年6月13日
    089
  • 排序算法

    内部排序 这里先介绍一个概念,算法稳定性 算法稳定性 — 假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]…

    Linux 2023年6月6日
    0134
  • CentOS 7.6 安装 MySQL-5.7.31(RPM方式安装)

    准备工作: 注:5.7.31版本安装步骤及初始化和之前版本有较大区别 CentOS 7.6 系统: 带GUI的服务器 默认安装 MySQL 5.7.31 安装包: 1.RPM安装包…

    Linux 2023年6月8日
    089
  • JVM学习 运行时数据区 PC寄存器、本地方法栈、虚拟机栈

    2、运行时数据区 哔哩哔哩 尚硅谷视频 宋红康老师 2.1、程序计数器(PC寄存器) 作用 PC寄存器用来存储指向下一条指令的地址,也就是即将要执行指令的代码。由执行引擎读取下一条…

    Linux 2023年6月7日
    0110
  • 个人学习-Linux文件系统架构

    个人学习-Linux文件系统架构 1. 参考文章 [1] https://blog.csdn.net/Holy_666/article/details/86532671 [2]CS…

    Linux 2023年6月6日
    0104
  • docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况。…

    Linux 2023年6月13日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球