2019年12月17日火曜日

今更ですがWSLを入れてみた

event_note12月 17, 2019 editBy sbin forumNo comments
既に WSL2 (Windows Subsystem for Linux2)がリリースされているようですが、WSL1を入れてみました。以前お試しに入れた Bash と違って Windows を開発者モードに切り替える必要がありません。お手軽ですね。

コントールパネル → プログラムと機能 
    → Windowsの機能の有効化と無効化 
      → ☑Windows Subsystem for Linux
 
これをセットしてリブートすれば、準備完了です。後は、Windows store から Ubuntu を
入れるだけです。
 
Windows store → 検索 → WSL → Ubuntu を選択インストール
 
今回は bash を使う事が主目的でなくあくまで TeraTerm の代わりをできるかを目的として
おります。そして自動ログインしてコマンド実行をしたリクエストがあったので軽くテスト
してみました。この辺りは bash + expect があれば何とかなるかなと思っておりました。
 
始めて使う Ubuntu なので良くわかりませんが、 apt-get expect とやっても無いと言われ
ます。どうもパッケージDBを更新する必要があるようです。
 
> sudo apt-get update
 
これで更新されたようです。必要なパッケージを入れてみます。
 
> sudo apt-get install screen
> sudo apt-get install expect
 
これで自動実行に必要なパッケージは揃いました。screen はシリアルアクセスの時に
便利なパッケージです。今は知りませんが uucp のオーナーで dialer のグループで
なとアクセスできなかったり面倒くさい思い出ばかりです。なので、モードは甘くして
おきます。使うシリアルは aliexpress で 300円ぐらいで買ったシリアルでポートです。
 
ポート(COMとLPT)
  USB-SERIAL CH340(COM3) 
 
COM3 へは Ubuntuからは /dev/ttyS3 でアクセスできます。
 
>sudo chmod 666 /dev/ttyS3
> sudo screen ttyS3 115200
 
何かつながっていれば、確認できる筈です。
 
auto.sh
#!/usr/bin/expect -f
set timeout 10
spawn sudo screen /dev/ttyS3 9600
expect "sbin:"  //sudoのパスワードを聞かれる
send "ひみつ\r"   //ひみつのパスワードを送る
send "\r"
expect "login:"
send "manager\r"
expect "Password:"
send "でもでも\r"
expect "g401>"
send "lo\r"
expect "g401>"
send "^a K\r"     // screen から抜ける
sleep 5
send "y\r"
#interact
expect eof
 
簡単にルーターのコンソールにシリアルでログインして抜けられました。
続けて ssh してみます。
 
auto.sh
#!/usr/bin/expect -f
set timeout 10
spawn /usr/bin/ssh sbin@server
expect "Password:"
send "ひみつ\r"
expect "]"
send "ls -l \r"
expect "]"
send "exit\r"
#interact
expect eof
sshでも自動でログインできますね。お手軽に自動化できそうです。
因みにログを取る場合は、
./auto.sh > log &
でlog に書かれます。
そう言えばフォントも変えておきます。
UbuntuMono-R.ttf を落としていれます。regedit で
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
にアクセスして
 
000     REG_SZ  Ubuntu Mono 
を登録します。あとは bash のプロパティで   Ubuntu Monoを設定すればフォントも変わります。

そう言えば Ubuntu は全て sudo で管理者コマンドを実行します。su か su - に切り替えます。

> sudo passwd root

これで root のパスワードを設定します。
続いて root になるため自分をrootグループに加えます。

sbin@sbin-g4:~$ cat /etc/group
root:x:0:sbin
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sbin
これで、su で root になれます。
しばらく使ってみると、ストレスを感じます。ターミナルが酷くて vi が変になります。
これは使えません。評判の良さそうな wsltty を入れてみます。 

これでかなり良くなりました。あれ、そう言えば日本語のロケールが無い事に今更気が付きます。まあ無くてもいいのですが、折角なのでいれます。

>su
# apt -y install language-pack-ja
ロケールが追加されました。ロケールを切り替えます。続いて時間も東京にします。
# update-locale LANG=ja_JP.UTF8
# dpkg-reconfigure tzdata 
 
最後に間に合わないマニュアルも入れておきます。
 
# apt -y install manpages-ja manpages-ja-dev

大夫ストレスがなくなりました。ターミナルは TeraTerm のようにバックグランドは
白が好きです。前景色を黒、背景色を白に設定すると同じようになります。

ところが 端末タイプを xterm-256color に設定しているとあちこちカラーで色分けされて
いるのですが、黄緑とか見えにくい色が多用されています。ストレスです。
 
$ dircolors -p > ~/.dircolors
 
現在の設定を .dircolors に書き出します。この中で 01;32 に設定されている部分が見え
にくいので 01;34 に書き換えます。
 
$ dircolors -b > ~/.dircolors 

で書き換えるか、ターミナルを立ち上げ直します。最初から .dircolors があるか .bashrc 
でテストされていますので、立ち上げ直せば設定されます。
 
ところが、プロンプトが未だに黄緑色で苛っとします。
これは、.bashrc に PS1 で選定がありました。
 
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
 
\[\033[01;32m\と32m で黄緑が指定されているので 34に変更します。
 
これでようやくターミナルとして使えるようになりました。簡単なスクリプトは、ローカル
で実行できるようになったので便利です。
 
そう言えばWindows とファイルをやり取りする場合のパスが深いので HOMEを移動される
設定をしてみましたが、止めました。 移動すると Permissionが 7777 になってしまい
ssh が秘密キーで使えなくなります。
 
ショートカットを行きと戻りを作って行き来した方が良さそうです。テキストファイルは
ターミナルにドロップすれば、パスに変換されるので不自由ありません。ターミナルからは
/mnt/c/xxx でWindows の全域にアクセス可能です。
 
これでストレスなく 使える環境になりました。
 
WSL2 には暫く上げる予定はありません。 Hyper-V がサポートされ tcp-dump も動く
ようですが、古い VMWare が動かなくなってしまい副作用もあるので予定なしです。