/home/amgsk

Arch LinuxでClaude DesktopのCoworkを動かす(追記あり)

· updatedAt: 2026/07/17 · amgsk
要約
  • Claude DesktopのCoworkが「仮想化が完全にセットアップされていません」と表示されて使えない問題をArch Linuxで解決した
  • QEMU・OVMF・virtiofsdはインストール済みでも、CoworkはDebian系の固定パスしか探さないため検出に失敗する
  • シンボリックリンクを3本張るだけで解決できる

TOC


2026-07-17 追記: 公式パッケージの更新により、この記事の手順は不要になった。むしろ手動で張ったシンボリックリンクが残っているとインストールが失敗するため、追記セクションの復旧手順を参照。

cowork setup error

Linux向けのClaude Desktopが公開された。 今まではAUR版を使用していたけど、公式に乗り換えた。

しかし、OfficialのClaude Desktopでは、Cowork(セキュアなローカルVM上でClaudeが作業する機能)が有効化とならず、 「仮想化が完全にセットアップされていません。Coworkには QEMU が必要です。‘sudo apt install qemu-system-x86 ovmf virtiofsd’ でインストールしてから、Claude を再起動してください」 という警告が表示されて使えなかった。

QEMUはとっくにインストール済みなのに。

調べたところ原因はCoworkの検出ロジックがDebian系ディストリビューションの固定パスしか見ていないことだった。 Arch Linuxではシンボリックリンクを3本張るだけで解決できたので、その手順をまとめる。

環境

  • OS: Arch Linux (kernel 7.0.14-zen1-1-zen)
  • Claude Desktop: claude-desktop-official-bin 1.17377.0-1 (AUR)
  • qemu-full 11.0.2-1 / edk2-ovmf 202605-1 / virtiofsd 1.13.3-1

原因: CoworkはDebianの固定パスしか探さない

Claude Desktopのapp.asar内にあるCoworkの仮想化チェックを読むと、以下の3条件をすべて満たす必要がある(1つでも欠けると冒頭の警告になる)。

チェック対象Coworkが探すパスArch Linuxでの実際の場所
QEMU本体PATH上のqemu-system-x86_64/usr/bin/qemu-system-x86_64
OVMF
(UEFIファームウェア)
/usr/share/OVMF/OVMF_CODE_4M.fdまたはOVMF_CODE.fd/usr/share/edk2/x64/OVMF_CODE.4m.fd
virtiofsd/usr/libexec/virtiofsdまたは/usr/bin/virtiofsd/usr/lib/virtiofsd

QEMU本体はPATHから探すので問題ないが、OVMFとvirtiofsdはDebian/Ubuntuが配置するパスがハードコードされている。

  • Archのedk2-ovmfは4MBフラッシュイメージをOVMF_CODE.4m.fd(ドット・小文字)という名前で/usr/share/edk2/x64/に置くのに対し、DebianはOVMF_CODE_4M.fd(アンダースコア・大文字)で/usr/share/OVMF/に置く。この命名差だけで検出に失敗する
  • Claude Desktopはvirtiofsdを同梱しているが、同梱版へのフォールバックが働くのはOSがUbuntu 22.xと判定されたときだけ。それ以外のディストリビューションではシステムのvirtiofsdが上記2パスに存在する必要がある

エラーメッセージがsudo apt installを案内しているのも、チェック自体がDebian前提だからである。

このほかに/dev/kvm/dev/vhost-vsockの読み書き権限もチェックされるが、 ユーザーがkvmグループに所属していてvhost_vsockモジュールがロードされていれば通る(後述)。

解決: シンボリックリンクを3本張る

必要なパッケージがインストール済みであることを確認する。

1
pacman -Q qemu-full edk2-ovmf virtiofsd

未インストールなら入れておく(qemu-fullの代わりにqemu-baseでもよい)。

1
sudo pacman -S qemu-full edk2-ovmf virtiofsd

あとはCoworkが探すパスに向けてシンボリックリンクを張るだけ。

1
2
3
sudo ln -s /usr/share/edk2/x64/OVMF_CODE.4m.fd /usr/share/OVMF/OVMF_CODE_4M.fd
sudo ln -s /usr/share/edk2/x64/OVMF_VARS.4m.fd /usr/share/OVMF/OVMF_VARS_4M.fd
sudo ln -s /usr/lib/virtiofsd /usr/bin/virtiofsd

