(タイトル)未定(副題)DEXCS for OpenFOAM の使い方(付録)

(付録)isoイメージの作成法



目次

  1. はじめに
  2. DEXCSのベース環境構築
    1. VirtualBoxで新規ubuntuマシンを構築
    2. 日本語フォルダ環境変更
    3. 設定⇒電源(省電力オフ)
    4. ソフトウェアの更新
    5. VirtualBox Guest Additions
    6. 共有ファイル
    7. DEXCS基本アプリの追加
      1. Synaptic Package Manager
      2. GNOME Tweaks
      3. emacs
    8. 壁紙、アイコン
    9. Desktopまわり
      1. 壁紙
      2. DEXCSフォルダ
    10. ubuntu基本アプリの動作設定
      1. ファイルマネージャ
      2. テキストエディター
    11. Dockランチャーの整理
    12. 不要ファイルの削除
    13. リマスターの実行
    14. 新規マシンを構築(VMPlayer)
    15. VMwareToolsをインストール
    16. snapを完全削除⇒リマスター実行
  3. 主要アプリのインストール
    1. OpenFOAM-v2006
    2. ParaView
    3. TreeFoam
    4. FreeCAD
  4. リマスター配布用の準備作業
    1. 不要ファイル削除
      1. OpenFOAM関連
      2. その他
    2. インストールアプリの収納場所移動
    3. Dockランチャー
      1. OpenFOAM端末(openfoam.desktop)
      2. ParaView
      3. TreeFoam
      4. FreeCAD
    4. DEXCSチュートリアル
    5. DEXCSセットアップ用スクリプト
  5. リマスターの実行

1. はじめに

OpenFOAMを始めとして様々なツールをインストールし、デスクトップ等の環境もカスタマイズして使いやすい状態にしたマシンをそのままisoイメージ化して配布できるようにしてくれるのがリマスターツールである。

仮想マシンで使う事が前提であれば、マシンファイルそのものを単純なコピーで実現出来ない事もない。あるいは仮想アプライアンスという方法もあるが、ファイルサイズが大きく(数10GB以上)なってしまう点や、ユーザー名を変更するのが困難であったり、実マシンや他の仮想マシンへの拡張といった点で実用的ではない。

isoイメージ化する事により、そのイメージファイルからライブモードで起動でき、そのままオンメモリ上で動かす事も出来るし、インストール先を指定してユーザー名も自由に設定できるようになるというメリットがある。

問題は、isoイメージ化の対象をどうやって選択してイメージに組み込むかという方法論と、isoイメージファイルのサイズの大きさに制限(約4GB以下)があるという点であろう。

前者の方法論については、ubuntu系のOSでは古くはRemastersysというツールがあったが、現在では開発が中断されており、代替ツールがいくつかあって、これらを紹介されたページも存在するが、ツールによってコンセプトや使い方が異なっており、よく判らないところが多い。DEXCSでは、Remastersysが使えなくなって後は、relinuxや、Black Lab Imager といったツールを経た後、上述のページ中にも紹介されているPuinguiy Builder を使用している。

これらのツールの使い方は一貫しており、稼働中のLinuxシステムのファイル群が、以下のルールで新たに作成したisoイメージに組み込まれるようになっているという、分かりやすいものである。

  • /usr/ , /opt/ 領域に追加されたファイルはそのまま
  • /etc/skel/以下に収納されたファイルが新たに/home/<ユーザー名>/以下に

ただし単に追加していくだけでは、すぐに4GBの制限を超えてしまうし、isoイメージ化してみない事には制限内かどうかもわからないという点が厄介ではある。DEXCSも版を重ねる毎にサイズが大きくなって来ており、DEXCS2020では遂にUbuntuの標準配布を維持した上での追加インストールが困難となり、標準配布に含まれるsnapというパッケージ管理システムを削除して配布する事になった。

配布用isoの作成には大きく分けて以下の4つの作業が必要になる。

  • DEXCSのベース環境構築
  • 主要アプリのインストール
  • リマスター配布用の準備作業
  • リマスターの実行

 作業は、仮想環境で実施する事を前提としているが、isoを作成する際の仮想環境と、使用者の仮想環境は同一である事を想定はしていない。
 ひとくちに仮想環境といって、VMPlayer, VirtualBoxを代表格として様々な仮想環境がある。作業の効率性からは、VMPlayerの使用が推奨されるが、ライセンス上の問題で、VirtualBoxを使用せざるを得ない場合も多い。
 そこで使用者の仮想環境としては、どちらにも対応できるようにしておくというのが基本方針である(VMPlayerとVirtualBox以外の仮想環境についてまでは保証するものではない)。
 しかし、ubuntu-18.04以降では、仮想マシン用の拡張ツール(VirtualBox用Guest Additions / VMware Tools)がOSに標準装備されていないので、配布用にはこれらもインストールしておく必要がある。
 以下では、isoを作成する際の主たる仮想環境としてVMPlayerを使用できる事を前提に、VirtualBox用Guest Additionsもインストールすることを想定した作成手順について記す。
 VirtualBox用Guest Additionsは、VirtualBox用仮想マシン上でインストールするのがもっとも簡単なので、VirtualBox用仮想マシンでGuest Additionsと、収納アプリケーションには依存しないDEXCS基本イメージisoを作成しておき、このDEXCS基本イメージisoを使って、VMPlayer上で仮想マシンを構築、個別の搭載アプリ(ここではpreCICE関連アプリとチュートリアル)を追加インストール、配布イメージ作成、という手順になっている。


