從原始碼配置/編譯時無法選擇“完全可搶占核心(實時)”
我正在嘗試使用最新的穩定 PREEMPT_RT 更新檔 (5.4.28-rt19) 編譯 5.4 核心,但由於某種原因無法在make nconfig/menconfig中選擇**完全可搶占核心 (RT)**選項。
我之前編譯過 4.19 rt 的更新檔,只要把目前的配置(/boot/config-4.18-xxx)複製到新
.config
的,就會顯示選項。現在我只看到:No Forced Preemption (Server) Voluntary Kernel Preemption (Desktop) Preemptible Kernel (Low-Latency Desktop)
如果我按 F4 到“ ShowAll ”,我確實看到了這個選項:
XXX Fully Preemptible Kernel (Real-Time)
但不能選擇它。我嘗試
.config
使用各種 PREEMPT 選項手動設置它,例如:CONFIG_PREEMPT=y CONFIG_PREEMPT_RT_BASE=y CONFIG_PREEMPT_RT_FULL=y
但它從不顯示。我只是繼續編譯它
CONFIG_PREEMPT_RT_FULL=y
(在保存之前被覆蓋make nconfig
),但它似乎仍然不是安裝的完全搶占式核心。對於 4.19,
uname -a
將顯示如下內容:
Linux 4.19.106-rt45 #2 SMP PREEMPT RT <date>
或類似的東西,但現在它只會說:
Linux 5.4.28-rt19 #2 <date>
有人知道我在這裡缺少什麼嗎?
作業系統:CentOS 8.1.1911
核心:4.18.0-147.8.1 -> 5.4.28-rt19
請在啟動
make nconfig
/後啟用專家模式menuconfig
。然後您將能夠選擇完全可搶占核心 (RT) 選項。
utk 採用的方法對我來說並不完全奏效。
我在論文中使用 ARM64 伺服器 (ThunderX CN8890),無論我做什麼,我都無法讓完全可搶占核心 (RT) 出現在 menuconfig 中。
檢查 kernel/Kconfig.preempt 後,我得到了答案:
config PREEMPT_RT bool "Fully Preemptible Kernel (Real-Time)" depends on EXPERT && ARCH_SUPPORTS_RT select PREEMPTION
-> https://elixir.bootlin.com/linux/latest/source/kernel/Kconfig.preempt#L61
我啟用了專家標誌(通過上面評論中的切換嵌入式系統作為 krishna chaitanya)但我的配置文件缺少條目:CONFIG_ARCH_SUPPORTS_RT
當我手動輸入標誌時,它會被 make 步驟覆蓋。要預設啟用此標誌,請打開文件 arch/Kconfig 並蒐索條目:ARCH_SUPPORTS_RT。(在 nano 中按 CTRL+W 進行搜尋)
將條目從
config ARCH_SUPPORTS_RT bool
到
config ARCH_SUPPORTS_RT def_bool y
當您現在還啟用了專家(正常設置 -> 嵌入式系統)標誌時,您應該在正常設置 -> 搶占模型下看到“完全可搶占核心(實時)”選項。
強制標誌是解決此問題的一種hacky方法,但它仍然對我有用。