はじめに
DEXCS2023については、約1年ほど前の記事で、その作り方について備忘録として残しておいた。DEXCS2024は本執筆の開始時点(2024/7/10)で、まだ作成段階の端緒でしかないが、基本的な作成法は変わらない予定で進めている。しかし、基本OSの変更(ubuntu-22.04LTS ⇒ 24.04LTS)に伴い、DEXCS2023での作法が通用しなくなっている箇所があったりしている。また、(いつまで続くかわからないが)次のバージョン(DEXCS2025)は基本OSの変更が無いとなれば、次のバージョンも想定した作り方にした方が良いので、全体的な作成手順も見直して本記事に取り纏めることとした。
Table of Contents
Cubicについて
Cubicのインストールから使用方法については、約2年前にアップした記事があるので参考にされたい。この間、Cubicそのものは何度か更新されていたが、基本的な使い方は変わっていない。
また今回も、作業環境はubuntu-22.04上で実施している。
なお以下の説明で、ブロック毎に背景色を変えて説明してある箇所があり、それぞれのブロックに記述されている内容は以下の通りである点、予めお断りしておく。
cubic 仮想マシン上での入力コマンド
上記コマンドコマンドに対する応答
cubic仮想マシンに収納するファイル名
上記ファイルの内容
テスト&設定用仮想マシンでの応答
DEXCS作成作業の全体概要
作成作業の流れイメージを下図に示しておく。
Cubicの仮想マシンで行う❶作業は、apt install … といったコマンド入力によるインストール作業と、cd /opt/.. などとして所定のディレクトリに移動して設定ファイルを編集したりすることになるが、ファイルの編集にはGUIエディタが使えないので、共有フォルダに予め作成して収納しているファイルを❻ドラッグ&ドロップしてコピーするだけの作業に徹している。では、そもそもこの❻ドラッグ&ドロップするコピー元のファイルはどうやって作成するかという疑問もあるだろう。簡単なテキストファイルであれば、ベースマシン上のテキストエディタで作成すれば良いが、そうでない場合、DEXCSでは以下の手順で実施している。
インストールやコピーしたいアイテムが、ある程度まとまった段階で、❷isoイメージファイルを作成し、これを使ってテスト&設定用の仮想マシン(以下、テスト用仮想マシンと称する)を構築する。この際に、テスト用仮想マシンのユーザー名を「dexcs」として作成することが重要である(そうしないと、最終的なDEXCSセットアップで失敗する可能性を残すことになる)。
テスト用の仮想マシンが立ち上がったら、インストールしたアプリの動作を確認するとともに、❹アプリの初期設定や、デスクトップのツールバーに登録するなどの設定を行う。そして設定が完了したら❺設定ファイルを共有フォルダにコピーしておく。これを改めてCubic仮想マシンの所定場所にコピーしてisoイメージを作り直す。作り直したisoイメージで、新たに別のテスト用仮想マシンを作成し、設定が反映されていることを確認する。反映されていないようであれば、設定ファイルを見直すなりの作業も必要になる。
作業手順の概要
DEXCS2022では、初めてCubicを使うということになった為、何をどうしたものか、行きあたりばったりでやって、このテストサイクルを何度も繰り返す必要があったが、DEXCS2023ではDEXCS2022で作成した設定ファイルの多くを、そのままあるいは小変更で使えているので、テストサイクルの回数は少なく済んだ。
今回(DEXCS2024)は、ベースOSが更新されるので、これまでのやり方が通用しない面もある。また、次回(DEXCS2025)はベースOSを変更しないこと見越せば、共通で使える部分とそうでない部分とを切り分けて作成するのが合理的と考え、作業手順を見直した。
具体的には、OpenFOAMのバージョンアップに伴って設定変更等が必要になるオープンCAEアプリケーション(OpenFOAM, FreeCAD, ParaView, TreeFoam, DEXCSツール類)と、そうでないものがあるので、最初に後者のほとんど全てを組み込んだベースisoイメージを作成しておく。次にDEXCS2024では、OpenFOAM-2406をベースとしたオープンCAEアプリケーションを組み込んでリリースする。DEXCS2025を作成するに際しては、ベースisoイメージを起点として、全体更新した後、OpenFOAM-2506をベースとしたオープンCAEアプリケーションを組み込んでリリースすれば良いとなる。
テスト用仮想マシンとのファイル共有
先にテスト用仮想マシンで作成した設定ファイルをベースマシンの共有フォルダにコピーして保存するよう記した。しかし、仮想マシンを作成する際のオプションとして共有フォルダを設定するメニューは存在するが、その設定だけでは、仮想マシンとベースマシン間とのファイル共有はできない。仮想マシンを作成した後、仮想マシンに追加機能(ベースマシンとの間でファイル共有やクリップボード共有を出来るようにする仕組み)をインストールする必要がある。
最終的には、VirtualBoxとVMPlayerの仮想マシンで利用することを想定した仕組みを用意するが、作成途上の段階ではテスト用仮想環境(ここではVMPlayer)との間で使えるものがあればよい。
VMPlayerの場合には、テスト用仮想マシンにてVMware Tools をインストールすることも出来るが、cubicでの作業の更新(isoの作り直し)の都度実施するのは面倒である。cubic仮想マシンで、以下インストールしておけば、
apt install open-vm-tools-desktop
ホストマシンで画面サイズの変更をしたり、クリップボードの共有などが使えるようになる。共有ファイルを使えるようにするには、以下のスクリプトを実行するだけで良い。
/etc/skel/Desktop/DEXCS/setupVM.sh
#!/bin/bash
gnome-terminal --command /opt/DEXCS/setupVBox.sh
実行スクリプトの実体は以下の通り。
/opt/DEXCS/setupVM.sh
#!/bin/bash
sudo chmod 666 /etc/fstab
echo ".host:/ /mnt fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0" >> /etc/fstab
sudo chmod 644 /etc/fstab
rm -f ~/Desktop/DEXCS/setupVM.sh
rm -f ~/Desktop/DEXCS/setupVBox.sh
sudo reboot
vm用のファイルシステム(デフォルトで組み込み済)を /etc/fstab に追記しているだけである。
ベースisoイメージの作成
ベースOSの日本語環境
DEXCSでは、基本的にubuntuのLTSで、Ubuntu Desktop 日本語 RemixをベースOSとして採用してきたが、ubuntu 24.04からは、日本語Remix版がリリースされなくなった。
したがって、Cubic仮想マシンを構築するのに使用したisoイメージは、Ubuntuダウンロードサイトから入手したUbuntu Desktop 24.04 LTS(ubuntu-24.04-desktop-amd64.iso)である。
問題は、日本語環境をどうするかである。全て英語環境で使って下さいということにすれば、作り手としてよほど簡単だが、DEXCSでは(特に日本の)初心者向けを謳っているからに避けて通れない。もっとも上記isoイメージであっても、Ubuntuインストールの段階で「日本語」を選択すれば。それなりに日本語環境で使えそうな感触はある。但し「それなり」であって、全く十分でない。
特にフォルダー名で、OpenFOAMを利用する際には日本語フォルダ名を使えないので、日本語のフォルダー名を、英語表記に戻すという設定作業が必須であった。これには従来から、以下のコマンド入力で一括変更すれば良いとなっていた。
env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update
これを入力すると、これまでは下図のダイヤログ画面が現れてくれたのだが、
オリジナルのubuntu Desktopを使うと、上のダイヤログそのものが現れてくれない。これはCubic仮想マシンへでの組み込み以前、テスト用(VMPlayer上の)仮想マシンにおいて、然りであった。そこでまず、テスト用仮想マシンで上記のフォルダー名変更する仕組みを調べた結果、これまで上記の方法が通用していたのは、Ubuntuの日本語デスクトップ環境に必要な基本的なパッケージが組み込まれていた為であるらしい。24.04LTS版ではこれを組み込んだRemix版がリリースされなくて、これ(パッケージそのものは24.04LTS用に更新されている)を使いたい場合は、これを自身でインストールする必要があるということであった。
インストールの方法は、Ubuntu 24.04 LTSの日本語Remixについての情報ページによれば、以下のコマンドを入力するだけで、
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/noble.sources -O /etc/apt/sources.list.d/ubuntu-ja.sources
$ sudo apt -U upgrade
$ sudo apt install ubuntu-defaults-ja
テスト用仮想マシンでは、これによって上述の方法が使えるようになって、フォルダー名も英語表記に変更できるようになった。
しかし、Cubic仮想マシンでは、上記パッケージのインストールはできたものの、名前変更のダイヤログが現れることはなかった。その結果、この状態で作成したisoイメージを使って作成したテスト用仮想マシンにおいては、インストール時に選択した言語の状態になっており、改めて、
env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update
上記コマンドを入力し、上記ダイヤログ画面での操作が必要になるという、もう一山があった。
但し、このコマンドによって作られる設定ファイルは、ホームディレクトリ下の.configフォルダに作られるので、テスト用仮想マシンの.configフォルダをブラックボックス的にコピーする方法で何とかなりそうである。
つまり、Cubic上では、以下入力するだけである。
wget https://www.ubuntulinux.jp/sources.list.d/noble.sources -O /etc/apt/sources.list.d/ubuntu-ja.sources
apt -U upgrade
apt install ubuntu-defaults-ja
FireFox
DEXCS2022の不具合情報のページでも記しているが、FireFox(標準のWebブラウザ)をそのまま使うと、ファイルブラウジング(同梱のpdfファイルを読むこと)ができない。標準ではsnap版がインストールされており、これをdebパッケージ版に戻すとともに、アップデートもdeb版を優先するように設定する必要があった(参考サイト)。そして、なおかつ現在では、その作法が変更になったようである(参考サイト)。
まずは、snap版FireFoxをアンインストールしたいが、
snap remove firefox
error: cannot communicate with server: Post "http://localhost/v2/snaps/firefox": dial unix /run/snapd.socket: connect: no such file or directory
となって、アンインストールは出来ない。これは、snapd などのサービスが Cubic のターミナル ページでは実行されないためであるらしい。まぁしかし、これを残したまま、deb版をインストールして、優先順位を変更すれば良いみたいだ。
まずは、APT keyrings を作成
install -d -m 0755 /etc/apt/keyrings
Mozilla APT リポジトリ署名キーをインポート
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
Mozilla 署名キーを sources.list に追加
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
Firefox パッケージの優先順位を設定して、Mozilla の DEB バージョンが常にデフォルトになるようにする
echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | tee /etc/apt/preferences.d/mozilla
APT を使用して Ubuntu に Firefox DEB をインストールする
apt update && apt install firefox
最後にパッケージの優先順位を確認する
apt-cache policy firefox
firefox:
Installed: 128.0~build2
Candidate: 128.0~build2
Version table:
1:1snap1-0ubuntu5 500
500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
*** 128.0~build2 1000
1000 https://packages.mozilla.org/apt mozilla/main amd64 Packages
100 /var/lib/dpkg/status
127.0.2~build1 1000
1000 https://packages.mozilla.org/apt mozilla/main amd64 Packages
......
tracker
trackerというのは、ファイルのメタデータを解析して、ファイル検索をファイルの名前だけでなく、メタデータからも解析できるようにするものだそうな。現時点で、これが出来ることのメリットを有するアプリは知らないし、このメタデータの解析に要するリソースが馬鹿にならない。DEXCS2022においてもシステムの動きが悪い・・・と思ってシステムモニタで調べると、ほとんどの場合、このtrackなんちゃらが原因であでった。そこで、trackerで検索すればこれは単純にアンインストールできる代物でなく、これを止める方法がFAQのような形で見つかって対処してきた。
そこでDEXCS2023では、標準セットアップでtrackerを起動しない状態でリリースすることにした(参考記事はこちら)。
Cubic上で、以下のように仕込んでおき、
apt-mark hold tracker
apt-mark hold tracker-extract
apt-mark hold tracker-miner-fs
chmod -x /usr/libexec/tracker-extract-3
chmod -x /usr/libexec/tracker-miner-fs-3
後述するDEXCSセットアップスクリプトで、trackerを停止させるようにした。
ubuntu標準ツール
これまでに説明したもの以外で追加したパッケージがいくつかあるが、普通に以下のapt install コマンドですんなりインストール出来て、そのまま使えており、テスト用仮想マシンで、dockツールバーへのメニュー登録も出来ている。何をインストールしたかは、パッケージの名前で推察できると思うので、ここでの説明は省く。
apt install gcc make perl emacs-lucid shutter kdiff3 libreoffice gnome-tweaks
説明は省くとしたが、DEXCS2024カスタマイズ作業に入った以降で、共通パッケージとして追加しておいた方が良かったパッケージ(libreoffice, gnome-tweaks)については補足しておく。
libreofficeは、DEXCS2023までは標準アプリとして使えるようになっていたが、日本語Remix版を使っていたからかもしれない。ubuntu 24.04では、改めてインストールする必要があった。
gnome-tweaksは、DEXCSのバージョンによって、同梱したり、しなかったりであったが、ubuntu 24.04ではアプリケーションウィンドウに外枠の境界線がなくて、複数アプリのウィンドウを重ねた時に、区別がつかなくなってしまうことがあったので、このツールで画面配色を変更し、少しでも区別しやすくしている。
DEXCSデスクトップ環境の設定
DEXCSのデスクトップ環境としてカスタマイズしているのは、壁紙とデスクトップ上に配置するDEXCSフォルダのアイコンと、Dockツールバーのサイズ変更とアイテム登録、といったくらいであろうか。
純正的なubuntu作法に則れば、/usr/share/フォルダ下に様々な設定ファイルを仕込む方法があり、かつてはそういうやり方をしていたが、Cubicを使うようになってからは、かなりブラックボックス的な簡略化手法で実現している。
以下に、テスト用仮想マシンで、デスクトップ周りの設定を変更した際の方法を示しておくが、
デスクトップレイアウトの変更方法
Dockツールバーのカスタマイズ方法
(注記)apt-install コマンドでインストールされたアプリではアプリケーション一覧中にランチャーアイコンが表示されるが、そうでないものは.local/share/applications フォルダ下に設定ファイル(*.desktop)を収納しておく必要はある。
これらカスタマイズした情報は、ホームフォルダ下の、.config、.localといった隠しフォルダ中に収納される。
これらのフォルダを、Cubicで構築中マシンの、/etc/skel/フォルダ下にそのままコピーして、isoイメージを作り直せば、これらのカスタマイズ情報がそのまま反映されることになる。
これも本来であれば、それぞれのカスタマイズ内容が、どこにどうやって保存されているのを調べて、その部分だけを/etc/skel/下にコピーするのが正道であるが、そこを調べないで、.config .local というフォルダごとコピーしているのでブラックボックス的手法と記した所以である。
詳しく調べた訳ではないが、様々なアプリのカスタマイズなど実施していくにつれ、これらのフォルダサイズは肥大化していく。isoのサイズを小さくしようと思ったら、必要最小限にする方策も必要になるが、Cubicではisoのサイズ制限がないので、この方法で済ませている。但し、ゴミ箱情報も含まれるので、これらを共有フォルダにコピーする前に、「ゴミ箱を空にする」操作は必須である。
なお、壁紙用の画像ファイルやアイコンファイルなど、DEXCSでカスタマイズして使用するものの収納場所は統一しておくのが一般的であろう。DEXCSでは、/opt/DEXCS/ フォルダ下に収納するようにしているが、フォルダの名前の付け方など、実体にそぐわないものがある点は承知している。
DEXCS2023の開発に際しては、とりあえずDEXCS2022で使っていたものをそのまま流用しつつ、すでに変更できているもの(壁紙の画像データやアイコンファイルなど)は変更したものを使い、そうでないものはDEXCS2023用のものに順次変更ながら作り直していくというやり方で実施している。どこかの段階でフォルダの名前の付け方を再構築することになるかもしれないが、もう少し完成度が上がってからの作業になりそうである。
OpenFOAM関連アプリのインストール、カスタマイズ方法
追加するアプリ(ライブラリーを含む)には大きく分けて3つのタイプがある。
- ubuntu の準標準アプリで、普通に apt install コマンドが使えるもの
- apt install コマンドが使えるが、レポジトリを追加する必要があるもの
- ソースコードやdebパッケージをダウンロードして、所定の方法でインストールするもの
apt install コマンドでインストールするものは、ほとんど /usr/ あるいは /opt/ フォルダ下にインストールされる。3番目のものは、DEXCSでは基本的に/opt/下にインストールするようにしているので、Cubicで作成するisoイメージにもそのまま反映される。インストールした後、アプリ」によっては様々なカスタマイズをすることになるが、これらはテスト用の仮想マシンで作成し、その設定ファイルをCubic仮想マシンに戻してisoを作り直すという方法は、これまでに述べたのと同じである。
以下、個別のアプリについて、インストールとカスタマイズした方法について記しておくが、記述の順番の大凡は、実際にDEXCS2023を作成したときのものである。アプリをどういう順番でインストールするかによって、重複ライブラリのインストール有無や、必要なカスタマイズが異なったりすることががあるかもしれない点はお断りしておく。
最終的には、Cubic仮想マシンでのコマンド操作を全バッチスクリプト化。テスト用仮想マシンで作成した全設定ファイルをまとめてコピーできるようにして、一発でDEXCSを作成できるようにすることを目指している。
OpenFOAM
DEXCS2022では、openfoam-2206(ESI版)を搭載したので、DEXCS2023も基本はこの更新版であるopenfoam-2306を使うようにしている。しかし、ESI版ではParaViewをソースビルドしないとparaFoamが使えないという問題があった。一方、Foundation版のOpenFOAMであれば、ubuntu用のパッケージインストールでparaFoamを使えるので、DEXCS2023ではこれも同梱することにした。但し、Foundation版の最新版はopenfoam-11となるが、ソルバー体系が従来と大きく変化してしまった為、旧版のopenfoam-10を採用した。
openfoam-2406のインストールにはこちらの情報をそのまま流用した。
apt install curl
curl -s https://dl.openfoam.com/add-debian-repo.sh | bash
wget -q -O - https://dl.openfoam.com/add-debian-repo.sh | bash
apt install openfoam2406-default
これにより、/usr/lib/openfoam/openfoam2306 にインストールされる。dockツールバーから、OF専用端末を起動できるべく、以下のランチャースクリプトを収納しておく。
/etc/skel/.local/applications/ofv2406.desktop
[Desktop Entry]
Comment=terminalForOpenFOAM-v2406
Name=OF-v2406Terminal
Exec=gnome-terminal -- /bin/bash --rcfile ~/.bashrc-OF4v2406
Terminal=false
Type=Application
Icon=/opt/DEXCS/icons/image_normal.png
Name[ja_JP]=ofv2406
4行目のプログラム本体(.baschrc-OF4v2306)は、以下の通り。因みにこのスクリプトは、日本のオープンCAE草創期メンバーで、数年前に夭折したY氏に依頼して作っていただいたものである。
/etc/skel/.bashrc-OFv2406
color_prompt=yes
if [ "$color_prompt" = yes ]; then
if [[ ${EUID} == 0 ]] ; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] '
fi
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h \w \$ '
fi
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
. /usr/lib/openfoam/openfoam2406/etc/bashrc
echo "OpenFOAMv2406 is enabled."
openfoam-12(foundation版)はこちらの情報をそのまま流用した。
ランチャープログラムは、今の所製作予定はないが、作るのは簡単である。
sh -c "wget -O - https://dl.openfoam.org/gpg.key > /etc/apt/trusted.gpg.d/openfoam.asc"
add-apt-repository http://dl.openfoam.org/ubuntu
apt-get update
apt-get -y install openfoam12
こちらは、/opet/openfoam10 にOpenFOAMの本体が、/opt/paraviewopenfoam510 にParaViewgaインストールされ、このParaViewはopenfoam-10 のparaFoamコマンドで利用可能になる。
ParaView
ParaViewバイナリ版は、ダウンロードサイトからParaView-5.13.0-RC1-MPI-Linux-Python3.10-x86_64.tar.gzを入手。これを解凍して、FreeCADのAppImage版でやったのと同様、シンボリックリンクを作成しておいた。
ln -s ParaView-5.13.0-RC2-MPI-Linux-Python3.10-x86_64/ paraview
dockツールバーから起動用のランチャースクリプトは以下の通り。
/etc/skel/.local/applications/paraview.desktop
#!/bin/sh
#paraview launcher
export LD_LIBRARY_PATH=''
a=`pwd`
openName=`basename $a`.foam
touch $openName
/opt/paraview/bin/paraview $openName
rm $openName
/usr/bin/paraFoam
#!/bin/sh
#paraview launcher
export LD_LIBRARY_PATH=''
a=`pwd`
openName=`basename $a`.foam
touch $openName
/opt/paraview/bin/paraview --data $openName
rm $openName
DEXCS2023以前では、7行目で、–data のオプション指定が無かった。DEXCS2024というか、ParaViewの新しいバージョン(5.13〜)では、これが無いと、ParaView起動時に.foamファイルが2重にロードされてしまう。
TreeFoam
当初FreeCADのインストールを最優先していたが、TreeFoamの挙動が不安定で、その原因がQt関連ライブラリに依存するらしいとなって、先にFreeCADをインストールしてしまうと、これらの関連ライブラリの多くがインストールされてしまい、TreeFoamの不具合原因を特定できなくなってしまっていた。そこでTreeFoamを先にインストールして、必要なQt関連ライブラリーを逐次インストールしながら、不具合対策したというのが以下の方法である(DEXCS2023の場合とは大きく異なっている)。
TreeFoamのサイトからダウンロードしたdebファイルを、/opt/フォルダ下に収納し、以下コマンド入力。
apt install gdebi
gdebi treefoam-dexcs_3.25.240831_all.deb
gdebi treefoam-doc_3.25.240831_all.deb
rm *.deb
apt install xclip wl-clipboard
apt install python3-pyqt5
apt install python3-pyside2.qtwidgets
インストール方法は、DEXCS2023まではdpkgを使っていたが、依存性チェックに問題があるらしいので、gdebiを使っているのと、インストール後の仮想環境における動作チェックで必要とされたものを追加インストールして、凡そ動くようにはなった。但し、何らかのエラーが生じた後、
Traceback (most recent call last):
File "/opt/TreeFoam/treefoam.py", line 1147, in onPressMouseButton
self.pressMouseButton(widget, event)
File "/opt/TreeFoam/treefoam.py", line 2927, in pressMouseButton
self.doubleClickRow(pos)
File "/opt/TreeFoam/treefoam.py", line 2879, in doubleClickRow
self.setCurrentCase()
File "/opt/TreeFoam/treefoam.py", line 2230, in setCurrentCase
self.clearStatusBar()
File "/opt/TreeFoam/treefoam.py", line 2041, in clearStatusBar
self.writeHddStatus(total, free)
File "/opt/TreeFoam/treefoam.py", line 2046, in writeHddStatus
msg = _(" 合計 ") + str(total) + _(" GB, 空き ") + str(free) + " GB"
^^^^^^^^^^^
TypeError: 'NoneType' object is not callable
というエラーが頻発する。しかし、これもTreFoamを起動し直せば解消されるという具合であった。
また、このエラーは、TreeFoam-Dexcs版に固有であったので、これを足がかりに調べたところ、解消するには、
/opt/TreeFoam/python/pyTreefoam.py(812行目〜)
#from PySide2 import QtCore
from PyQt5 import QtCore
という改変が必要であった。したがって、python3-pyside2.qtwidgetsのインストールは不要であったかもしれない。
また次項のPyFoamに関連したソースコードの変更箇所がある。ソースコードの変更作業はテスト用仮想環境で実施し、変更完了版をCubic仮想環境に戻している。
/opt/TreeFoam/treefoam(35行目〜)
#pyFoam関連
#export pyFoamDir=~/local_python #pyFoamインストール先
export pyFoamDir=/opt/local_python # for DEXCS
export venvPython=yes #仮想環境でpyFoamを起動する
export venvPythonName=python3.10 #仮想環境のpython
pyFoamに関して、従来のインストール方法から変更したということである(後述)。
また、debパケージでなく、予め改変した /opt/TreeFoam 一式をコピーして使用する場合は、以下のファイルもコピーする必要がある。
/usr/share/applications/TreeFoam.desktop
[Desktop Entry]
Comment=TreeFoam
Name=TreeFoam
Exec=/opt/TreeFoam/treefoam
Terminal=false
Type=Application
Icon=/opt/TreeFoam/icons/treefoam48.png
FreeCAD
add-apt-repository ppa:freecad-maintainers/freecad-stable
apt update
apt install freecad
但し、7月12日の時点では、ubuntu 22.04(noble)用のパッケージが用意されていなかった。7月19日の時点でインストール出来るようになって、FreeCADも起動したが、起動時に下記のエラーメッセージが出ていたのと、
QSocketNotifier: Can only be used with threads started with QThread
MESA: error: ZINK: failed to choose pdev
libEGL warning: egl: failed to create dri2 screen
QOpenGLFunctions created with non-current context
(qt.qpa.wayland) Wayland does not support QWindow::requestActivate()
起動後に、新規作成しようとすると、あえなく終了するという状況であったが、FreeCadの掲示板から見つけた記事によれば、環境変数(COIN_GL_NO_CURRENT_CONTEXT_CHECK)の問題のようで、
/uar/share/applications/org.freecadweb.FreeCAD.desktop(17行目)
Exec=env COIN_GL_NO_CURRENT_CONTEXT_CHECK=1 QT_QPA_PLATFORM=xcb /usr/bin/freecad - --single-instance %F
として、操作途中で落ちるようなことは無くなった。
2つ目の環境変数(QT_QPA_PLATFORM=xcb)は、TreeFoamでも組み込んでいるもので、これが無いと、FreeCADの画面分割が思うようになってくれなかった。
但し、STLエクスポートでオフセットデータが反映されていないようで、多分バグではないかと思われるが調査中。当面、オフセットデータが無いパーツに作り直してDEXCSランチャーの検証、改良を進める予定。
一方、AppImage版は、FreeCADのダウンロードページから入手したFreeCAD_0.21.2-Linux-x86_64.AppImage を/opt/下に収納。実行権限を付与するとともに、シンボリックリンクでコマンドアクセスを容易になるようにしておく。
chmod +x FreeCAD_0.21.2-Linux-x86_64.AppImage
ln -s FreeCAD_0.21.2-Linux-x86_64.AppImage freecad
しかし、こちらは以下のように起動も出来ない状況であった(7月19日時点)。
$ /opt/freecad
FreeCAD 0.21.2, Libs: 0.21.2R33771 (Git)
© Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2023
FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.
FreeCAD wouldn't be possible without FreeCAD community.
##### #### ### ####
# # # # # #
# ## #### #### # # # # #
#### # # # # # # # ##### # #
# # #### #### # # # # #
# # # # # # # # # ## ## ##
# # #### #### ### # # #### ## ## ##
MESA-LOADER: failed to open zink: /usr/lib/dri/zink_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed.
QGLXContext: Failed to create dummy context
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile QSurfaceFormat::NoProfile)
/tmp/.mount_freecat7IM6s/AppRun: 43 行: 28446 中止 (コアダンプ) ${MAIN} "$@"
その後、Stable版で実施した環境変数を組み込んだせいか、コアダンプはしなくなり、起動は出来るようになった。しかしその後の操作は、ほぼフリーズに近い状況となってしまっている(8月12日現在)。
(2024/8/17 記)STLエクスポートでオフセットデータが反映されないのは、次期リリース(0.22)で改良されるらしい。WeeklyBuild開発から入手した0.22-devのAppImage版は上述のフリーズすることもなく動作したので、当面はこれで進める。
(2024/10/10記)今後どうするかは流動的に考えていたが、10月になっても0.22の正式リリースは無いので、WeeklyBuild開発版(AppImageの0.22revで、8/17にダウンロードしたものFreeCAD_weekly-builds-38459-conda-Linux-x86_64-py311.AppImage)であれば、取り立てて異常終了したり、上述のSTLエクスポートに関するバグもないことがわかったので、これでリリースすることとした。開発版は日々更新されているので、もっと新しいものにすることも出来たが、同梱ハンズオン資料の動作を再確認する必要も出てくるので、致し方ない。
また、起動の際の警告メッセージも止むを得ない。
WeeklyBuild開発版は頻繁に更新されており、リリース直前においては、FreeCAD_weekly-builds-38922-conda-Linux-x86_64-py311.AppImage となっていたので、ついでながらこれも同梱しておいた。DEXCSインストールのデフォルトでは動作しないが、所定の設定変更で使用可能になっている(同梱の「その他諸々」の資料を参照されたい)。
CfdOF
DEXCSランチャーのハック元となったCfdOFであるが、一応CfdOF本体も使えるようにしておきたい。CfDOFぼコード本体は、こちらから最新版をダウンロードして、.local/share/FreeCAD/Mod/CfdOFの内容を全更新しているだけである。
しかし、8/13現在、このワークベンチは全く使い物になっていない。多分、FreeCADの最新版(0.21.2)に対応できていないと思われるが、詳細は不明。
…であったが、最終的に、ちゃんと動作することは確認できて、同梱「CfdOFの使い方」のハンズオン資料も本構成の環境にて作成できた。
pyFoam
pyFoamは従来のインストール方法が通用しなかった。
TreeFoamの最新版(Ver3.24.240723)紹介資料によれば、ubuntu 24.04 のpython は3.12.であり、pyFoam側は、python3.11までしか対応していない事が原因のようであった。
対応策として、これも上記資料を参考に、python3.10の仮想環境を準備して、そこにpyFoamをインストールする事とした。
まずは、penvを/opt/,penv にインストールする。
apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev
apt install git
git clone https://github.com/pyenv/pyenv.git /opt/.pyenv
/opt/下に、以下環境変数を仕込んでおいて、
/opt/.bashrc
export PYENV_ROOT="/opt/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
まず仮想環境としてpython 3.10.14をインストールし、/opt/local_pythonフォルダにてこれ(python 3.10.14)を使えるようにする。
cd /opt
source .bashrc
pyenv install 3.10.14
mkdir local_python
cd local_python/
pyenv local 3.10.14
python3 -m venv /opt/local_python
source bin/activate
python3 -m pip install PyFoam
deactivate
これでpython3.10の仮想環境で組み込んだプログラム(pyFoamPlotWatcher など)は、以下のスクリプトで起動できるようになる。
/usr/bin/python3.10
#!/bin/bash
cd /opt/local_python
source /opt/local_python/bin/activate #仮想環境を開始
python3 $1 $2 $3 $4 $5 $6 $7 $8 $9 #python3.10を起動
deactivate #仮想環境停止
(以下のコードは出所不明)
# coding=utf-8
"""Simple public key authentication with RSA based on the
implementation
http://code.activestate.com/recipes/578797-public-key-encryption-rsa/"""
from __future__ import division, absolute_import
from base64 import b32encode,b32decode
#from fractions import gcd
from math import gcd
....(以下省略)
SLURM
SLURMは、DEXCS2020まで同梱していたもので、DEXCS2023で復活させた。
apt install munge slurm-wlm
cd /etc/slurm/
## <---- copy slurm.conf
DEXCS2020の場合と比べると、slurm.conf の収納場所が異なっていた。slurm.confの内容は同一のもので、今の所問題なし。
/etc/slurm/slurm.conf
# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
SlurmctldHost=localhost
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-#
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
SlurmUser=slurm
#SlurmdUser=root
StateSaveLocation=/var/lib/slurm/slurmctld
SwitchType=switch/none
TaskPlugin=task/affinity
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=localhost
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
#SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log
#
#
# COMPUTE NODES
NodeName=localhost CPUs=6 Sockets=1 CoresPerSocket=6 ThreadsPerCore=1 State=UNKNOWN
#NodeName=localhost CPUs=4 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP
JGP
DEXCS2022ではDexcsプロットツールが使えるようになって廃止したが、これも復活させた。理由は、長大データのプロットには、こちらが有利である点と、DEXCSランチャーでなく、TreeFoamをプラットフォームとしてケースセットアップする際のツールとして(DEXCSプロットツールが使えないので)必要性があったから。
apt install openjdk-8-jre-headless
vi /etc/java-8-openjdk/accessibility.properties
cd /opt
## <---- copy jjgp
chmod 777 -R jgp
2行目の編集内容は8行目をコメントアウトするだけ。
/etc/java-8-openjdk/accessibility.properties
#
# The following line specifies the assistive technology classes
# that should be loaded into the Java VM when the AWT is initailized.
# Specify multiple classes by separating them with commas.
# Note: the line below cannot end the file (there must be at
# a minimum a blank line following it).
#
#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
4行目では、テスト用仮想マシンで作成、動作確認した起動用スクリプト(/opt/jgp/startup.jgp)を戻している。
/opt/jgp/startup.jgp
#!/bin/bash
cd /opt/jgp
./jgp
dockツールバーから起動用のランチャースクリプトは以下の通り。
/etc/skel/.local/applications/jgp.desktop
[Desktop Entry]
Type=Application
Name=jgp
Exec=/opt/jgp/startupJgp
Icon=/opt/jgp/images/splash.png
Terminal=false
Name[ja]=jgp
付記:2024/8/28
先に、java-8 をインストールしたが、ubuntuの場合、標準でjava-21がインストールされており、通常はこちら(java-21)が使われることとわかった。しかしながらJGPはjava-21では動作しないことも判明した。java-8であれば動作するので、javaの環境を変更する必要があった。
以下、コマンド入力すると、
# update-alternatives --config java
以下の応答があったので、
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 auto mode
1 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press to keep the current choice[*], or type selection number: 2
ここで、「2」を入力した。(参考情報)
HELYX-OS
HELYX-OSはオープソースのOpenFOAM用GUIツールとしてEngys社が公開しているものであるが、そもそもOpenFOAM-2.4.0(2015年リリース)をターゲットとして開発されたものであった。公式ドキュメントも、OpenFOAM-1606+についてまではインストール方法に関する記事など公開されているが、その後の更新は一切されておらず、DEXCS-OFにおいても、容量制限の問題から、搭載したり、しなかったりであった。
DEXCS2023以降、容量制限の制約は無くなったが、開発後まもなく10年にもなろうというプロダクトの動作検証も必要かと思いDEXCS2023では搭載を見送った。
その後のDEXCS2023上での調査によれば、まだ十分に使い物になると分かり、改めてubuntu 24.04 + OpenFOAM-v2406の環境でも調べたところ同様の結果であったので、DEXCS2024で同梱する事とした。但し、openfoam-12では動かない。
インストールはHELYX-OSのダウンロードページからインストールプログラム(HELYX-OS-2.4.0-linux-x86_64.bin)をダウンロードして、インストール方法の説明ページにしたがって、進めるだけだが、
cd /opt/
## <---- copy ELYX-OS-2.4.0-linux-x86_64.bin
chmod +x HELYX-OS-2.4.0-linux-x86_64.bin
./HELYX-OS-2.4.0-linux-x86_64.bin
途中で、
Select components to install
1) HELYX-OS-GUI
2) HELYX-OS-GUI and Kernel
#?
という選択モードで「1」を選択するのと、インストール先として、/optを指定した。
また、HELYX-OSの起動スクリプトとして、以下収納した。
./etc/skel/.local/share/applications/helyxos.desktop
Name=Helyx-OS
Exec=/opt/Engys/HELYX-OS/v2.4.0/HELYX-OS.sh
Icon=/opt/Engys/HELYX-OS/v2.4.0/img/HELYX-OS.png
Terminal=false
Name[ja]=Helyx-OS
さらに、以下仕込んでおけば、HELYX-OS起動時の環境設定の手間を省くことができる。
./etc/skel/.HELYX-OS/application.properties
openfoam.basedir = /usr/lib/openfoam/openfoam2406
paraview.basedir = /opt/paraview/bin/paraview
3d.lock.intractive.memory = 4096
3d.lock.intractive.time = 2000
3d.transparency.memory = 10240
helyx.default.terminal =
default.file.manager =
default.hostfile.none = false
hide.empty.patches = true
hide.processor.patches = true
hide.processor.cyclic.patches = true
batch.monitor.dialog.max.row = 10000
use.docker = false
docker.image =
recent.projects =
last.open.dir =
last.import.dir =
DEXCSセットアップ
Cubicに限らず、リマスタツールで作成されるisoイメージでシステム構築すると、/etc/skel/フォルダー以下の内容はそのままホームフォルダの内容として再現されることになる。ここで問題は、各種設定ファイルの一部であるが、ユーザー名に依存する内容が含まれている箇所が存在する点である。
Cubicの場合は、ほとんどの設定ファイルはテスト用の仮想環境で作成することになるが、その際のユーザー名は「dexcs」として作業をしている。テスト環境はそれで良いとしても、リリースしたisoイメージで、ユーザー名を「dexcs」で使わせるのには無理がある。
そこでDEXCSでは、isoイメージを使って、自分の好みのユーザー名(但し、日本語は不可)を使って環境構築(マシンインストール)が済んで、マシンを再起動して立ち上がった直後のデスクトップ画面に、dexcsSetup.sh というファイルを配置している。これを実行することによって、ユーザー名に依存する設定ファイルを、実際のユーザー名に変更することでテスト環境でカスタマイズした設定を反映させるようにしている。逆に言うと、これを実行しないままDEXCSを使用すると、アプリケーションがエラーで停止する、というのが初心者FAQとなっている。
このセットアップは管理者権限で実行する処理があるので、仮想マシンの設定スクリプトを起動したのと同じように、2段構えのスクリプトになっている。DEXCS2022まではスクリプトの実体はDesktop上にあったが、今回は/opt/DEXCS/下に収納されている。
DEXCS2024に搭載したsetupDexcs.shを以下に示しておくが、スクリプト本体(/opt/DEXCS/setupDexcs.sh)の1行目から15行目を使って、上に述べた処理を実施している。
/etc/skel/Desktop/setupDexcs.sh
#!/bin/bash
gnome-terminal --command /opt/DEXCS/setupDEXCS.sh
/opt/DEXCS/setupDexcs.sh
#!/bin/bash
WHO=`whoami`
echo "#!/bin/bash" > /opt/DEXCS/startup1.sh
LIST=/opt/DEXCS/setup.list
while read i
do
echo "sed 's/dexcs\/Desktop/$WHO\/Desktop/g' $i > /opt/DEXCS/temp" >> /opt/DEXCS/startup1.sh
echo "sed 's/dexcs\/デスクトップ/$WHO\/Desktop/g' /opt/DEXCS/temp > $i" >> /opt/DEXCS/startup1.sh
echo "sed 's/home\/dexcs/home\/$WHO/g' $i > /opt/DEXCS/temp" >> /opt/DEXCS/startup1.sh
echo "cp /opt/DEXCS/temp $i" >> /opt/DEXCS/startup1.sh
echo "" >> /opt/DEXCS/startup1.sh
done < ${LIST}
bash /opt/DEXCS/startup1.sh
source /usr/lib/openfoam/openfoam2406/etc/bashrc
mkdir -p $FOAM_RUN
mkdir -p $FOAM_USER_APPBIN
cp /opt/DEXCS/SWAK/snappyDictExporter.py $FOAM_USER_APPBIN
cp /opt/DEXCS/SWAK/bcFilesConverter.py $FOAM_USER_APPBIN
source /opt/openfoam12/etc/bashrc
mkdir -p $FOAM_RUN
mkdir -p $FOAM_USER_APPBIN
cp /opt/DEXCS/SWAK/snappyDictExporter.py $FOAM_USER_APPBIN
cp /opt/DEXCS/SWAK/bcFilesConverter.py $FOAM_USER_APPBIN
sudo rm -f /usr/bin/sh
sudo ln -s /usr/bin/bash /usr/bin/sh
sudo systemctl enable slurmctld
sudo systemctl enable slurmd
openssl genrsa -out /home\/$WHO/.pyFoam/foamServerCertificate.key 2048
openssl req -new -x509 -key /home\/$WHO/.pyFoam/foamServerCertificate.key -out /home\/$WHO/.pyFoam/foamServerCertificate.cert -days 1095 -batch
tracker3 reset --filesystem --rss # Clean all database
tracker3 daemon --terminate
sudo update-locale LANG=ja_JP.UTF8
rm ~/Desktop/ubiquity.desktop -f
rm ~/Desktop/setupDEXCS.sh
find ~/Desktop -mtime -1 | xargs touch
killall -u $WHO
この部分のスクリプトは、DEXCSの開発当初からほとんど変わっていないが、3行目でユーザー名を取得し、5行目の/opt/DEXCS/setup.list には、ユーザー名に依存する設定ファイルのリストが定義されているので、これらのファイル内容をユーザー名「dexcs」から実際のユーザー名$WHOに書き換えられることになる。
ちなみにDEXCS2024の場合のsetup.listは、
/opt/DEXCS/setup.list
~/.config/FreeCAD/user.cfg
~/.TreeFoamUser/configTreeFoam
となっており、/opt/DEXCS/setup1.sh が作成される。
/opt/DEXCS/startup1.sh
#!/bin/bash
sed 's/dexcs\/Desktop/dexcs\/Desktop/g' ~/.config/FreeCAD/user.cfg > /opt/DEXCS/temp
sed 's/dexcs\/デスクトップ/dexcs\/Desktop/g' /opt/DEXCS/temp > ~/.config/FreeCAD/user.cfg
sed 's/home\/dexcs\//home\/dexcs\//g' ~/.config/FreeCAD/user.cfg > /opt/DEXCS/temp
cp /opt/DEXCS/temp ~/.config/FreeCAD/user.cfg
sed 's/dexcs\/Desktop/dexcs\/Desktop/g' ~/.TreeFoamUser/configTreeFoam > /opt/DEXCS/temp
sed 's/dexcs\/デスクトップ/dexcs\/Desktop/g' /opt/DEXCS/temp > ~/.TreeFoamUser/configTreeFoam
sed 's/home\/dexcs\//home\/dexcs\//g' ~/.TreeFoamUser/configTreeFoam > /opt/DEXCS/temp
cp /opt/DEXCS/temp ~/.TreeFoamUser/configTreeFoam
/opt/DEXCS/setupDEXCS の17〜21行目はOpenFOAMの初期設定で、これもDEXCSの開発当初から、都度、17行目のインストール場所を変えているだけである。
23行目〜25行目は、openfoam-12用カスタマイズしたもので、26,27行目はDEXCSの開発当初から使っていたもので、現在ではほとんど使う事も無いであろうが、敢えて外す理由もないので残してある。
29,30行目でシェル(sh)をubuntu標準のdash から bash に変更している。これは、OpenFOAMの標準シェルがbashであることに起因する。シェルはリマスターツールで変更することも可能であったが、そうするとubuntuのインストールが出来なくなってしまうことがあり、DEXCS2021だったかで、この方法をとっていたがDEXCS2022(OpenFOAM2206)ではdashのままでも取り立てて不具合はなかった。しかし、DEXCS2023以降ではFundation版のopenfoamも同梱しており、こちらで不具合が生じたので、シェル変更を復活させた次第である。
31,32行目では、SLURMのデーモンを起動、
34,35行目は、pyFoamを使うのに必要な設定。
37,38行目でtrackerを使用しないようにしている。
40行目は、言語設定を「日本語」にしている。日本語ユーザーにはこれで問題無いが、英語でインストールするユーザーには、この行は使わないようにしたかった。しかしその方法がわからなかったので、見切り発車である。
42行目は、ubuntuのインストールアイコンを削除するものだが、DEXCS2023まで使っていたもので、DEXCS2024では不要(であったが、削除しなくても実害は無いので、削除するのを失念した)。
テスト用仮想マシンとのファイル共有
先にテスト用仮想マシンで作成した設定ファイルをベースマシンの共有フォルダにコピーして保存するよう記した。しかし、仮想マシンを作成する際のオプションとして共有フォルダを設定するメニューは存在するが、その設定だけでは、仮想マシンとベースマシン間とのファイル共有はできない。仮想マシンを作成した後、仮想マシンに追加機能(ベースマシンとの間でファイル共有やクリップボード共有を出来るようにする仕組み)をインストールする必要がある。
DEXCS2021までは、この拡張機能を組み込んだ形でリリースしてきたが、Cubicではその方法が使えなくなった。そこでDEXCS2022では、開発の初期段階では仮想マシンを立ち上げた後、一般的な方法で追加機能をインストールして共有フォルダを使えるようにして設定ファイルを保存していた。しかし、仮想マシンを作り直す都度、追加機能をインストールするのも面倒な作業なので、この手間を省力化する仕組みを考えた。
DEXCS2024でも上記の仕組みは、ほとんどそのまま使えている。具体的には、インストール方法の36〜41ページに記した方法であるが、例えばVirtualBox用にはデスクトップ上DEXCSフォルダ内にあるsetupVBox.sh、
/etc/skel/Desktop/DEXCS/setupVBox.sh
#!/bin/bash
gnome-terminal --command /opt/DEXCS/setupVBox.sh
を実行(右クリックメニュー⇒実行)すると、新たに端末画面が現れて、/opt/DEXCS/setupVBox.sh のスクリプト実体を起動するものである。
/opt/DEXCS/setupVBox.sh
#!/bin/bash
WHO=`whoami`
sudo mount -o loop,ro /opt/VBoxGuestAdditions_7.1.0.iso /media/
cd /media
sudo ./VBoxLinuxAdditions.run
sudo gpasswd -a $WHO vboxsf
rm -f ~/Desktop/DEXCS/setupVM.sh
rm -f ~/Desktop/DEXCS/setupVBox.sh
sudo reboot
VirtualBoxのGuestAdditionはisoイメージとして配布されているので、これ(DEXCS2024の場合は、VBoxGuestAdditions_7.1.0.iso)を予め/opt/フォルダ下に収納しておいて、5行目でマウントし、7行目でインストールを実行するとともに、8行目で$WHO(ユーザー名が入る)をこのツールを使えるユーザーグループに登録するというものである。13行目でリブート、再起動後に有効になるという仕組みである。
VMPlayer用にはもう少し簡単で、/opt/DEXCS/setupVM.sh の内容は以下の通り。
/opt/DEXCS/setupVM.sh
#!/bin/bash
sudo chmod 666 /etc/fstab
echo ".host:/ /mnt fuse.vmhgfs-fuse allow_other,auto_unmount,defaults 0 0" >> /etc/fstab
sudo chmod 644 /etc/fstab
rm -f ~/Desktop/DEXCS/setupVM.sh
rm -f ~/Desktop/DEXCS/setupVBox.sh
sudo reboot
vm用のファイルシステム(デフォルトで組み込み済)を /etc/fstab に追記しているだけである。
VirtualBox、VMPlaye用、いずれも管理者権限で実行する必要のあるプログラムである。これらのプログラム本体をファイルマネージャーから普通に実行(ダブルクリック、または右クリックメニューから「プログラムとして実行」)してしまうと、sudoコマンドを実行する際のパスワード入力する方法が無いのでsudo以下のコマンドを実行できない。ubuntuのファイルマネージャでは、かつては右クリックメニューから「管理者として実行」なり、「端末を開いて実行」というメニューがあったが、セキュリティ上の問題からか、 ubuntu 22.04(DEXCS2022)からは、それらのメニューが無くなってしまった。そこであくまでGUI操作に拘って、かような仕組みとした次第である。
壁紙の変更方法
壁紙は、ubuntu 標準の壁紙(/usr/share/backgrounds/warty-final-ubuntu.png)を無理やり書き換えている。但し、オリジナル壁紙は、warty-final-ubuntu.png.origとして残しておいた。
DEXCSフォルダアイコンの変更方法
残された問題
DEXCS2024は、本執筆時点でまだ開発途上でいくつか問題もあるが、以下、致命的ではない(と考えている)レベルの問題のうち、本記事テーマであるiso作成面での課題について記しておく。
ファイルマネージャーのサイドメニュー
何故か、「デスクトップ」が表示されたり、されなかったりする。
アプリウィンドウのサイズ変更
マウスカーソルをウィンドウの端や隅に持ってくると、マウスカーソルが変化してウィンドウのサイズを任意に変更できるが、一部のアプリケーションではそれが全く出来なかったり、局所的にしか出来なかったりする。
⇒ キーボードでAlt+F8 を押すと、マウスカーソルが変化し、ウインドウの端や隅に移動してサイズ変更できるようになるので、この方法で凌いでいる。
⇒ 他にも、ウィンドウのトップバーで右クリックする「サイズを変更」が現れる。
dockツールバー
仮想マシンを構築した直後、dockツールバーのアイコンの一部(Emacs, Kdiff3等)が何故か表示されない。
しかし数時間経つと、表示されるようになる。
基本的にアイコンファイルは、/usr/share/icons/hicolor/scalable/apps/ に収納されているようなので、どうにもならない場合は、/usr/share/applications/*.desktop ファイルの内容を直接編集するという手もあるのだが・・・
最終リリース版では、ちゃんと表示されるようになったはずであるが、そうなった理由もよくわかっていない。
ライブモードでの動作
ライブモードでの動作が今ひとつはっきりしない。当初作成したisoイメージでは、DEXCSセットアップ後の再ログインにて暗転したままである。本記事作成用に、作り直したバージョンでは、一応起動するが、一般的な設定メニューは現れないで、ユーザー名が「ubuntu」でしか動かない。
その後の調査で、この違いは、/etc/skel/.local/share/ フォルダ中に、keyring の有無によるものであることがわかった。これが無いと、通常のユーザーセットアップ画面となり、存在するとユーザー名「ubuntu」でライブモードを動かすことになる。但し、前者では、DEXCSセットアップ後の再ログインが出来ないことに変わりはない。
したがって、最終的なリリース版をどちらをベースとするか、悩ましいところであるが、時間があれば、本記事をベースに、Cubicでの作業を全スクリプト化した方法で作り直したものでリリースしたい。
標準テキストエディター
ubuntu 24.04では、標準テキストエディターは、gnome-text-editorに変更されていた。従来のgeditに比べると、見た目が洗練されているという印象もあって、しばらく使ってみたが、アプリケーションを閉じる操作と個別のファイルを閉じる操作が別に必要になる点が煩わしかった。
「設定」メニューから。「挙動」の「Restore Session」(テキストエディター起動時に以前のセッションを展開します)をオフにせよということであった。
⇒ DEXCS2024(DEXCSワークベンチやTreeFoamから起動するテキストエディタ)でもgnome-text-editor を使うこととしたが、geditと比べて、唯一点、ファイルを変更した後の、「保存」ボタン(アイコン)が無いのが残念。
Tips
Mesa driver update
アプリケーションをDockバーのランチャーアイコンから起動する場合にわからなかったが、端末画面からコマンドライン入力で起動すると、以下のように、エラーが生じていた。
$ freecad
FreeCAD 0.22.0, Libs: 0.22.0devR38459 (Git)
© Juergen Riegel, Werner Mayer, Yorik van Havre and others 2001-2024
FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.
FreeCAD wouldn't be possible without FreeCAD community.
##### #### ### ####
# # # # # #
# ## #### #### # # # # #
#### # # # # # # # ##### # #
# # #### #### # # # # #
# # # # # # # # # ## ## ##
# # #### #### ### # # #### ## ## ##
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
apt install mesa-utils
add-apt-repository ppa:oibaf/graphics-drivers
apt update
apt install mesa-vdpau-drivers
不完全な言語サポート
インストール後に言語変更しようとすると、表記のメッセージが表示される。毎度鬱陶しいので、CUIで何とかならないか?と調べたら、こちらのページが参考になった。
apt update
apt install $(check-language-support)
dpkg: dependency problems
パッケージをインストールする際に、稀ではあるが、表記のエラーで躓くことがある。そういった際に、参考にさせて頂いたサイトを記しておく(m(_ _)m)
Cubicについて追記(2024/9/11)
本年9月になって、Cubicはバージョンが更新された。基本的な使用方法の手順に変化は無いが、各ステップで現れるメニューが微妙に変化していた。
最大の問題は、旧バージョンで使っていたプロジェクトファイルをそのまま使おうとすると、
となって、何やらオプションが示されるので、それに従って作業は出来て、最終的にisoを作成するところまでは出来るのだが、そのisoイメージを使って仮想環境を作ると、Kernel Panic で二進も三進もいかなくなるというものであった。これがライブモードでは動くが、インストールした後の再起動でそうなるというので、確認に時間がかかってしょうがない。
それならばと、新規にプロジェクトを作成する方法でやってみたが、旧版で作成したisoイメージを起点にカスタマイズしようとすると、やはり同じ症状であった。因みにまっ更なubuntu24.04のisoイメージを起点にカスタマイズしたものであれば、ちゃんとインストールモードでも使えたので、これだと最初からやり直す必要がある?!…とも思われたが、ちゃんと動いたカスタマイズ版を起点に追加のカスタマイズしたものでは、やはり駄目であった。
ネット情報もほとんど無い状況の中、こちらの記事がヒントになって、ようやく前進することができた。引用した記事では、cubic.confを書き換えるなどがポイントになっていたが、そこは全く関係なくて、以下の追加インストールをするだけで良かった。
apt install linux-image-generic ubuntu-standard vim
apt install ubiquity-frontend-gtk ubiquity-slideshow-ubuntu casper
追加したものは、
- linux-image-generic
- ubuntu-standard
- vim
- ubiquity-frontend-gtk
- ubiquity-slideshow-ubuntu
- casper
で、全部が必要であったという訳ではないと思うが、多分後半のインストーラーだけで良かったかもしれない。
Cubicについて追記(2024/10/10)
最後に(2024/10/30)
DEXCS2024は、当初の予定通り、10月の半ばにリリースした。リリースノートと同時に不具合情報も公開せざるを得ないという見切り発車であった。案の定というか、ubuntuのKernelがアップデートされると、マシンが立ち上がらなくなってしまうという、重大な問題が発生した。応急処置的な対策方法は、不具合情報のページ(KernelPanic)にて公開しておいたが、抜本的な解決方法が必要であることは言うまで無い。
現時点で、ある程度道筋は見えてきており検証中であるが、そのやり方だと本ページそのものの大改造になってしまいそうである。そこで、DEXCS2024として10月中旬にリリースしたものは、こうやって作ったということで、本ページをFixすることにした。但し、記載不足や間違いは、わかった時点でその都度対応する予定。