2. DEXCSのベース環境構築

2-1. VirtualBoxで新規ubuntuマシンを構築

ベースとなるOSイメージファイルは、https://www.ubuntulinux.jp/download/ja-remix
より入手したubuntu-ja-20.04-desktop-amd64.isoを使って、まずはVirtualBoxで通常通りのインストールを実施した後、以下の作業を実施してDEXCSベースマシンイメージ(dexcs2020-base.iso)を構築する。
 なお、作業手順として2.10項までは、2.2.項(日本語フォルダ環境変更)を最初に実施する以外は、順序通りに実施する必要はない。

2-2. 日本語フォルダ環境変更

 ubuntu日本語版ではフォルダ名が日本語になっている。しかしOpenFOAM等、DEXCSに搭載する主要アプリにおいて、日本語フォルダ名を認識できない(エラーになる)ので、端末を起動、以下入力して、これを半角の英語表記に変更しておく。

$ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

2-3. 設定⇒電源(省電力オフ)

以降、様々なインストール作業を実施することになるが、場合によって長時間の待ち時間となり、デフォルト設定だと、省電力設定で画面が消え、再表示にログイン作業が必要になってしまう。インストール作業中にこのログイン作業が介在してしまうと、キー入力を誤ってしまうなどの不具合が生じ易いので、省電力設定(ブランクスクリーン)は「しない」にしておくことを推奨する。

2-4. ソフトウェアの更新

2-5. VirtualBox Guest Additions

 基本、以下の手順(イメージ)でインストール出来るはずであるが、メニューがすんなり表示されない場合もあった。

ダイヤログBoxが以下表示されるので「実行する」ボタンをクリック

 インストールが完了したら、再起動。Dockメニューバー上に残ったDVDアイコン(VBox_DAs_6.0.20)は削除(マウス右クリック⇒取り出す)してよい。

2-6. 共有ファイル

 周知の通り、VirtualBoxではベースマシンとの間のファイル共有が、VirtualBoxメニューの設定をしただけでは有効にならない。クライアント側(ubuntu-20.04)での設定も必要になり、これをしておかないと、2-8. 以降の作業が出来ない。但し、ネットワークドライブが利用できる環境にあれば、この限りでない。

 端末を起動して、以下入力する(dexcsは仮想マシンを構築する際に使用したユーザー名)。

