LoginSignup
0
1

More than 5 years have passed since last update.

xl2tpdをRaspberry PI向けにmacOSでクロスコンパイルする

Last updated at Posted at 2018-05-06

コンパイルしたい理由

udp_xmit failed to *.*.*.*:* with err=-1:No such device このようなエラーが表示されており、VPNがうまく稼働しなかった。

GitHubを見ると、Kernel 4.15で動かないよという情報があった。
l2tp does not work with 4.15 mainline kernels

また、Raspberry PIでも似た問題が出ているよと書かれていた

For the record, xl2tpd-1.3.8 broke also when upgrading my RPi here from Kernel 4.9.51 to 4.14.30.. is it recommended to already upgrade to xl2tpd-1.3.12dev ?

そのコメントのした人曰く、githubから最新コードを取得してコンパイルし直したらいいよとのことであった。自分もこれを試す。

問題が生じた環境

$ uname -a
Linux rp2mb-usbhdd 4.14.37-v7+ #1111 SMP Thu Apr 26 13:56:59 BST 2018 armv7l GNU/Linux

4.15では無いのに問題が生じているのはどういう加減だろうか?

コンパイルする

クロスコンパイラの入手

Raspberry PIの容量が小さいのでmacOSでコンパイルをする。クロスコンパイルのツールがインターネットで見つかったのでそれを利用する。
https://www.jaredwolff.com/toolchains/
Crosstool-NG GNU Linux EABI Toolchain for RPi3をダウンロードして、dmgをマウントする。

ソースコードの入手

macOSのターミナルでgitのソースコードを取得する。

$ git -b 1.3.12 git@github.com:vyos/xl2tpd.git

関連するライブラリとソースコードの入手

  • libpcap0.8-dev_1.6.2-2_armhf.deb
  • libpcap0.8_1.6.2-2_armhf.deb 2つのdebファイルが必要だった。 これはRaspberry PI側にてapt-get download libpcap-devapt-get download libpcap0.8-devにより得られた。

これらをscpなどによりRaspberryPIからmacOSにコピーして、ar x ファイル名.debとして展開、また、tar xf data.tar.xfとしてusr以下を取得する。

makeの実行

上記の操作により作られたフォルダ構造が次のようであるとする。

  • /Volumes/xtools ... クロスコンパイルのdmgをマウントした場所
  • ~/xl2tpd_b/xl2tpd ... gitにより得られたxl2tpdのソースコードの場所
  • ~/xl2tpd_b/deb/usr ... debを展開して得られたincludeファイルとlibファイルなどの場所

その時、~/xl2tpd_b/xl2tpdで次のようにコマンドを実行するとRaspberry PI用の最新のxl2tpdがコンパイルされる。

$ CC=/Volumes/xtools/armv8-rpi3-linux-gnueabihf/bin/armv8-rpi3-linux-gnueabihf-gcc \
LDFLAGS="-L/Volumes/xtools/armv8-rpi3-linux-gnueabihf/lib/ -L../deb/usr/lib/arm-linux-gnueabihf" \
CFLAGS="-I/Volumes/xtools/armv8-rpi3-linux-gnueabihf/include/ -I../deb/usr/include/" \
make

Raspberry PIに配置する

/usr/sbin/xl2tpdが問題を起こしているファイルであるようなので、コンパイルされたもので置き換える。
コンパイルした結果をscpなどによりRaspberry PIへコピーした後、次のように上書き(!)する。

$ sudo /etc/init.d/xl2tpd stop
$ cp xl2tpd /usr/sbin/xl2tpd
$ sudo /etc/init.d/xl2tpd start

これにより問題となっていたエラーメッセージが表示されなくなる。

0
1
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
0
1