Skip to content

This repo is a Windows and WSL2 setup repository for users who use Visual Studio Code and Fortran

License

Notifications You must be signed in to change notification settings

kohei-noda-qcrg/wsl2_setup_fortran

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Windows(& WSL2 Ubuntu)セットアップ説明書

  1. はじめに
  2. 注意
  3. セットアップ手順
  4. このスクリプト群はなにをしているのか?
  5. なぜWSL2を用いるのか?
  6. ファイル一覧

1. はじめに

このリポジトリはリモートサーバで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などのコマンドの手順を簡略化できるようになる

2. 注意

  • 各コマンドは選択してctrl+cでコピー、右クリックで貼り付けすることができます(Powershellはctrl+vで貼り付けできますが、Ubuntuはデフォルトではctrl+vで貼り付けができないので、右クリックで貼り付けを行ってください)

  • 必要なファイルはスクリプトの最初に自動的に確認され、ファイルが足りない場合はスクリプトは途中で終了し実行されないように作っています

    (カスタムを行いたい方へ)
    必要のないスクリプトがあるなどカスタムをしたい場合は./windowssetup.ps1の# Check whether scripts are existのブロックのコードを無効化、もしくは必要ないスクリプトのみファイル存在チェックを外すなどして対応してください

  • インターネットとの通信がかなりあるので高速で安定なネットワーク(できれば有線)環境下で実行してください

  • ノートパソコンの場合充電の残量にも注意してください(基本的には充電しながらのセットアップを推奨します)

3. セットアップ手順

3.1. リポジトリのダウンロードと配置

  • このリポジトリにアクセスしてCodeからZipファイルをダウンロードします(ブラウザの幅が小さいとCodeボタンが表示されないことがあるので、その場合はブラウザを全画面表示にしてください)

desktop

  • セットアップ手順を簡単にするためダウンロードしたzipファイル(wsl2_setup_fortran-main)をデスクトップに配置してください
    (powershellやwsl2に慣れている人は以降のコマンドのパスをzipファイルを展開したあとのフォルダのパスに置き換えて実行してもらってもよいです)

    以下の画像のようにwsl2_setup_fortran-mainフォルダがデスクトップにあればOKです
    desktop

  • デスクトップに配置したzipファイルの上で右クリックし、すべて展開(T)...を選択します desktop

  • 以下のようなウィンドウが表示されるので展開(E)を選択します desktop

  • 以下の画像のようにデスクトップにwsl2_setup_fortran-mainフォルダが表示されればOKです desktop

3.1. Windows上の開発ツール等のインストール

  • まずはあなたがログイン中のWindowsユーザがWindowsの管理者であることを確認します(管理者でないと以降の作業がうまくいきません)

  • powershellを管理者で実行します
    open_powershell_as_administrator

  • 以下のコマンドを実行(WSL2の機能の有効化とWindowsのインストール系スクリプト以外の処理をします)

      cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts
      powershell -ExecutionPolicy ByPass -File "initialize_windows_settings.ps1"
    enable_wsl2_feature
    !!! 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"
    run_windowssetup

    <注記>
    ソフトウェアのインストールにはwingetを使っていますが
    wingetコマンド実行中は文字コードがConsolasに変更されて文字化けします
    動作には問題ないため文字化けに関しては無視してください(スクリプトの実行が終了すると文字化けが解消されます)

    ↓文字化けの様子
    mojibake

    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本体のマニュアルを参照してください