OVMF_VARSのリンクは起動時チェックの対象外だが、CoworkはVM起動時にOVMF_CODEのパス文字列をOVMF_VARSに置換してNVRAMテンプレートとして使うため、 張っておかないと「警告は消えたのにVMが起動しない」という分かりにくい状態になる。

最後にClaude Desktopを完全に終了して再起動する(トレイ常駐も含めてquitする)。 チェック結果は起動中キャッシュされるため、再起動しないと警告が消えない。

KVM権限まわりの補足

symlinkを張っても解決しない場合は、KVMの権限を確認する。

1
2
ls -la /dev/kvm /dev/vhost-vsock
groups
  • /dev/kvmが存在しない場合はBIOS/UEFIで仮想化支援機能(Intel VT-x / AMD-V)を有効にする
  • Permission deniedになる場合はsudo usermod -aG kvm $USERでグループに追加して再ログインする
  • /dev/vhost-vsockが存在しない場合はsudo modprobe vhost_vsockでモジュールをロードする

注意点

作成したシンボリックリンクはpacmanの管理外なので、edk2-ovmfやvirtiofsdのパッケージ更新でファイル配置が変わるとリンク切れして同じ警告が再発する可能性がある。 再発したらリンクを張り直せばよい。

また、Claude Desktop側のアップデートでArchのパスが正式にサポートされれば、この対処自体が不要になるはずである。

追記 (2026-07-17): 公式パッケージの更新でこの手順は不要になった

状況が2つ変わった。

  1. AURの公式パッケージ名が変更された。 claude-desktop-official-bin は AUR から削除され、現在は claude-desktop という名前で配布されている
  2. 新パッケージがシンボリックリンクを同梱するようになった。 claude-desktop 1.21459.1 時点で、virtiofsdバイナリの同梱に加えて、/usr/bin/virtiofsd/usr/share/edk2/OVMF_CODE_4M.fd/usr/share/edk2/OVMF_VARS_4M.fd のシンボリックリンクがパッケージ自体に含まれるようになった

つまりこの記事のワークアラウンドは公式に取り込まれた形で、リンクを手動で張る必要はなくなった。

手動リンクが残っていると新パッケージのインストールが失敗する

一方で、手動で張ったリンクが残ったまま新パッケージをインストールしようとすると、pacmanがパッケージ管理外のファイルとの競合を検出してエラーになる。

1
2
3
4
5
error: failed to commit transaction (conflicting files)
claude-desktop: /usr/bin/virtiofsd exists in filesystem
claude-desktop: /usr/share/edk2/OVMF_CODE_4M.fd exists in filesystem
claude-desktop: /usr/share/edk2/OVMF_VARS_4M.fd exists in filesystem
Errors occurred, no packages were upgraded.

復旧手順

手動で張ったシンボリックリンクを削除してから、旧パッケージを新パッケージへ入れ替える。 rm -f なので、張っていないリンクがあってもそのままでよい。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 手動で張ったシンボリックリンクを削除する
sudo rm -f /usr/bin/virtiofsd \
  /usr/share/edk2/OVMF_CODE_4M.fd \
  /usr/share/edk2/OVMF_VARS_4M.fd \
  /usr/share/OVMF/OVMF_CODE_4M.fd \
  /usr/share/OVMF/OVMF_VARS_4M.fd

# 旧パッケージを削除して新パッケージをインストールする
sudo pacman -Rns claude-desktop-official-bin
yay -S claude-desktop

リンクを消さずに、pacmanの --overwrite で管理下に取り込んでしまう方法もある。パッケージが提供するリンクは手動で張ったものと同じ内容なので、上書きしても実害はない。

1
yay -S claude-desktop --overwrite '/usr/bin/virtiofsd,/usr/share/edk2/OVMF_CODE_4M.fd,/usr/share/edk2/OVMF_VARS_4M.fd'

いずれの方法でも、以後はリンクがpacmanの管理下に入るため、パッケージ更新時のリンク切れを心配する必要もなくなる。

EOF