目次
Ubuntu Serverでつくるシミュレーション環境
Ubuntu Server 12.04.3 のインストール
- CD-ROMイメージをhttp://www.ubuntu.com/download/serverからダウンロードしてきてCD-Rを焼き、CD−RからPCを起動し、後はインストーラの指示に従う。(BIOS設定でCD/DVDドライブから起動できるようにするのを忘れずに)(最近はCD/DVDドライブついてないからUSBメモリースティックだね。Macで起動USBメモリ作る場合は「起動USBメモリの作成法」参照。
- インストールはネットワークに繋げた状態で行う。IPアドレスやデフォルトゲートウェイの情報は研究室のdhcpサーバから取得する。
- 真っ新のPCにインストールする場合やもう使わない古いPCにインストールする場合は、最初の言語の設定以外は全部第一候補を選択しておけばよい。(MS-Windowsと共存させたいような場合は要相談)
- 「起動するサービス」ではOpenSSHを必ずチェックすること。
正しくインストールが終わればリモートで(OSXの「ターミナル」からsshを使って)ログインできる。
% ssh -l sstlab sstg2 sstlab@sstg2's password: Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64) ... $
このとき-lオプションでインストール時に設定した管理者用ログイン名(ここでは「sstlab」)を指定するのを忘れずに。 ホスト名はDNS/DHCPサーバ側で設定しているので詳細はネットワーク管理者(俺だよ、俺)に相談する。
新規ユーザの作成と設定
ずっとインストール時に設定した管理者用ログイン名で作業するのは面倒なので自分用のアカウントを作成する。
$ sudo useradd -m kimi [sudo] password for sstlab: $
ここでは「kimi」というログイン名のユーザを作成している。-mオプションをつける事によって同時にホームディレクトリも作成する。
$ ls -l ../ drwxr-xr-x 2 kimi kimi 4096 10月 28 13:54 kimi drwxr-xr-x 3 sstlab sstlab 4096 10月 28 13:46 sstlab
ホームディレクトリができていることを確認する。 ユーザ名と同じグループが作成されそのグループが指定されているので今後のために研究室のグループを指定する。研究室のグループとしては管理者用のアカウント作成時に同時に作成された同名のグループを用いることにする。
$ sudo chgrp sstlab ../kimi $ ls -l ../ drwxr-xr-x 2 kimi sstlab 4096 10月 28 13:54 kimi drwxr-xr-x 3 sstlab sstlab 4096 10月 28 13:46 sstlab
ディレクトリ「kimi」のグループを「kimi」から「sstlab」に変更し、それを確認したところ。 chgrpの引数の順番に注意!
新しく作成したユーザにパスワードを設定するのを忘れずに。
$ sudo passwd kimi 新しいUNIXパスワードを入力してください: 新しいUNIX パスワードを再入力してください: passwd: password updated successfully $
このままではユーザー「kimi」は「sudo」を使った管理者権限の必要な作業を行えないのでユーザー「kimi」をグループ「sudo」に登録する。
$ sudo adduser kimi sudo ユーザー `kimi' をグループ `sudo' に追加しています... Adding user kimi to group sudo 完了。 $
ここでも引数の順番に注意!
ここで一旦ログアウトし、作成したユーザでログインし直す。
% ssh sstg2 kimi@sstg2's password: Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64) ... $
Mac側で使っているログイン名をログイン名にしておくと-lオプションを省略できて便利。
useraddのデフォルトの設定ではログインシェルはshになっている。このご時世、無印shでは何かと不便であるので
$ chsh パスワード: Changing the login shell for kimi Enter the new value, or press ENTER for the default Login Shell [/bin/sh]: /bin/bash $
のようにログインシェルをbashに変更する。これで次回ログインしたときからシェルはbashになっている。
ネットワーク設定の変更
ubuntuはversion 12あたりから名前の解決をresolvconfを使ってやるようになったのだけれど、うちの研究室のようにDHCPで固定プライベートアドレスとDNSサーバアドレスを配っているような環境ではうまく動かない。
実際、
$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.0.1 search ee.ous.ac.jp $
のように名前解決が自分自身しか指していない。ワイヤレスでマルチホームな環境だったりするとresolvconfが便利なんだろうけど、うちのようなデフォルトゲートも名前解決も自前のワイヤードな環境では無用の長物なのでこの際バッサリ削除することにする。ubuntu標準のパッケージ管理ツールはapt-getなので
$ sudo apt-get remove resolvconf パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージは「削除」されます: resolvconf ubuntu-minimal アップグレード: 0 個、新規インストール: 0 個、削除: 2 個、保留: 63 個。 この操作後に 301 kB のディスク容量が解放されます。 続行しますか [Y/n]? (データベースを読み込んでいます ... 現在 51153 個のファイルとディレクトリがインストールされています。) ubuntu-minimal を削除しています ... resolvconf を削除しています ... resolvconf stop/waiting resolvconf.postrm: Reboot recommended ... ureadahead のトリガを処理しています ... man-db のトリガを処理しています ... $ $ sudo reboot
のようにresolvconfを削除しrebootする。
再度ログインしてresolv.confを確認すると
$ cat /etc/resolv.conf domain ee.ous.ac.jp search ee.ous.ac.jp. nameserver 127.0.0.1 nameserver 150.55.31.253 $
のようになっている。これでは研究室内の名前解決ができないので/etc/resolv.confに研究室のDNSサーバを追加する。
$ cat /etc/resolv.conf domain ee.ous.ac.jp search ee.ous.ac.jp. nameserver 127.0.0.1 nameserver 192.168.10.1 nameserver 150.55.31.253 $
これで研究室内部も
$ ping -c 1 sstg1 PING sstg1.ee.ous.ac.jp (192.168.10.41) 56(84) bytes of data. 64 bytes from sstg1.ee.ous.ac.jp (192.168.10.41): icmp_req=1 ttl=64 time=0.350 ms --- sstg1.ee.ous.ac.jp ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.350/0.350/0.350/0.000 ms
外部も
$ ping -c 1 www.ous.ac.jp PING okaridai.ous.ac.jp (150.55.4.242) 56(84) bytes of data. 64 bytes from okaridai.ous.ac.jp (150.55.4.242): icmp_req=1 ttl=61 time=1.40 ms --- okaridai.ous.ac.jp ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 1.400/1.400/1.400/0.000 ms
名前解決ができるようになった。
必要なソフトウェアのインストール
ubuntuサーバをインストールしただけの状態では
$ cc プログラム 'cc' は以下のパッケージで見つかりました: * gcc * clang * pentium-builder * tcc 次の操作を試してください: sudo apt-get install <選択したパッケージ> $ make プログラム 'make' はまだインストールされていません。 次のように入力することでインストールできます: sudo apt-get install make $ gfortran プログラム 'gfortran' はまだインストールされていません。 次のように入力することでインストールできます: sudo apt-get install gfortran
のようにFORTRANはおろかcのコンパイラもmakeすらもインストールされていない。そこでパッケージ管理ツールであるapt-getを使ってこれらをインストールしておく。
先ずはパッケージリストをアップデートする。
$ sudo apt-get update ヒット http://jp.archive.ubuntu.com precise Release.gpg ... ヒット http://security.ubuntu.com precise-security/universe Translation-en パッケージリストを読み込んでいます... 完了 $ 一先ずGNU make, GNU c コンパイラ, GNU fortran コンパイラをインストールしておこう。 $ sudo apt-get install make gcc gfortran パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 ... この操作後に追加で 71.7 MB のディスク容量が消費されます。 続行しますか [Y/n]? 取得:1 ... ... $
rpmやyumなどのapt-get以外のパッケージ管理システムやcvsやsvnなどのバージョン管理システムもあると便利である。ここではase3とdacapo.runのインストールのために必要になるのでrpmとsvn(subversion)をインストールしておく。
$ sudo apt-get install rpm subversion ... $
ase3(Campos Atomic Simulation Environment version 3)のインストールに最低限必要なのは
- Numerical Python
- Scientific Python
- netCDF (Network Common Data Form) interface for Python
である。GUIではなくCUIベースの計算サーバをリモートで動かし、計算結果の可視化等はローカルのMac OSX上で行うことになるのでグラフィック関係の追加機能は省略する。 これらをapt-getを使ってインストールする。
$ sudo apt-get install python-numpy python-scipy python-netcdf ... $
Dacapoのビルドに必要なのは、gfortranを除くと
- blas/lapack
- fftw
である。
これらをapt-getを使ってインストールする。
$ sudo apt-get install netcdf-dev $ sudo apt-get install fftw-dev $ sudo apt-get install liblapack-dev ... $
Dacapoのインストール
dacapo.run(偽ポテンシャルベースの第一原理計算エンジン)にはrpm形式で配布されているバイナリを試験的に導入する。(最終的にはソースからコンパイルし直して現環境で最適なロードモジュールを作成する)
$ sudo rpm -ihv --nodeps Dacapo-2.7.7-0.1.i386.rpm rpm: RPM should not be used directly install RPM packages, use Alien instead! rpm: However assuming you know what you are doing... ... $
これにより
$ rpm -qlp Dacapo-2.7.7-0.1.i386.rpm /etc/profile.d/dacapo.csh /etc/profile.d/dacapo.sh /usr/bin/dacapo.run /usr/bin/dacapo_2.7.7.run /usr/bin/dacapo_2.7.7_mpi.run /usr/share/dacapo/psp /usr/share/dacapo/psp/Al_tm_gga.pseudo ... /usr/share/dacapo/psp/zn_us_gga_7.3.4.pseudo $
のようなファイル群が上記のディレクトリに展開される。 /etc/profile.d/に下記の環境設定ファイルが作成されているので次回ログイン時からは環境変数が有効になる。
$ cat /etc/profile.d/dacapo.sh # # POSIX shell script to set environment for Dacapo # # Dacapo pseudopotentials database DACAPOPATH=/usr/share/dacapo/psp if [ -d $DACAPOPATH ] then export DACAPOPATH else # No dacapo unset DACAPOPATH fi $
このまま続けるときは
$ source /etc/profile.d/dacapo.sh $
のようにして環境変数を有効にしておくこと。
ase3/jacapoのインストール
svnを使ってase3のファイルをチェックアウト(ダウンロード)する。
$ export ASE_TAGS=https://svn.fysik.dtu.dk/projects/ase/tags/ $ svn checkout https://svn.fysik.dtu.dk/projects/ase/trunk ase A ase/tools A ase/tools/ase-gui.bat A ase/tools/ase-run.bat ... A ase/MANIFEST.in A ase/README.txt U ase リビジョン 3429 をチェックアウトしました。 $
aseのインストールを行う。(ここでは作業を$HOMEで行っていると仮定している)
$ export PYTHONPATH=$HOME/ase:$PYTHONPATH $ export PATH=$HOME/ase/tools:$PATH $ cd $HOME/ase $ sudo python setup.py install ... $
インストールが終わったらaseのテストを行う。テストにより大量のファイルが作成されるため適当な作業用ディレクトリを作ってテストはその作業用ディレクトリで行う。
$ cd $ mkdir work $ cd work $ python -c "from ase.test import test; test(verbosity=2, calculators=['jacapo'], display=False)" 2>&1 | tee testase.log python 2.7.3 GCC 4.6.3 64bit ELF on Linux x86_64 Ubuntu 12.04 precise Ag-Cu100.py (ScriptTestCase) ... ok CO2_Au111.py (ScriptTestCase) ... ok COCu111_2.py (ScriptTestCase) ... ok ... gromacs/test_gromacs.py (ScriptTestCase) ... skipped ok jacapo/jacapo.py (ScriptTestCase) ... ok mopac/mopac_cmdline.py (ScriptTestCase) ... skipped ok ... COCu111.py (ScriptTestCase) ... ok ---------------------------------------------------------------------- Ran 94 tests in 36.606s OK $
ここではより詳しい情報を表示させるためにverbosity=2を、テストにjacapoを含めるためにcalculators=['jacapo']を、画像関係のテストをスキップするためにdisplay=Falseを、それぞれ指定している。
ここでerrorもしくはfailureと表示されたテストスクリプトがあった場合はそのテストスクリプトを詳細に調べ、必要なパッケージの再インストール等を行う。全ての試験がokもしくはskipped okになればよい。後はJacapoのチュートリアルに従って計算を行うだけである。
自作コマンドのインストール
Local Command Index
- getatoms
- 原子配置をxyzファイルに書き出す
- To write the atomic arrangement into the file with xyz format.
- getdos
- 状態密度をテキストファイルに書き出す
- To write the total density of states into the file with text format.
- getdensity
- 量子数もしくはエネルギー範囲で指定した電子の存在確率密度をcube形式で出力
- To write the probability density into the file with Gaussian cube format.
- gettotaldensity
- 電子の全存在確率密度(電荷密度)をcube形式で出力
- To write the charge density into the file with Gaussian cube format.
- getwfs
- 波動関数をcube形式で出力
- To write the wave function into the file with Gaussian cube format.
- makevestafile
- 原子配置やcube形式ファイルをVESTA用に出力
- To write various information for the application, VESTA.