글쎄, 이번 여름에 나는 읽기 전용 rootfs도 사용하고있다. 문제는 mozroot.exe
이 /usr/share/.mono/certs
에 기록하기 위해 하드 코드되어 있고 sysroot를 존중하지 않는다는 것입니다. 내 시간 제한으로 시도해 볼 수는 없지만 실제로는 mozroot.exe
을 해킹하여 sysroot에 가져온 파일을 실제로 쓸 수는 있습니다. (어느 누구도 mono
을 전혀 보지 못했지만 ...).
대신 내 해결책은 매 부팅 할 때마다 가져 오기를 수행하는 것이 었습니다. (또한 한 번만 수행 할 수 있지만 업데이트에 대한 문제가 발생합니다). 이것을 실현하기 위해 나는 mozroot.exe
이 certdata를 쓰고 자하는 디렉토리에 바인드 마운트를 만들었다. 내 솔루션
의
세부 사항은 다음과 같은 내용으로 파일 volatile-binds.bbappend
을 추가
은 바인드 /tmp/mono-certs
에서 /usr/share/.mono/certs
에 마운트 할 것 VOLATILE_BINDS += "\
/tmp/mono-certs /usr/share/.mono/certs \n\
"
, 따라서 당신은을 가져올 수 있습니다 인증서.
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
DEPENDS += "mono-native"
SRC_URI += "file://mozroot-certdata.service \
"
inherit systemd
SYSTEMD_SERVICE_${PN} = "mozroot-certdata.service"
do_install_append() {
mkdir -p ${D}${datadir}/.mono/certs
mkdir -p ${D}${systemd_system_unitdir}
install -m 440 ${WORKDIR}/mozroot-certdata.service ${D}${systemd_system_unitdir}/mozroot-certdata.service
}
FILES_${PN} += "${datadir}"
# Empty the postinstallation script, as we can import the cert offline.
pkg_postinst_${PN}() {
# mono $D/usr/lib/mono/4.5/mozroots.exe --import --machine --ask remove --file $D/${sysconfdir}/ssl/certdata.txt
}
서비스 파일 mozroot-certdata.service
:
[Unit]
Description=Import certficates to Mono
After=tmp-mono-certs.service
[Service]
Type=oneshot
ExecStart=/usr/bin/mono /usr/lib/mono/4.5/mozroots.exe --import --machine --ask-remove --file /etc/ssl/certdata.txt
[Install]
WantedBy=multi-user.target
음, 내 대답에 말한 것처럼, mozroot.exe는 내 컴퓨터에서'/ usr/share/.mono/certs'에 쓰기를 시도했습니다 ...따라서, 나는 이것이 rootfs 생성 시간 동안 현재 작동한다고는 생각하지 않는다. 이를 처리하려면'mono-native'를 패치해야 할 것입니다. – Anders
감사합니다. 이 경우 mosroots.exe에 대한 패치가 필요할 것입니다 - 모노 업스트림에서 "--certdir"옵션 또는 이와 유사한 옵션을 사용할 수 있습니다. – jku