このリポジトリはリモートサーバでFortranのコードを開発している人に向けて、できるだけ簡単にVisual Studio CodeとWSL2(Ubuntu)のセットアップを可能にするために作られたスクリプト群です
このスクリプトを実行することで以下のことができるようになります
- Visual Studio CodeでFortranのコードの開発が可能になる
- Remote-SSHを使うことで、リモートサーバのファイルをVisual Studio Codeを使って直接編集できるようになる(一定以上のバージョンのOSがインストールされているサーバのみ)
- Modern Fortranを用いることで、Visual Studio Codeで開発中に、シンタックスハイライトやリンティングなどの開発に便利な機能を使用できるようになる
- $HOME/.ssh/configを編集することで、sshやrsync,scpなどのコマンドの手順を簡略化できるようになる
-
各コマンドは選択してctrl+cでコピー、右クリックで貼り付けすることができます(Powershellはctrl+vで貼り付けできますが、Ubuntuはデフォルトではctrl+vで貼り付けができないので、右クリックで貼り付けを行ってください)
-
必要なファイルはスクリプトの最初に自動的に確認され、ファイルが足りない場合はスクリプトは途中で終了し実行されないように作っています
(カスタムを行いたい方へ)
必要のないスクリプトがあるなどカスタムをしたい場合は./windowssetup.ps1の# Check whether scripts are existのブロックのコードを無効化、もしくは必要ないスクリプトのみファイル存在チェックを外すなどして対応してください -
インターネットとの通信がかなりあるので高速で安定なネットワーク(できれば有線)環境下で実行してください
-
ノートパソコンの場合充電の残量にも注意してください(基本的には充電しながらのセットアップを推奨します)
- このリポジトリにアクセスしてCodeからZipファイルをダウンロードします(ブラウザの幅が小さいとCodeボタンが表示されないことがあるので、その場合はブラウザを全画面表示にしてください)
-
セットアップ手順を簡単にするためダウンロードしたzipファイル(wsl2_setup_fortran-main)をデスクトップに配置してください
(powershellやwsl2に慣れている人は以降のコマンドのパスをzipファイルを展開したあとのフォルダのパスに置き換えて実行してもらってもよいです)
-
まずはあなたがログイン中のWindowsユーザがWindowsの管理者であることを確認します(管理者でないと以降の作業がうまくいきません)
- windowsの設定 → アカウント → ユーザの情報 で表示されるユーザのアイコンの下に管理者(又はAdministrator)という文字列があることを確認できればOKです
- windowsの設定がどこにあるかわからない場合はこちらを参照してください
- 管理者でない場合、このスクリプト群は使えないので管理者になる方法を参照してください
-
以下のコマンドを実行(WSL2の機能の有効化とWindowsのインストール系スクリプト以外の処理をします)
cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts powershell -ExecutionPolicy ByPass -File "initialize_windows_settings.ps1"
!!! cd : パス 'C:\Users\(任意の文字列)' が存在しないため検出できません。と出てきて進めない場合ここをクリック !!!
[理由]
あなたが展開したスクリプトの場所が
$home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts ではないことによって起こっている問題です
(以降 cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts をするような指示がいくつかありますが、これらをすべて以下の正しいスクリプトの場所にcdするようにしてください)
[解決法]
よくあるスクリプトの場所は
$home/Desktop/wsl2_setup_fortran-main/scripts なのでcd $home/Desktop/wsl2_setup_fortran-main/scripts
としてエラーが出なければ
powershell -ExecutionPolicy ByPass -File "initialize_windows_settings.ps1"
を続けて実行してください cd $home/Desktop/wsl2_setup_fortran-main/scripts でもエラーが発生する場合は
前の手順で展開したzipファイル(zipファイル自体ではなく展開したほうのフォルダです)のパスをこのリンクを参考にコピーしてcd コピーしたパスを張り付ける(ctrl+vで張り付け可能です) powershell -ExecutionPolicy ByPass -File "initialize_windows_settings.ps1"
を実行してください。以上で問題は解決するはずです (※以降 cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts をするような指示がいくつかありますが、これらをすべて以上の手順のうちエラーが出なかった正しいスクリプトの場所にcdすることを忘れないようにしてください)
Windowsを一度再起動してから再度powershellを管理者権限で開いて以下を実行(各種ソフトウェアのインストールをします)
cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts powershell -ExecutionPolicy ByPass -File "windowssetup.ps1"
<注記>
ソフトウェアのインストールにはwingetを使っていますが
wingetコマンド実行中は文字コードがConsolasに変更されて文字化けします
動作には問題ないため文字化けに関しては無視してください(スクリプトの実行が終了すると文字化けが解消されます)Ubuntuが起動してこなかったらここをクリック!
<UbuntuがうまくインストールできずにUbuntuが起動してこない場合>
まずはWindowsキーを押して、Ubuntuで検索してアプリがヒットしないことを確認してください
アプリがヒットしない場合は、管理者権限でpowershellを立ち上げて
wsl --install
wsl --set-default-version 2
wsl --install -d Ubuntu
wsl --set-default Ubuntu
を1行ずつ実行してどんなエラーが出るかを確認してください
エラーを確認したらMicrosoft公式のWSLインストールに関するトラブルシューティングのリンクを参照して
該当の項目を探して対応してください
よくあるインストールできない理由は、BIOSで仮想化が無効化されているパターンです
BIOS設定の変更方法はCPUやメーカーによって違うのでIntelで検索またはAMDで検索して調べるか、PC本体のマニュアルを参照してください
-
1.のセットアップの途中でUbuntuが立ち上がっているはずなのでUbuntu用のユーザ名とパスワードを作成(以下のリンクのUbuntu用ユーザアカウントの設定の部分だけ実行してください)
ユーザ名とパスワードの設定方法のリンクユーザを正しく作成できたら以下のような画面になっているはずです
ユーザ作成がうまくいかなかったらここをクリック!
<ユーザ作成がうまくいかなかった場合>
途中でUbuntuが強制終了するなどしてユーザが正常に作成出来なかった場合は
Windowsキーを押して、Ubuntuで検索してUbuntuを立ち上げると以下のようなrootという文字列が表示されるはずです
-
rootという文字列が表示されてこない場合
この場合は、念のため一度セットアップをやり直しましょう
powershellを管理者権限で開いて以下のコマンドを実行しますcd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts powershell -ExecutionPolicy ByPass -File "reset.ps1"
実行が終わったらWindowsを再起動した後、セットアップ手順からやり直してください reset.ps1も正常に動かない場合は
Ubuntuのリセット方法を参考にしてUbuntuをリセットし、Windowsを再起動した後、セットアップ手順からやり直してください
-
rootという文字列が表示された場合
Ubuntuで
adduser 作りたいユーザ名
を実行するとユーザを作成できます
このとき2回のパスワード入力後にもいくつかの質問項目が表示され、答えるように促されますが無視して何も入力せずEnterキー連打で構いません
正しく実行できると以下のような表示になります
次に以下のコマンドを実行しますgpasswd -a 作ったユーザ名 sudo
正しく実行できたら以下のような表示になります
次にpowershellを開いて以下のコマンドを実行しますubuntu config --default-user 作ったユーザ名
Ubuntuを閉じて再度起動し以下の画像のように作ったユーザ名が表示されれば設定は完了です
正しく実行できたら次の項目に進んでください
-
-
WSL2用のスクリプトをwindowsからUbuntuにコピー
powershellを新しく管理者権限で開き、以下のコマンドを実行します
cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts powershell -ExecutionPolicy Bypass -File "copy.ps1"
-
UbuntuでWSL2用のスクリプトを実行
$HOME/writeubuntusettings.sh && $HOME/ubuntusoftwareinstall.sh
スクリプトの実行時にパスワードを聞かれるので先ほどUbuntu用に設定したパスワードを入力してください
途中でUbuntuが強制終了したり、正常にスクリプトが終わらなかったらここをクリック!
<途中でUbuntuが強制終了した場合>
スクリプト実行中にパッケージのエラー等によりUbuntuが強制終了する場合があります
その場合は一旦Ubuntuをシャットダウンしてから$HOME/ubuntusoftwareinstall.shを実行しなおしてください(実行コマンド)
Powershellを起動してWSLをシャットダウン
wsl --shutdown
$HOME/ubuntusoftwareinstall.shを実行しなおす
$HOME/ubuntusoftwareinstall.sh
実行しなおしてもスクリプトの最終出力である
WSL2 ubuntu setting write script ended. Please restrat WSL2.
が表示されない場合は、画面に解決方法が書いてあるはずなので
そのコマンドを実行してから再度$HOME/ubuntusoftwareinstall.shを実行しなおしてください -
WSLを再起動
Powershellを起動してWSLをシャットダウン
wsl --shutdown
-
UbuntuでVScode用のスクリプトを実行
$HOME/vscodeubuntusetup.sh
-
VScodeが起動してくるのでMaterial Icon Themeを有効化
Material Icon ThemeのOne-click activationを参考にして有効化してください(見つからないときはVSCodeの右下のベル🔔のマークをクリックすると有効化またはactivateというボタンが出てきます)
ここまでで自動実行に時間がかかるスクリプトは終了なので、initialize_windows_settings.ps1内で変更していた電源プラン(スリープしないようにする設定)をデフォルトに戻します
powershellを管理者権限で開いて以下のコマンドを実行します
cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts
powershell -ExecutionPolicy ByPass -File "restore_power_settings.ps1"
正常にスクリプトが終了しない場合は電源プランの設定方法のリンクを参照して電源プランを"do_not_turn_off"以外にしてください(オススメは"バランス"です)
計算機へのログインのためのユーザを作成済みの場合、以下の設定を行ってください
- sshの設定はUbuntuとWindowsの2つ行います
- ただしVSCodeのremote-sshの機能を使ってリモートでしか作業しないなら、Windowsのsshの設定のみで構わないです
- 秘密鍵はOpenssh形式のものを用いてください
- windowsのssh設定は $home/.ssh/config というファイルで行います
- WSLを開発に使わないならsshの設定はWindowsだけで十分です
<$HOME/.ssh/configのテンプレート>
ServerAliveInterval 60
ServerAliveCountMax 10
Host ims
HostName ccfep.center.ims.ac.jp
User {USER_NAME}
IdentityFile {IdentityFilePath}
ForwardX11 yes
ForwardX11Trusted yes
-
権限の変更(公開鍵認証の場合)
Ubuntuで以下のコマンドを実行 (例) C:\Users\noda\.ssh\ims_rsa という秘密鍵ファイルを持っている場合、Ubuntuで以下のコマンドを実行chmod 600 /mnt/c/Users/noda/.ssh/ims_rsa
-
$HOME/.ssh/configの編集
Ubuntuで以下のコマンドを実行nano $HOME/.ssh/config
-
ssh設定のテンプレートファイルが開かれるので編集してください
<$HOME/.ssh/configのテンプレート>
ServerAliveInterval 60 ServerAliveCountMax 10 Host ims HostName ccfep.center.ims.ac.jp User {USER_NAME} IdentityFile {IdentityFilePath} ForwardX11 yes ForwardX11Trusted yes
ここまでの設定を行うとUbuntuで
ssh ims
などと打ち込むだけでsshサーバにログイン可能になります
scpコマンドなどもimsなどのHost名で指定できるのでコマンドの簡略化につながります
!!!!!!!!!!! 注意 !!!!!!!!!!!
この手順を行うと自動マウントの設定が行われるため
Ubuntuの起動とsource $HOME/.profileの実行完了に時間がかかるようになります
従って分子研でプログラム開発を行っていて、かつVScodeを使って編集したい場合のみ以下の手順を実行してください
ここをクリックしてコマンドを表示
以下のコマンドをUbuntuで実行してください
$HOME/imsautomount.sh
実行時、分子研のユーザ名の入力を求めるように作ってあります
聞かれたら分子研のユーザ名を入力してください
source $HOME/.profile を実行するか、Ubuntuの再起動後に設定が適用されます
(免責事項 : ユーザデータの取得が目的ではなく、ディレクトリの作成と自動マウントコマンドの作成にユーザ名を使用しています。ユーザデータをサーバ等に送信はしていません。スクリプトの内容は cat $HOME/imsautomount.sh ですべて確認できます。)
後から自動マウントをしないように変更したい場合、まずUbuntuでimsumountを実行した後(Ubuntuのパスワードの入力が求められる場合があります) $HOME/.profileの以下の内容を削除してください
alias mount='sshfs -o uid=`id -u` -o gid=`id -g` -o allow_other -o nonempty ims:/home/users/分子研でのユーザ名 $HOME/分子研でのユーザ名' if [ "$(ls $HOME/分子研でのユーザ名)" ]; then echo "$HOME/分子研でのユーザ名 is not empty." else mount fi alias imsumount='sudo umount -f $HOME/分子研でのユーザ名'
source $HOME/.profile を実行するか、Ubuntuの再起動後に設定が適用されます
-
以下のリンクにアクセスしてCisco anyconnectをダウンロード
https://www2.media.hiroshima-u.ac.jp/sso/vpngw/anyconnect-win-4.10.05085-core-vpn-predeploy-k9.msi -
ダウンロードしたファイルをダブルクリック、ダウンロード
詳しい使い方は https://www.media.hiroshima-u.ac.jp/services/hinet/vpngw/#setting を参照してください
以下のことを自動実行しています
- Windows(powershellを管理者で実行できない場合は電源設定以外のこれらの設定を手動で行ってください)
- initialize_windows_settings.ps1
- スクリプト実行中にWindowsが勝手にスリープ状態にならないようにする
- Cisco any connectの設定(Ubuntu使用時)
- WSL機能の有効化
- WSL用のXserverの設定
- windowssetup.ps1
- 必要なソフトウェアVScode, 7zip, WinSCP, Git for windows, Windows Terminal, Teraterm, VcXsrvのインストール
- WSLおよびUbuntuのインストール
- initialize_windows_settings.ps1
- WSL2
- writeubuntusettings.sh
- DNSの不備が生じる可能性を排除するため使用するDNSサーバを8.8.8.8に固定化
- /etc/wsl.confに[automount]のオプションを加えることでUbuntuからWindowsのファイルの権限を変更可能にする
- (分子研環境用)分子研のファイルをVScodeを使って編集するために/etc/fuse.confにuser_allow_otherを追加
- Xサーバを用いてGUIアプリを開くときのDISPLAYの設定がWSL起動時に毎回変わるのでDISPLAYの設定自体を自動化
- $HOME/.ssh/configにsshの設定のテンプレートを作成
- localeの設定(en_US-UTF8に設定しています)
- ubuntusoftwareinstall.sh
- OSのアップデート
- gcc,gfortran関連で必要なライブラリをインストール
- (分子研環境用)sshfsをインストール
- python,pipをインストール
- pythonのデフォルトバージョンを3系に設定
- gfortranをインストール
- pythonのライブラリのインストール
- vscodeubuntusetup.sh
- Fortran開発のためのVScodeの設定ファイルの作成
- VScode拡張機能のインストール
- imsautomount.sh(分子研環境用)
- Ubuntuログイン時に$HOME/分子研でのユーザ名に分子研の/home/users/分子研でのユーザ名をマウントする設定
- writeubuntusettings.sh
- Windowsを使いつつ、簡単に(ほぼ)Linuxの環境も実行可能だからです
- img (README用画像フォルダ)
- scripts (スクリプト&設定ファイル保存フォルダ)
- config.xlaunch (Xサーバ設定用ファイル)
- copy.ps1 (WindowsからUbuntuにファイルコピーをするスクリプト)
- copyfile.bat (ダブルクリックでcopy.ps1を実行するためのファイル)
- do_not_power_off.pow (スクリプト実行中に勝手にスリープ状態にならないようにするための設定ファイル)
- enable_wsl2_feature.ps1 (WSL2の機能を有効化するスクリプト)
- imsautomount.sh (分子研で開発する人のためのスクリプト)
- initialize_windows_settings.ps1 (WSL2の機能の有効化とWindowsのインストール系スクリプト以外の処理)
- restore_power_settings.ps1 (セットアップが終わったあとにもとの電源プランに戻すスクリプト)
- setup.bat (Windowsの管理者権限を持っていない人用(いくつかのソフトウェア、タスクの設定は拒否されるため自動化できません))
- ubuntusoftwareinstall.sh (Ubuntuのソフトウェア一括インストールスクリプト)
- Update Anyconnect Adapter interface Metric for WSL2.xml (Ubuntuとwindowsをvpnを使用中でもネットワーク的に繋がるようにする設定のファイル)
- UpdateAnyConnectinterfaceMetric.ps1 (Ubuntuとwindowsをvpnを使用中でもネットワーク的に繋がるようにするスクリプト)
- vscodeubuntusetup.sh (Fortran開発のためのRemote WSL VScodeの設定)
- windowssetup.ps1 (Windowsに開発に必須/便利なソフトウェアのインストールを行うスクリプト)
- writeubuntusettings.sh (Ubuntuの設定ファイルの書き換えスクリプト)
- README (このファイル)