私は読書専用のrootfsも使用していますので、この夏の最後のことをよく見ていました。問題はmozroot.exe
がハードコードされて/usr/share/.mono/certs
に書き込まれ、sysrootを尊重しないことです。あなたはおそらくmozroot.exe
をハックして、インポートしたファイルを実際にsysrootに書き込むことができましたが、私の時間制限ではこれを試してもらえませんでした(どちらも、mono
を見たことはありません...)。
私の解決策は、起動するたびにインポートを行うことでした。 (これは1回だけ実行することもできますが、アップデートに関する問題が発生します)。これを達成するために、私はmozroot.exe
がcertdataを書こうとしているディレクトリにバインドマウントを行いました。私の解決策の
詳細
は、次の内容のファイルvolatile-binds.bbappend
追加:これインポートできるようになります、バインドが/usr/share/.mono/certs
に/tmp/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用のパッチが必要になるでしょう - 私はmono upstreamが "--certdir"オプションなどを受け入れることを確信しています – jku