$ sudo gpasswd -a dexcs vboxsf
[sudo] dexcs のパスワード:    ←パスワード入力(非表示
ユーザ dexcs をグループ vboxsf に追加

上記3行目のメッセージが表示されたら、再起動。

2-7. DEXCS基本アプリの追加

 ubuntuの標準ツール以外で、よく使う便利ツールをインストールしておく。何を、どうやってインストールするかは、編者の主観(好み)でやっている。

Synaptic Package Manager

Ubuntuソフトウェア⇒「synaptic」で検索

以下の方法でもOK

$ sudo apt-get install synaptic
[sudo] dexcs のパスワード:    ←パスワード入力(非表示)


GNOME Tweaks

Ubuntuソフトウェア⇒「tweaks」で検索

以下の方法でもOK

$ sudo add-apt-repository universe
$ sudo apt install gnome-tweak-tool

emacs

「アプリケーション」⇒「Synaptic パッケージマネージャ」を起動し、「emacs-lucid」を右クリックし、インストール指定⇒「適用ボタン」を押す。

2-8. 壁紙、アイコン

DEXCS用に作成したオリジナルファイルは、/opt/DEXCS/ 下に収納しておくことを基本ポリシーとし、以下端末入力。

$ sudo mkdir /opt/DEXCS
$ sudo mkdir /opt/DEXCS/icons
$ sudo mkdir /opt/DEXCS/backgrounds
$ sudo mkdir /opt/DEXCS/SWAK

 共有フォルダ(またはネットワークドライブ)に事前に収納したカスタマイズファイル(壁紙、アイコン等)を上記フォルダに収納し、読み取り可能属性を付与しておく。

$ sudo chmod +r /opt/DEXCS/* -R

2-9. Desktopまわり

壁紙

 /usr/share/gnome-background-properties/focal-wallpapers.xml を、管理者権限で編集し、以下のブロックを挿入する。朱字部分は、前項でコピーしたファイル名に合致させる。

<wallpaper>
<name>DEXCS2020</name>
<filename>/opt/DEXCS/backgrounds/dexcs-desktop-2020-0.jpg</filename>
<options>zoom</options>
<pcolor>#000000</pcolor>
<scolor>#000000</scolor>
<shade_type>solid</shade_type>
</wallpaper>

 「アプリケーション」⇒「設定」⇒「背景」のメニューにて、「背景(B)」ボタンを押せば、上記設定したファイルを選択できるようになる。「ロック解除画面(L)」についても同様。

GNOMEデスクトップをNEMOデスクトップに変更

ubuntu20.04のデフォルトのデスクトップは、使い勝手が悪い(例えば、次項のアイコン変更が反映されないなど)ので、https://markperez.dev/blog/organize-desktop-icons-ubuntu/の記事を参考に、GNOMEデスクトップを廃止し、NEMOデスクトップに変更した。

$ gsettings set org.gnome.desktop.background show-desktop-icons false

$ sudo apt install nemo dconf-editor ; sudo apt remove gnome-shell-extension-desktop-icons

これで、NEMOのデスクトップが使えるようになるが、自動起動アプリに登録する必要がある。

ログアウト、または再起動すると、デスクトップ上には何も無い状態になるはずである。また、デスクトップ上でマウス右クリックすると、プルダウンメニューが現れるが、GNOMEデスクトップには無かった「新しいドキュメントを作成」メニューが使えるようになって、従来(DEXCS2019以前)と同じ様に使えるようになる。

その他②「customize」メニューを選択して、③「Auto-arrange」をオフに⑤「Show desktop icons on all monitors 」といったあたりをデフォルト設定から変更した。

DEXCSフォルダ

 DEXCSでは、デスクトップ上にDEXCSアイコン(DEXCS2019より、実体はフォルダになっている)を配して、ユーザー(特に初心者向け)の最初の注意喚起する。
 デスクトップ上にDEXCSフォルダを作成したら、右クリック⇒プロパティメニュー(下図)にて、フォルダーアイコンを/opt/DEXCS/icons/に用意したアイコンに変更する。

2-10. ubuntu基本アプリの動作設定

ファイルマネージャ

 実行可能ファイルをダブルクリックした時の挙動が、デフォルトでは「内容を表示する」になってしまうので、これを変更しておく。

その他、隠しファイルをデフォルトで表示する設定に変更した。ファイル一覧の表示方法、サイズは、最後に使用した状態が継承される。

テキストエディター

 本設定は編者の主観(好み)によるもので、この通りに設定する必要はない。前項と同様、テキストエディタを起動して、「設定」メニューによる諸々の変更は可能。

2-11. Dockランチャーの整理

 ubuntuの標準Dockランチャーには、CAE作業にはあまり関係のないアプリケーションが登録されていたり、よく使うツールが登録されていなかったりするので、使い勝手を考えて、これらの取捨選択をする。

 また、Dockランチャーのアイコンの大きさも、標準では無駄にスペースを消費しているかの感もあるので、これらをカスタマイズする。

アプリケーションの削除

この方法で削除したものは、以下の方法で再登録は可能。

アプリケーションの登録
Dockランチャーのアイコンの大きさ変更

「アプリケーション」⇒「設定」⇒「外観」⇒「Dock」にて変更可能

仮想ワークスペース

仮想ワークスペースの数は、デフォルトでは自動(2ケ)になっているが、編者の主観で4(下図)に設定

ubuntu20.04では、ワークスペースを都度必要に応じて追加できるようだ。

「アプリケーション」⇒「Tweaks」⇒「ワークスペース」にて変更可能

2-12. 不要ファイルの削除

リマスターを実行する前に、ゴミ箱ファイルを空にしておくこと。

2-13. リマスターの実行

リマスターツール(pinguybuilder)は、
https://sourceforge.net/projects/pinguy-os/files/ISO_Builder/
よりpinguybuilder_5.2-1_all.debをダウンロードして、インストール実行(注記1)。
リマスターは、以下コマンド入力にて実行。

$ cd
$ sudo cp -r .local/ /etc/skel/
$ sudo cp -r .config/ /etc/skel/
$ sudo mkdir /etc/skel/Desktop
$ sudo cp -r Desktop/DEXCS/ /etc/skel/Desktop/
$ sudo apt-get clean
$ sudo PinguyBuilder clean
$ sudo PinguyBuilder dist

成功すれば、以下のようにメッセージが出る。

/home/PinguyBuilder/PinguyBuilder/のフォルダ中に、
custom-dist.iso
が出来ているので、これをホストマシンにコピーし、名前変更して次項(新規マシン構築)の起動用ディスクとして使用する。

2-14. 新規マシンを構築(VMPlayer)

上記で作成したcustom-dist.iso を使ってVMPlayerにて新規マシンを構築する(構築方法の説明は省略)。

2-15. VMwareToolsをインストール

下図、「Virtual Machine」メニューから、「ReInstall VMWare Tools…」を選択すると、VMware Tools というDVDがマウントされるので、下図の手順に従って、

端末を開き、以下入力。

$ sudo ./vmwaretools.pl

2-16. snapを完全削除⇒リマスター実行

現在のUbuntuでは、標準でsnapというパッケージ管理システムが搭載されているが、これがあるとisoイメージ化する際に、約1GBものスペースが必要になってしまう。DEXCS2019(Ubuntu-18.04)までは、DEXCS特別版等で、この一部を削除するなりして、スペースを確保してきたが、DEXCS2020(Ubuntu-20.04)においては、OpenFOAMとFreeCADをインストールしただけの状態でisoイメージ化を試みた所、すでに4GBをオーバーしてしまった。

したがって、今回はこのsnapを完全に削除して配布する事を試みた。削除する方法は How to completely remove snap を参考に実施した。すなわち、

$ snap list
Name Version Rev Tracking Publisher Notes
core18 20200724 1885 latest/stable canonical✓ base
gnome-3-34-1804 0+git.3009fc7 36 latest/stable/… canonical✓ –
gtk-common-themes 0.1-36-gc75f853 1506 latest/stable/… canonical✓ –
snap-store 3.36.0-80-g208fd61 467 latest/stable/… canonical✓ –
snapd 2.45.3.1 8790 latest/stable canonical✓ snapd

として、snapにてインストールされたパッケージ名を確認し、ひとつずつ削除していく。但しこの際に、たとえば、

$ sudo snap remove core18
error: cannot remove “core18”: snap “core18” is not removable: snap is being
used by snaps gnome-3-34-1804, gtk-common-themes and snap-store.

とすると、パッケージ間の依存関係を無視して削除出来ない事が判ったので、結局、

$ sudo snap remove gtk-common-themes
$ sudo snap remove gnome-3-34-1804
$ sudo snap remove snap-store
$ sudo snap remove core18
$ sudo snap remove snapd

という順序で削除。最後に、snapの本体を以下のようにして削除した。

$ sudo apt purge snapd
$ rm -rf ~/snap

この段階にて、再度、2-13. リマスターを実行し、出来上がったisoイメージファイルをDEXCS2020のベースisoイメージにする事とした。因みにisoイメージのサイズは、

  • 2-13で作成したもの — 2.8GB
  • 本項で作成したもの — 1.6GB

となっていた。

3. 主要アプリのインストール

3-1. OpenFOAM-v2006

OpenFOAM-v1806までは、
https://openfoamwiki.net/index.php/Installation/Linux/OpenFOAM-v1806/Ubuntu
に記された方法で、Ubuntu18.04上で完全ビルド出来ていたが、OpenFOAM-v1906に関しては、現時点でparaViewを完全にビルド出来る方法は見当たらない。
Paraviewを、-mpiオプションを外してビルドするのであれば、上記HPに記された方法を流用(v1806の部分をv1906に置き換えて使用する等)できるので、DEXCS2019ではその方法でビルドした。

今回は、版元で公開されている Install build guide(v2006) に準拠してインストールを試みたが、これもオプション無しのビルドは問題無かったが、-mpiオプションのみならず、-pythonオプションもビルド出来なかった。

諸々の試行錯誤の結果、ubuntu20.04では、puthon が3.8となり、従来のpython2が搭載されていなかったのを、これをインストールして、python2でビルドする方法であれば、-pythonオプションでビルド出来る事が判ったので、これをDEXCS搭載する事とした。

まずは、System Requirementsによって、

$ sudo apt-get update
$ sudo apt-get install build-essential autoconf autotools-dev cmake gawk gnuplot
$ sudo apt-get install flex libfl-dev libreadline-dev zlib1g-dev openmpi-bin libopenmpi-dev mpi-default-bin mpi-default-dev
$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev

ソースコードをダウンロードして展開、環境設定。

$ cd ~
$ mkdir OpenFOAM
$ cd OpenFOAM
$ wget “https://sourceforge.net/projects/openfoam/files/v2006/OpenFOAM-v2006.tgz”
$ wget “https://sourceforge.net/projects/openfoam/files/v2006/ThirdParty-v2006.tgz”
$ tar -xzf OpenFOAM-v2006.tgz
$ tar -xzf ThirdParty-v2006.tgz
$ echo “alias of2006+=’source \$HOME/OpenFOAM/OpenFOAM-v2006/etc/bashrc $FOAM_SETTINGS'” >> $HOME/.bashrc

端末を立ち上げ直して、OpenFOAM本体のビルド

$ ofv2006+
$ foam
$ ./Allwmake -j 4 (4の部分は、マシンの使用可能なコア数に応じて変更)

3-2. ParaViewのビルド

ParaViewのビルドは、試行錯誤の結果であるが、結果的に以下の準備が必要であった。

まず、ubuntu-20.04 のデフォルトのシェルがdashになっていたので、これをbashに変更。

$ sudo rm /usr/bin/sh
$ sudo ln -s /usr/bin/bash /usr/bin/sh

これは必ずしも必要では無かったが、ビルド時のエラーメッセージが判り難かったのと、後のOpenFOAMの標準チュートリアルを実行する際にもこちらの方が不具合が少ない。

また、cmakeでビルドする際に、パッケージに起因するエラーが出た時に、必要なパッケージを探すコマンドがあって、これもインストールしておいた。

$ sudo apt install apt-file
$ sudo apt-file update

以上の準備の上、試行錯誤の結果として、以下のパッケージを追加インストールする必要があった。

$ sudo apt install python2
$ sudo apt install libpython2.7-stdlib
$ sudo apt install libpython2.7
$ sudo apt install libpython2-dev
$ sudo apt install libqt5x11extras5-dev
$ sudo apt install qttools5-dev

$ cd $WM_THIRD_PARTY_DIR
$ export QT_SELECT=qt5
$ ./makeParaView -python -python-lib /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 > log.makePV 2>&1
$ wmRefresh

但しこのままでは、ParaViewがGPUを搭載していないマシンで画面表示できない(真っ黒な画面になる)ので、OpenGLの拡張機能をOSMesaで代替できるようにしておく。

$ sudo -s
# apt-get install mesa-utils libglu1-mesa-dev scons llvm-dev python3-pip python-mako libyaml-dev
# pip3 install prettytable Mako pyaml dateutils –upgrade
# sed -i~orig -e ‘s/# deb-src/deb-src/’ /etc/apt/sources.list
# apt-get update
# apt-get build-dep mesa
# exit

$ cd $WM_THIRD_PARTY_DIR
$ apt-get source mesa
$ cd mesa-20.0.8
$ scons force_scons=1 build=release texture_float=yes libgl-xlib > log.makeMesa 2>&1 && cp -vr build/linux-x86_64/gallium/targets/libgl-xlib/* $ParaView_DIR/lib/

数分後、ビルドに成功すると、以下のメッセージが表示される。

‘build/linux-x86_64/gallium/targets/libgl-xlib/libGL.so’ -> ‘/home/dexcs/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/lib/libGL.so’
‘build/linux-x86_64/gallium/targets/libgl-xlib/libGL.so.1’ -> ‘/home/dexcs/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/lib/libGL.so.1’
‘build/linux-x86_64/gallium/targets/libgl-xlib/libGL.so.1.5’ -> ‘/home/dexcs/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/lib/libGL.so.1.5’
‘build/linux-x86_64/gallium/targets/libgl-xlib/xlib.os’ -> ‘/home/dexcs/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/lib/xlib.os’

Paraviewをビルドしたlib中に、libGL.so等が作成され、システム標準のlibGL.soでなく、これらを使えるようになるという事である。

ビルドが完了したら、再度OpenFOAM本体のビルドをやり直す。

$ wmRefresh
$ foam
$ ./Allwmake

paraviewライブラリ関連のビルドが実行され、これでparaFoamが使えるようになる。

3-3. TreeFoam


TreeFoamの情報サイトより、システム本体のdebパッケージ(treefoam_3.04.200802_all.deb)とヘルプドキュメントのdebパッケージ(filetreefoam-doc_3.04.200802_all.deb)をダウンロードしてインストール。

TreeFoamを起動(端末上で、/optTreeFoam/treefoam を入力)して、「ファイル」⇒「ConfigTreeFoamの変更」にて、bashrc-FOAM*を整合させ、「設定」ボタンを押す。

その他、残渣グラフ表示は、PyFoam機能を使っているので、これもインストールしておく。

PyFoam

$ sudo apt install subversion
$ svn co https://svn.code.sf.net/p/openfoam-extend/svn/trunk/Breeder/other/scripting/PyFoam/
$ sudo apt install python3-setuptools
$ cd PyFoam
$ sudo python3 setup.py install

最終行にて、セットアップをpython3にて実施しているのが、DEXCS2020における更新箇所である。

TreeFoam⇒TreeFoam+dexcsSwak

TreeFoamの更新方法の記事を参考にして、以下のファイルを修正する。

  1. /opt/TreeFoam/treefoam
  2. /opt/TreeFoam/treefoam.py
  3. /opt/TreeFoam/treefoam.glade
  4. /opt/TreeFoam/data/locale/inputFiles
  5. /opt/TreeFoam/data/locale/treefoam.po
  6. /opt/TreeFoam/data/locale/treefoam.mo
  7. /opt/TreeFoam/data/locale/en_US/LC_MESSAGES/treefoam.mo
/opt/DEXCS

とりあえず、DEXCS2019で使っていたものをそのままコピーしておくが、壁紙ファイルとアイコンファイルはDEXCS2010用のものに変更

3-4. FreeCAD

FreeCADの最新版をインストールするにはパッケージインストールする方法と、ソースコードからビルドする方法がある。DEXCS2020ではパッケージインストールする方法に拠ったが、参考の為にソースコードからビルドする方法についても記しておく。

以下の方法で最新開発版のパッケージインストール(/usr/bin/freecad-daily)が可能、

$ sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
$ sudo apt-get update
$ sudo apt-get install freecad-daily && sudo apt-get upgrade

また、以下の方法でソースビルドも可能(/opt/freecad)

$ sudo add-apt-repository –enable-source ppa:freecad-maintainers/freecad-daily && sudo apt-get update
$ sudo apt-get build-dep freecad-daily
$ git clone https://github.com/FreeCAD/FreeCAD.git freecad-source
$ mkdir freecad-build
$ cd freecad-build/
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/freecad -DBUILD_QT5=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 ../freecad-source/
$ make -j 4
$ sudo make install

とあったがto、今回新たにubuntu-20.04上では、以下のエラーが出た。

CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package):
Could not find a package configuration file provided by “boost_python”
(requested version 1.71.0) with any of the following names:

boost_pythonConfig.cmake
boost_python-config.cmake

かような場合、boost_python-config.cmakeで、何が必要なのかを、以下のようにして探すことが出来た。

$ apt-file search boost_python-config.cmake
libboost-python1.71-dev: /usr/lib/x86_64-linux-gnu/cmake/boost_python-1.71.0/boost_python-config.cmake

したがって、以下追加インストールする事によってビルドも可能であった。

$ sudo apt install libboost-python1.71-dev

その他、ubuntu-20.04では、このままでは、FreeCAD立ち上げ後のDraftモードで、

Error: Pivy not found, Draft Workbench will be disabled.

というエラーの生じることも新たに判明した。これについては、

$ sudo apt install python3-pivy

として、改めてビルドをやり直して解決できた。

但し、最新開発版は十分テストされておらず不安定な場合がある。
DEXCS2019では、ソースビルドで安定に動作した版のソースコードを残しておいて、最新開発版で動作が不安定であった場合、安定版コードを使ってソースビルドするようにしていた。

パッケージインストールではfreecad-daily、ソースビルドではFreeCAD というコマンドで起動できるが、このままだと起動画面は立ち上がるが、操作しようとすると即落ちるので、起動用コマンドを以下作成し、

$ sudo gedit /usr/bin/freecad

#!/bin/bash

export SVGA_VGPU10=0
/usr/bin/freecad-daily $1 (パッケージインストールの場合)
#/opt/freecad/bin/FreeCAD $1 (ソースビルドの場合)

以下、実行権限を付与し、freecadが起動できることを確認。

$ sudo chmod +x /usr/bin/freecad
$ freecad

引き続き、mime-typeの登録と、表示アイコン

$ cd /usr/share/mime/packages
$ sudo cp freedesktop.org.xml freedesktop.org.xml.bak
$ sudo gedit freedesktop.org.xml

FreeCAD FreeCAD ファイル FreeCAD FreeCAD file

<mime-type type=”application/x-extension-fcstd”>
<comment>FreeCAD</comment>
<comment xml:lang=”ja”>FreeCAD ファイル</comment>
<acronym>FreeCAD</acronym>
<expanded-acronym>FreeCAD file</expanded-acronym>
<glob pattern=”*.fcstd”/>
</mime-type>

アイコンは、~/.local/share/icons 以下に収納

$ cp /opt/freecad/share/icons/ ~/.local/share/ -r (ソースビルドの場合)
$ cp /usr/share/freecad-daily/share/icons/ ~/.local/share/ -r (パッケージインストールの場合)
$ sudo update-mime-database /usr/share/mime

これにて、ファイルマネージャで見た場合の拡張子.fcstdファイルのアイコンが変更される。

(ソースビルドの場合)しかしこの時点ではまだ、これをダブルクリックしても、

となって、まだFreeCADは立ち上がらない。

(パッケージインストールの場合)/usr/bin/freecad-dailyが素のままで起動されるので、上述のごとく即落ちてしまう。

そこで、上述の起動コマンドを、3.3.5項(後述)で登録しておけば、上図で「アプリケーションを選択」から

「すべてのアプリケーションを表示」を押して、

登録したFreeCADを選択できるようになるので、これを選択すれば良い。

その他、FreeCADマクロ中で使用するコマンド実行用のターミナル(xfce4-terminal)と、FEMモジュール用にgmsh,python3-numpyをインストール。(ソースビルドの場合)さらに、calculix, matplotlib を追加インストールが必要であった。

$ sudo apt install xfce4-terminal
$ sudo apt install gmsh
$ sudo apt install python3-numpy

マクロファイル一式と、user.cfgファイルを所定の場所(~/.FreeCAD)に収納して、諸々の動作確認を実施(詳細は別途解説)。

3-5. jgp

jgpはここ数年更新されていないので、DEXCS2019にインストールしたモジュール(/opt/jgp)をそのままコピーした。

実行に際してはjavaが必要になるが、ubuntu-20.04には標準インストールされていなかった。因みに、端末上でjavaを入力すると、

$ java

コマンド ‘java’ が見つかりません。次の方法でインストールできます:

sudo apt install openjdk-11-jre-headless # version 11.0.8+10-0ubuntu1~20.04, or
sudo apt install default-jre # version 2:1.11-72
sudo apt install openjdk-8-jre-headless # version 8u265-b01-0ubuntu2~20.04
sudo apt install openjdk-13-jre-headless # version 13.0.3+3-1ubuntu2
sudo apt install openjdk-14-jre-headless # version 14.0.1+7-1ubuntu1

インストール候補とインストール方法を教えてくれた。DEXCSでは、DAKOTAとの相性を考慮して、openjdk-8-jdk をインストールした。

但し、jgpを実行する段にて、新たに、

Exception in thread “main” java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper

というエラーが生じた。この対応策も、簡単に見つかって、

http://hirotyanteikoku.cocolog-nifty.com/cocolog/2018/08/ubuntu1804-mine.html

/etc/java-8-openjdk/accessibility.properties ファイル中の、

assistive_technologies=org.GNOME.Accessibility.AtkWrapper



をコメントアウト(行の先頭に#をつける)しろ、というものであった。

また、実行する際に、本モジュール内のファイルに対して書き込みが実行される事になるので、ディレクトリ全体に書き込み権限を付与しておく必要がある。

3-6. Helyx-OS

これも更新されていないので、DEXCS2019で使用したモジュール(/opt/Engys)をそのままコピーした。

3-7. shutter

DEXCS2019(Ubuntu-18.04)までは、普通にパッケージインストールが可能であったが、DEXCS2020(Ubuntu-20.04)においては、標準では、Ubuntu Software(snap)でインストールする事が推奨される。

しかしながら、今回はsnapは使わない(削除する)ので、別の方策を探した。

$ sudo add-apt-repository ppa:linuxuprising/shutter
$ sudo apt install shutter

4. リマスター配布用の準備作業

4-1. 不要ファイル削除

OpenFOAM関連

ダウンロードしたソースコードの圧縮ファイル(~/OpenFOAM/*.tgz)と、ビルドの際に出来た中間ファイルがOpenFOAM-v2006/build,ThirdParty-v2006/build 以下に収納されているので、buildフォルダ毎削除する。

また、ユーザーディレクトリである
/home/dexcs/OpenFOAM/dexcs-v2006
を削除する。

4-2. インストールアプリの収納場所移動

インストールは基本ホームディレクトリ下で作業してきたが、このままでは配布用isoイメージに含めることはできないので、これらを/opt/以下に移動し、配布イメージのホームディレクトリから参照できるべく、シンボリックリンク作成しておく。

$ sudo mv OpenFOAM/ /opt/
$ ln -s /opt/OpenFOAM OpenFOAM
$ ln -s /opt/DEXCS DEXCS
$ sudo ln -s /opt/OpenFOAM /etc/skel/OpenFOAM
$ sudo ln -s /opt/DEXCS /etc/skel/DEXCS
$ sudo chmod 777 -R /opt/OpenFOAM

4-3. Dockランチャー

DEXCS用にインストールしたアプリケーションをDockランチャーから起動できるようにするには、$HOME/.local/share/applications/ 下に、それぞれ以下の起動用ファイル(.desktop)を収納しておく。

OpenFOAM端末(ofv2106.desktop)

[Desktop Entry]
Comment=terminalForOpenFOAM-v2006
Name=OF-v2006Terminal
Exec=gnome-terminal — /bin/bash –rcfile ~/.bashrc-OF4v2006
Terminal=false
Type=Application
Icon=/opt/DEXCS/icons/KeUWBneI.png
Name[ja_JP]=ofv2006

また、.bashrc-OF4v2006は、ホームディレクトリ直下と、/etc/skel下に以下内容

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

. /opt/OpenFOAM/OpenFOAM-v2006/etc/bashrc
echo “OpenFOAMv2006 is enabled.”

ParaView(Paraview.desktop)

[Desktop Entry]
Comment=Paraview
Name=Paraview
Exec=/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/bin/paraview
Terminal=false
Type=Application
Icon=/opt/OpenFOAM/ThirdParty-v2006/platforms/linux64Gcc/ParaView-5.6.3/share/icons/hicolor/32×32/apps/paraview.png

TreeFoam(TreeFoam.desktop)

[Desktop Entry]
Comment=TreeFoam
Name=TreeFoam
Exec=/opt/TreeFoam/treefoam
Terminal=false
Type=Application
Icon=/opt/TreeFoam/icons/treefoam48.png
Name[ja_JP]=TreeFoam.desktop

FreeCAD(freecad.desktop)

[Desktop Entry]
Name=FreeCAD
Comment=Feature based Parametric Modeler
Comment[de_DE]=Feature-basierter parametrischer Modellierer
Comment[fr]=Modeleur paramétrique à base de fonctions
GenericName=CAD Application
GenericName[de_DE]=CAD-Anwendung
GenericName[fr]=Application de CAO
Exec=”/usr/bin/freecad” %U
Terminal=false
Type=Application
#Icon=/opt/freecad/share/icons/hicolor/48×48/apps/freecad.png (ソースビルドの場合)
Icon=/usr/share/freecad-daily/share/icons/hicolor/48×48/apps/freecad.png (パッケージインストールの場合)
Categories=Graphics;Science;Engineering;
StartupNotify=true
MimeType=application/x-extension-fcstd;

jgp(jgp.desktop)

[Desktop Entry]
Type=Application
Name=jgp
Exec=/opt/jgp/startupJgp
Icon=/opt/jgp/images/splash.png
Terminal=false
Name[ja]=jgp

HELYX-OS(kelyxOS.desktop)

[Desktop Entry]
Type=Application
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]=helyxOS

朱字で記したスクリプトやアイコンファイルが所定の場所に収納されておれば、アプリケション一覧、

にて参照できるようになるので、登録したアプリを右クリック⇒「お気に入りに追加」にて、Dockランチャーに登録される。

4-4. DEXCSチュートリアル

デスクトップ上のDEXCSフォルダ以下に、DEXCS用にカスタマイズしたチュートリアルケース一式を収納した。
(カスタマイズ方法については、別途記す予定)

4-5. DEXCSセットアップ用スクリプト

以下のスクリプト(setup.sh, setup.list)を用意して、所定場所に収納しておく。
なお、setup.list中には、ファイルの内容にユーザー名(ここではdexcs)を使用している場合に、DEXCSインストール後のユーザー名に変更する必要のあるファイル名を記しておく。

/etc/skel/Desktop/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}

# chmod +x /opt/DEXCS/startup1.sh
bash /opt/DEXCS/startup1.sh

sudo rm -f /usr/bin/sh
sudo ln -s /usr/bin/bash /usr/bin/sh

source /opt/OpenFOAM/OpenFOAM-v2006/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

/opt/TreeFoam/treefoam &
sleep 3

rm ~/Desktop/ubiquity.desktop -f
rm ~/Desktop/setupDEXCS.sh

find ~/Desktop -mtime -1 | xargs touch
killall -u $WHO

太字部分はDEXCS2020より追加(注記3.参照)

/opt/DEXCS/setup.list

~/.bashrc-OF4v2006
~/.FreeCAD/user.cfg

また、上記セットアップを実行するには、/opt/DEXCS/以下において書き込み権限が必要になる。

$ sudo chmod 777 -R /opt/DEXCS

5. リマスターの実行

以下のスクリプト(remaster.sh)

#!/bin/dash
rm -f /usr/bin/sh
ln -s /usr/bin/dash /usr/bin/sh
rm -f /opt/TreeFoam/Ver*
rm -f /opt/TreeFoam/temp/*
rm -rf /etc/skel/.local/
rm -rf /etc/skel/.config/
rm -rf /etc/skel/.FreeCAD/
rm -rf /etc/skel/.HELYX-OS/
cp -r /home/dexcs/.config/ /etc/skel/
cp -r /home/dexcs/.local/ /etc/skel/
cp -r /home/dexcs/.FreeCAD/ /etc/skel/
cp -r /home/dexcs/.HELYX-OS/ /etc/skel/
apt-get clean
PinguyBuilder clean
PinguyBuilder dist

rm -f /usr/bin/sh
ln -s /usr/bin/bash /usr/bin/sh

太字部分はDEXCS2020より追加(注記3.参照)

を管理者権限で実行

$ sudo ./remaster.sh

成功すれば、以下のようにメッセージが出る。

Updating the PinguyBuilder.log
Removing the ubiquity frontend as it has been included and is not needed on the normal system
Calculating the installed filesystem size for the installer
Removing PinguyBuilder-firstboot from system startup
Making disk compatible with Ubuntu Startup Disk Creator.
Creating md5sum.txt for the livecd/dvd
Creating custom-dist.iso in /home/PinguyBuilder/PinguyBuilder
Making custom-dist.iso a hybrid iso
isohybrid: Warning: more than 1024 cylinders: 2999
isohybrid: Not all BIOSes will be able to boot this device
Creating custom-dist.iso.md5 in /home/PinguyBuilder/PinguyBuilder
Creating custom-dist.iso.sha256 in /home/PinguyBuilder/PinguyBuilder
/home/PinguyBuilder/PinguyBuilder/custom-dist.iso which is 3.0G in size is ready to be burned or tested in a virtual machine.

/home/PinguyBuilder/PinguyBuilder/のフォルダ中に、
custom-dist.iso
が出来ているので、これを名前変更して配布する。

以上


注記1.

https://sourceforge.net/projects/pinguy-os/files/ISO_Builder/ のサイトは、執筆時点(2020/7/29)で、最終更新が(2019/8/15)となっており、1年近く更新されていないので、ubuntu-20.04に対応しているのかどうか不明な点もあったが、試したところインストールも出来て問題もなさそうなので、これを使うこととした。

注記2.

ubuntu 20.04 では、以下のエラーが出たので、

Could not find a package configuration file provided by “boost_python”
(requested version 1.71.0) with any of the following names:

boost_pythonConfig.cmake
boost_python-config.cmake

$ apt-file search boost_python-config.cmake
libboost-python1.71-dev: /usr/lib/x86_64-linux-gnu/cmake/boost_python-1.71.0/boost_python-config.cmake

となったので、以下追加インストールが必要であった。

$ sudo apt install libboost-python1.71-dev

注記3.

ubuntu 20.04の標準シェルはdashになっている。しかしOpenFOAMに付属のAllrun等のスクリプトの一部はbashでないと正しく動作しない。また、TreeFoamについてもしかりであり、DEXCS2020でもbashに変更してある。

しかしながら、bashに変更したままremasterを実行すると、出来上がったisoイメージでのインストール作業が途中で止まってしまう事が判明した(ライブモードでの使用は問題ない)。

そこで、DEXCS2020からは、リマスターを実行する際には、シェルをdashに戻し、実行後に再度bashに変更する事とした。

また、出来上がったisoイメージのシェルがdashになっているので、DEXCSセットアップ用スクリプト(setupDEXCS.sh)中にbashに変更する手続きも追加した。その為、セットアップ実行時に管理者権限のパスワード入力が必要になっている。