【原创】Ubuntu Pro 订阅中的realtime linux(Real-time Ubuntu/PREEMPT-RT)

以往我们开发实时Linux内核PREEMPT-RT,需要开发者自己打补丁-配置-编译构建安装,实时性暂且不谈,可靠性、稳定性完全没有保障,现在Ubuntu官方提供PREEMPT-RT支持啦。实时 Ubuntu 于2023 年 2 月 14 日基于Ubuntu 22.04 LTS发布,支持旨在为关键电信基础设施提供性能、超低延迟和安全性。基于 Linux 内核的 5.15 版本,Ubuntu 22.04 LTS 集成了 x86Arm 架构的树外PREEMPT_RT补丁。有了ubuntu官方支持,可靠性、稳定性有保障,赶快来体验一下。

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/

1. Ubuntu Pro简介

Ubuntu Pro 订阅(以前称为 “Ubuntu Advantage”)是 Canonical 推出的一项扩展性的安全维护和合规性订阅计划,2022 年 10 月首次发布 Beta 版本,最初是为提供全球服务的大型企业客户而设计的,为他们额外提供 5 年的 Ubuntu LTS 版本的扩展安全维护更新,因为这类客户通常希望他们的基础设施和应用程序具有更加长期的稳定性。

最多可在 5 台设备上为个人和小规模商业用途免费订阅,Ubuntu Pro 仅适用于 Ubuntu LTS(长期支持)版本,从 Ubuntu 16.04 开始,并承诺 10 年的安全更新,以及访问专有工具。

Ubuntu Pro 订阅承诺在不到 24 小时内为关键的 CVE 打补丁,并将可选的技术支持扩展到主操作系统之外的额外 23000 个开源包和工具链,而不仅仅是 Ubuntu 的主软件存储库。

因此与标准的 Ubuntu 相比,Ubuntu Pro 是一个更全面的产品,除了为关键的、高度的和中度的常见漏洞提供扩展的安全更新,它还会将安全覆盖范围扩大到成千上万的应用程序和工具链,其中包括 Ansible、Apache Tomcat、Apache Zookeeper、Docker、Drupal、Nagios、Node.js、phpMyAdmin、Puppet、PowerDNS、Python 2、Redis、Rust、WordPress、ROS等等。

Ubuntu Pro 还使用户可以访问 FIPS 140-2 认证的加密包、在受监管和审计的环境中进行合规性管理的工具、对无重启内核更新的 Livepatch 支持,以及系统管理和使用 Landscape 的大规模自动修补。

Canonical 表示,如果超过五台 PC 需要 Ubuntu Pro 订阅,则必须购买付费计划,目前工作站的价格为每年 25 美元,服务器的价格为每年 500 美元,并提供 30 天免费试用。官方 Ubuntu 社区成员可以获得最多 50 台设备的免费支持。

更多关于ubuntu pro介绍详见官网https://ubuntu.com/pro

2. Real-time Ubuntu

以上是Ubuntu Pro 的一些介绍,不是我们的重点。

“2023 年 2 月 14 日,伦敦,Canonical 宣布实时 Ubuntu 22.04 LTS 正式发布,实时 Ubuntu 提供对外部事件的确定性响应,旨在最大限度地减少指定期限内的响应时间保证。新的企业级实时内核非常适合严格的低延迟要求。工业、电信、汽车、航空航天和国防以及公共部门和零售业的企业现在可以在开源操作系统 (OS) 上运行其要求最苛刻的工作负载并开发各种时间敏感型应用程序。”

基于 Linux 内核的 5.15 版本,Ubuntu 22.04 LTS 集成了 x86Arm 架构的树外PREEMPT_RT补丁。PREEMPT_RT补丁集可减少最严格工作负载所需的内核延迟,有助于确保时间可预测的任务执行。满足严格的确定性要求和上限执行时间,具有PREEMPT_RT的 Ubuntu 使内核比主线 Linux 更具抢占性。“

