OS X Yosemiteからはkernel extensionについて署名されてない場合読み込まないことになった。従って、Macportsなどでコンパイルしたkernel extensionについてはロードできないということになる。
例えば、tuntap (openconnect), fuseなどは使えない...
openconnectは理研にVPNするときに使うのでこれは致命的である!!
ここで正攻法としては署名するには、となるのだがそうすると手前でコンパイルしたものは使えない。
一時的な解決法として強制的に署名されてないバイナリを使えるようにする、ということをopenconnect(tuntap)の場合について紹介する。
これで署名されてないkernel extensionを使えるようになる。
つぎに、
/Library/LaunchDaemons/tap.plist, /Library/LaunchDaemons/tun.plist
とする。
起動する(リブートしてもよい)。
これでtuntap(openconnect)が使えるようになる。再起動しても有効である。
お疲れ様でした。
例えば、tuntap (openconnect), fuseなどは使えない...
openconnectは理研にVPNするときに使うのでこれは致命的である!!
ここで正攻法としては署名するには、となるのだがそうすると手前でコンパイルしたものは使えない。
一時的な解決法として強制的に署名されてないバイナリを使えるようにする、ということをopenconnect(tuntap)の場合について紹介する。
$ sudo port install openconnect
$ sudo nvram boot-args="kext-dev-mode=1"
これで署名されてないkernel extensionを使えるようになる。
つぎに、
$ sudo cp -r /opt/local/Library/Extensions/tap.kext /Library/Extensions/
$ sudo cp -r /opt/local/Library/Extensions/tun.kext /Library/Extensions/
/Library/LaunchDaemons/tap.plist, /Library/LaunchDaemons/tun.plist
$ cat /Library/LaunchDaemons/tap.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>tap</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/kextload</string>
<string>/Library/Extensions/tap.kext</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
$ cat /Library/LaunchDaemons/tun.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>tun</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/kextload</string>
<string>/Library/Extensions/tun.kext</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>StandardOutPath</key>
<string>/dev/null</string>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
とする。
起動する(リブートしてもよい)。
$ launchctl load -w /Library/LaunchDaemons/tap.plist
$ launchctl load -w /Library/LaunchDaemons/tun.plist
これでtuntap(openconnect)が使えるようになる。再起動しても有効である。
お疲れ様でした。