Linux

Yocto - 未應用更新檔

  • September 13, 2021

我正在使用用 Yocto 建構的 Linux。我需要對/etc/ssh/sshd_config文件添加一些更改。我使用以下更新檔文件創建了meld

--- a/sshd_config
+++ b/sshd_config
@@ -116,3 +116,8 @@
#  AllowTcpForwarding no
#  PermitTTY no
#  ForceCommand cvs server
+
+#SFTP server configuration
+Match Group root
+ChrootDirectory /share
+ForceCommand internal-sftp

meta-mylayer/recipes-connectivity/openssh我創建了openssh_8.2p1.bbappend具有以下內容的文件:

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += "file://configure_sftp_server.patch"

在同一個目錄中,我放置了我的 .patch 文件。問題是 Yocto 在建構映像期間既沒有顯示錯誤也沒有顯示警告,但它沒有應用我的更新檔。

創建更新檔文件後,我更改了前兩行,因為在融合版本中,它們包含比較文件的絕對路徑。我想這可能是問題,但我不知道我應該寫什麼。

預先感謝您的任何幫助。

openssh如果版本正確,對我來說看起來是正確的。您可以在build/tmp/work文件夾中檢查您的更新檔是否找到了建構過程的方法。

我遇到的未應用更新檔的主要原因是早期層中的一些傻瓜做了do_install_append覆蓋所有更新檔而不是應用適當的更新檔。

要找到類似的東西,請執行

grep -r do_install_append sources/*/recipes-connectivity/openssh*

認為問題在於有一個配置過程會在應用更新檔後的編譯過程中創建 sshd_config,從而覆蓋您的更新檔。可能有更好的方法(利用並修改該配置過程),但找不到相關文件,我發現我可以通過添加 do_compile_append 階段來應用更新檔。呼叫該文件而不是 .patch 可以防止 Yocto 系統嘗試應用它兩次(並標記錯誤)。

  SRC_URI += " file://my_patch.latepatch "
   
   do_compile_append() {
      patch -i ../my_patch.latepatch
   }

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