这是ubuntu首次官方支持PRRMPT-RT,要知道,以往都是要开发者自己构建,实时性暂且不谈,可靠性、稳定性完全没有保障,这下有ubuntu在背后支持,可靠性、稳定性有保障,赶快来体验一下。

3. 订阅Ubuntu Pro

实时ubuntu 基于Ubuntu 22.04 LTS,且只有Ubuntu Pro提供该服务,没有Ubuntu Pro服务是无法直接通过apt-get install安装的实时内核的。

3.1 安装Ubuntu 22.04 LTS

先安装Ubuntu 22.04 LTS版本,X64桌面版安装镜像下载地址:https://cn.ubuntu.com/download/desktop。

3.2 注册并订阅个人服务

将 Ubuntu Pro 订阅添加到 Ubuntu LTS 设备,用户需要免费的 Ubuntu One 帐户,到Ubuntu Pro注册一个Ubuntu 账号,https://ubuntu.com/pro,并订阅个人服务,最多可在 5 台设备上为个人和小规模商业用途免费订阅。

在Ubuntu One 帐户中访问 Ubuntu Pro 令牌。

3.3 绑定设备

方式一,对于刚安装好的Ubuntu 22.04 LTS,第一次启动时在导航窗口可以输入token直接激活ubuntu prp服务,或者在在 Livepatch 选项卡中软件和更新实用程序中启用(其中 TOKEN 必须替换为用户的 Ubuntu Pro token)。

方式二,命令行启用,打开终端执行激活ubunutu pro服务

sudo pro attach 你的token

4. 安装 realtime Linux kernel

激活ubunutu pro服务后,默认还是普通Linux内核,如果要使用实时ubuntu,通过pro命令启用:

wsg1100@wsg1100-virtual-machine:~$ sudo pro enable
cc-eal esm-infra fips-updates realtime-kernel ros-updates
esm-apps fips livepatch ros usg
wsg1100@wsg1100-virtual-machine:~$ sudo pro enable realtime-kernel

启用完成后,安装:

 sudo apt-get install  linux-realtime

重启,重启时grub中选中realtime kernel。检查当前内核版本:

5. Ubuntu Pro realtime kernel 简单测试

测试机器硬件配置如下(未启用超线程):

忽略图中的virtual-machine,这是直接在物理机上跑的。

使用stress加点压力:

![Screenshot from 2023-03-25 11-13-40](C:\Users\wsg19\Desktop\新建文件夹\Screenshots\Screenshot from 2023-03-25 11-13-40.png)

运行一小时多,结果如下(us):

注:中途stress被我不注意停了

T: 0( 3466)P:99 I:1000 C:4105948 Min: 2 Act: 2 Avg: 3 Max: 246
T: 1( 3467)P:99 I:1500 C:2737299 Min: 2 Act: 2 Avg: 3 Max: 241
T: 2( 3468) P:99 I:2000 C:2052974 Min: 2 Act: 2 Avg: 3 Max: 237
T: 3 ( 3469) P:99 I:2500 C:1642379 Min: 2 Act: 2 Avg: 3 Max: 245

这是安装后直接测试的结果,未经任何配置,不同的工工况下对调度、中断、外设实时性要求不同,影响因素也不同。这里的测试也只是cyclitest周期定时调度层面的实时性,定时调度只是最基本的应用场景,所以仅供参考。

6. 获取ubuntu官方实时内核源码

实时ubuntu有ubuntu在背后支持,可靠性、稳定性有保障,一般情况下,如果只开发一些与实时无关的外设驱动模块,不需要内核源码,完成以上步骤即可。

但大多工业设备、电信、汽车使用场景,或多或少都需要实时外设,这个时候基本都需要修改PREEMPT-RT源码,比如使用实时外设需要调整外设中断线程优先级、使用网络优化实时网络包路径等等,这时候我们就需要修改内核源码,那如何获取ubuntu官方实时内核源码呢?

/etc/apt/sources.list.d/ubuntu-realtime-kernel.list中启用源代码存储库。

