Windows Subsystem for Linux! WSL2でいこう!

WSL2の構築手順です。

 

Windows 10 用 Windows Subsystem for Linux のインストール ガイド
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

 

■前提条件

Windowsのバージョンが2004以上である事。winverコマンドで確認できます。

 

 

1.スタートメニュー右クリックで、WindowsPowerShell(管理者)を起動

以降のコマンドはPowerShellにて実行します。

 

2.WSLインストール(ここは、バージョンが2004未満でも実行できます)

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

 

3.仮想マシンプラットフォームの有効化

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

4.Linuxカーネル更新プログラムの適用

WSL 2 Linux カーネルの更新
https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel

 x64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロード

のリンクから wsl_update_x64.msi をダウンロードして実行します。

 

5.WSLのデフォルトバージョンを2に設定

wsl –set-default-version 2

※4の手順が漏れてると、下記の警告的なメッセージが表示されます

 

6.MicrosoftStoreからLinuxディストリビューションを選んでインストール

MicrosoftStore

https://aka.ms/wslstore

下記メッセージが表示される(Chromeの場合)ので”MicrosoftStoreを開く”をクリック

私はUbuntuを選択しました。

 

 

“入手”をクリック

 

ダウンロードが始まります

 

“起動”をクリックすると

 

インストールが始まります。あと少し!

 

最初にUNIXユーザアカウントの作成を求められます。

 

7.使ってみる

デフォルトパスはユーザホーム(/home/username)でした。

/の下は見慣れたいつものディレクトリ群です。

 

Windowsのファイルシステムは/mntの下でした。

/mnt/wsl は空っぽでした。

 

 

問題になりがちな「空白入りファイル名」については、シングルクォートで括られてました。

cdのパス指定でも’Program Files’とすればいいみたいです。

 

exit でWSLのウインドウが閉じられます

 

8.起動方法

スタートメニューに登録されています。

UbuntuがUの所にあるので、ディストリの名前でソートされるようです。

 

DOS窓から Ubuntu とすると、アプリケーションウインドウは開かずにDOS窓内でWSLが起動しました。

 

 

 

以上です。

この連休はWSLで何が出来るのか、色々試してみようと思います。

 

追記

su – rootするとパスワードを求められますが、設定した覚えがありません。

そんな時は

1.管理者でコマンドプロンプト起動

2.Ubuntuの起動デフォルトユーザをrootに設定

ubuntu config --default-user root

3.パスワードなしでログインされるので、passwd実行

4.exitして、デフォルトユーザを戻す

5.再度ログインして、パスワード確認

 

リモートデスクトップが繋がらない。原因はCredSSP暗号化オラクルの修復!

久しぶりにあるサーバ(Windosw2016)にRDP接続しようとすると、こんなメッセージが。

 

■お急ぎの方向け

①接続先サーバで対策する場合

・[コントロールパネル]>[システム]>[リモートの設定]

・ネットワークレベル認証のみ許可(推奨)のチェックを外す

 

②接続元クライアントで対策する場合

管理者コマンドプロンプトから下記コマンド実行(一行のコマンドラインです)

REG ADD HKLM¥Software¥Microsoft¥Windows¥CurrentVersion¥Policies¥System¥CredSSP¥Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2

 

 

■原因調査

とりあえず示された詳細URLを参照してみると。

CVE-2018-0886 の CredSSP の更新プログラム

 

どうやらクライアントだけパッチが当たった(サーバは普段パッチ更新なし)ので、

通信可能な組み合わせから外れてしまったみたいです。

 

過去にはこんな情報も出てた様子。

2018 年 5 月の更新プログラム適用によるリモート デスクトップ接続への影響

 

今回はまさにこのパターンでしょうか。

 

こちらのMSサイトにはいくつか回避策が記載されていました。

取りうる手段は3つ。

A:リモートデスクトップ接続元にてグループポリシーを変更する

①gpedit.mscから「暗号化オラクルの修復」をダブルクリック

②有効、保護レベル:脆弱 に設定

 

B:リモートデスクトップ接続元にて以下レジストリを追加

前述↑の「お急ぎの方向け②」を参照下さい。

C:リモートデスクトップ接続先 で NLA (Network Level Authentication) を強制しないようにする

前述↑の「お急ぎの方向け①」を参照下さい。

 

 

ちなみに、サーバにパッチを適用する事で通信可能な組み合わせを復旧する事も出来ます。

下記サイトで対象OS(バージョン)ごとの対象KB名が公開されてます。

CVE-2018-0886 | CredSSP のリモートでコードが実行される脆弱性

 

WindowsBackupの罠(backuptargetにローカルフォルダは指定できない)

今回、サーバのバックアップを取る事になったんですが、

別サーバで手順確認をサラっと、と思っていたら丸一日かかってしまったので、

記録しておこうとおもいます。

 

1.バックアップをどこに取るか?

Windowsバックアップは、バックアップの取得先を3つから選べます。

A.ローカルドライブ B.ボリュームGUID C.ネットワークパス

本番作業に先駆けての作業でしたので、Cで対応する予定でした。

 

が、時間的にシステム稼働中にテストする必要がある為、

ネットワーク負荷を考慮して、サーバとPCをクロスLANケーブルで直結し、

Cを実施する、という方針としました。

 

2.実際に接続

自分のPCに共有フォルダを作成し、Everyoneフルコントロール権限に設定。

クロスケーブルでサーバと接続し、Ping確認もOK。

 

