#ラクラクLinux (Ubuntu) 環境を Windows で作りましょう
Fedora派(厳密にはCentOS派)で、DebianやUbuntuをほとんど知らない人が書いてみました。
もっと厳密にいえばFreeBSDヲタクかもしれないの。
ここではブラウザヲタクを目指すためにできる限り多くのブラウザをインストールします。
#インストールするもの
#このHowtoの読み方
どちらのOSで行うのか、セクションの先頭にWindows、もしくはUbuntu と記載してあります。
#WSL2 + X Serverの導入方法
##Windowsのデバイス名を設定する
コントロールパネルのシステムからこのPCの名前を変更して、再起動します。
デフォルトのWindowsインストール時に自動設定されたランダムな名前を使用するならそのままでも構いません。
##ルーターで対象PCのDHCPを固定IPにしておくとよいかもしれません。
Windows PCのMACアドレスを調べ、そのPCをDHCPの固定IPとします。
ここまでは公式に記載されていません。これ以下が公式に記載されているものです。
##WindowsでWSL2 Ubuntuのインストール
公式に示されている方法でインストールするとよいかもしれません。
(ここは当たり前のことを行っていますので、わかる方はスキップしてください)
- プログラムと機能の中のWindowsの機能の有効化または無効化の中で
「Linux用Windowsサブシステム」
「仮想マシン プラットホーム」
にチェックを入れて、再起動
- x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージをインストール
- コマンドプロンプト(もしくはPowerShell)の管理者権限で、以下を実行
wsl --set-default-version 2
-
[このリンクよりMicrosoft StoreからUbuntuをインストール] (https://docs.microsoft.com/ja-jp/windows/wsl/install-manual#step-6---install-your-linux-distribution-of-choice)
-
Windowsでインストールされた Ubuntu アプリを起動し、ユーザー名とパスワードを設定
ここまでは公式で記載されていることを記載しています。
##WindowsでWSL2のlocalhostを有効にする
localhostを有効にすると、WSL2の使い勝手が遥かに良くなります。
WindowsのC:\Users\username の配下に、以下の内容の.wslconfig (dot wslconfig)を作成します。
[wsl2]
localhostForwarding=True
##ご注意:wslは決してシャットダウン(再起動)しないでください localhostでアクセスできなくなります。
wsl --shutdown
このコマンド単体で再起動をしないでください。
シャットダウンをしてしまったら、sshデーモンを起動しなおさないといけません。
バッチファイルについては下記に記載します。
ただし、ubuntu コマンドからシェルを起動することはできます
WindowsのTeraTermMenuに登録する
項目 | 入力するもの |
---|---|
登録名 | 好きな名前 |
ホスト名 | localhost |
ユーザー | ユーザー名 |
パスワード | パスワード |
その他 | ttsshを使う |
なお、登録するだけで、まだsshは起動しません。
##WindowsでUbuntuアプリを立ち上げて作業をする
##Ubuntuのパッケージをアップデート
sudo apt update
sudo apt upgrade
Ubuntu でsshに関するファイルを編集する
Ubuntu コマンドを起動し、その中で
sudo vi /etc/ssh/sshd_config
を実行し、
PasswordAuthentication yes
に変更する
Ubuntu のssh鍵を作成する
sudo ssh-keygen -A
Ubuntuにnslookupをインストールする
sudo apt-get install dnsutils
##Ubuntu の .bashrc に記載する
最後のほうに記載すれば良いです。
vi ~/.bashrc
export __BASEIP=192
export __XSERVERHOST=NANOKO
export DISPLAY=$(nslookup $__XSERVERHOST | grep " $__BASEIP" | awk '{print $2}'):0
__BASEIPは、Windows端末がDHCPで割り当てられるだろうプライベートIPの頭の数字 192 を記載します。
__XSERVERHOSTは、Windows端末のデバイス名を指定します。
Ubuntuにsshd等のサービスを起動するコマンドを記載する
vi ~/service_start.sh
#!/bin/sh
ROOTPASS=ここにパスワードを記載する
echo $ROOTPASS | sudo -S service ssh start
echo $ROOTPASS | sudo -S service dbus start
echo $ROOTPASS | sudo -S service avahi-daemon start
echo $ROOTPASS | sudo -S service cron start
##上記で作成したファイルのパーミッションを設定する
chmod a+x ~/service_start.sh
##WindowsにWSLでsshデーモンを自動起動するコマンドを記載する
wsl -u root "/home/ユーザー名/service_start.sh"
##Windows でservice_start.bat のショートカットを作成する
service_start.lnkを作成
##Windows で service_start.lnk をWindows NT用AUTOEXEC.BATの startup\normal に登録する
実は
c:\users%USERNAME%\appdata\roaming\microsoft\windows\start menu\programs\startup
に上記のショートカットをおいてもかまいません。
##Windowsで再起動用のバッチファイルを設置しておく。
sshデーモンを再度立ち上げるバッチファイルとなります。
wsl --shutdown
timeout /t 30 /nobreak
call service_start.bat
##WindowsでVcXsrvの XLaunch を起動する
↓↓↓↓↓↓↓
↓↓↓↓↓↓↓
Addtional parameters for VcXsrvに
「-ac」
と記載する
↓↓↓↓↓↓↓
Save configration をクリックして、config.xlaunch を保存して、完了
↓↓↓↓↓↓↓
作成された config.xlaunch を直接開き、XLaunchアプリと関連付けを行う
このリストには表示されてない可能性があり、その他のアプリをクリックすると XLaunch が出てきますのでクリックします。
##Windowsで上記生成されたconfig.xlaunchのショートカットを作成する
config.xlaunch.lnk を作成します。
##Windows で config.xlaunch.lnk をWindows NT用AUTOEXEC.BATの startup\normal に登録する
実は
c:\users%USERNAME%\appdata\roaming\microsoft\windows\start menu\programs\startup
に上記のショートカットをおいてもかまいません。
##Windowsを再起動する
##TeraTerm Menuから試しに起動する
##Ubuntu でX Windowのテストアプリをインストールする
sudo apt-get install xterm
##Ubuntuでテストアプリを立ち上げる
この時点で実際にFirefoxを起動して、日本語のページを閲覧すると文字化けします。下記の日本語環境のインストールが必要です。
##Ubuntuの最低限の日本語環境をインストールする
sudo apt-get install language-pack-ja
sudo apt-get install fonts-ipafont
fc-cache -fv
実際にはこれでもフォント不足で文字化けすることがあります。
より多くの適切なフォントをインストールするとよいでしょう。
#ブラウザヲタクになる
今回の目的はWeb開発です。
その目的を満たすために、ブラウザヲタクを実装します。
##Ubuntuで簡単にインストールできるブラウザー
sudo apt-get install firefox
sudo apt-get install midori
sudo apt-get install epiphany-browser
sudo apt-get install palemoon
##Ubuntuにsnapdをインストールする
snapに移行したアプリもあるのでインストールをしておく
sudo apt-get install -yqq daemonize dbus-user-session fontconfig
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
##Ubuntuにchromiumをインストール
sudo apt-get install chromium-browser
sudo snap install chromium
##UbuntuにMicrosoft Edgeをインストール
- Microsoft Edge 公式サイトより .deb をダウンロード
- WindowsであればUbuntuに転送する
copy microsoft-edge-stable_xxxxxx_amd64.deb \\wsl.local\Ubuntu\home\username
- Ubuntuでインストール
sudo apt-get install libatomic1
sudo dpkg -i microsoft-edge-stable_xxxxxx_amd64.deb
##UbuntuにGoogle Chromeをインストール
- Google Chrome オフラインインストーラより .deb をダウンロード
- WindowsであればUbuntuに転送する
copy google-chrome-stable_current_amd64.deb \\wsl.local\Ubuntu\home\username
- Ubuntuでインストール
sudo apt install google-chrome-stable_current_amd64.deb
- 起動して設定する
google-chrome-stable をシェルから起動し、以下の画面で適切にチェックを行い、開始をします。
##Ubuntuにoperaをインストール
sudo snap install opera
##Windowsから上記ブラウザーを起動するバッチファイルを設定してみる
残念ながらこちらのバッチファイルで実行すると、ウインドウサイズが変更しにくい状況で、小さく表示されると思います。
公式でもサポート対象外となります。
直接UbuntuコマンドのシェルかTeraTerm等のsshのシェルから起動することをおすすめしますが、参考までに記載します。
wsl firefox
wsl midori
wsl palemoon
wsl epiphany
wsl microsoft-edge
wsl google-chrome-stable
wsl opera
wsl chromium
##それなら、WindowsのTeraTerm Menuから起動する ttl ファイルを作ればよいです。
connect 'localhost:22 /ssh /2 /auth=password /user=ユーザー名 /passwd=パスワード'
wait '$'
sendln 'firefox 2>&1 >/dev/null &'
wait '$'
sendln 'exit'
その後、TeraTerm Menu で
マクロファイルを指定して実行
で、作成した ttlファイルを登録するのみとなります。
firefox の部分を書き換えれば、どのアプリでも使用できます。
#WSLあれこれ
##ところでこれどうなったのかしら?
各種サイトで、.bashrcに以下を追加するように紹介されています。
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
しかし、WSL配下の仮想マシンは毎回動的IPであるため、変化してしまいます。
X Windowのサーバーを正しく指定できない現象も起きています。
その為、今回最も使われそうなプライベートIP 192.168.xxx.xxx をベースとして
利用して Xサーバーを指定することを考え、
かつ、localhost でTeraTermを起動することで、
簡単にWSLにアクセスできるような環境にしました。
##Windows から Ubuntuのファイルを見る
Quitaの仕様上、ネットワークドライブの¥¥は正しく記載されないため、全角文字にて記載を行っています。
エクスプローラーで ¥¥wsl$ を開くと見ることができます。
今回の設定を行うと、コマンドプロンプトで見たり、ネットワークドライブを割り当てるとしたら、以下の通りとなります。
dir ¥¥wsl.localhost\Ubuntu
net use u: ¥¥wsl.localhost\Ubuntu
##Ubuntu から Windowsのファイルを見る
/mnt/c にアクセスをすれば見れます。
##ブラウザから音を出すには?
- WSLで音を出す。最新版 を参照して下さい。
#さいごに。
必要なものをすべて起動時に自動実行するので
UbuntuのシェルにTeraTermを使ってTeraTerm Menuからラクラクアクセス
X-Windowサーバーの起動を忘れても、X-Windowアプリも立ち上げられます。
これでブラウザヲタクになれて、Web開発に専念できることとなりました。