Linux

Linux 5.9.1 上的實時更新檔不顯示 arm64 選項的完全搶占選項

  • November 11, 2020

我正在嘗試在 Raspberry Pi 4B 上獲得我自己的自定義實時 Linux。我的狀態是這樣的:

  1. 我建構了 Linux 5.9.1 版本,並擁有自己的 U-Boot RFS 版本,我可以使用它成功載入和啟動核心、掛載 RFS,以及訪問核心控制台。
  2. 我需要在我正在建構的 Linux 核心之上應用實時更新檔,因此我使用了適用於 Linux 5.9.1 的相應更新檔。由於我正在建構 64 位核心,因此我使用以下命令進入核心配置並更新可搶占選項:
   make ARCH=arm64 CROSS_COMPILE=aarch64-rpi3-linux-gnu- menuconfig

我在這裡看不到完全可搶占的核心選項:.config - Linux/ arm64 5.9.1 Kernel Configuration

一般設定────────────────────────────────────────────── ──────────────────

    ┌────────────────────── Preemption Model ───────────────────────┐
    │  Use the arrow keys to navigate this window or press the      │  
    │  hotkey of the item you wish to select followed by the <SPACE │  
    │  BAR>. Press <?> for additional information about this        │  
    │ ┌───────────────────────────────────────────────────────────┐ │  
    │ │       ( ) No Forced Preemption (Server)                   │ │  
    │ │       ( ) Voluntary Kernel Preemption (Desktop)           │ │  
    │ │       (X) Preemptible Kernel (Low-Latency Desktop)        │ │  
    │ │                                                           │ │  
    │ │                                                           │ │  
    │ │                                                           │ │  
    │ └───────────────────────────────────────────────────────────┘ │  
    ├───────────────────────────────────────────────────────────────┤  
    │                    <Select>      < Help >                     │  

當我執行時:

make menuconfig

儘管對於 x86 選項,我確實看到了該選項:.config - Linux/ x86 5.9.1 Kernel Configuration

一般設定────────────────────────────────────────────── ──────────────────

    ┌────────────────────── Preemption Model ───────────────────────┐
    │  Use the arrow keys to navigate this window or press the      │  
    │  hotkey of the item you wish to select followed by the <SPACE │  
    │  BAR>. Press <?> for additional information about this        │  
    │ ┌───────────────────────────────────────────────────────────┐ │  
    │ │       ( ) No Forced Preemption (Server)                   │ │  
    │ │       ( ) Voluntary Kernel Preemption (Desktop)           │ │  
    │ │       (X) Preemptible Kernel (Low-Latency Desktop)        │ │  
    │ │       ( ) Fully Preemptible Kernel (Real-Time)            │ │  
    │ │                                                           │ │  
    │ │                                                           │ │  

Linux 核心:5.9.1 使用的 Linux RT 更新檔:patch-5.9.1-rt19.patch.xz

我也啟用了專家模式,如 unix.stackexchange .config - Linux/x86 5.9.1 Kernel Configuration 中的另一篇文章中所述

一般設定────────────────────────────────────────────── ────────────────── ┌──────────────────────────── 一般設置────────────────────────────────┐ │ 箭頭鍵導航菜單。選擇子菜單—>(或空││

子菜單—-)。突出顯示的字母是熱鍵。按下包括,│

│ 排除,模組化特徵。按退出,<?> │

│ 為幫助,</> 為搜尋。圖注: [ *] 內置 $$ $$排除模組│

│ ┌────^(-)────────────────────────────────── ──────────────────────────┐ │

│ │ [* ] 支持使用 LZMA 壓縮的初始 ramdisk/ramfs │ │

│ │ [ *] 支持初始 ramdisk /ramfs 使用 XZ 壓縮 │

│ │ [* ] 支持使用 LZO 壓縮的初始 ramdisk/ramfs │

│ │ [ *] 支持使用 LZ4 壓縮的初始 ramdisk/ramfs │ │

│ │ [* ] 支持使用 ZSTD 壓縮的初始 ramdisk/ramfs │ │

│ │

$$ $$啟動配置支持 │ │

│ │ 編譯器優化級別(優化性能(-O2))–│

│ │ - *- 配置標準核心功能(專家使用者) —> │ │

│ │ -* - 啟用 membarrier() 系統call │ │

│ │ - *- 載入所有符號以進行調試/ksymoops │ │

│ │ -* - 包括 kallsyms 中的所有符號 │ │

│ │ [ *] 啟用 bpf() 系統呼叫 │ │

│ │ $$ $$啟用 userfaultfd() 系統呼叫 │ │

│ │ [* ] 啟用 rseq() 系統呼叫 │ │

│ │ $$ $$ 啟用 rseq() 系統呼叫的調試 │ │

│ │ $$ * $$嵌入式系統 │ │

│ │ $$ $$PC/104 支持 │ │

│ │ 核心性能事件和計數器 —> │ │

我看到這個問題在之前為 Linux 5.6.19 發布的 RT 更新檔中沒有發生。我這邊的 64 位機箱有什麼遺漏嗎?

我在 Kernel.org 上提出了它,然後得到一個響應,顯然它是打算這樣做的。

https://lore.kernel.org/linux-rt-users/20200824154605.v66t2rsxobt3r5jg@linutronix.de/

這基本上意味著當我們使用帶有arm64架構的5.9.1版本時,我們需要禁用KVM,然後立即出現Fully preemptible選項。我能夠成功地對其進行測試。

跑,

make mrproper

現在執行,

make menuconfig

實時選項現在必須可見。

引用自:https://unix.stackexchange.com/questions/616621