ヤクとアヒル

日常の問題を解決したときにつけるログ

AvastをインストールしているとWindows10にBashが導入できない

Windows 10Bashを導入しようとしたらセキュリティソフトAvastと競合したので解決策(?)を書いておきます.

WindowsでもBashが使いたい!

Windows10 Anniversary Updateでは,開発者向けにBashUbuntu向けパッケージがWindowsで動くようなツール群が提供されました.早速導入しましょう.

導入手順

次の記事がキャプチャ付きで詳しく解説しているのでご参照ください.

Tech TIPS:Windows 10のLinux/Ubuntu互換環境でbashを使う - @IT

UbuntuがなぜWindowsで動く?

UbuntuがそのままVirtual Machine(VM)上で走っているのかな?と思いきや,Windows Subsystem for Linux という,Windowsカーネル上で動くLinuxシステムコールと互換性のあるレイヤが導入されていました.壮大過ぎる. これをつかって,LinuxシステムコールWindowsシステムコールに変換する仕組みのようです.しかも,VMよりオーバヘッドが少ないらしい.

詳しくは以下の解説ビデオを御覧ください.

Bash on Ubuntu on Windows | MSDN

日本語だと,上のビデオの一部を使って解説している記事もありました.

ASCII.jp:Buildで発表された「Bash on Ubuntu on Windows」とは? (1/2)

GitHubのissueも大盛況です

Issues · Microsoft/BashOnWindows

問題:Bashのインストールが止まる

bashを起動するためコマンドプロンプトbashと打ち込むと,初回にubuntuファイルシステムなどがWindowsのローカルフォルダに展開しようとする.その際にコマンドプロンプトには次のようなメッセージが表示される.

ファイルシステムを展開しています。この処理には数分かかります

しかし数分どころか10分待っても何も進みませんでした.

f:id:motoso:20160812011558p:plain

解決策:Avastをアンインストールする

結論から言うと,Bashを起動したいならAvastはアンインストールする必要がある(無効にするだけでは不十分).

Avastアンインストール後にコマンドプロンプトで以下のコマンドを叩けばOK.

lxrun /uninstall /full 
lxrun /install
bash

Bash on Windowsリポジトリにも同様のissueがたてられているので参照されたい.

Bash won't complete install properly · Issue #718 · Microsoft/BashOnWindows

何が起きているのか

Avastのフォーラムにも同様の問題が報告されている.

The whole unix subsystem is new in the windows world (last time we saw it was on NT4 with OS/2) we have to check what are the paths for packets from the new subsystem. Apparently they are different to the standard ones.

Avast firewall blocking Bash Ubuntu on Windows 10

今回,Windows Subsystem for Linuxというサブシステムが導入されたが,Avastがまだそれに対応していないのが原因らしい.サブシステムの通信はAvastにとっては異常なパケットなので止めているようです.セキュリティソフトとしては正しい動きだと思います.

コラム:Bashって何?

BashLinuxで動くシェルの一種です.

わからない単語をわからない単語で説明されると,ストレスが貯まります.いまから上の1行をざっくり解説します.

まずLinuxって何?

普通の人がよく聞くOSといえば,PCでWindowsOS XスマホAndroidiOSですが,実はこの世にはLinuxというOSも存在します.

詳しい話には立ち入りませんが(学びたい方はLinuxゲリラ戦記などを読んでください),プログラミングが関わる分野では世界的によくつかわれるOSなのです*1.無料で利用でき,ソースコードも公開されているOSなのでよく利用されます.そしてよく利用されるので,開発ツールやノウハウも溜まっています.

例えばこのブログははてなブログホスティングされていますが,はてなブログはこのブログの文字や画像をあなたのブラウザに送って表示させるために,Linux(とその上で動くWebサーバのソフト)を使っているはずです.

シェルって何?

Linuxに人間が命令する際には,コマンドを打ちこみます.例えばecho 'hoge'と打てば,「hogeと表示して!」と言われたことをこのコマンドで呼び出されるプログラムが解釈して,OSに画面に文字を表示させます.

上の手順のうち,人間が打ったコマンドを適切なプログラムに伝えるためのプログラムがシェルと呼ばれます.Bashはシェルの一種です.Windowsでいうとコマンドプロンプト(ソフトウェアを起動する際に突然,黒い窓が出てきた経験ありませんか?あれです)がLinuxでいうBashです.

*1:OS Statisticsによると2016年5月時点でシェアは5.6%.Macは10.2%,Win 10は22.6%

スポンサーリンク