1. 背景
Amazon WorkSpacesはクラウド上で利用できるデスクトップ環境であり,利用者に依存せず同じ環境を提供できることから,授業や講習でも有用なものです.CAEの分野でも,CADソフトによる造形から構造解析までのデモンストレーションを行うものとして利用価値があります.
しかしながら,Amazon WorkSpacesの「無料利用枠の対象」であるWindowsは,デフォルトでは,オープンソースのCADであるFreeCADのバージョン0.17以前しか利用できません.オープンソースのソルバであるFrontISTRをFreeCADから利用可能にしたアドオンが昨年リリース1されましたが,こちらはFreeCAD 0.19で導入可能なため,対応していないという問題がありました.
この記事①では,Amazon WorkSpacesの新規立ち上げから解決策の実施までを紹介します.次いで②では,WorkSpaces上でのFEM_FrontISTR利用例と利用上の注意を見ていきます.
次の記事↓
(準備中)
2. 用語のざっくりとした説明
- Amazon WorkSpaces: AWS (Amazon Web Services)の提供する仮想デスクトップ環境
- FreeCAD: オープンソースのCADソフト.フリーのCAD
- FEM_FrontISTR: オープンソースの構造解析ソルバ FrontISTR をFreeCADのアドオン化したもの.FreeCAD上でモデリング〜解析〜可視化を行える.
3. Amazon WorkSpacesの新規作成
AWSのアカウント作成まではできているとして,新規にWorkSpacesを作成する過程を順に見ていきます.
- AWS マネジメントコンソールの「WorkSpaces」へ行き,左上の「WorkSpacesを起動」を押します.
- 利用するディレクトリを選択します.新規作成 or 目的のものを選択し,次へ進みます.
- 利用するユーザーを追加します.「ユーザー名」「名」「姓」「Eメール」を入力し,「ユーザーの作成」を押します.
作成されると画面下部に反映されますので,確認の上,次へ進みます.
- 利用するバンドル(マシンのタイプやOS)を選択します.今回は「無料利用枠の対象」である「Standard with Windows 10 (Server 2019 based),日本語」としました.画面下部の割り当てを確認し,次へ進みます.
- 設定の確認です.知らぬ間の課金を避けるため,「AutoStop」を選択します.画面下部のタグは任意です.
- WorkSpacesの最終確認です.設定事項に誤りがないことを確かめ,「WorkSpacesの起動」を押します.
- 新たに作成したものが一覧画面に反映されます.ステータスが「PENDING」のうちは準備中で利用できません.
- 数十分(公式では20分,それより短いことも長いことも)経つと,ステータスが「STOPPED」に変化し,利用可能になります.次項のはじめに示すメールの到着でこの準備完了を知ります.
4. Amazon WorkSpacesの立ち上げ
利用可能になったWorkSpacesを立ち上げる過程を順に見ていきます.
- 利用可能のお知らせは,ユーザー追加の際に入力したEメール宛に届きます.
- メールの「1」のリンクにアクセスし,パスワードを設定します.
- パスワード設定が完了すると,クライアントのダウンロード画面に自動で遷移します.適切なものを選択し,自身の環境にインストールしてください.
- クライアントを立ち上げ,メールの「2」に記載された登録コードを入力して次へ進みます.
- ユーザー名と先程設定したパスワードを入力し,次へ進みます.
- 入力情報に問題がなければ,起動の準備に入ります.
- しばらく待つと,Windows環境が立ち上がります.失敗した場合は,入力をやり直したり,マネジメントコンソールから再起動を試みたりします.
5. FreeCAD 0.19をとりあえず入れる
冒頭の文章より,ここまでの手順で作成したWindows環境ではFreeCAD 0.19を利用できないことは明らかですが,一度インストール〜起動をやってみましょう.
- ブラウザ2でFreeCADのダウンロードページにアクセスし,Windows版のインストーラを取得します.
- 特別な設定はせずインストールを進めます.
- 起動してみます.やはりローディング画面のみ表示されて落ちてしまいます.
6. 問題の解決へ
立ち上がらない問題の原因究明〜解決の過程を記録として残します.最終的な結論だけ知りたいという方は,次項 7 へ進んでください.
「amazon workspaces freecad 0.19」で検索すると,仮想環境で利用できないという似たような事例がFreeCAD Forum3で見つかりました.曰く,GPUが搭載されていないことが立ちがらない原因のようです.このスレッドの一番下,投稿者による解決策として示されていたのは
- Mesa3Dの
opengl32.dll
4 (dllの形で配布されているもの)をbin
フォルダ(=アプリケーションのあるところ)に入れる - Stack Overflowに解説あり
という内容でした.そこで,リンクされたStack Overflow5を確認すると,トップ回答の内容は
- LLVM + Mesa3Dをビルドし,
opengl32.dll
を作成する
→C:\Windows\System32\opengl32.dll
を置き換える - アプリケーションと同じフォルダに入れても動かない
というものでした.FreeCAD Forumの投稿者は自身でFreeCADをビルドしたのに対し,今はインストーラで入れたものを使いたいという違いがあります.しかし,Stack Overflowの方にしたがってビルドから行うのは面倒です.また,dllの置き場にも食い違いがあります.ひとまず試していくしかない...ということで以下のような作業を実験として行いました.
- dllがアプリケーションと同じところにあれば良い?と考え,
C:\Windows\System32\opengl32.dll
をFreeCADのexeがあるところにコピーしました.
→何も変わりませんでした.後で気付きましたが,Stack Overflowの方でC:\...
のものを「置き換え」(replace)と書かれているのに,「1. ビルドしたものか,2.C:\...
のものを利用」と,このときは勘違いしていました. - Stack Overflowを信用し
C:\...
のdllを置き換えるものの,ビルドは面倒なので配布されているMesa3Dのdllを利用することにしました.opengl32.dll
なので32 bit用をダウンロードし,C:\Windows\System32\opengl32.dll
を置換しました.このとき,Stack Overflowの次点の回答も参照し,C:\Windows\SysWOW64\opengl32.dll
も置換しました.
→FreeCADがローディング画面さえ出ずにエラーで落ちてしまいました. - dllの名称は32であるものの,OSは64 bitなので64 bit用が必要ということに気付き,改めて64 bit用Mesa3Dの
opengl32.dll
をダウンロードしました.上と同様にSystem32
とSysWOW64
内に配置しました.
→無事起動しました!
7. FreeCAD 0.19を使えるようにする
解決策の結論を簡単に述べます.
-
Mesa3D 64 bitの
opengl32.dll
を入手する - Windowsにはじめから存在する
opengl32.dll
を置き換える
という2つの作業を行います.以下では,必要なファイルのダウンロード〜既存のファイルのセキュリティ変更・置換までの過程を順に見ていきます.
- Mesa3Dのダウンロードページにアクセスし,64 bit用を入手します.
- Mesa3Dは7z形式で圧縮されているため,解凍用に7-Zipも導入します.
- 7zを右クリック,「7-Zip」 > 「ここに展開」を選択し,解凍します.
opengl32.dll
とREADME.txt
の2ファイルが得られます.
- WorkSpacesでは,ユーザー環境はDドライブに存在します.エクスプローラー上部のバーに
C:\
と入力し,Cドライブにアクセスします.
-
C:\Windows\System32
の様子です.このopengl32.dll
を置き換えます.
- WorkSpacesを利用するユーザーは管理者扱いであるものの,置き換えようとすると拒否されてしまいます.
C:\...
のdllのアクセス許可を変更することで対処します.
-
C:\Windows\System32\opengl32.dll
を右クリックし,プロパティを開きます.プロパティの「セキュリティ」タブの下部,「詳細設定」へ進みます.ここからの作業はシステムの一部を改変するものですので,自己責任で行ってください.
- 所有者が「TrustedInstaller」となっているので,これを変更します.
- フィールドに自身のユーザー名(WorkSpaces作成時に設定したもの)を入力し,「名前の確認」を行います.入力した文字列を含むユーザーが複数存在する場合(例: user01,user02など)は,適切なものを選択してください.
- 所有者が変更されたことを確認し,「適用」を押します.
- 今度はプロパティの「セキュリティ」タブより,「編集」(アクセス許可の変更)へ進みます.図のような画面が表示されるので,上のユーザーなど一覧から「Users」を選択し,「フルコントロール」にチェックを入れてください(どうせ置換してしまうのでフルコントロールで良いです).すると,拒否されることなく,入手したMesa3Dの
opengl32.dll
で置き換えられます.一連の操作をC:\Windows\SysWOW64\opengl32.dll
に対しても行ってください.
(2022.3.31修正: 再検証したところ,SysWOW64
内のファイルは置換しなくても良いことが判明しました.)
- Mesa3Dのdllが
System32
,に配置された後,改めてFreeCAD 0.19を起動します.期待通り画面が表示されました.SysWOW64
次の記事②↓では,FEM_FrontISTRアドオンを入れた上で実際にFreeCADを使っていきます.
(準備中)