ブログの更新が手間で、相当開いてしまいました。 これからはちょこちょこ更新できるようにしたいものです。
最近 FPGA を触ろうと思って、Xilinxのツールを入れようとしています。
普段は Windows 使いなので最初は Windows 版の Vitis/Vivado をインストールしていたのですが、風のうわさで Linux 版でないとやりたい作業ができないという話を聞き、Linux 上で Xilinx のツールを使いたいなと思い立ちました。
知り合いは Xilinx ツール用に Ubuntu をデュアルブートしたり仮想マシンを立てたりしてるようですが、あまりそういう面倒なことはしたくないので、 先人の事例 を参考に docker でドカドカしてみることにしました。
困った現象
先人の知恵を参考に Dockerfile を書いてビルドを走らせるのですが、Xilinxのインストーラーがコケてしまいました。
ERROR - There is not enough disk space on /tools/Xilinx to install.
ディスクの容量不足ということで、Cドライブの余計なファイルを消したりして 400GB 以上の空き容量を作って再度挑戦。
しかし、ディスクの空き容量は増えたにもかかわらず Xilinx のインストーラーは再度容量不足で失敗。
dfコマンドで見てみると、空き容量は増えてないようでした。
対処方法
WSL上で見えるデータの実体は仮想ハードディスク内に記録されていて、この仮想ハードディスクファイルのサイズを拡張することが必要とのことです。
具体的な方法は Microsoft の公式に書かれているので、そちらを参考にやっていきます。
実際の作業手順を以下に示します。
- Windows のコマンドプロンプトを開いて
- WSLを止める:
wsl --shutdown
diskpart
コマンドを実行
- WSLを止める:
diskpart
の窓が開くので、次のコマンドを実行- dockerが使っている仮想ハードディスクを選択する (注: 公式に書かれている Ubuntu の仮想ハードディスクとは別のファイルであることに注意)
DISKPART> select vdisk file="C:\Users\xxxx\AppData\Local\Docker\wsl\data\ext4.vhdx"
- 現在の仮想ディスクのサイズを確認する。
DISKPART> detail vdisk デバイスの種類 ID: 0 (不明) ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明) 状態: 追加済み 仮想サイズ: 256 GB 物理サイズ: 136 MB ファイル名: C:\Users\xxxx\AppData\Local\Docker\wsl\distro\ext4.vhdx 子: いいえ 親ファイル名: 関連付けられたディスク番号: 見つかりません。
- 仮想ディスクの容量を拡大する
DISKPART> expand vdisk maximum=512000
- 拡大後のディスクサイズを確認する。
DISKPART> detail vdisk デバイスの種類 ID: 0 (不明) ベンダー ID: {00000000-0000-0000-0000-000000000000} (不明) 状態: 追加済み 仮想サイズ: 500 GB 物理サイズ: 109 MB ファイル名: C:\Users\xxxx\AppData\Local\Docker\wsl\distro\ext4.vhdx 子: いいえ 親ファイル名: 関連付けられたディスク番号: 見つかりません。
- Docker Desktop を再起動する
- WSLの窓を開いて、次のコマンドを実行
- ディスクのサイズが変わったことを認識させる
$ sudo mount -t devtmpfs none /dev $ mount | grep ext4 /dev/sdd on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered) /dev/sde on /mnt/wsl/docker-desktop-data/isocache type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered) /dev/sde on /mnt/wsl/docker-desktop-data/version-pack-data type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered) /dev/sdc on /mnt/wsl/docker-desktop/docker-desktop-user-distro type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
- ファイルシステムのサイズを拡大する
$ sudo resize2fs /dev/sde
以上の手順を踏むことで、ディスクのサイズを拡張できました。
本当にコンテナの中からディスクサイズが増えているかを確認します。
$ docker run --rm -it ubuntu:22.04
root@d8bef8e273db:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 515010816 27423880 463914680 6% /
tmpfs 65536 0 65536 0% /dev
tmpfs 16414924 0 16414924 0% /sys/fs/cgroup
shm 65536 0 65536 0% /dev/shm
/dev/sde 515010816 27423880 463914680 6% /etc/hosts
tmpfs 16414924 0 16414924 0% /proc/acpi
tmpfs 16414924 0 16414924 0% /sys/firmware
ということで、Docker コンテナの中から触れるディスクサイズを増やすことができました。
めでたしめでたし。