
【原創(chuàng)】Ubuntu Pro 訂閱中的realtime linux(Real-time Ubuntu/PREEMPT-RT)
目錄-
【原創(chuàng)】Ubuntu Pro 訂閱中的realtime linux(Real-time Ubuntu/PREEMPT-RT)
- 1. Ubuntu Pro簡介
- 2. Real-time Ubuntu
- 3. 訂閱Ubuntu Pro
- 4. 安裝 realtime Linux kernel
- 5. Ubuntu Pro realtime kernel 簡單測試
- 6. 獲取ubuntu官方實時內(nèi)核源碼
- 附
版權(quán)聲明:本文為本文為博主原創(chuàng)文章,轉(zhuǎn)載請注明出處。如有問題,歡迎指正。博客地址:https://www.cnblogs.com/wsg1100/
1. Ubuntu Pro簡介
Ubuntu Pro 訂閱(以前稱為 “Ubuntu Advantage”)是 Canonical 推出的一項擴(kuò)展性的安全維護(hù)和合規(guī)性訂閱計劃,2022 年 10 月首次發(fā)布 Beta 版本,最初是為提供全球服務(wù)的大型企業(yè)客戶而設(shè)計的,為他們額外提供 5 年的 Ubuntu LTS 版本的擴(kuò)展安全維護(hù)更新,因為這類客戶通常希望他們的基礎(chǔ)設(shè)施和應(yīng)用程序具有更加長期的穩(wěn)定性。
最多可在 5 臺設(shè)備上為個人和小規(guī)模商業(yè)用途免費訂閱,Ubuntu Pro 僅適用于 Ubuntu LTS(長期支持)版本,從 Ubuntu 16.04 開始,并承諾 10 年的安全更新,以及訪問專有工具。
Ubuntu Pro 訂閱承諾在不到 24 小時內(nèi)為關(guān)鍵的 CVE 打補(bǔ)丁,并將可選的技術(shù)支持?jǐn)U展到主操作系統(tǒng)之外的額外 23000 個開源包和工具鏈,而不僅僅是 Ubuntu 的主軟件存儲庫。
因此與標(biāo)準(zhǔn)的 Ubuntu 相比,Ubuntu Pro 是一個更全面的產(chǎn)品,除了為關(guān)鍵的、高度的和中度的常見漏洞提供擴(kuò)展的安全更新,它還會將安全覆蓋范圍擴(kuò)大到成千上萬的應(yīng)用程序和工具鏈,其中包括 Ansible、Apache Tomcat、Apache Zookeeper、Docker、Drupal、Nagios、Node.js、phpMyAdmin、Puppet、PowerDNS、Python 2、Redis、Rust、WordPress、ROS等等。
Ubuntu Pro 還使用戶可以訪問 FIPS 140-2 認(rèn)證的加密包、在受監(jiān)管和審計的環(huán)境中進(jìn)行合規(guī)性管理的工具、對無重啟內(nèi)核更新的 Livepatch 支持,以及系統(tǒng)管理和使用 Landscape 的大規(guī)模自動修補(bǔ)。
Canonical 表示,如果超過五臺 PC 需要 Ubuntu Pro 訂閱,則必須購買付費計劃,目前工作站的價格為每年 25 美元,服務(wù)器的價格為每年 500 美元,并提供 30 天免費試用。官方 Ubuntu 社區(qū)成員可以獲得最多 50 臺設(shè)備的免費支持。
更多關(guān)于ubuntu pro介紹詳見官網(wǎng)https://ubuntu.com/pro
2. Real-time Ubuntu
以上是Ubuntu Pro 的一些介紹,不是我們的重點。
“2023 年 2 月 14 日,倫敦,Canonical 宣布實時 Ubuntu 22.04 LTS 正式發(fā)布,實時 Ubuntu 提供對外部事件的確定性響應(yīng),旨在最大限度地減少指定期限內(nèi)的響應(yīng)時間保證。新的企業(yè)級實時內(nèi)核非常適合嚴(yán)格的低延遲要求。工業(yè)、電信、汽車、航空航天和國防以及公共部門和零售業(yè)的企業(yè)現(xiàn)在可以在開源操作系統(tǒng) (OS) 上運(yùn)行其要求最苛刻的工作負(fù)載并開發(fā)各種時間敏感型應(yīng)用程序。”
”基于 Linux 內(nèi)核的 5.15 版本,Ubuntu 22.04 LTS 集成了 x86 和 Arm 架構(gòu)的樹外PREEMPT_RT補(bǔ)丁。PREEMPT_RT補(bǔ)丁集可減少最嚴(yán)格工作負(fù)載所需的內(nèi)核延遲,有助于確保時間可預(yù)測的任務(wù)執(zhí)行。滿足嚴(yán)格的確定性要求和上限執(zhí)行時間,具有PREEMPT_RT的 Ubuntu 使內(nèi)核比主線 Linux 更具搶占性。“
這是ubuntu首次官方支持PRRMPT-RT,要知道,以往都是要開發(fā)者自己構(gòu)建,實時性暫且不談,可靠性、穩(wěn)定性完全沒有保障,這下有ubuntu在背后支持,可靠性、穩(wěn)定性有保障,趕快來體驗一下。
3. 訂閱Ubuntu Pro
實時ubuntu 基于Ubuntu 22.04 LTS,且只有Ubuntu Pro提供該服務(wù),沒有Ubuntu Pro服務(wù)是無法直接通過apt-get install
安裝的實時內(nèi)核的。
3.1 安裝Ubuntu 22.04 LTS
先安裝Ubuntu 22.04 LTS版本,X64桌面版安裝鏡像下載地址:https://cn.ubuntu.com/download/desktop。
3.2 注冊并訂閱個人服務(wù)
將 Ubuntu Pro 訂閱添加到 Ubuntu LTS 設(shè)備,用戶需要免費的 Ubuntu One 帳戶,到Ubuntu Pro注冊一個Ubuntu 賬號,https://ubuntu.com/pro,并訂閱個人服務(wù),最多可在 5 臺設(shè)備上為個人和小規(guī)模商業(yè)用途免費訂閱。
在Ubuntu One 帳戶中訪問 Ubuntu Pro 令牌。
3.3 綁定設(shè)備
方式一,對于剛安裝好的Ubuntu 22.04 LTS,第一次啟動時在導(dǎo)航窗口可以輸入token直接激活ubuntu prp服務(wù),或者在在 Livepatch 選項卡中軟件和更新實用程序中啟用(其中 TOKEN 必須替換為用戶的 Ubuntu Pro token)。
方式二,命令行啟用,打開終端執(zhí)行激活ubunutu pro服務(wù)
sudo pro attach 你的token
4. 安裝 realtime Linux kernel
激活ubunutu pro服務(wù)后,默認(rèn)還是普通Linux內(nèi)核,如果要使用實時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。檢查當(dāng)前內(nèi)核版本:
5. Ubuntu Pro realtime kernel 簡單測試
測試機(jī)器硬件配置如下(未啟用超線程):
忽略圖中的virtual-machine,這是直接在物理機(jī)上跑的。
使用stress
加點壓力:

