Bash on Ubuntu on Windows10を触ってみよう～Part2～

この記事は、私の個人ブログ[「クラウド時代のシステム管理」の記事](http://www.takanyan.net/bouw10-2/)を転記したものです。

Bash on Ubuntu on Windowsをインストールして触ってみました。その後Insider Previewのビルド番号も上がり、挙動が変わっているところなどもありましたので、もう少し詳しく、ただ個人的に使いそうなコマンドを実行してみます。

<more>

## 1. ファイルシステム周りのコマンド
Windows10の上で動くLinuxですから、実際のデータはNTFS上にあるはずです。それがBash on Ubuntu on Windowsではどう見えるか確認します。
### dfコマンド
以前は/etc/mtabがないためにエラーが返ってきていましたが、最近のBuildで修正されたようです。

```
root@MYCOMPUTER:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          143G   97G   47G  68% /
tmpfs           143G   97G   47G  68% /run
none            143G   97G   47G  68% /run/lock
none            143G   97G   47G  68% /run/shm
none            143G   97G   47G  68% /run/user
```
WindowsのCドライブも143GB程度の容量なので、Cドライブ全体がサイズとして認識されているようです。

### mount情報
mountしているファイルシステムの情報などを見てみます。<code>/etc/fstab</code>ではファイルシステムがext4と書かれていますが、実際にはそうなっていないようです。Disk IOの処理はWindows APIに裏で変換されているのでしょう。

```
root@MYCOMPUTER:~# cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults        0 0

root@MYCOMPUTER:~# mount
rootfs on / type rootfs (rw,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204320k,mode=755)
none on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
none on /run/shm type tmpfs (rw,nosuid,nodev,relatime)
none on /run/user type tmpfs (rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755)
```

Windows側にDisk IOを任せているためか、Disk IOの性能は取得できませんでした。

```
root@MYCOMPUTER:~# iostat
Cannot find disk data
```

## 2. CPU、メモリ、プロセス周りのコマンド
### CPUの情報
CPUの情報を見てみます。物理CPUがそのまま見えています。

```
root@MYCOMPUTER:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 94
model name      : Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
stepping        : 3
microcode       : 0xffffffff
cpu MHz         : 2601.000
cache size      : 256 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 6
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq est tm2 ssse3 fma cx16 xtpr sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor
bogomips        : 5202.00
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
(以下2コア目以降の情報のため省略)
```

### メモリ情報
メモリも物理メモリ全体が見えています。ただ、スワップファイルはサイズがよくわからないことになっています。MB単位なのにありえないくらい桁数が多いですね。

```
root@MYCOMPUTER:~# free -m
             total       used       free     shared    buffers     cached
Mem:         65356       4423      60933         17         33        184
-/+ buffers/cache:       4205      61150
Swap:            0 18014398505299712    4182271
root@MYCOMPUTER:~# ps auxwww
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0      0     0 ?        Ss    2432   0:00 /init
root         2  0.0  0.0      0     0 ?        Ss    2432   0:00 /bin/bash
root       556  0.0  0.0      0     0 ?        R     2432   0:00 ps auxwww
```
### CPUとメモリの性能情報取得
性能データを見るのはやはり<code>top</code>コマンドと<code>vmstat</code>コマンドですよね。

```
top - 23:21:27 up 6 min,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us, 50.0 sy,  0.0 ni, 45.1 id,  0.0 wa,  4.7 hi,  0.0 si,  0.0 st
KiB Mem:  66925280 total,  4513292 used, 62411988 free,    34032 buffers
KiB Swap:        0 total, 18446744+used, 42826460+free.   188576 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0       0      0      0 S   0.0  0.0   0:00.00 init
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.27 bash
  557 root      20   0       0      0      0 R   0.0  0.0   0:00.00 top
```

残念ながら<code>vmstat</code>は正しく動きませんでした。

```
root@MYCOMPUTER:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
Error: /proc must be mounted
  To mount /proc at boot you need an /etc/fstab line like:
      proc   /proc   proc    defaults
  In the meantime, run "mount proc /proc -t proc"
```

## 3. kernel周りのコマンド
基本的にユーザーモードだけが動くはずなのですが、Linux Kernelに関するパラメータがいくつか見られたりします。<code>sysctl</code>コマンドと、OSバージョンを見てみましょう。

```
root@MYCOMPUTER:~# sysctl -a
kernel.osrelease = 3.4.0-Microsoft
kernel.ostype = Linux
kernel.ngroups_max = 65536
kernel.pid_max = 32768
kernel.randomize_va_space = 2
vm.swappiness = 60

root@MYCOMPUTER:~# uname -a
Linux MYCOMPUTER 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

root@MYCOMPUTER:~# cat /etc/issue
Ubuntu 14.04.4 LTS \n \l
```


## 4. Bash on Ubuntu on Windows10に関する不具合を見つけたら

MicrosoftのGithubの中に不具合報告専用のレポジトリとして「<a href="https://github.com/Microsoft/BashOnWindows" target="_blank">Microsoft/BashOnWindows (https://github.com/Microsoft/BashOnWindows)</a>」があります。コマンドの結果がエラーになるなどがあれば、issueを起票して、修正のために必要な情報などを提供してみてはいかがでしょうか。まだまだ動きが重たかったりするケースもありますが、今後改善されていくと思われます。引き続きウォッチしていきたいと思います。