dockerでimagebuilder環境を作る方法②

docker を使うと 簡単にOS環境を準備できるので、比較的楽に imagebuilder 環境を作ることができます。
今度は OpenWrt Projectが配布している docker imageを利用する方法を紹介します。

docker の準備

Linux環境であればDocker CEを、Windows(Pro以上)ならDocker Desktop for Windows、macならDocker Desktop for macなど、docker が使える環境を用意してください。

Docker IDの準備

Dockerで作成されたコンテナイメージの集積所として公式のDocker Hubがあります。
Linuxディストリビューションのパッケージリポジトリのようなものです。

作ったものをupload(push)するときなどに必要なので以下URLにてDocker IDを作っておくと良いでしょう。
https://hub.docker.com/signup

TAGの確認

Docker Hubには各Version/targetごとのimagebuilder Docker Imageが置いてあり、それぞれTAG付けされて管理されています。
このDocker image には最初からimagebuilder自身がインストールされています。加えて動作に必要なLibraly、pkgなど(Linux Kernel以外)が含まれています。

作業を始める前にDocker ImageのTAGを確認します。
以下のURLにアクセスし、tags タブから自分が必要とするTAG名称をメモします。
https://hub.docker.com/r/openwrtorg/imagebuilder

例)
ath79 generic Targetの Version 19.07.1 であれば ath79-generic-19.07.1
MT7621 で Version 18.06.7 であれば ramips-mt7621-18.06.7 になります。

docker image ダウンロード(pull)

Dockerの用語ではimageのダウンロードのことを pullと呼びます。。
あらかじめ構築されたimagebuilder用Docker imageをdocker hubからpullします。
以下のように実行します。

例)MT7621 で 19.07.1 の場合
docker pull openwrtorg/imagebuilder:ramips-mt7621-19.07.1
(TAGを確認したときのページにpull時のコマンドラインも記載されています)

pull した imageの確認

以下のコマンドで正常にpullできたかどうかわかります。
docker images

コンテナ起動

pullしたDocker imageを「IMAGEBUILDER」というコンテナ名で起動します。
docker run --rm -v "$(pwd)"/bin/:/home/build/openwrt/bin --name IMAGEBUILDER -it openwrtorg/imagebuilder:ramips-mt7621-19.07.1
(起動したディレクトリにbinディレクトリが作成され、それがコンテナ内OSの/home/build/openwrt/bin にマッピングされます。
 つまり生成物はホストOS側のbinディレクトリ内に作成されます)
※Docker Desktop for Windows では、-v オプションでホストOS側ディレクトリにアクセスさせるためには
 DockerデスクトップメニューでResources > FILE SHARING オプションを設定してください
 また、$(pwd)の部分はフルパスで記載してください。

プロンプト名が
build@xxxxxx:~/openwrt$
などというように変化したら、起動したコンテナイメージ内のbashに移行しています。

OpenWrt image build

あとは 通常のimagebuilder と同様に make image でimage作成をしますが、
ホストOS側ディレクトリの関係でpermission Error が表示される場合は sudo make image で実行します。

例)
sudo make image PROFILE="wsr-600" PACKAGES="kmod-mt7603 -kmod-rt2800-pci -wpad-mini -iwinfo -kmod-usb-core \
-kmod-usb-ledtrig-usbport -kmod-usb3 -kmod-cfg80211 -hostapd-common -kmod-mac80211 -kmod-mt7603 -wireless-regdb uhttpd luci"

生成が終わったら、exit でshellを終了させると、ホストOS側に戻ります。
生成されたファームウェアはコンテナ内のホストOS側のbinディレクトリ内に残されています。

作業後の後片付け


停止したdocker コンテナの削除
  • rm オプションを付けてdocker runしているため、exitした時にコンテナは削除されます。
通常は不要ですが、万が一異常終了して、コンテナが残っている場合には、以下のようにして停止・削除してください。
docker ps -a
docker stop IMAGEBUILDER
docker rm IMAGEBUILDER
docker ps -a

pullしたDocker imageが不要ならdocker rmi (IMAGEID)または docker rmi (リポジトリ名:TAG名)コマンドで削除してください。
例)
docker images
docker rmi openwrtorg/imagebuilder:ramips-mt7621-19.07.1
docker images

タグ:

imagebuilder
+ タグ編集
  • タグ:
  • imagebuilder

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2020年02月29日 12:25