はじめに
先の記事でも記したが、DEXCS2023では基本的にOSのアップグレードはなく、主要コンポーネント(OpenFoam, Paraview, FreeCAD, TreeFoamなど)については、単純なバージョンアップで済むと思って着手が遅れていた。
着手が遅れたのにはもう一つ理由があって、isoイメージ作成ツールを、DEXCS2022よりCubicというツールに変更したことがある。従来の4Gb以下というサイズ制限もなくなってサイズを減らす工夫の試行錯誤が不要になった。さらに、使ってみるとこれがまた従来よりも使い易いし、ベースのiso-イメージに対して、何をどう変更したかの記録も残しやすく、DEXCS2022でのやり方を踏襲できる部分も多くあって、簡単に済むだろうという目論見もあったからである。
一応の目標として、9月中はDEXCS2023に同梱するアイテムの諸々の改善作業を実施して、10月に入ったら同梱ドキュメントの作成、10月中にはリリース予定というスケジュール感で進めており、現時点(9月中旬)でも十分リリース可能なレベルに仕上がっていると思うが、まだ時間があると思うと欲も出てくる。特にDEXCS2021以前で搭載していたが容量制限の理由などから廃止したものを復活させたいなどあって、こうなるとisoイメージの作成記録もだんだん混沌状態になってしまっている。そこで、ここに改めて備忘録として残しておくこととした。
Table of Contents
Cubicについて
Cubicのインストールから使用方法については、約1年前にアップした記事があるので参考にされたい。この間、Cubicそのものは何度か更新されていたが、基本的な使い方は変わっていない。
DEXCS作成作業の全体概要
作成作業の流れイメージを下図に示しておく。
Cubicの仮想マシンで行う❶作業は、apt install … といったコマンド入力によるインストール作業と、cd /opt/.. などとして所定のディレクトリに移動して設定ファイルを編集したりすることになるが、ファイルの編集にはGUIエディタが使えないので、共有フォルダに予め作成して収納しているファイルを❻ドラッグ&ドロップしてコピーするだけの作業に徹している。では、そもそもこの❻ドラッグ&ドロップするコピー元のファイルはどうやって作成するかという疑問もあるだろう。簡単なテキストファイルであれば、ベースマシン上のテキストエディタで作成すれば良いが、そうでない場合、DEXCSでは以下の手順で実施している。
インストールやコピーしたいアイテムが、ある程度まとまった段階で、❷isoイメージファイルを作成し、これを使ってテスト&設定用の仮想マシン(以下、テスト用仮想マシンと称する)を構築する。この際に、テスト用仮想マシンのユーザー名を「dexcs」として作成することが重要である(そうしないと、最終的なDEXCSセットアップで失敗する可能性を残すことになる)。
テスト用の仮想マシンが立ち上がったら、インストールしたアプリの動作を確認するとともに、❹アプリの初期設定や、デスクトップのツールバーに登録するなどの設定を行う。そして設定が完了したら❺設定ファイルを共有フォルダにコピーしておく。これを改めてCubic仮想マシンの所定場所にコピーしてisoイメージを作り直す。作り直したisoイメージで、新たに別のテスト用仮想マシンを作成し、設定が反映されていることを確認する。反映されていないようであれば、設定ファイルを見直すなりの作業も必要になる。
DEXCS2022では、初めてCubicを使うということになった為、何をどうしたものか、行きあたりばったりでやって、このテストサイクルを何度も繰り返す必要があったが、DEXCS2023ではDEXCS2022で作成した設定ファイルの多くを、そのままあるいは小変更で使えているので、テストサイクルの回数が少なく済んでいるという次第である。
但し、新しく追加するアプリ(コンポーネント)に関しては、アプリ次第であるが、テストサイクルが必要になる。とはいうもの、ほとんどのアプリの設定ファイルは、ホームフォルダ直下の、.config あういは .localという隠しフォルダに収納される仕組みになっている。本来であれば、アプリ毎に詳細内容を調べて、必要なものだけ残すという作業(によってisoイメージファイルのサイズを小さくする)があっても良いが、すでに述べたように、従来のサイズ制限の問題はないので、そこまではやっていない。これらをフォルダ毎、Cubic仮想マシンの/etc/skel/フォルダ下に収納しておくだけである。
以下順を追って実施した作業について説明するが、Cubic仮想マシンでの作業と、テスト用仮想マシンでの作業について、区別して記述している点には留意されたい。
ベースOSの更新と標準アプリの改変
ベースOS
DEXCSでは、基本的にubuntuのLTSで、Ubuntu Desktop 日本語 RemixをベースOSとして採用している。上記からダウンロードしたものは、Ubuntu 22.04 LTS であるが、これをCubic上でOS更新(apt update ⇒ apt upgrade)してUbuntu 22.04.3 LTS となる(現時点)が、更新にはかなりの時間が必要であった。
なお、途中で、
Configuration file '/etc/lsb-release'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** lsb-release (Y/I/N/O/D/Z) [default=N] ?
として、入力待ちの状態になる。何を入力したら良いのかわからなかったが、試しに「D」を入力したところ、
*** lsb-release (Y/I/N/O/D/Z) [default=N] ? D
--- /etc/lsb-release 2023-09-13 20:52:22.225288580 +0900
+++ /etc/lsb-release.dpkg-new 2023-08-02 22:13:17.000000000 +0900
@@ -1,4 +1,4 @@
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
-DISTRIB_DESCRIPTION="Ubuntu 22.04.0 2023.09.13 ja (Cubic 2023-09-13 20:49)"
+DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
となって、lsb_release 中の、DISTRIB_DESCRIPTION が書き換わっているのをどうするかの問い合わせであった。書き換えはCubicの初期設定で自動変更したものであった。どちらであっても大きな問題はないので、「N」として作業を続けた。
日本語版Remixがリリースされたのは、1年半ほど前になるので、更新量が多く、全更新を完了するには数時間を要した。
なお、更新した場合、最終段で以下のようなエラーメッセージが現れるが、これは無視して良さそうである。
但し、このままではフォルダー名が日本語表記になってしまうので、これは英語表記に戻したい。これを実施するには、テスト環境で端末を起動し、以下のコマンドを入力する。
env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update
そうすると以下の画面が現れ、
「Don’t ask me this again」 にチェックマークを付けて、右下の「Update Names」をクリックすればフォルダ名が英語に書き換えられ、テスト用仮想マシンは恒久的に(マシンを再起動しても)この設定が維持される。その設定ファイルは、.config フォルダ内に収納されるので、これをCubic仮想マシンの/etc/skel/.configフォルダ内にコピーしてやれば良いとなる。
なお、この作業は、テスト用仮想マシンを起動したら最初に実施しておきたい。その前に何らかの作業を実施して、これらのフォルダ内にファイルが作成されてしまうと、そのフォルダが残ってしまうからである。
それなら、最初から日本語Remix版を使わなければ良いでないか?と思われるかもしれないが、日本語Remix版を使う主たる理由は、LibreOfficeなどを使って日本語ドキュメントを作成する際の不具合解消である点、言及しておきたい。
FireFox
DEXCS2022の不具合情報のページでも記しているが、FireFox(標準のWebブラウザ)をそのまま使うと、ファイルブラウジング(同梱のpdfファイルを読むこと)ができない。標準ではsnap版がインストールされており、これをdebパッケージ版に戻すとともに、アップデートもdeb版を優先するように設定する必要があった(参考サイト)。
まずは、snap版FireFoxをアンインストール
snap remove firefox
Mozilla Firefox の PPA をシステムに追加
add-apt-repository ppa:mozillateam/ppa
/etc/apt/preferences.d/mozilla-firefox
として以下の内容のファイルを収納
echo '
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1
' | sudo tee /etc/apt/preferences.d/mozilla-firefox
/etc/apt/apt.conf.d/51unattended-upgrades-firefox
として以下の内容のファイルを収納
Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";
apt-cache policy firefox
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を停止させるようにした。
テスト用仮想マシンとのファイル共有
先にテスト用仮想マシンで作成した設定ファイルをベースマシンの共有フォルダにコピーして保存するよう記した。しかし、仮想マシンを作成する際のオプションとして共有フォルダを設定するメニューは存在するが、その設定だけでは、仮想マシンとベースマシン間とのファイル共有はできない。仮想マシンを作成した後、仮想マシンに追加機能(ベースマシンとの間でファイル共有やクリップボード共有を出来るようにする仕組み)をインストールする必要がある。
DEXCS2021までは、この拡張機能を組み込んだ形でリリースしてきたが、Cubicではその方法が使えなくなった。そこでDEXCS2022では、開発の初期段階では仮想マシンを立ち上げた後、一般的な方法で追加機能をインストールして共有フォルダを使えるようにして設定ファイルを保存していた。しかし、仮想マシンを作り直す都度、追加機能をインストールするのも面倒な作業なので、この手間を省力化する仕組みを考えた。
DEXCS2023でも上記の仕組みは、ほとんどそのまま使えている。具体的には、インストール方法の36〜41ページに記した方法であるが、例えばVirtualBox用にはデスクトップ上DEXCSフォルダ内にあるsetupVBox.sh、
#!/bin/bash
gnome-terminal --command /opt/DEXCS/setupVBox.sh
を実行(右クリックメニュー⇒実行)すると、新たに端末画面が現れて、/opt/DEXCS/setupVBox.sh のスクリプト実体を起動するものである。
#!/bin/bash
WHO=`whoami`
sudo mount -o loop,ro /opt/VBoxGuestAdditions_7.0.8.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イメージとして配布されているので、これ(DEXCS2022の場合は、VBoxGuestAdditions_6.1.38.isoであったが、最新版に変更した)を予め/opt/フォルダ下に収納しておいて、5行目でマウントし、7行目でインストールを実行するとともに、8行目で$WHO(ユーザー名が入る)をこのツールを使えるユーザーグループに登録するというものである。13行目でリブート、再起動後に有効になるという仕組みである。
VMPlayer用にはもう少し簡単で、/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操作に拘って、かような仕組みとした次第である。
DEXCSデスクトップ環境の設定
DEXCSのデスクトップ環境としてカスタマイズしているのは、壁紙とデスクトップ上に配置するDEXCSフォルダのアイコンと、Dockツールバーのサイズ変更とアイテム登録、といったくらいであろうか。
純正的なubuntu作法に則れば、/usr/share/フォルダ下に様々な設定ファイルを仕込む方法があり、かつてはそういうやり方をしていたが、Cubicを使うようになってからは、かなりブラックボックス的な簡略化手法で実現している。
以下に、テスト用仮想マシンで、デスクトップ周りの設定を変更した際の方法を示しておくが、
壁紙の変更方法
デスクトップレイアウトの変更方法
DEXCSフォルダアイコンの変更方法
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用のものに順次変更ながら作り直していくというやり方で実施している。どこかの段階でフォルダの名前の付け方を再構築することになるかもしれないが、もう少し完成度が上がってからの作業になりそうである。
アプリのインストール、カスタマイズ方法
追加するアプリ(ライブラリーを含む)には大きく分けて3つのタイプがある。
- ubuntu の準標準アプリで、普通に apt install コマンドが使えるもの
- apt install コマンドが使えるが、レポジトリを追加する必要があるもの
- ソースコードやdebパッケージをダウンロードして、所定の方法でインストールするもの
apt install コマンドでインストールするものは、ほとんど /usr/ あるいは /opt/ フォルダ下にインストールされる。3番目のものは、DEXCSでは基本的に/opt/下にインストールするようにしているので、Cubicで作成するisoイメージにもそのまま反映される。インストールした後、アプリ」によっては様々なカスタマイズをすることになるが、これらはテスト用の仮想マシンで作成し、その設定ファイルをCubic仮想マシンに戻してisoを作り直すという方法は、これまでに述べたのと同じである。
以下、個別のアプリについて、インストールとカスタマイズした方法について記しておくが、記述の順番の大凡は、実際にDEXCS2023を作成したときのものである。アプリをどういう順番でインストールするかによって、重複ライブラリのインストール有無や、必要なカスタマイズが異なったりすることががあるかもしれない点はお断りしておく。
最終的には、Cubic仮想マシンでのコマンド操作を全バッチスクリプト化。テスト用仮想マシンで作成した全設定ファイルをまとめてコピーできるようにして、一発でDEXCSを作成できるようにすることを目指している。
FreeCAD
FreeCADのLinux版のインストールには、参考ページにあるようにいくつかやり方があるが、DEXCS2023では、Stable PPA version(0.20.1)と、AppImage版(0.21.0)を使えるようしておき、デフォルトでは、Stable版を使うようにしておいた。Stable版であれば、DEXCS2022でデフォルトとしていたAppImage版とほぼ同機能であると推察された。現在のAppImageやDaily版では、少しバージョンが上がっているが、今の所FreeCADそのものの機能で目ぼしいものはなかったし、AppImage版を使用した場合のTreeFoamサブセットの動作不具合が依然として未解決であるのも大きな理由。
Stable版のインストールは、以下の通り
add-apt-repository ppa:freecad-maintainers/freecad-stable
apt update
apt install freecad
AppImage版は、FreeCADのダウンロードページから入手したFreeCAD_0.21.0-Linux-x86_64.AppImage を/opt/下に収納。実行権限を付与するとともに、シンボリックリンクでコマンドアクセスを容易になるようにしておく。
chmod +x FreeCAD_0.21.0-Linux-x86_64.AppImage
ln -s FreeCAD_0.21.0-Linux-x86_64.AppImage freecad
OpenFOAM
DEXCS2022では、openfoam-2206(ESI版)を搭載したので、DEXCS2023も基本はこの更新版であるopenfoam-2306を使うようにしている。しかし、ESI版ではParaViewをソースビルドしないとparaFoamが使えないという問題があった。一方、Foundation版のOpenFOAMであれば、ubuntu用のパッケージインストールでparaFoamを使えるので、DEXCS2023ではこれも同梱することにした。但し、Foundation版の最新版はopenfoam-11となるが、ソルバー体系が従来と大きく変化してしまった為、旧版のopenfoam-10を採用した。
openfoam-2306のインストールにはこちらの情報をそのまま流用した。
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 openfoam2306-default
これにより、/usr/lib/openfoam/openfoam2306 にインストールされる。dockツールバーから、OF専用端末を起動できるべく、以下のランチャースクリプトを収納しておく。
/etc/skel/.local/applications/ofv2306.desktop
[Desktop Entry]
Comment=terminalForOpenFOAM-v2306
Name=OF-v2306Terminal
Exec=gnome-terminal -- /bin/bash --rcfile ~/.bashrc-OF4v2306
Terminal=false
Type=Application
Icon=/opt/DEXCS/icons/image_normal.png
Name[ja_JP]=ofv2306
4行目のプログラム本体(.baschrc-OF4v2306)は、以下の通り。因みにこのスクリプトは、日本のオープンCAE草創期メンバーで、数年前に夭折したY氏に依頼して作っていただいたものである。
/etc/skel/.bashrc-OFv2306
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/openfoam2306/etc/bashrc
echo "OpenFOAMv2306 is enabled."
openfoam-10(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 openfoam10
こちらは、/opet/openfoam10 にOpenFOAMの本体が、/opt/paraviewopenfoam510 にParaViewgaインストールされ、このParaViewはopenfoam-10 のparaFoamコマンドで利用可能になる。
ParaView
ParaViewバイナリ版は、ダウンロードサイトからParaView-5.11.1-MPI-Linux-Python3.9-x86_64.tar.gzを入手。これを解凍して、FreeCADのAppImage版でやったのと同様、シンボリックリンクを作成しておいた。
ln -s ParaView-5.11.1-MPI-Linux-Python3.9-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
TreeFoam
TreeFoamのサイトからダウンロードしたdebファイルを、/opt/フォルダ下に収納し、以下コマンド入力。
dpkg -i treefoam-dexcs_3.18.230805_all.deb
dpkg -i treefoam-doc_3.17.230706_all.deb
rm *.deb
apt install python3-pip
pip3 install vtk
cd /opt/TreeFoam/
chmod 666 TreeFoamVersion
chmod 666 configTreeFoam
但し、DEXCS2023では、「十徳ナイフ」メニューを変更している。ソースコードの変更作業はテスト用仮想環境で実施し、変更完了版を/opt/TreeFoamフォルダ一式をCubic仮想環境に戻している。
debパケージでなく、予め改変した /opt/TreeFoam 一式をコピーして使用する場合は、以下のファイルもコピーする必要がある。
/usr/bin/paraFoam
#!/bin/sh
#paraview launcher
export LD_LIBRARY_PATH=''
a=`pwd`
openName=`basename $a`.foam
touch $openName
/opt/paraview/bin/paraview $openName
rm $openName
/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
pyFoam
pyFoamのインストールはwiki情報ページを参考にした。
apt install subversion
cd /opt
svn co https://svn.code.sf.net/p/openfoam-extend/svn/trunk/Breeder/other/scripting/PyFoam/
cd PyFoam/
python3 setup.py install
cd /usr/local/lib/python3.10/dist-packages/PyFoam-0.6.10-py3.10.egg/PyFoam/Infrastructure/
## <--- copy Authentication.py
/usr/local/lib/python3.10/dist-package/PyFoam-0.6.10-py3.10.egg/PyFoam/Infrastructure/Authentication.py
# 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 JGP
chmod 777 -R JGP
4行目では、テスト用仮想マシンで作成、動作確認した起動用スクリプト(/opt/JGP/startup.jgp)を戻している。
/opt/JGPstartup.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
ubuntu標準ツール
これまでに説明したもの以外で追加したパッケージがいくつかあるが、普通に以下のapt install コマンドですんなりインストール出来て、そのまま使えており、テスト用仮想マシンで、dockツールバーへのメニュー登録も出来ている。何をインストールしたかは、パッケージの名前で推察できると思うので、ここでの説明は省く。
apt install gcc make perl emacs-lucid open-vm-tools open-vm-tools-desktop shutter kdiff3
DEXCSセットアップ
Cubicに限らず、リマスタツールで作成されるisoイメージでシステム構築すると、/etc/skel/フォルダー以下の内容はそのままホームフォルダの内容として再現されることになる。ここで問題は、各種設定ファイルの一部であるが、ユーザー名に依存する内容が含まれている箇所が存在する点である。
Cubicの場合は、ほとんどの設定ファイルはテスト用の仮想環境で作成することになるが、その際のユーザー名は「dexcs」として作業をしている。テスト環境はそれで良いとしても、リリースしたisoイメージで、ユーザー名を「dexcs」で使わせるのには無理がある。
そこでDEXCSでは、isoイメージを使って、自分の好みのユーザー名(但し、日本語は不可)を使って環境構築(マシンインストール)が済んで、マシンを再起動して立ち上がった直後のデスクトップ画面に、dexcsSetup.sh というファイルを配置している。これを実行することによって、ユーザー名に依存する設定ファイルを、実際のユーザー名に変更することでテスト環境でカスタマイズした設定を反映させるようにしている。逆に言うと、これを実行しないままDEXCSを使用すると、アプリケーションがエラーで停止する、というのが初心者FAQとなっている。
このセットアップは管理者権限で実行する処理があるので、仮想マシンの設定スクリプトを起動したのと同じように、2段構えのスクリプトになっている。DEXCS2022まではスクリプトの実体はDesktop上にあったが、今回は/opt/DEXCS/下に収納されている。
DEXCS2023に搭載したsetupDexcs.shを以下に示しておくが、スクリプト本体(/opt/DEXCS/setupDexcs.sh)の1行目から15行目を使って、上に述べた処理を実施しており、この部分のスクリプトは、DEXCSの開発当初からほとんど変わっていないが、
/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/openfoam2306/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
tracker3 reset --filesystem --rss # Clean all database
tracker3 daemon --terminate
rm ~/Desktop/ubiquity.desktop -f
rm ~/Desktop/setupDEXCS.sh
find ~/Desktop -mtime -1 | xargs touch
killall -u $WHO
3行目でユーザー名を取得し、5行目の/opt/DEXCS/setup.list には、ユーザー名に依存する設定ファイルのリストが定義されているので、これらのファイル内容をユーザー名「dexcs」から実際のユーザー名$WHOに書き換えられることになる。
ちなみにDEXCS2023の場合のsetup.listは、
/opt/DEXCS/setup.list
~/.config/FreeCAD/user.cfg
~/.TreeFoamUser/configTreeFoam
となっており、/opt/DEXCS/setup1.sh が作成される。
/opt/DEXCS/setup1.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行目のインストール場所を変えているだけであり、31行目以降も、DEXCS開発当初から変化していない。
23行目〜29行目は、DEXCS2023に固有のカスタマイズしたもので、23,24行目でシェル(sh)をubuntu標準のdash から bash に変更している。これは、OpenFOAMの標準シェルがdashであることに起因する。シェルはリマスターツールで変更することも可能であったが、そうするとubuntuのインストールが出来なくなってしまうことがあり、DEXCS2021だったかで、この方法をとっていたがDEXCS2022(OpenFOAM2206)ではdashのままでも取り立てて不具合はなかった。しかし、DEXCS2023ではopenfoam-10も同梱しており、こちらで不具合が生じたので、シェル変更を復活させた次第である。
25,26行目では、SLURMのデーモンを起動、28,29行目でtrackerを使用しないようにしている。
残された問題
DEXCS2023は、本執筆時点でまだ開発途上でいくつか問題もあるが、冒頭に記したようにリリース可能なレベルになっている。以下、致命的ではない(と考えている)レベルの問題のうち、本記事テーマであるiso作成面での課題について記しておく。
ライブモードでの動作
ライブモードでの動作が今ひとつはっきりしない。当初作成したisoイメージでは、DEXCSセットアップ後の再ログインにて暗転したままである。本記事作成用に、作り直したバージョンでは、一応起動するが、一般的な設定メニューは現れないで、ユーザー名が「ubuntu」でしか動かない。
その後の調査で、この違いは、/etc/skel/.local/share/ フォルダ中に、keyring の有無によるものであることがわかった。これが無いと、通常のユーザーセットアップ画面となり、存在するとユーザー名「ubuntu」でライブモードを動かすことになる。但し、前者では、DEXCSセットアップ後の再ログインが出来ないことに変わりはない。
したがって、最終的なリリース版をどちらをベースとするか、悩ましいところであるが、時間があれば、本記事をベースに、Cubicでの作業を全スクリプト化した方法で作り直したものでリリースしたい。
AppImageの問題
FreeCADのAppImage版を起動しようとすると、いつの頃からか、以下のエラーが出て起動できなくなっていた。
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
そこで、当初はこちらの情報を頼りに、fuseをインストールして動作することは確認できていたが、これをCubicの仮想マシンでインストールしてしまうと、それで作成したisoイメージが全く使えなくなってしまうことが判明した。これも、ステップ毎にCubic作業を実施して仮想マシンでの検証作業を実施していれば直ちに解っていたところであるが、様々な設定やインストールを一度にまとめてCubic作業を実施したので、特に上記のライブモードでの動作問題も絡んで原因の特定に手間取ってしまった。
原因が特定できたので、改めてAppImageの動かない問題対策について調べ直したところ、こちらでは、libfuse2をインストールせよとのことであり、これを使ってAppImage問題はひとまず一件落着。
pyFoam
pyFoamは当初、DEXCS2022までには無かったWarning(暗号キーがどうたら・・・)が生じていた。その対処の結果が、ホームフォルダ下、.pyFoamに収納されているが、その作成法を失念し、本記事には収録していない。
ただ結果にではあるが、この.pyFoamを/etc/skel フォルダ下にコピーしておけば、取り立てて問題なく使えている。
これも時間があれば、作成(設定)方法を明らかにしておきたい。