運(yùn)行一小時多,結(jié)果如下(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
這是安裝后直接測試的結(jié)果,未經(jīng)任何配置,不同的工工況下對調(diào)度、中斷、外設(shè)實時性要求不同,影響因素也不同。這里的測試也只是cyclitest
周期定時調(diào)度層面的實時性,定時調(diào)度只是最基本的應(yīng)用場景,所以僅供參考。
6. 獲取ubuntu官方實時內(nèi)核源碼
實時ubuntu有ubuntu在背后支持,可靠性、穩(wěn)定性有保障,一般情況下,如果只開發(fā)一些與實時無關(guān)的外設(shè)驅(qū)動模塊,不需要內(nèi)核源碼,完成以上步驟即可。
但大多工業(yè)設(shè)備、電信、汽車使用場景,或多或少都需要實時外設(shè),這個時候基本都需要修改PREEMPT-RT源碼,比如使用實時外設(shè)需要調(diào)整外設(shè)中斷線程優(yōu)先級、使用網(wǎng)絡(luò)優(yōu)化實時網(wǎng)絡(luò)包路徑等等,這時候我們就需要修改內(nèi)核源碼,那如何獲取ubuntu官方實時內(nèi)核源碼呢?
在/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 的打包工作被維護(hù)于以下位置的 Git 版本控制系統(tǒng)中:
git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
請使用:
git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
獲得該軟件包的最近更新(可能尚未正式發(fā)布)。
需要下載 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 http://www.ythuaji.com.cn/uploads/allimg/fxmfc2crgcz
附
如果你想在沒有啟用ubunutu pro的機(jī)器上也安裝上實時內(nèi)核呢?
方式一,apt-get install
安裝的debian包會緩存在目錄下/var/cache/apt/archives/
,也可以直接拷出到其他機(jī)器上安裝。
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中,重新打包出安裝包,然后安裝到其他機(jī)器上,命令如下:
#查看當(dāng)前安裝列表
$ 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
#從已安裝系統(tǒng)重重新打包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
生成后在當(dāng)前目錄下,直接拷出到其他機(jī)器上安裝:
$ 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
方式三,基于上面的源碼重新編譯構(gòu)建,詳見本博客其他文章。