저는 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가 이미지를 빌드하는 동안 오류나 경고를 표시하지 않지만 내 패치를 적용하지 않는다는 것입니다.
패치 파일을 생성한 후 처음 두 줄을 변경했습니다. 왜냐하면 멜드 버전에는 비교 파일에 대한 절대 경로가 포함되어 있었기 때문입니다. 이게 문제인 것 같은데 뭐라고 써야할지 모르겠네요.
도움을 주셔서 미리 감사드립니다.
답변1
나생각하다문제는 패치를 적용한 후 컴파일 프로세스 중에 sshd_config를 생성하여 패치를 덮어쓰는 구성 프로세스가 있다는 것입니다. 더 좋은 방법(이 구성 프로세스를 활용하고 수정하는 것)이 있을 수 있지만 문서를 찾지 못해 do_compile_append 단계를 추가하면 패치를 적용할 수 있다는 것을 알았습니다. .patch가 아닌 다른 이름으로 파일 이름을 지정하면 Yocto 시스템이 해당 파일을 두 번 적용하려는 시도(및 오류 표시)를 방지할 수 있습니다.
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*