3.2. WSL2上のUbuntuのセットアップ

  • 1.のセットアップの途中でUbuntuが立ち上がっているはずなのでUbuntu用のユーザ名とパスワードを作成(以下のリンクのUbuntu用ユーザアカウントの設定の部分だけ実行してください)
    ユーザ名とパスワードの設定方法のリンク

    ユーザを正しく作成できたら以下のような画面になっているはずです
    create_ubuntu_user

    ユーザ作成がうまくいかなかったらここをクリック!

    <ユーザ作成がうまくいかなかった場合>
    途中でUbuntuが強制終了するなどしてユーザが正常に作成出来なかった場合は
    Windowsキーを押して、Ubuntuで検索してUbuntuを立ち上げると以下のようなrootという文字列が表示されるはずです
    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キー連打で構いません
      正しく実行できると以下のような表示になります
      adduser
      次に以下のコマンドを実行します

        gpasswd -a 作ったユーザ名 sudo

      正しく実行できたら以下のような表示になります
      gpasswd_add_sudo
      次にpowershellを開いて以下のコマンドを実行します

        ubuntu config --default-user 作ったユーザ名
      change_default_user

      Ubuntuを閉じて再度起動し以下の画像のように作ったユーザ名が表示されれば設定は完了です
      complete_to_create_user
      正しく実行できたら次の項目に進んでください

  • WSL2用のスクリプトをwindowsからUbuntuにコピー

    powershellを新しく管理者権限で開き、以下のコマンドを実行します

      cd $home/Desktop/wsl2_setup_fortran-main/wsl2_setup_fortran-main/scripts
      powershell -ExecutionPolicy Bypass -File "copy.ps1"

    正しく実行出来た場合、Ubuntuでlsと入力し、Enterを押すと以下の画像のように4つのファイルがあるはずです
    ls

  • UbuntuでWSL2用のスクリプトを実行

      $HOME/writeubuntusettings.sh && $HOME/ubuntusoftwareinstall.sh
    run_ubuntusetup

    スクリプトの実行時にパスワードを聞かれるので先ほどUbuntu用に設定したパスワードを入力してください

    途中でUbuntuが強制終了したり、正常にスクリプトが終わらなかったらここをクリック!

    <途中でUbuntuが強制終了した場合>
    スクリプト実行中にパッケージのエラー等によりUbuntuが強制終了する場合があります
    その場合は一旦Ubuntuをシャットダウンしてから$HOME/ubuntusoftwareinstall.shを実行しなおしてください

    (実行コマンド)

    Powershellを起動してWSLをシャットダウン

      wsl --shutdown
    shutdown_wsl2

    windows keyからUbuntuを検索して起動
    launch_ubuntu

    $HOME/ubuntusoftwareinstall.shを実行しなおす

      $HOME/ubuntusoftwareinstall.sh

    実行しなおしてもスクリプトの最終出力である
    WSL2 ubuntu setting write script ended. Please restrat WSL2.
    が表示されない場合は、画面に解決方法が書いてあるはずなので
    そのコマンドを実行してから再度$HOME/ubuntusoftwareinstall.shを実行しなおしてください

    ↓正常にセットアップが終了した際の表示
    end_ubuntusetup_properly

  • WSLを再起動

    Powershellを起動してWSLをシャットダウン

      wsl --shutdown
    shutdown_wsl2

    windows keyからUbuntuを検索して起動
    launch_ubuntu

  • UbuntuでVScode用のスクリプトを実行

      $HOME/vscodeubuntusetup.sh
    vscode_ubuntusetup
  • VScodeが起動してくるのでMaterial Icon Themeを有効化
    Material Icon ThemeのOne-click activationを参考にして有効化してください(見つからないときはVSCodeの右下のベル🔔のマークをクリックすると有効化またはactivateというボタンが出てきます)
    activate_material_icon

3.3. 電源プランをデフォルトに戻す

ここまでで自動実行に時間がかかるスクリプトは終了なので、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"

restore_power_settings

正常にスクリプトが終了しない場合は電源プランの設定方法のリンクを参照して電源プランを"do_not_turn_off"以外にしてください(オススメは"バランス"です)

3.4. SSHの設定

計算機へのログインのためのユーザを作成済みの場合、以下の設定を行ってください

  • sshの設定はUbuntuとWindowsの2つ行います
  • ただしVSCodeのremote-sshの機能を使ってリモートでしか作業しないなら、Windowsのsshの設定のみで構わないです
  • 秘密鍵はOpenssh形式のものを用いてください

Windowsのssh設定

  • 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

Linuxのssh設定

  • 権限の変更(公開鍵認証の場合)
    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

    こんな感じの画面が表示されるはずです
    矢印キーで移動,ctrl+sで上書き保存,ctrl+xでnanoを閉じられます
    nano_sshconfig

  • 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名で指定できるのでコマンドの簡略化につながります

3.5. 分子研のファイルをVScodeで編集可能にする

!!!!!!!!!!! 注意 !!!!!!!!!!!
この手順を行うと自動マウントの設定が行われるため
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の再起動後に設定が適用されます

3.6. Cisco anyconnectのインストール(HINET外部のネットワークから HINET内部のコンピュータ接続時に必要)

4. このスクリプト群はなにをしているのか?

以下のことを自動実行しています

  • Windows(powershellを管理者で実行できない場合は電源設定以外のこれらの設定を手動で行ってください)
  • WSL2
    • writeubuntusettings.sh
    • ubuntusoftwareinstall.sh
      • OSのアップデート
      • gcc,gfortran関連で必要なライブラリをインストール
      • (分子研環境用)sshfsをインストール
      • python,pipをインストール
      • pythonのデフォルトバージョンを3系に設定
      • gfortranをインストール
      • pythonのライブラリのインストール
    • vscodeubuntusetup.sh
      • Fortran開発のためのVScodeの設定ファイルの作成
      • VScode拡張機能のインストール
    • imsautomount.sh(分子研環境用)
      • Ubuntuログイン時に$HOME/分子研でのユーザ名に分子研の/home/users/分子研でのユーザ名をマウントする設定

5. なぜWSL2を用いるのか?

6. ファイル一覧

  • 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 (このファイル)

About

This repo is a Windows and WSL2 setup repository for users who use Visual Studio Code and Fortran

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published