deb [arch=amd64] https://esm.ubuntu.com/realtime/ubuntu jammy main
deb-src https://esm.ubuntu.com/realtime/ubuntu jammy main

通过apt获取源代码:

wsg1100@wsg1100-virtual-machine:~$ apt source --only-source linux-realtime
正在读取软件包列表... 完成
提示:linux-realtime 的打包工作被维护于以下位置的 Git 版本控制系统中:
git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
请使用:
git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
获得该软件包的最近更新(可能尚未正式发布)。
需要下载 206 MB 的源代码包。
获取:1 https://esm.ubuntu.com/realtime/ubuntu jammy/main linux-realtime 5.15.0-1034.37 (tar) [195 MB]
22% [1 linux-realtime 55.5 MB/195 MB 28%] 1,690 kB/s 1分 29秒

获取后自动解压到本地目录下linux-realtime-5.15.0

我们还可以从ubuntu仓库clone:

git clone https://git.launchpad.net/~git-ubuntu-import/ubuntu/+source/linux-meta-realtime

如果你想在没有启用ubunutu pro的机器上也安装上实时内核呢?

方式一,apt-get install安装的debian包会缓存在目录下/var/cache/apt/archives/,也可以直接拷出到其他机器上安装。

wsg1100@wsg1100-virtual-machine:~$ ls /var/cache/apt/archives/linux-*realtime*
/var/cache/apt/archives/linux-headers-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb
/var/cache/apt/archives/linux-headers-realtime_5.15.0.1034.33_amd64.deb
/var/cache/apt/archives/linux-image-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb
/var/cache/apt/archives/linux-image-realtime_5.15.0.1034.33_amd64.deb
/var/cache/apt/archives/linux-modules-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb
/var/cache/apt/archives/linux-modules-extra-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb
/var/cache/apt/archives/linux-realtime_5.15.0.1034.33_amd64.deb
/var/cache/apt/archives/linux-realtime-headers-5.15.0-1034_5.15.0-1034.37_all.deb

方式二,我们可以从已安装的ubuntu中,重新打包出安装包,然后安装到其他机器上,命令如下:

#查看当前安装列表
$ dpkg -l | grep realtime
ii linux-headers-5.15.0-1034-realtime 5.15.0-1034.37 amd64 Linux kernel headers for version 5.15.0 on 64 bit x86 SMP
ii linux-headers-realtime 5.15.0.1034.33 amd64 Linux kernel headers for real-time systems.
ii linux-image-5.15.0-1034-realtime 5.15.0-1034.37 amd64 Signed kernel image realtime
ii linux-modules-5.15.0-1034-realtime 5.15.0-1034.37 amd64 Linux kernel extra modules for version 5.15.0 on 64 bit x86 SMP
ii linux-modules-extra-5.15.0-1034-realtime 5.15.0-1034.37 amd64 Linux kernel extra modules for version 5.15.0 on 64 bit x86 SMP
ii linux-realtime-headers-5.15.0-1034 5.15.0-1034.37 all Header files related to Linux kernel version 5.15.0
#从已安装系统重重新打包deb
$sudo dpkg-repack linux-modules-extra-5.15.0-1034-realtime linux-modules-5.15.0-1034-realtime linux-headers-5.15.0-1034-realtime

生成后在当前目录下,直接拷出到其他机器上安装:

$ ls *deb
linux-headers-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb linux-modules-extra-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb
linux-modules-5.15.0-1034-realtime_5.15.0-1034.37_amd64.deb

方式三,基于上面的源码重新编译构建,详见本博客其他文章。

