LoginSignup
0
2

More than 5 years have passed since last update.

OpenWrtで自前バイナリリポジトリを作る方法

Last updated at Posted at 2016-10-03

OpenWrt/LEDEでは、バイナリリポジトリのURLを/etc/opkg/customfeed.confに登録することで標準以外のバイナリパッケージをopkgコマンドで管理することができます。

/etc/opkg/customfeed.conf
src example_feed_name http://www.example.com/path/to/files

自前のバイナリリポジトリとして機能させるには、最低限バイナリパッケージ*.ipkとそれらのパッケージ情報を含んだメタデータファイルPackagesが必要です。

*.ipkはOpenWrtのビルド環境を作れば簡単に作れます(参照:OpenWrtで既存パッケージを再ビルドする - Qiita)。

Packagesは全パッケージ分のopkg infoを連結したようなファイルです。これは$SDK/scripts/ipkg-make-index.shを利用して作ります。

OpenWrt 15.05.1(Chaos Calmer)からメタデータ検証機構が導入された

ところで、OpenWrt 15.05.1(Chaos Calmer)からはメタデータの正当性確認のためPackages.sigというファイルを使って元のファイルPackagesの検証を行うようになりました。

この検証はデフォルトでオンになっています。何かの理由でシグネチャの検証を無効にしたい場合、下記のように設定すれば全ての*.ipkがインストール可能になります。

/etc/opkg.conf
option check_signature 0

検証用シグネチャファイルPackages.sigは次のように作ります。

export PATH=${SDK}/staging_dir/host/bin/:$PATH
usign -G -s secret.key -p public.key
usign -S -m Packages -s secret.key -x Packages.sig

上記のうちpublic.keyは各マシンで検証に使う鍵で、利用者に公開すべきものです。このバイナリリポジトリを利用したいマシン上で次のように打つと公開鍵が取り込まれます。

opkg-key add public.key

秘密鍵の方はCIサーバから持ち出さないなどして秘密にしましょう。誰でも見えるようだと誰でも署名ができてしまい、バイナリパッケージの改ざんを防ぐことができません。

ちなみに、この鍵ペアおよび*.sigの形式はOpenWrt独自の実装のようです。他のディストリビューション(Yocktなど)のopkgではGPGで作られた*.sigを利用しており、OpenWrtのものと互換性がありません。

gzip圧縮

メタデータファイルをgzip圧縮したPackages.gzを利用することもできます。

/etc/opkg.conf
src/gz example_feed_name http://www.example.com/path/to/files

このように書くとPackages.gzを探しにいくようになります。対応するシグネチャファイルはPackages.gz.sigになります。

元ネタ

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