LoginSignup
2
2

More than 5 years have passed since last update.

Intel EdisonのYocto OSにOpenVPNを追加する

Posted at

1 概要

 Intel Edisonを使っているとOpenVPNを使って自宅のサーバとつなぎたくなることがあります。しかし、Yocto OSで動作しているEdisonにOpenVPNをインストールするにはソースからインストールしなければなりません。
 ここではソースからOpenVPNをインストールする方法を紹介します。OpenVPNはOpenSSL、lzo、PAMにそれぞれ依存しています。OpenSSLはEdisonにインストールされているため、それ以外のライブラリをインストールする必要があります。手順としては以下のようになります。

  1. lzoのインストール
  2. PAMのインストール
  3. OpenVPNのインストール
  4. 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 まとめ

  1. PAMのインストールのためにBerkeleyDBを--enable-dbmオプションをつけてビルドする
  2. lzoはopkg経由でインストール
  3. SystemdのためにUnitファイルは自分で作成する。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2