【原创】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. 处理时间转换不正确-Springboot、springclound、feign、http请求

    SpringBoot.SpringCloud.feign.前后端时间解析不正确时,我们可以自定义HttpMessageConverters,以达到我们希望的结果 参考链接:https://www.cn ...

  2. Cubemx 生成工程代码失败的原因

    折腾了好久(躺)翻了很多解答试了试终于捣鼓正常了,就在这里汇总一下看到过的问题 1.文件名.工程名或者工程文件路径/库路径上有中文名 2.Cubemx的版本过高 3.java环境的版本不适配 4.可能 ...

  3. MySQL错误合集

    Error Code: 1052. Column 'Sno' in field list is ambiguous ambiguous意味含糊不清,常见于多个表中有相同名字的属性,在查询时需要分别说明 ...

  4. ARP协议 路由器原理

    ARP协议 路由器原理     1 广播与广播域 广播:将广播地址作为目的地址的数据帧 广播域:网络中能够接收到同一个广播所有节点的集合(在这里广播域越小越好) 交换机控制不了广播 路由器可以控制广播 ...

  5. 网易-java线程的interrupt

    java线程的interrupt方法初一接触的时候,会和过去各种面向过程语言线程中断线程的方法有点不一样. java里不提倡直接将线程kill掉,实际上如果想直接kill线程可以用stop方法 可以看 ...

  6. c++结对编程

    || |:--|:--| |Github项目|Github地址 |结对伙伴|伙伴地址1伙伴地址2 PSP表格 ||| |:--|:--|:--|:--| |PSP2.1|Personal Softwa ...

  7. 3.Vue常用特性

    1.表单操作 (1)基于Vue的表单操作 input 单行文本 处理方式就是使用 v-model双向绑定data中的数据 1 <input type="text" v-mod ...

  8. 面试题:int[] arr 和 int... arr在参数列表中是一回事儿吗?

    public class Exer { public static void main(String[] args) { Base1 b1 = new Sub1(); b1.add(1,2,3); } ...

  9. @click使用三元运算符

    @click="scope.row.status == 1 ? '' :  blockUp(scope.row) "

  10. css3 新增的特性有哪些?

    css3 选择器. css3边框(borders) css3 背景 css3 渐变 css3 文本效果 css3 字体(@font-size规则) css3 转化和变形 1)2D转换方法 2)3D转换 ...