私は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が画像をビルドしている間にエラーや警告を表示しないが、私のパッチを適用しないことです。
パッチファイルを作成した後、最初の2行を変更しました。なぜなら、Meldバージョンには比較ファイルへの絶対パスが含まれていたからです。これが問題だと思いますが、何と書くべきかわかりません。
助けてくれてありがとう。
答え1
私考える問題は、パッチの適用後にコンパイルプロセス中にsshd_configを生成してパッチを上書きする構成プロセスがあることです。より良い方法(この設定プロセスを利用して修正すること)があるかもしれませんが、ドキュメントが見つからず、do_compile_appendステップを追加するとパッチを適用できることがわかりました。 .patch以外の名前でファイル名を指定すると、Yoctoシステムはそのファイルを2回適用しようとする(およびエラー表示)を防ぐことができます。
SRC_URI += " file://my_patch.latepatch "
do_compile_append() {
patch -i ../my_patch.latepatch
}
答え2
openssh
バージョンが正しければ、私は見るのに適しているようです。このフォルダでは、build/tmp/work
パッチがビルドプロセスに入ることができることを確認できます。
適用されないパッチが発生する主な理由は、初期レイヤーの一部の愚か者がdo_install_append
正しいパッチを適用するのではなく、すべてのパッチを上書きするためです。
そのようなものを見つけるには、次を実行します。
grep -r do_install_append sources/*/recipes-connectivity/openssh*