📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

ページの作成:「== 概要 == 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環境 ====
カレントディレクトリをマウントして実行する。<br>
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>


== 起動スクリプト ==
== 起動スクリプト ==
==== 非SELinux環境 ====
==== 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 "KiCAD Podman起動スクリプト"
  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>
==== SELinux環境 ====
==== 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 "KiCAD Podman起動スクリプト"
  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: 有効"
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
    VOLUME_OPTS=":Z"
  else
  else
    echo "SELinux: 無効または未検出"
    echo "SELinux: 無効または未検出"
    VOLUME_OPTS=""
  fi
  fi
# X11転送の許可 (X11を使用している場合)
xhost +local: 2>/dev/null || true
   
   
  # KiCADを起動
  # KiCADを起動
  podman run -it --rm \
  podman run -it --rm \
   -e DISPLAY="${DISPLAY}" \
   -e WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}" \
   -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
  -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: 有効"
    echo "SELinux: 有効"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    SELINUX_OPTS="--security-opt label=type:container_runtime_t"
    VOLUME_OPTS=":Z"
    VOLUME_OPTS=":Z"
  fi
  fi
   
   
  # X11転送の許可 (X11を使用している場合)
  # X11 または Waylandに応じて起動
xhost +local: 2>/dev/null || true
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
   
   
# KiCADを起動
    podman run -it --rm \
podman run -it --rm \
      -e DISPLAY="${DISPLAY}" \
  -e DISPLAY="${DISPLAY}" \
      -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
  -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
      -v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
  -v "${CURRENT_DIR}:/workspace${VOLUME_OPTS}" \
      -v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
  -v "${PROJECT_DIR}:/projects${VOLUME_OPTS}" \
      ${SELINUX_OPTS} \
  ${SELINUX_OPTS} \
      "${IMAGE_NAME}" "$@"
  "${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>
回路図を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 "  # スキーマティックをPDFに変換"
     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>
==== パーミッションエラー ====
==== パーミッションエラー ====