Docker (Rootless mode) と nix の導入
注釈
efabless 社 OpenLANE 1/2 や Caravel template の利用に必要な Docker,nix ソフトウェアの導入にあたり,本ドキュメントでは efabless 社の指定と異なる手順を記載しています. Docker や nix をより安全に利用する設定を採っており,Caravel template などの Makefile やスクリプトを一部変更する必要があることにご注意下さい.
本ドキュメントでは,efabless 社 OpenLANE 1/2 や Caravel template の利用に必要な Docker,nix ソフトウェアを導入します.
ここでは Ubuntu 22.04 LTS の動作環境があらかじめセットアップされており,ユーザ名 openeda を利用する設定としています.
Docker (Rootless mode) の導入
一般ユーザから Docker を利用する Rootless mode を導入します.(efabless 社のドキュメントの方法ではユーザを docker のグループに登録する方法が記載されていますが,root 権限が利用される方法であり Rootless mode がより安全です)
なお,Ubuntu 22.04 LTS では Docker 公式で記載されているユーザ単位の AppArmor 制御は利用できないため設定を行いません.
参照:https://docs.docker.com/engine/security/rootless/
必要パッケージのインストール
必要パッケージを導入します.
sudo apt-get install -y dbus-user-session
sudo apt-get install -y uidmap
sudo apt-get install -y systemd-container
sudo apt-get install -y curl
Docker (Rootless mode) のインストール
Docker 公式のインストールスクリプトを用います.
curl -fsSL https://get.docker.com/rootless | sh
インストール後の設定
.bashrc へ Docker 起動のための環境変数を設定します.
export PATH=/home/$(whoami)/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Rootless mode で Docker を動作するためのデーモンを起動します.
systemctl --user start docker
OS の起動時にデーモンを起動するには,下記を実行します.
systemctl --user enable docker
sudo loginctl enable-linger $(whoami)
動作確認
以上の設定により,ユーザから Docker を Rootless mode で起動することを確認します.
docker run hello-world
docker images
nix パッケージャの導入
nix 公式の手順により導入後,OpenLANE2 向けのバイナリキャッシュを設定します.
注釈
OpenLANE2 ではバージョンにより nix のバージョンが異なり,特に OpenLANE2 2.0.3 (caravel_user_template_ol2 採用)にて利用されている nix と,最新の OpenLANE2 2.1 ではコマンドの互換性に不具合があります.本ドキュメントでは,nix の最新バージョンを導入することから,OpenLANE2 2.0.3 では nix-shell 動作と Jupyter notebook 動作を混在して利用できない点にご注意下さい.
参照:https://nix.dev/manual/nix/2.18/command-ref/new-cli/nix3-profile
nix 本体のインストール
まず,nix 公式の daemon 利用を利用するインストールスクリプトにより導入します.スクリプト実行中に管理者権限が要求されます.
sh <(curl -L https://nixos.org/nix/install) --daemon
スクリプト実行後に再起動することで利用可能となります.下記 nix のバージョンなど確認できます.
nix-shell -p nix-info --run "nix-info -m"
OpenLANE2 向けキャッシュの設定
OpenLANE2 で利用されるツールのバイナリが格納されているキャッシュを設定します.(あらかじめビルドされたバイナリの格納先を設定しており,設定しない場合はソースコードからのビルドが実行され,セットアップに数時間以上要します)
nix-env -f "<nixpkgs>" -iA cachix
sudo env PATH="$PATH" cachix use openlane
sudo pkill nix-daemon