「ChromebookでシミュレーションソフトのOpenFOAMを使いたいので教えてほしい!」という依頼を受けたため、自分でいろいろ試しつつ手ほどきした記録です。
教えた相手があまりコンピュータに慣れていないということだったので、エンジニアらしくない(?)表現もありますが、ご了承ください。(そもそも自分が本質理解をしていない...)
この記事では「とりあえず動く」ことを目標にしていきたいと思います。
##条件
####機器
Chromebook3100 2-in-1
皆さんお察しの通り、教育用Chromebookです。
####Linux
$ uname -a
Linux penguin 5.4.131-16049-gc688e114d34e #1 SMP PREEMPT Thu Sep 9 20:21:35 PDT 2021 x86_64 GNU/Linux
$ cat /etc/debian_version
10.10
####OpenFOAM
OpenFOAMは現在「openfoam.com」と「openfoam.org」から入手できます。2つは若干バージョン表記が異なり、
openfoam.com | openfoam.org |
---|---|
OpenFOAM-v〇〇〇〇 | OpenFOAM〇 |
(〇内は任意の数字) |
というような表記になっています。
今回使用したのは「OpenFOAM-v2106」、つまり「.com」の方から入手したものになります。「.com」の方が使える機能が多いのだとか。
#準備
###Linux環境
Chromebookの[設定]アプリを開いて「Linux開発環境」という項目で「オンにする」を選択し、指示に従って進めます。
セットアップが完了してターミナル(黒いやつ)が表示されたら、
sudo apt-get update
sudo apt-get upgrade
と実行します。
もしupdateの際にRepository 'http://deb.debian.org/debian buster InRelease' changed its 'Version' value from 'ooo' to 'xxx'
などというエラーが出たら、
sudo apt-get update --allow-release-change
と実行してからもう一度試すと上手くいくようです。
#方法1 〜ソースからビルド〜
####結果:私の環境では失敗
こちらの記事を参考に準備を進めようとしました。
とても分かりやすく書かれていたので「楽勝やんか!」と思っていたのですが、この方法だとソースを持ってきてコンパイルをする(PCが行う処理が多くなってしまう)ので、今回使用したPCでは./Allwmake
を実行した所で
g++: fatal error: killed signal terminated program cc1plus
となってしまい、無理矢理進めて使おうとしても多くの機能が使えない状態でした。
メモリが十分あるのであればこの方法でまず問題なさそうですね。上記のサイトがとても分かりやすいのでぜひ参考にしてください。
#方法2 〜Dockerを使う〜
####結果:私の環境では成功、依頼主の環境では失敗(後述)
###Docker
今セットアップしたLinuxの上に、「Docker」というモノを入れていきます。
しっかり順を追ってセットアップしても良いのですが、
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
私の様な面倒くさがりのためにたった二行でインストールできる方法を用意してくれています。
あまり推奨されていないようですが、まあ今回は個人利用だったので...(ボソッ)
しっかりインストールする場合は
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io
このようになるようです。詳しくは公式ドキュメント↓を参照してください。
###OpenFOAM
いよいよ本丸、OpenFOAMを準備していきます。
sudo wget https://develop.openfoam.com/packaging/containers/-/raw/main/openfoam-docker -O /usr/local/bin/openfoam-docker
sudo chmod +x /usr/local/bin/openfoam-docker
https://develop.openfoam.com〜
からダウンロードしてきて、実行権限を与えるだけです。
ここで動かしてみましょう。
sudo systemctl start docker
sudo openfoam-docker -default
cp -r $FOAM_TUTORIALS/multiphase/compressibleMultiphaseInterFoam/lam![Screenshot 2021-10-10 03.05.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1691660/855dac9f-2e83-5805-d162-047b63e6304f.png)
inar/damBreak4phase ./
cd damBreak4phase
./Allrun
と実行し、
Restore 0/ from 0.orig/
Running blockMesh on /root/damBreak4phase
Running setFields on /root/damBreak4phase
Running compressibleMultiphaseInterFoam on /root/damBreak4phase
と順に出力され、再び入力ができるようになったら(きっと)しっかり機能していると思います🎉🐧
###しかし!
方法2の冒頭でも申し上げたとおり、この方法では失敗することもあります。
それは、アーキテクチャが「arm」系の端末を使用している場合です。
アーキテクチャは、
uname -m
と実行すると確認できます。
このコマンドの実行結果が「x86_64」等であれば大丈夫なのですが、「arm」系だとDockerImageが対応していないため、この方法では厳しそうです...
#最後に
arm系アーキテクチャで、かつメモリが十分でない場合には使えない、という結果になってしまいました...。
良い方法があればご教授願いたいです。
#1/9 追記
こんな記事を見つけました。
この記事の通りに設定したらarm系アーキテクチャ上でもamd系にしか対応していないOpenFOAMのDockerImageも動くのでは?! と思い、早速持っているラズパイで試してみたら、問題なく動きました。
実際にChromebookで動作確認をしたわけではないので確信は持てませんが、QEMU×binfmt_misc
は希望の光と成り得るのではないでしょうか。
ただDockerってストレージ難民には苦しいんですよね。自分のChromebookのストレージは全体で32GB、そのうちLinuxコンテナで使えるのは約13GBしかないので(絶望的)。 こまめにお掃除します。