「コンテナ - KiCAD」の版間の差分
ページの作成:「== 概要 == KiCADは、オープンソースのプリント基板設計ツールである。<br> <br> Docker / Podmanコンテナとして実行することにより、開発環境で簡単に導入できる。<br> 回路設計、PCB設計、ガーバー出力等の様々な用途に適している。<br> <br> KiCADコンテナの主な機能を以下に示す。<br> * KiCAD *: 回路エディタ、PCBエディタを含む統合環境 * kicad-cli *: コマンドラ…」 |
編集の要約なし |
||
| 10行目: | 10行目: | ||
* kicad-cli | * kicad-cli | ||
*: コマンドラインインターフェース | *: コマンドラインインターフェース | ||
* | * 回路図のエクスポート | ||
*: PDF、SVG、ネットリスト形式に対応 | *: PDF、SVG、ネットリスト形式に対応 | ||
* PCBのエクスポート | * PCBのエクスポート | ||
| 94行目: | 94行目: | ||
== KiCADの実行 == | == KiCADの実行 == | ||
==== | ==== X11環境 ==== | ||
X11環境においてカレントディレクトリをマウントして実行する。<br> | |||
<br> | <br> | ||
podman run -it --rm \ | podman run -it --rm \ | ||
| 117行目: | 117行目: | ||
X11転送を許可する必要がある場合は、以下に示すコマンドを実行する。<br> | X11転送を許可する必要がある場合は、以下に示すコマンドを実行する。<br> | ||
xhost +local: | xhost +local: | ||
<br> | |||
==== Wayland環境 ==== | |||
Wayland環境においてカレントディレクトリをマウントして実行する。<br> | |||
<br> | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v $(pwd):/workspace \ | |||
kicad:9.0 | |||
<br> | |||
Wayland環境向けのコマンドオプションの説明を以下に示す。<br> | |||
* -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} | |||
*: Waylandディスプレイ環境変数を渡す (通常は wayland-0) | |||
* -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} | |||
*: XDGランタイムディレクトリを渡す (通常は /run/user/1000) | |||
* -e QT_QPA_PLATFORM=wayland | |||
*: QtアプリケーションをWaylandネイティブモードで実行 | |||
* -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro | |||
*: Waylandソケットをマウント (読み取り専用) | |||
<br> | |||
Waylandソケットのパーミッションエラーが発生する場合は、以下に示すオプションを追加する。<br> | |||
--security-opt label=disable | |||
<br> | |||
==== X11/Wayland自動検出 ==== | |||
X11とWaylandを自動検出して実行する例を以下に示す。<br> | |||
<br> | |||
# セッションタイプを確認 | |||
echo $XDG_SESSION_TYPE | |||
# X11の場合 | |||
if [ "$XDG_SESSION_TYPE" = "x11" ]; then | |||
podman run -it --rm \ | |||
-e DISPLAY=${DISPLAY} \ | |||
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \ | |||
-v $(pwd):/workspace \ | |||
kicad:9.0 | |||
# Waylandの場合 | |||
elif [ "$XDG_SESSION_TYPE" = "wayland" ]; then | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v $(pwd):/workspace \ | |||
kicad:9.0 | |||
fi | |||
<br> | <br> | ||
==== SELinux環境での実行 ==== | ==== SELinux環境での実行 ==== | ||
RHEL、SUSE 16等のSELinuxが有効な環境においては、以下に示すオプションを追加する。<br> | RHEL、SUSE 16等のSELinuxが有効な環境においては、以下に示すオプションを追加する。<br> | ||
<br> | <br> | ||
* X11環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | podman run -it --rm \ | ||
-e DISPLAY=${DISPLAY} \ | -e DISPLAY=${DISPLAY} \ | ||
| 127行目: | 178行目: | ||
--security-opt label=type:container_runtime_t \ | --security-opt label=type:container_runtime_t \ | ||
kicad:9.0 | kicad:9.0 | ||
</syntaxhighlight> | |||
<br> | |||
* Wayland環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v $(pwd):/workspace:Z \ | |||
--security-opt label=type:container_runtime_t \ | |||
kicad:9.0 | |||
</syntaxhighlight> | |||
<br> | <br> | ||
SELinux環境向けの追加オプションを以下に示す。<br> | SELinux環境向けの追加オプションを以下に示す。<br> | ||
| 137行目: | 201行目: | ||
プロジェクトディレクトリを指定してマウントする例を以下に示す。<br> | プロジェクトディレクトリを指定してマウントする例を以下に示す。<br> | ||
<br> | <br> | ||
* X11環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | podman run -it --rm \ | ||
-e DISPLAY=${DISPLAY} \ | -e DISPLAY=${DISPLAY} \ | ||
| 142行目: | 208行目: | ||
-v /home/<ユーザ名>/projects:/workspace \ | -v /home/<ユーザ名>/projects:/workspace \ | ||
kicad:9.0 | kicad:9.0 | ||
</syntaxhighlight> | |||
<br> | |||
* Wayland環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v /home/<ユーザ名>/projects:/workspace \ | |||
kicad:9.0 | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== 複数のディレクトリをマウント ==== | ==== 複数のディレクトリをマウント ==== | ||
複数のディレクトリを同時にマウントする例を以下に示す。<br> | 複数のディレクトリを同時にマウントする例を以下に示す。<br> | ||
<br> | <br> | ||
* X11環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | podman run -it --rm \ | ||
-e DISPLAY=${DISPLAY} \ | -e DISPLAY=${DISPLAY} \ | ||
| 152行目: | 232行目: | ||
-v /home/<ユーザ名>/projects:/projects \ | -v /home/<ユーザ名>/projects:/projects \ | ||
kicad:9.0 | kicad:9.0 | ||
</syntaxhighlight> | |||
<br> | |||
* Wayland環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v $(pwd):/workspace \ | |||
-v /home/<ユーザ名>/projects:/projects \ | |||
kicad:9.0 | |||
</syntaxhighlight> | |||
<br> | <br> | ||
上記コマンドのコマンドにおいて、コンテナ内からは以下に示すパスでアクセスすることができる。<br> | 上記コマンドのコマンドにおいて、コンテナ内からは以下に示すパスでアクセスすることができる。<br> | ||
| 162行目: | 255行目: | ||
KiCADの設定ファイルを永続化する場合は、以下に示すようにマウントする。<br> | KiCADの設定ファイルを永続化する場合は、以下に示すようにマウントする。<br> | ||
<br> | <br> | ||
* X11環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | podman run -it --rm \ | ||
-e DISPLAY=${DISPLAY} \ | -e DISPLAY=${DISPLAY} \ | ||
| 168行目: | 263行目: | ||
-v $HOME/.config/kicad:/root/.config/kicad \ | -v $HOME/.config/kicad:/root/.config/kicad \ | ||
kicad:9.0 | kicad:9.0 | ||
</syntaxhighlight> | |||
<br> | |||
* Wayland環境の場合 | |||
*: <syntaxhighlight lang="text"> | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
-v $(pwd):/workspace \ | |||
-v $HOME/.config/kicad:/root/.config/kicad \ | |||
kicad:9.0 | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
== 起動スクリプト == | == 起動スクリプト == | ||
==== | ==== X11 / Wayland自動検出 (推奨) ==== | ||
<syntaxhighlight lang="sh"> | |||
#!/usr/bin/env sh | |||
# KiCAD起動スクリプト | |||
set -e | |||
# 設定 | |||
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}" | |||
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}" | |||
echo "KiCAD起動スクリプト" | |||
echo "===========================" | |||
echo "イメージ: ${IMAGE_NAME}" | |||
echo "ワークスペース: ${WORKSPACE_DIR}" | |||
echo "" | |||
# セッションタイプの検出 | |||
SESSION_TYPE="${XDG_SESSION_TYPE:-x11}" | |||
echo "セッションタイプ: ${SESSION_TYPE}" | |||
# SELinux環境の検出 | |||
SELINUX_OPTS="" | |||
VOLUME_OPTS="" | |||
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | |||
echo "SELinux: 有効" | |||
SELINUX_OPTS="--security-opt label=type:container_runtime_t" | |||
VOLUME_OPTS=":Z" | |||
else | |||
echo "SELinux: 無効または未検出" | |||
fi | |||
# X11またはWaylandに応じて起動 | |||
if [ "${SESSION_TYPE}" = "wayland" ]; then | |||
echo "Waylandモードで起動します" | |||
echo "" | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \ | |||
-e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \ | |||
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \ | |||
${SELINUX_OPTS} \ | |||
"${IMAGE_NAME}" "$@" | |||
else | |||
echo "X11モードで起動します" | |||
echo "" | |||
# X11転送の許可 (X11を使用している場合) | |||
xhost +local: 2>/dev/null || true | |||
podman run -it --rm \ | |||
-e DISPLAY="${DISPLAY}" \ | |||
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \ | |||
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \ | |||
${SELINUX_OPTS} \ | |||
"${IMAGE_NAME}" "$@" | |||
fi | |||
</syntaxhighlight> | |||
<br> | |||
==== X11向け ==== | |||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
#!/usr/bin/env sh | #!/usr/bin/env sh | ||
| 182行目: | 351行目: | ||
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}" | WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}" | ||
echo " | echo "KiCAD起動スクリプト (X11)" | ||
echo "===========================" | echo "===========================" | ||
echo "イメージ: ${IMAGE_NAME}" | echo "イメージ: ${IMAGE_NAME}" | ||
echo "ワークスペース: ${WORKSPACE_DIR}" | echo "ワークスペース: ${WORKSPACE_DIR}" | ||
echo "" | echo "" | ||
# SELinux環境の検出 | |||
SELINUX_OPTS="" | |||
VOLUME_OPTS="" | |||
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | |||
echo "SELinux: 有効" | |||
SELINUX_OPTS="--security-opt label=type:container_runtime_t" | |||
VOLUME_OPTS=":Z" | |||
else | |||
echo "SELinux: 無効または未検出" | |||
fi | |||
# X11転送の許可 (X11を使用している場合) | # X11転送の許可 (X11を使用している場合) | ||
| 195行目: | 375行目: | ||
-e DISPLAY="${DISPLAY}" \ | -e DISPLAY="${DISPLAY}" \ | ||
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \ | -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ | ||
-v "${WORKSPACE_DIR}:/workspace" \ | -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \ | ||
${SELINUX_OPTS} \ | |||
"${IMAGE_NAME}" "$@" | "${IMAGE_NAME}" "$@" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== Wayland向け ==== | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
#!/usr/bin/env sh | #!/usr/bin/env sh | ||
# KiCAD起動スクリプト | # KiCAD起動スクリプト (Wayland専用) | ||
set -e | set -e | ||
| 210行目: | 391行目: | ||
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}" | WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}" | ||
echo " | echo "KiCAD起動スクリプト (Wayland)" | ||
echo "===========================" | echo "===========================" | ||
echo "イメージ: ${IMAGE_NAME}" | echo "イメージ: ${IMAGE_NAME}" | ||
| 218行目: | 399行目: | ||
# SELinux環境の検出 | # SELinux環境の検出 | ||
SELINUX_OPTS="" | SELINUX_OPTS="" | ||
VOLUME_OPTS="" | |||
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | ||
echo "SELinux: 有効" | |||
SELINUX_OPTS="--security-opt label=type:container_runtime_t" | |||
VOLUME_OPTS=":Z" | |||
else | else | ||
echo "SELinux: 無効または未検出" | |||
fi | fi | ||
# KiCADを起動 | # KiCADを起動 | ||
podman run -it --rm \ | podman run -it --rm \ | ||
-e | -e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \ | ||
-v / | -e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \ | ||
-e QT_QPA_PLATFORM=wayland \ | |||
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \ | |||
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \ | -v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \ | ||
${SELINUX_OPTS} \ | ${SELINUX_OPTS} \ | ||
| 242行目: | 422行目: | ||
<syntaxhighlight lang="sh"> | <syntaxhighlight lang="sh"> | ||
#!/usr/bin/env sh | #!/usr/bin/env sh | ||
# KiCAD起動スクリプト | # KiCAD起動スクリプト (複数ディレクトリマウント / X11/Wayland自動検出) | ||
set -e | set -e | ||
| 257行目: | 437行目: | ||
echo "プロジェクトディレクトリ: ${PROJECT_DIR} -> /projects" | echo "プロジェクトディレクトリ: ${PROJECT_DIR} -> /projects" | ||
echo "" | echo "" | ||
# セッションタイプの検出 | |||
SESSION_TYPE="${XDG_SESSION_TYPE:-x11}" | |||
echo "セッションタイプ: ${SESSION_TYPE}" | |||
# SELinux環境の検出 | # SELinux環境の検出 | ||
| 262行目: | 446行目: | ||
VOLUME_OPTS="" | VOLUME_OPTS="" | ||
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then | ||
echo "SELinux: 有効" | |||
SELINUX_OPTS="--security-opt label=type:container_runtime_t" | |||
VOLUME_OPTS=":Z" | |||
fi | fi | ||
# X11転送の許可 (X11を使用している場合) | # X11 または Waylandに応じて起動 | ||
if [ "${SESSION_TYPE}" = "wayland" ]; then | |||
echo "Waylandモードで起動します" | |||
echo "" | |||
podman run -it --rm \ | |||
-e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \ | |||
-e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \ | |||
-v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \ | |||
-v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \ | |||
${SELINUX_OPTS} \ | |||
"${IMAGE_NAME}" "$@" | |||
else | |||
echo "X11モードで起動します" | |||
echo "" | |||
# X11転送の許可 (X11を使用している場合) | |||
xhost +local: 2>/dev/null || true | |||
podman run -it --rm \ | |||
-e DISPLAY="${DISPLAY}" \ | |||
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \ | |||
-v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \ | |||
-v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \ | |||
${SELINUX_OPTS} \ | |||
"${IMAGE_NAME}" "$@" | |||
fi | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
| 316行目: | 518行目: | ||
kicad-cli sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch | kicad-cli sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch | ||
<br> | <br> | ||
回路図をSVGに変換する例を以下に示す。<br> | |||
podman run --rm \ | podman run --rm \ | ||
-v $(pwd):/workspace \ | -v $(pwd):/workspace \ | ||
| 388行目: | 590行目: | ||
echo " $0 --help" | echo " $0 --help" | ||
echo "" | echo "" | ||
echo " # | echo " # 回路図をPDFに変換" | ||
echo " $0 sch export pdf -o output.pdf input.kicad_sch" | echo " $0 sch export pdf -o output.pdf input.kicad_sch" | ||
echo "" | echo "" | ||
| 514行目: | 716行目: | ||
== トラブルシューティング == | == トラブルシューティング == | ||
==== GUIが起動しない ==== | ==== GUIが起動しない (X11) ==== | ||
X11転送を許可する。<br> | X11転送を許可する。<br> | ||
<br> | <br> | ||
| 524行目: | 726行目: | ||
XAuthの問題の場合は、以下に示すオプションを追加する。<br> | XAuthの問題の場合は、以下に示すオプションを追加する。<br> | ||
-v ${HOME}/.Xauthority:/root/.Xauthority:ro | -v ${HOME}/.Xauthority:/root/.Xauthority:ro | ||
<br> | |||
==== GUIが起動しない (Wayland) ==== | |||
Waylandソケットが存在するか確認する。<br> | |||
<br> | |||
ls -la ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY} | |||
<br> | |||
環境変数が正しく設定されているか確認する。<br> | |||
echo $WAYLAND_DISPLAY | |||
echo $XDG_RUNTIME_DIR | |||
echo $XDG_SESSION_TYPE | |||
<br> | |||
Waylandソケットのパーミッションエラーの場合は、以下に示すオプションを追加する。<br> | |||
--security-opt label=disable | |||
<br> | |||
Qtアプリケーションが正しくWaylandを使用しているか確認する。<br> | |||
# コンテナ内で確認 | |||
podman run --rm \ | |||
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ | |||
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ | |||
-e QT_QPA_PLATFORM=wayland \ | |||
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ | |||
kicad:9.0 \ | |||
sh -c 'echo $QT_QPA_PLATFORM' | |||
<br> | |||
==== X11とWaylandの切り替え ==== | |||
セッションタイプを確認する。<br> | |||
<br> | |||
echo $XDG_SESSION_TYPE | |||
<br> | |||
強制的にX11モードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。<br> | |||
XDG_SESSION_TYPE=x11 ./run-kicad-gui.sh | |||
<br> | |||
強制的にWaylandモードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。<br> | |||
XDG_SESSION_TYPE=wayland ./run-kicad-gui.sh | |||
<br> | <br> | ||
==== パーミッションエラー ==== | ==== パーミッションエラー ==== | ||
2026年1月6日 (火) 01:05時点における最新版
概要
KiCADは、オープンソースのプリント基板設計ツールである。
Docker / Podmanコンテナとして実行することにより、開発環境で簡単に導入できる。
回路設計、PCB設計、ガーバー出力等の様々な用途に適している。
KiCADコンテナの主な機能を以下に示す。
- KiCAD
- 回路エディタ、PCBエディタを含む統合環境
- kicad-cli
- コマンドラインインターフェース
- 回路図のエクスポート
- PDF、SVG、ネットリスト形式に対応
- PCBのエクスポート
- ガーバー、PDF、SVG、STEP形式に対応
- DRC (デザインルールチェック)
- 日本語環境対応
- 日本語フォントとロケール設定済み
利用可能なバージョン
2026年1月現在、KiCADコンテナイメージで利用可能なバージョンを下表に示す。
| タグ | 説明 |
|---|---|
| 9.0 | 最新の9.0安定版(推奨) |
| 9.0.x | 特定の9.0.xリリース |
| 8.0 | 最新の8.0安定版 |
| 8.0.x | 特定の8.0.xリリース |
| nightly | 最新のmaster開発版 |
| nightly-full | 最新のmaster開発版(3Dシンボル含む) |
Dockerfile / Containerfile
KiCADを使用したDockerfile / Containerfileを作成する。
# KiCAD Containerfile
## KiCAD 9.0を使用
ARG KICAD_VERSION=9.0
FROM docker.io/kicad/kicad:${KICAD_VERSION}
## rootユーザとして実行することを明示
USER root
## 必要なディレクトリを作成して、パーミッションを設定
RUN mkdir -p /var/lib/apt/lists/partial && \
chmod -R 755 /var/lib/apt/lists
## 日本語環境のセットアップ
RUN apt update && \
apt install -y --no-install-recommends \
locales \
fonts-noto-cjk \
fonts-noto-cjk-extra \
&& rm -rf /var/lib/apt/lists/*
## 日本語ロケールの設定
RUN sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
ENV LANG=ja_JP.UTF-8 \
LANGUAGE=ja_JP:ja \
LC_ALL=ja_JP.UTF-8
## 作業ディレクトリの設定
WORKDIR /workspace
## デフォルトコマンド (GUIの場合)
CMD ["kicad"]
コンテナイメージをビルドする。
podman build -t kicad:9.0 -f Containerfile .
他のバージョンを使用する場合は、ビルド時にバージョンを指定する。
# KiCAD 8.0を使用する場合 podman build --build-arg KICAD_VERSION=8.0 -t kicad:8.0 -f Containerfile . # 最新のnightly版 (3Dシンボル含む) podman build --build-arg KICAD_VERSION=nightly-full -t kicad:nightly -f Containerfile .
KiCADの実行
X11環境
X11環境においてカレントディレクトリをマウントして実行する。
podman run -it --rm \
-e DISPLAY=${DISPLAY} \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v $(pwd):/workspace \
kicad:9.0
コマンドオプションの説明を以下に示す。
- -it
- インタラクティブモード、TTY有効
- --rm
- コンテナ終了時に自動削除
- -e DISPLAY=${DISPLAY}
- X11ディスプレイ環境変数を渡す
- -v /tmp/.X11-unix:/tmp/.X11-unix:ro
- X11ソケットをマウント (画面描画に必要、読み取り専用)
- -v $(pwd):/workspace
- カレントディレクトリをコンテナ内の/workspaceにマウント
X11転送を許可する必要がある場合は、以下に示すコマンドを実行する。
xhost +local:
Wayland環境
Wayland環境においてカレントディレクトリをマウントして実行する。
podman run -it --rm \
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
-e QT_QPA_PLATFORM=wayland \
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
-v $(pwd):/workspace \
kicad:9.0
Wayland環境向けのコマンドオプションの説明を以下に示す。
- -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY}
- Waylandディスプレイ環境変数を渡す (通常は wayland-0)
- -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR}
- XDGランタイムディレクトリを渡す (通常は /run/user/1000)
- -e QT_QPA_PLATFORM=wayland
- QtアプリケーションをWaylandネイティブモードで実行
- -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro
- Waylandソケットをマウント (読み取り専用)
Waylandソケットのパーミッションエラーが発生する場合は、以下に示すオプションを追加する。
--security-opt label=disable
X11/Wayland自動検出
X11とWaylandを自動検出して実行する例を以下に示す。
# セッションタイプを確認
echo $XDG_SESSION_TYPE
# X11の場合
if [ "$XDG_SESSION_TYPE" = "x11" ]; then
podman run -it --rm \
-e DISPLAY=${DISPLAY} \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v $(pwd):/workspace \
kicad:9.0
# Waylandの場合
elif [ "$XDG_SESSION_TYPE" = "wayland" ]; then
podman run -it --rm \
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
-e QT_QPA_PLATFORM=wayland \
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
-v $(pwd):/workspace \
kicad:9.0
fi
SELinux環境での実行
RHEL、SUSE 16等のSELinuxが有効な環境においては、以下に示すオプションを追加する。
- X11環境の場合
podman run -it --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v $(pwd):/workspace:Z \ --security-opt label=type:container_runtime_t \ kicad:9.0
- Wayland環境の場合
podman run -it --rm \ -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ -e QT_QPA_PLATFORM=wayland \ -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ -v $(pwd):/workspace:Z \ --security-opt label=type:container_runtime_t \ kicad:9.0
SELinux環境向けの追加オプションを以下に示す。
- :Z
- SELinuxコンテキストを自動設定 (プライベートアンラベル)
- --security-opt label=type:container_runtime_t
- SELinuxタイプをコンテナランタイムに設定
特定のディレクトリをマウント
プロジェクトディレクトリを指定してマウントする例を以下に示す。
- X11環境の場合
podman run -it --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v /home/<ユーザ名>/projects:/workspace \ kicad:9.0
- Wayland環境の場合
podman run -it --rm \ -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ -e QT_QPA_PLATFORM=wayland \ -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ -v /home/<ユーザ名>/projects:/workspace \ kicad:9.0
複数のディレクトリをマウント
複数のディレクトリを同時にマウントする例を以下に示す。
- X11環境の場合
podman run -it --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v $(pwd):/workspace \ -v /home/<ユーザ名>/projects:/projects \ kicad:9.0
- Wayland環境の場合
podman run -it --rm \ -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ -e QT_QPA_PLATFORM=wayland \ -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ -v $(pwd):/workspace \ -v /home/<ユーザ名>/projects:/projects \ kicad:9.0
上記コマンドのコマンドにおいて、コンテナ内からは以下に示すパスでアクセスすることができる。
- /workspace
- カレントディレクトリ
- /projects
- /home/<ユーザ>/projectsディレクトリ
設定ファイルの永続化
KiCADの設定ファイルを永続化する場合は、以下に示すようにマウントする。
- X11環境の場合
podman run -it --rm \ -e DISPLAY=${DISPLAY} \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ -v $(pwd):/workspace \ -v $HOME/.config/kicad:/root/.config/kicad \ kicad:9.0
- Wayland環境の場合
podman run -it --rm \ -e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \ -e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \ -e QT_QPA_PLATFORM=wayland \ -v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \ -v $(pwd):/workspace \ -v $HOME/.config/kicad:/root/.config/kicad \ kicad:9.0
起動スクリプト
X11 / Wayland自動検出 (推奨)
#!/usr/bin/env sh
# KiCAD起動スクリプト
set -e
# 設定
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
echo "KiCAD起動スクリプト"
echo "==========================="
echo "イメージ: ${IMAGE_NAME}"
echo "ワークスペース: ${WORKSPACE_DIR}"
echo ""
# セッションタイプの検出
SESSION_TYPE="${XDG_SESSION_TYPE:-x11}"
echo "セッションタイプ: ${SESSION_TYPE}"
# SELinux環境の検出
SELINUX_OPTS=""
VOLUME_OPTS=""
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
echo "SELinux: 有効"
SELINUX_OPTS="--security-opt label=type:container_runtime_t"
VOLUME_OPTS=":Z"
else
echo "SELinux: 無効または未検出"
fi
# X11またはWaylandに応じて起動
if [ "${SESSION_TYPE}" = "wayland" ]; then
echo "Waylandモードで起動します"
echo ""
podman run -it --rm \
-e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
-e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
-e QT_QPA_PLATFORM=wayland \
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
else
echo "X11モードで起動します"
echo ""
# X11転送の許可 (X11を使用している場合)
xhost +local: 2>/dev/null || true
podman run -it --rm \
-e DISPLAY="${DISPLAY}" \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
fi
X11向け
#!/usr/bin/env sh
# KiCAD起動スクリプト
set -e
# 設定
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
echo "KiCAD起動スクリプト (X11)"
echo "==========================="
echo "イメージ: ${IMAGE_NAME}"
echo "ワークスペース: ${WORKSPACE_DIR}"
echo ""
# SELinux環境の検出
SELINUX_OPTS=""
VOLUME_OPTS=""
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
echo "SELinux: 有効"
SELINUX_OPTS="--security-opt label=type:container_runtime_t"
VOLUME_OPTS=":Z"
else
echo "SELinux: 無効または未検出"
fi
# X11転送の許可 (X11を使用している場合)
xhost +local: 2>/dev/null || true
# KiCADを起動
podman run -it --rm \
-e DISPLAY="${DISPLAY}" \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
Wayland向け
#!/usr/bin/env sh
# KiCAD起動スクリプト (Wayland専用)
set -e
# 設定
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
echo "KiCAD起動スクリプト (Wayland)"
echo "==========================="
echo "イメージ: ${IMAGE_NAME}"
echo "ワークスペース: ${WORKSPACE_DIR}"
echo ""
# SELinux環境の検出
SELINUX_OPTS=""
VOLUME_OPTS=""
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
echo "SELinux: 有効"
SELINUX_OPTS="--security-opt label=type:container_runtime_t"
VOLUME_OPTS=":Z"
else
echo "SELinux: 無効または未検出"
fi
# KiCADを起動
podman run -it --rm \
-e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
-e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
-e QT_QPA_PLATFORM=wayland \
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
複数ディレクトリをマウントする場合
#!/usr/bin/env sh
# KiCAD起動スクリプト (複数ディレクトリマウント / X11/Wayland自動検出)
set -e
# 設定
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
CURRENT_DIR="$(pwd)"
PROJECT_DIR="${KICAD_PROJECT_DIR:-/home/user/projects}"
echo "KiCAD起動スクリプト"
echo "==========================="
echo "イメージ: ${IMAGE_NAME}"
echo "カレントディレクトリ: ${CURRENT_DIR} -> /workspace"
echo "プロジェクトディレクトリ: ${PROJECT_DIR} -> /projects"
echo ""
# セッションタイプの検出
SESSION_TYPE="${XDG_SESSION_TYPE:-x11}"
echo "セッションタイプ: ${SESSION_TYPE}"
# SELinux環境の検出
SELINUX_OPTS=""
VOLUME_OPTS=""
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
echo "SELinux: 有効"
SELINUX_OPTS="--security-opt label=type:container_runtime_t"
VOLUME_OPTS=":Z"
fi
# X11 または Waylandに応じて起動
if [ "${SESSION_TYPE}" = "wayland" ]; then
echo "Waylandモードで起動します"
echo ""
podman run -it --rm \
-e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
-e XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR}" \
-e QT_QPA_PLATFORM=wayland \
-v "${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY:-wayland-0}:ro" \
-v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
-v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
else
echo "X11モードで起動します"
echo ""
# X11転送の許可 (X11を使用している場合)
xhost +local: 2>/dev/null || true
podman run -it --rm \
-e DISPLAY="${DISPLAY}" \
-v /tmp/.X11-unix:/tmp/.X11-unix:ro \
-v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
-v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
${SELINUX_OPTS} \
"${IMAGE_NAME}" "$@"
fi
スクリプトに実行権限を付与する。
chmod u+x run-kicad-gui.sh
スクリプトを実行してKiCADを起動する。
./run-kicad-gui.sh
環境変数でイメージやディレクトリを指定することもできる。
# イメージを指定 KICAD_IMAGE=kicad:8.0 ./run-kicad-gui.sh # ワークスペースを指定 KICAD_WORKSPACE=/path/to/project ./run-kicad-gui.sh # 両方を指定 KICAD_IMAGE=kicad:nightly KICAD_WORKSPACE=/path/to/project ./run-kicad-gui.sh
CLI版の実行
kicad-cliを使用してコマンドラインから操作する。
基本
ヘルプを表示する。
podman run --rm kicad:9.0 kicad-cli --help
バージョンを確認する。
podman run --rm kicad:9.0 kicad-cli --version
回路図のエクスポート
回路図をPDFへ変換する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch
回路図をSVGに変換する例を以下に示す。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli sch export svg -o <出力するPDFファイル名>.svg <入力するプロジェクトファイル名>.kicad_sch
ネットリストを出力する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli sch export netlist -o <出力するネットリスト名>.net <入力するプロジェクトファイル名>.kicad_sch
PCBのエクスポート
PCBをガーバーファイルへ出力する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli pcb export gerbers -o ./gerbers/ <入力するプロジェクトファイル名>.kicad_pcb
PCBをPDFへ変換する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli pcb export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_pcb
PCBをSVGへ変換する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli pcb export svg -o <出力するSVGファイル名>.svg <入力するプロジェクトファイル名>.kicad_pcb
PCBを3DモデルSTEP形式でエクスポートする。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli pcb export step -o <出力する3Dモデルファイル名>.step <入力するプロジェクトファイル名>.kicad_pcb
DRC (デザインルールチェック)
PCBのデザインルールチェックを実行する。
podman run --rm \ -v $(pwd):/workspace \ kicad:9.0 \ kicad-cli pcb drc -o <出力するDRCファイル名>.txt <入力するプロジェクトファイル名>.kicad_pcb
CLI実行スクリプト
kicad-cliを簡単に実行するためのスクリプトを作成する。
#!/usr/bin/env sh
# KiCAD CLI実行スクリプト
set -e
# 設定
IMAGE_NAME="${KICAD_IMAGE:-kicad:9.0}"
WORKSPACE_DIR="${KICAD_WORKSPACE:-$(pwd)}"
# 引数が指定されていない場合はヘルプを表示
if [ $# -eq 0 ]; then
echo "KiCAD CLI実行スクリプト"
echo "======================="
echo ""
echo "使用方法:"
echo " $0 <kicad-cliコマンド>"
echo ""
echo "例:"
echo " # ヘルプ表示"
echo " $0 --help"
echo ""
echo " # 回路図をPDFに変換"
echo " $0 sch export pdf -o output.pdf input.kicad_sch"
echo ""
echo " # PCBをGerberに出力"
echo " $0 pcb export gerbers -o ./gerbers/ input.kicad_pcb"
echo ""
echo "環境変数:"
echo " KICAD_IMAGE : 使用するイメージ(デフォルト: kicad:9.0)"
echo " KICAD_WORKSPACE : ワークスペースディレクトリ(デフォルト: カレントディレクトリ)"
echo ""
exit 1
fi
# SELinux環境の検出
VOLUME_OPTS=""
if [ -f /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ]; then
VOLUME_OPTS=":Z"
fi
# KiCAD CLIを実行
podman run --rm \
-v "${WORKSPACE_DIR}:/workspace${VOLUME_OPTS}" \
"${IMAGE_NAME}" \
kicad-cli "$@"
スクリプトに実行権限を付加する。
chmod u+x run-kicad-cli.sh
スクリプトを実行する。
# ヘルプ表示 ./run-kicad-cli.sh --help # 回路図をPDFに変換 ./run-kicad-cli.sh sch export pdf -o <出力するPDFファイル名>.pdf <入力するプロジェクトファイル名>.kicad_sch # PCBをガーバーへ出力 ./run-kicad-cli.sh pcb export gerbers -o ./gerbers/ <入力するプロジェクトファイル名>.kicad_pcb
CI/CD環境での使用
GitLab CI
stages:
- build
- export
generate_gerbers:
stage: export
image: docker.io/kicad/kicad:9.0
script:
- kicad-cli pcb export gerbers -o ./gerbers/ project.kicad_pcb
artifacts:
paths:
- gerbers/
expire_in: 1 week
generate_pdf:
stage: export
image: docker.io/kicad/kicad:9.0
script:
- kicad-cli sch export pdf -o schematic.pdf project.kicad_sch
- kicad-cli pcb export pdf -o pcb.pdf project.kicad_pcb
artifacts:
paths:
- schematic.pdf
- pcb.pdf
expire_in: 1 week
run_drc:
stage: build
image: docker.io/kicad/kicad:9.0
script:
- kicad-cli pcb drc -o drc-report.txt project.kicad_pcb
- cat drc-report.txt
artifacts:
paths:
- drc-report.txt
expire_in: 1 week
GitHub Actions
name: KiCAD Export
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
export:
runs-on: ubuntu-latest
container:
image: docker.io/kicad/kicad:9.0
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Generate Gerbers
run: |
kicad-cli pcb export gerbers -o ./gerbers/ project.kicad_pcb
- name: Generate PDFs
run: |
kicad-cli sch export pdf -o schematic.pdf project.kicad_sch
kicad-cli pcb export pdf -o pcb.pdf project.kicad_pcb
- name: Run DRC
run: |
kicad-cli pcb drc -o drc-report.txt project.kicad_pcb
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
name: kicad-outputs
path: |
gerbers/
*.pdf
drc-report.txt
トラブルシューティング
GUIが起動しない (X11)
X11転送を許可する。
xhost +local:
DISPLAYが正しく設定されているか確認する。
echo $DISPLAY
XAuthの問題の場合は、以下に示すオプションを追加する。
-v ${HOME}/.Xauthority:/root/.Xauthority:ro
GUIが起動しない (Wayland)
Waylandソケットが存在するか確認する。
ls -la ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}
環境変数が正しく設定されているか確認する。
echo $WAYLAND_DISPLAY echo $XDG_RUNTIME_DIR echo $XDG_SESSION_TYPE
Waylandソケットのパーミッションエラーの場合は、以下に示すオプションを追加する。
--security-opt label=disable
Qtアプリケーションが正しくWaylandを使用しているか確認する。
# コンテナ内で確認
podman run --rm \
-e WAYLAND_DISPLAY=${WAYLAND_DISPLAY} \
-e XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR} \
-e QT_QPA_PLATFORM=wayland \
-v ${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:${XDG_RUNTIME_DIR}/${WAYLAND_DISPLAY}:ro \
kicad:9.0 \
sh -c 'echo $QT_QPA_PLATFORM'
X11とWaylandの切り替え
セッションタイプを確認する。
echo $XDG_SESSION_TYPE
強制的にX11モードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。
XDG_SESSION_TYPE=x11 ./run-kicad-gui.sh
強制的にWaylandモードで起動する場合は、XDG_SESSION_TYPE環境変数を設定する。
XDG_SESSION_TYPE=wayland ./run-kicad-gui.sh
パーミッションエラー
SELinux環境では、ボリュームマウントに:Zオプションを付与する。
-v $(pwd):/workspace:Z
ホスト側のディレクトリのパーミッションを確認する。
ls -la $(pwd)
日本語が表示されない
イメージを再ビルドする。
# Docker docker build -t kicad:9.0 -f Containerfile . --no-cache # Podman podman build -t kicad:9.0 -f Containerfile . --no-cache
日本語フォントがインストールされているか確認する。
# Docker docker run --rm kicad:9.0 fc-list | grep -i noto # Podman podman run --rm kicad:9.0 fc-list | grep -i noto
ファイルが見つからない
ボリュームマウントのパスを確認する。
# コンテナ内でファイルを確認 (Docker) docker run --rm -v $(pwd):/workspace kicad:9.0 ls -la /workspace # コンテナ内でファイルを確認 (Podman) podman run --rm -v $(pwd):/workspace kicad:9.0 ls -la /workspace
作業ディレクトリを確認する。
# Docker docker run --rm -v $(pwd):/workspace kicad:9.0 pwd # Podman podman run --rm -v $(pwd):/workspace kicad:9.0 pwd
コマンドが見つからない
kicad-cliが正しくインストールされているか確認する。
# Docker docker run --rm kicad:9.0 which kicad-cli docker run --rm kicad:9.0 kicad-cli --version # Podman podman run --rm kicad:9.0 which kicad-cli podman run --rm kicad:9.0 kicad-cli --version
参考情報
KiCADに関する詳細な情報を知りたい場合は、以下に示すWebサイトを参照すること。
- KiCAD公式サイト
- KiCAD Dockerイメージ
- KiCAD CLIドキュメント
- KiCADドキュメント
- KiCAD GitLab