しかし、エクスプローラが開かない。

 

 

3.調査開始

ここで凡ミスをしたせいで非常に時間がかかったというか、

タイトルにも書いた罠にかかってしまう事になったのですが。

 

PC、サーバ共にドメイン配下の機器であったせいか、

権限を処理するサーバが見つからない、といったようなエラーが表示され、

エクスプローラではサーバ→PCの接続が出来ませんでした。

\\ホスト名、 \\IPアドレス、共有フォルダ名有り無しといろいろ試してみて、

毎回同じことで怒られます。

 

幸い、同サーバのDドライブがガッツリ空いてましたので、

そこにバックアップをしよう、という風に方針変更しました。

 

 

4.バックアップがコケる

バックアップ前にはサービス停止が必要だね、という事で、

net start で表示されたサービスを可能な限り止めました。

そしてバックアップはコマンドラインから実施。

 wbadmin start backup

コマンド入力しながら、オプションそれぞれ問題ないかなと再チェックをしていてふと。

 

-backupTarget   このバックアップの保存場所を指定します。ハード ディスクの
                ドライブ文字 (f:)、ボリュームの GUID ベース形式のパス
                (\\?\Volume{GUID})、またはリモート共有フォルダー
                への汎用名前付け規則 (UNC) 形式のパス
                (\\<サーバー名>\<共有名>\) が必要です。

 

 

ドライブ文字???

DドライブのdirAってフォルダにバックアップ取りたいのだけど・・・

ドライブ単位でしか指定できないという事だろうか?

勝手にD全部消されたら(データが一杯入ってるから)大変な事になる・・・

 

と思い至ったので、DドライブのdirAフォルダを共有して、

-backuptarget \\LOCALHOST\dirA と指定する事で

擬似的にローカルフォルダにバックアップしようと試みました。

 

ちなみにこの時付与したオプションはこれらです。

backuptarget, include, systemstate, allcritical, vssFull, quiet

 

 

5.エラー対処①

最初のエラーは「システムライターがバックアップに見つかりません」

原因の一つは、必須サービスが停止している、でした。

コチラを参考にさせて頂いて対処。

(私は「Cryptographic Services」を停止していました)

 

コマンドを再度実行すると、即落ちしてたコマンドが実行されはじめ・・・

よし、これでOKか!と喜び勇んだ次第です。ぬか喜びでしたが。

 

6.エラー対処②

次は「ファイルシステム制限のため、要求された操作を完了できませんでした。」

これの意味が分からず、色々試す事になりました。

コマンド実行から15分くらい、進捗30%あたりでエラーになるので、

トライアンドエラーにも随分時間がかかってしまいました。

ウイルススキャンソフトの停止、マシン再起動、他に必要なサービスは?など・・・

 

7.結果的には

2.をリトライして他のマシンの共有フォルダに書き込む事で、

スルっと成功してしまいました。

コマンドはbackuptargetの指定を変更しただけ。

どうやら、ローカルフォルダにはバックアップを取れないみたいですね。

systemstateを指定してる事も原因なのでしょうか。

 

 

2.の時点で実はnet useでPCとの接続を図っていたのですが、

/USERの指定値を /USER:\\PCのIPアドレス\ユーザ名 としていました。

最初の\\が要らないだけだった・・・!

ドメインユーザを指定していた事も一因かもですね。

サーバとPCを直結した事により、双方が認証DCと通信できない状況でしたので。

これを懸念して、ローカルマシンで認証させる為に、

テスト用のローカルユーザーを作成し、そのユーザで共有フォルダを作成しなおし。

 

 

 

今回のポイントは、

・WindowsBackupはローカルフォルダを指定できない(みたい)

・net useでのユーザ指定の記述を間違えていた(気付きにくい)

だったという反省ブログでした。

 

 

 

 

以下は、この話の前日譚になります。

 

先日、勤務先の場内法定電源検査がありまして。

全サーバをシャットダウン、再起動という作業をすることになりました。

 

VMware上のサーバを落とす前にデータストアが全部乗っかったストレージを落とす、

っていう胃が痛くなるようなオペミスをやらかされたりして、吐きそうな一日でした。

最悪DBとファイルサーバ(20TB)死ぬかなと思ってましたが、こっちは無事復活しました。

 

ところが、思いもよらぬサーバで障害が発生してしまい・・・

電源投入して動作確認してから、わずか30分後の話でした。。。

 

 

 

というのがタイトルにつながる話になります。

 

メーカーサポートに問い合わせて機器調査の上で、マザーボード交換対応となりました。

個人的に、念の為バックアップが必要かなと思ったので、

「このサーバって日次バックアップって何を取ってます?」

と質問すると、

「バックアップ?????? ・・・??????????」

みたいなリアクションが返ってきたのですね。

 

 

あ、してないのかなと思って、じゃあシステムバックアップは

Cドライブだけですか?CとDでフルバックアップ取ってますか?

と質問すると、

「バックアップ?????? ・・・??????????」

みたいなリアクションが返ってきたのです。

 
 
バックアップの要否についての議論はおいておきますが、
とにかくそういう事なら今回ちゃんとバックアップしましょう、と。
そういう流れになりました。
 
MSサイトと以前関わったプロジェクトの資料から
なんとか手順書を錬成し、使ってないサーバを洗い出し、
リストアテストで潰れてもOKとの言質を上司から引き出し、
なんとかテストにこぎつけました。
 
 
やっておいてよかったです。また一つナレッジが増えました。