【原创】Ubuntu Pro 中的RealTime linux(Real-time Ubuntu/PREEMPT-RT/ubuntu官方PREEMPT-RT)的更多相关文章

  1. How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux

    Objective The objective is to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux. This a ...

  2. MacBook Pro/Air 下使用 linux ubuntu 系统 波浪号“~”变成其他 符号 的完美解决办法

    打开终端,输入: sudo su - > /sys/module/hid_apple/parameters/iso_layout sudo su -需要root权限,所以使用前请注意已下载roo ...

  3. 利用workbench对linux/Ubuntu系统中的mysql数据库进行操作

    在上一篇文章中,我分享了在linux中如何安装mysql数据库,但是这只是安装了mysql的服务,并没有图形化管理界面,所以这样子操作起来并没有那么方便,那么现在我们就来实现如何利用在window中安 ...

  4. 【Linux】【Fabric】在ubuntu容器中安装Fabric环境

    前言 想在docker容器中安装docker部署fabric网络,有了以下尝试. 尝试了centos镜像.redhat镜像都没解决docker容器中安装运行docker的问题,最后ubuntu成功了! ...

  5. Unity中的Mono & Linux上编译Mono的流程

    前段时间编译了一下Unity的Mono,看了很多相关的文章,也遇到很多新坑.所以来总结一下,加深自己对Mono的理解 为什么Unity可以跨平台运行呢 通常Unity的脚本有C#.JS.Boo.不过现 ...

  6. 重设windows10中的sub linux系统用户密码

    原文:重设windows10中的sub linux系统用户密码 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/haiyoung/article/detai ...

  7. 2013年Linux周刊读者投票出炉 Ubuntu、Android榜上有名

    摘要:一年一度的Linux周刊读者投票结果已经登于2013第12期.这是Linux爱好者们自己的“奥斯卡”: Linux周刊的小编们列出一系列Linux相关的“最佳项目”进行面向读者的投票.竞选项目包 ...

  8. 【系统】CentOS、Ubuntu、Debian三个linux比较异同

    CentOS.Ubuntu.Debian三个linux比较异同 2014-07-31 12:58             53428人阅读             评论(6)             ...

  9. Ubuntu系统中登陆阿里云服务器的方法

    如果您购买了阿里云服务器,恰巧又在使用Ubuntu操作系统,那么恭喜你来对地方了,今天给大家分享一下如何在Ubuntu中登陆阿里云服务器: 主要使用两款软件:1.SecureCRT:2.SecureF ...

  10. Linux内核树的建立-基于ubuntu系统

    刚看 O'REILLY 写的<LINUX 设备驱动程序>时.作者一再强调在编写驱动程序时必须 建立内核树.先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目 ...

随机推荐

  1. 如何使用autotools/automake自动生成Makefile文件

    前言: Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Linux为我们提供了自动生成功能完善的Makefile文 ...

  2. Django框架搭建web项目(二)

    1.在路径XXXXX\mydjango\mydjango\mydjango下新建views.py(在浏览器中url请求后所展示的内容设置) from django.http import HttpRe ...

  3. mybatis批量更新的几种方式和性能对比

    https://blog.csdn.net/csdnbeyoung/article/details/106258611

  4. miou

    1. 前言 本文学习记录了机器学习中的分类常见评价指标以及分割中的MIoU. 主要有以下概念:Accuracy, Precision, Recall, Fscore,混淆矩阵,IoU及MIoU. 2. ...

  5. Dependencies 和 Libraries 的区别

    Dependencies 和 Libraries 的区别 - 如何导入 jar 包 虽然现在的项目大多数人更愿意使用 Maven 等工具构建,但是在学习 Project Structure 这块的时候 ...

  6. java 操作 zookeeper

    pom.xml<dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</a ...

  7. mysql 循环 例子

    mysql 循环生成数据demo: DROP PROCEDURE IF EXISTS test_insert; DELIMITER;; CREATE PROCEDURE test_insert() B ...

  8. pip 临时切换 国内源

    sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

  9. pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统。

    提示信息显示安装pycharm2019.3.1版本需要的JetBrains Runtime 11不支持windows 32位系统. 2.更换pycharm社区版的安装版本 百度找到解决办法,参考文章& ...

  10. 如何确保获取的输入为整数-C语言基础

    这一篇探讨的是如何确保你输入的数据是一个整数.虽然标题用的是这个,但我其实真正想要探讨的内容是 "在程序调试的过程中,需要注意把输入缓存区中的上一次输入的残留信息清理干净,以免影响下一次的输 ...