1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

私でもできる!amd64版VyOSのコンテナ作成

Last updated at Posted at 2023-08-14

ここで言う「私でもできる!」は筆者でもできるという意味であり、これを読んだ全ての人ができるという意味ではないので注意

この記事は私でもできる!M2MacBookでarm 64版VyOSのコンテナ作成をもとに作成しています。

やりたいこと

  • vyos1.4のDockerコンテナ作成
  • 私の書いた記事をもとにamd64で動くコンテナの作成

環境

実行環境 PC OS CPU Ram
ローカル 自作PC  Windows10 i7-10700 16GB
仮想環境 VirtualBox debian-12.1.0 4コア 4GB

大まかな手順

  • dockerが動作するまでの環境構築
  • VyOSのビルド公式リポジトリlinux-kernelのクローン
  • dockerコンテナ内に入る
  • linuxカーネルのビルド
  • そのほかのビルド
  • isoのビルド
  • isoからDockerイメージの作成

手順

ホストマシン上でdebianをvmwareやUTMなどを使って仮想環境を作成
今回はVirtualBoxdebian-12.1.0-amd64-netinstを使用
名前だけ指定して他のパラメータはデフォルト設定

初期設定後ip aでネットワークを確認してターミナルからssh

$ ip a 
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:20:5a:33 brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.137.131/24 brd 192.168.137.255 scope global dynamic ens160
       valid_lft 1593sec preferred_lft 1593sec
    inet6 fe80::20c:29ff:fe20:5a33/64 scope link 
       valid_lft forever preferred_lft forever

これ以降は全てsshで作業を行う(コピペが面倒なので)

初期設定

  • sudoの追加
    sudoがないのでsudoのインストール
~$ su
apt update
apt upgrade
apt install sudo 

sudoグループにユーザを追加

su -
visudo
/etc/sudoers
%wheel  ALL=(ALL)       ALL
[ユーザ名] ALL=(ALL)       ALL 

保存してsudo pwdなどを実行してsudo権限があることを確認[参考文献1]

  • dockerのインストール
    スクリプトを使用してインストールと動作確認[参考文献2]
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo docker run hello-world

リポジトリのクローン

まず作業ディレクトリを作成して公式のリポジトリをクローンする

mkdir vyos
cd ./vyos/
git clone https://github.com/vyos/vyos-build.git

/vyos-build/packages/linux-kernel/にlinuxのカーネルをクローン

cd ./vyos-build/packages/linux-kernel/
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

クローンが終わったら/vyos-build/data/defaults.tomlを見てkernel_versionに合わせてlinuxのリポジトリをチェックアウトする(今回はkernel_version = "6.1.45")

cd ./linux/
git checkout v6.1.45 

telegrafの導入

telegrafをインストールしないといけない[参考文献3]ので 

cd ./packages
curl -OL https://dl.influxdata.com/telegraf/releases/telegraf_1.27.3-1_amd64.deb

curlで指定しているリンクはhttps://github.com/influxdata/telegraf/releasesamd64 Debianのダウンロードリンクを指定

ビルド

/vyos-buildディレクトリに移動してからdockerコンテナに入る。

cd ../
sudo docker run --rm -it --privileged -v $(pwd):/vyos -w /vyos vyos/vyos-build:current bash

カーネルのビルドを行う。

cd ./packages/linux-kernel/
sudo ./build-kernel.sh 

ファームウェアのクローンとビルド

git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo ./build-linux-firmware.sh

accel-pppのクローンとビルド

git clone https://github.com/accel-ppp/accel-ppp.git
sudo ./build-accel-ppp.sh

最後にisoのビルド
--build-byは自分の名前を入れておく。適当でも動く

cd /vyos
sudo ./build-vyos-image iso --architecture amd64 --build-by "yanbaru"

Dockerイメージの作成

まず作成したisoを/vyosにコピー

cd ~/vyos
cp ./vyos-build/build/vyos-1.4-rolling-202308140706-amd64.iso .

次に作業ディレクトリを作ってisoをマウント

mkdir  rootfs
sudo mount -o loop ./vyos-1.4-rolling-202308140706-amd64.iso ./rootfs/

read-onlyの警告が出ても無視して継続

squashfs-toolsのインストール

sudo apt install -y squashfs-tools

マウントしたisoからファイルを取り出す

sudo unsquashfs -f -d unsquashfs/ rootfs/live/filesystem.squashfs

取り出したファイルをtarでアーカイブしてdockerイメージを作成

sudo tar -C unsquashfs -c . | sudo docker import - vyos-1.4-amd64

動作確認

イメージを動かしてみる

sudo docker images
REPOSITORY        TAG             IMAGE ID       CREATED         SIZE
yanbaru/vyos-1.4   amd64     9b8933195e41   45 minutes ago   1.77GB
sudo docker run -d --rm  --privileged -v /lib/modules:/lib/modules vyos-1.4-amd64 /sbin/init 
sudo docker ps
sudo docker exec -it d53801b306d9 su - vyos
vyos@4df0601f89dc:~$c

動いた!!

あとはこれをお手元になんらかの方法で持ってきてDockerで動かせばOK(Docker Hub)とか

困ったこと

ビルドやiso作成中に以下のようなエラーが発生してビルド等が終了する。

E: Release file for http://〜〜〜 is not valid yet (invalid for another 37min 22s). Updates for this repository will not be applied.

これはコンテナの時刻がズレて発生しているので1度コンテナを出てから再度入って止まったコマンドを実行すると動く[参考文献4]

最後に

公式ビルドガイドに基づいて作成しました。参考サイトに感謝申し上げます。

参考文献

[1] 【CeontOS7】「sudoers ファイル内にありません。この事象は記録・報告されます」というメッセージが出た時の対処
https://it.notepad-blog.com/tool/207/

[2] Linux に Docker を一発インストールするワンライナー
https://qiita.com/KEINOS/items/bdc9450c1a88c210aa88

[3]Raspberry Pi 4 Model B 上で VyOS を動かす
https://qiita.com/DJ_Kaosun/items/6fc072e8490725e6c037

[4] WSLのapt updateでRelease file is not valid yetと言われたらWSLの時刻がずれてるかも。
https://ginpen.com/2021/06/05/apt-update-release-file-is-not-valid-yet/

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?