1 概要
Intel Edisonを使っているとOpenVPNを使って自宅のサーバとつなぎたくなることがあります。しかし、Yocto OSで動作しているEdisonにOpenVPNをインストールするにはソースからインストールしなければなりません。
ここではソースからOpenVPNをインストールする方法を紹介します。OpenVPNはOpenSSL、lzo、PAMにそれぞれ依存しています。OpenSSLはEdisonにインストールされているため、それ以外のライブラリをインストールする必要があります。手順としては以下のようになります。
- lzoのインストール
- PAMのインストール
- OpenVPNのインストール
- OpenVPNのSystemd Unitファイル作成
順を追って説明して行きます。
2 lzoインストール
lzoライブラリはopkgでインストールすることができます。opkgのリポジトリを準備していない場合は、以下
のリポジトリを追加してください。
intel-iotdk.conf
src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic
src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all
src intel-quark http://iotdk.intel.com/repos/1.1/iotdk/quark
src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586
src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86
下記のコマンドでインストールします
root@edison~:opkg update
root@edison~:opkg install liblzo2 liblzo2-dev
3
次にPAMライブラリをインストールします。PAMライブラリはソースからインストールしますが、EdisonにインストールされているBerkeleyDBにdbmが含まれていないため、そのままではインストールできません。そこでBerkeleyDBもソースからビルドします。
3.1 BerkeleyDBのインストール
はじめに既にインストールされているdbをアンインストールします。他のパッケージに依存している場合は当該のパッケージを削除するか強制リムーブします
root@edison~:opkg remove db
強制の場合は
root@edison~:opkg remove --force-depends db
以下のコマンドでBerkeleyDBをダウンロードします
root@edison~:wget http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz
続けてダウンロードしたファイルを解凍してビルドとインストールを行います。
root@edison~:tar xvf db-6.0.20.tar.gz
root@edison~:cd db-6.0.20/build_unix
root@edison~:../dist/configure --prefix=/usr/local --enable-dbm
root@edison~:make
root@edison~:make install
3.2 PAMのインストール
BerkeleyDBのインストールが完了したらPAMをインストールします。以下のコマンドでPAMのソースをダウンロードしましょう。
root@edison~:wget http://www.linux-pam.org/library/Linux-PAM-1.2.1.tar.gz
ダウンロードしたファイルを解凍してインストールします。
root@edison~:tar xvf Linux-PAM-1.2.1.tar.gz
root@edison~:cd Linux-PAM-1.2.1
root@edison~:./configure --prefix=/usr/local
root@edison~:make
root@edison~:make install
4 OpenVPNのインストール
続いてOpenVPNのインストールです。下記コマンドでOpenVPNをダウンロードします。
root@edison~:wget https://swupdate.openvpn.org/community/releases/openvpn-2.3.8.zip
ファイルを解凍してビルドとインストールを行います。解凍後シェルスクリプトに軒並み実行権限が付いていないため、実行権限を付ける必要があります。
root@edison~:tar xvf openvpn-2.3.8
root@edison~:cd openvpn-2.3.8
root@edison~:chmod 755 *sh
root@edison~:./configure
root@edison~:make
root@edison~:make install
※今回の環境ではmakeの一回目は失敗しました。2回目にmakeを叩くと成功しました。謎です。
5 SystemdのUnitファイルを作成する
EdisonのYocto OSはSystemdのため、OpenVPNを動作させるためのUnitファイルを作成する必要があります。
以下のファイルを作成します。見よう見まねで作成したため、おかしい点があるかもしれません。
*/etc/systemd/system/openvpn@.service
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
PrivateTmp=true
Type=oneshot
RemainAfterExit=yes
PIDFile=/var/run/openvpn/%i.pid
ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
あとはOpenVPNの設定ファイルと鍵を以下のフォルダに格納します。
/etc/openvpn/
設定ファイルをclient.confとした場合、次のコマンドでOpenVPNを起動します。
root@edison~:systemctl start openvpn@client.service
Edison起動時にVPN接続したい場合は以下のコマンドであらかじめOpenVPNの設定を行います。
root@edison~:systemctl enable openvpn@client.service
6 まとめ
- PAMのインストールのためにBerkeleyDBを--enable-dbmオプションをつけてビルドする
- lzoはopkg経由でインストール
- SystemdのためにUnitファイルは自分で作成する。