はじめに
ここ10年ほど仕事でもプライベートでもMacしか使っていなかったのですが、WSLが出てからずっとWindowsでもいけるんじゃないかと気になってました。
WSLも2になりいろいろ枯れてきてそうだったので、Windows機を用意してもらい乗り換え検証をしています。
試行錯誤しながらやっていたので履歴やメモなど残っていないものもあり、WSLも最新にできていないので、まだ道半ばですが、ここまでのまとめを備忘録として残します。
簡単なまとめ
- まずは winget を入れてから色々入れる
- WindowsとWSLはかなりシームレスに連携できる
- bashと打つとカレントディレクトリそのままでLinuxに入れてちょっと便利
- Linux側でWindowsの実行ファイルを起動しても普通に動く
- Windows Hello 顔認証最高
目次
まずやったこと
Slackで「Windowsでやるべき初期設定」を聞いたら、winget
, Windows Terminal
, Power Toys
のインストールと教えてもらったのでインストール
winget
Microsoft Storeからインストール
詳細はwinget ツールを使用したアプリケーションのインストールと管理を参照
Windows Terminal
wingetをインストールしたら、コマンドプロンプトを開いて以下を実行
C:\Users\isono>winget install "9N0DX20HK701"
ちなみにWindows Terminalと指定してもインストールできない
C:\Users\isono>winget install "Windows Terminal"
複数のパッケージが入力条件に一致しました。入力内容を修正してください。
名前 ID ソース
--------------------------------------------------
Windows Terminal 9N0DX20HK701 msstore
Windows Terminal Microsoft.WindowsTerminal winget
インストール後起動して、設定からデフォルトのターミナルアプリケーションをWindows Terminalに変更した
Power Toys
こちらは名前でインストール可能
C:\Users\isono>winget install "Power Toys"
今のところ、Keyboard Managerを利用して、Caps Lock
を Ctrl (Left)
に変換するためだけに利用している。
便利な使い方あったらコメントで教えてください。
最低限ほしいと思いwinget経由でインストールしたもの
多くはLinux側にもインストールするがWindows側にあるとその場で使えて楽なのでインストールしている
- Git for Windows
winget install Git.Git
- GitHub CLI
winget install GitHub.cli
- Docker Desktop
winget install Docker.DockerDesktop
- JetBrains Toolbox
winget install JetBrains.Toolbox
- AWSCLI
winget install -e --id Amazon.AWSCLI
- GoLang
winget install -e --id GoLang.Go.1.19
gitに関するtips
EDITOR
gitをインストールすると内部用にvimがインストールされるらしい。
git commit
した時に何もしなくても慣れ親しんだエディタで表示されてとても助かった。
改行コード
一部のスクリプトがLinux側で動かないためいろいろ悩んだ結果改行コードの問題だとわかった
事前に以下を設定しておくことを推奨
git config --global core.autocrlf input
winget経由でインストールできなかったもの
- ghq
仕方ないので scoopもインストールして、scoop経由で入れた。
wingetをやめてこちらに統一すべきなのか補助的に使っていいのか悩み中。
PS C:\Users\isono> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
PS C:\Users\isono> iwr -useb get.scoop.sh | iex
PS C:\Users\isono> scoop install ghq
MacとWindowsで日本語入力モードに入るキーを統一
US配列を利用しているが、Macでは ⌘+Space
Windows では Alt + `
と違う操作で入力モードを切り替えることになる
プライベートの端末はMacなこともあり2つの端末を行ったり来たりした際に入力モード切替でもたつくのでキーバインドを変更した
軽く調べた感じ、Windows側での入力モード切替をMac側に寄せる方法を見つけることができなかったため、
とりあえず、Mac側の設定を Option(Alt) + `
に変更して試している
WSL関連の設定
WSLのインストール
後述のWSLのバージョンが古い問題があり以前のバージョンの WSL の手動インストール手順の手順で対応した。
ただし、ほとんどの方はWSL を使用して Windows に Linux をインストールするを参照して簡単に対応できると思われる。
また、これ以降Windows Terminal内で bash
と打つとLinux側に入れるようになる。最初何事が起きたのかわからなくてびっくりした。(環境変数などwslコマンドで起動したときと違う気がするので不安であまり活用はできていない)
homebrewのインストール
基本的にアプリケーションはaptを利用してインストールするが、Macを使っていたこともあり足りないものはhomebrewで入れたいと思いインストール
WSLは基本的にrootで起動してしまうため、まずはユーザーを作りsudoできるようにしたうえで、公式サイトにあるコマンドを利用してインストールした
なお、WSL側のデフォルトユーザーの変更は以下のコマンドで可能
PS C:\Users\isono> ubuntu config --default-user xxxx
また、sudoできなくなるなど、何らかの理由でwsl側のrootで入らないといけない場合には以下のようにすれば入れる
PS C:\Users\isono> wsl -u root
WSL側からIntelliJを起動する
基本的にはLinux側を使いたいがまだLinux版のIntelliJを使えるようにできていないため、以下のように強引にWindows側のバイナリを呼び出して起動している。
ソースコードは /mnt/c/
のほうにあるためかシームレスにIDEが起動される。
強引すぎる感はあるので、WSLgが使えるようになったらLinux版を利用することを検討中。
設定内容抜粋
cat ~/.zshrc
function idea() {
EXE=$(find /mnt/c/Users/isono/AppData/Local/JetBrains/Toolbox/apps/IDEA-U/ch-0/ -name "idea*exe" | sort -r | head -1)
eval "$EXE . &" >/dev/null 2>&1
}
起動方法
cd /mnt/c/path/to/project
idea
WSL2での課題
WSL上でドメイン名が解決できない
まだよくわかっていないが、WSL側から名前解決ができなくて困ったため、以下のような設定をすることで回避中。
(この設定では社内ネットワークとの接続では問題がでるのでまだ調整中)
一部抜粋
% cat /etc/wsl.conf
[network]
generateResolvConf = false
一部抜粋
% cat /etc/resolv.conf
nameserver 1.1.1.1
WSL2でsystemdが利用できない
systemd利用の詳細はSystemd support is now available in WSL!を参照
systemdを利用したい要件があるが、業務用端末なのでもちろんWSUS配下にて管理されていて、ポリシー上アップデート出来なくて現在管理部門に確認中
特定のパッチが当たったWindows10もしくはWindows11にてWSLをMicrosft Storeから最新版をインストールすれば使えるはずだが、アップデートできていない
以下のような状況
PS C:\Users\isono> wsl --update
更新をチェック中...
エラー: 0x8024500c
PS C:\Users\isono> winget install "Windows Subsystem for Linux"
見つかりました Windows Subsystem for Linux [9P9TQF7MRM4R] バージョン Unknown
このパッケージは Microsoft Store から提供されています。winget は、現在のユーザーに代わって Microsoft Store からパッケージを取得す
る必要がある場合があります。
...中略...
パッケージ取得の確認/要求...
パッケージ取得の成功の確認/要求
パッケージのインストールを開始しています...
Microsoft Store パッケージのインストールまたは更新に失敗しました。エラー コード: 0x8024500c
WSLgも利用できない
今でもX serverを入れればできるが、公式にWLS側のGUIアプリをWindows側で操作できるようになる(はず)
上の件と同様、アップデートが必要なのでアップデート出来たら検証する予定
WSLg
端末へのログイン方法
Windows Hello 顔認証が便利すぎる
最近のスマートフォンでは当たり前になっている顔認証がWindowsでもできるようになっている
(もちろんハードウェアの対応とポリシーの許可が必要)
画面を開いた直後に自動的に識別してログインまでしてくれるため、ほぼシームレスに作業に入ることができるのは体験としては控えめに言って最高。
自宅ではクラムシェルモードで使っていたため恩恵を得られていなかったが、先日ELECOMのUCAM-CF20FBBKを購入したことにより、クラムシェルでも顔認証が使えるようになり正直なところMacのログインが最近めんどくさい。
Macもそのうち対応する気もするが、外付けのデバイスは出ないと気がするので、こういった拡張性に関してはWindowsでないとできない部分だなと感じた。
Windows Hello 指紋認証
Macにもあるので特に差はない
設定はしているが顔認証使ってるので出番なし
PINコードでの認証
2022/12/12 17:30追記
コメントにてMicrosoftの見解を教えていただきました。
ポリシー依存な部分もありそうですが、ローカルでの管理を含めパスワードよりも安全なようで安心しました。
セキュリティ上どうなんだろう?
最低限だと4桁数値でいけるので、楽な反面怖い感じを受けている
この件について詳しい方いたらぜひコメントで教えてください。
最後に
というわけで、MacユーザーがWindowsに乗り換えるための第一歩としてやったことをまとめてみました。
自分がWindowsを受け取った直後は何をしたらいいのかわからない状況だったので、一例として切り替える方の参考になれば幸いです。
また、WSLのアップデートができるようになったら最新のWSLでいろいろ試して共有したいと考えています。