WSLのファイルシステムイメージをデフォルト以外の場所に移動できるか

WSLのファイルシステムイメージはC:\Users\<ユーザ名>\AppData\Local\lxssという場所に配置されています。ちょっと理由があって、これを他のストレージ(たとえばDドライブ以下)に移動させたくなったので、できるかどうか調べてみました。結論は、「Fall Creators Updateの時点では(少なくとも公式には)できないらしい」でした。残念。次回以降のrelaseに期待です。

以下調査ログ

とりあえず既存issueの確認をしたところ、あっさりとみつけました。

moving Linux filesystem · Issue #449 · Microsoft/WSL · GitHub

けっこう需要があるのか、はたまた一部の人が熱烈に欲しいのか、スレッドは長いです。最新の情報のほうが多分価値が高いので、調べる時間を短縮するために、新しい末尾の投稿から古い方に順番に読んでいきました。すると、次のようなコメントをみてみました。

moving Linux filesystem · Issue #449 · Microsoft/WSL · GitHub

で、リンクをたどって中身を見ると…

New distros coming to Bash/WSL via Windows Store – Windows Command Line Tools For Developers

確かにMSの中の人のブログとして、次のようなことが書かれていました。

You can install your distros to secondary fixed drives (i.e. not C:!) [Update 2017-07-24: Alas, this didn't fit in the Fall Creators Update schedule; we're looking into this feature for a future release]

非公式なトリッキーな方法を使えばできるかもしれませんが、データがぶっ飛んだら困るので、これ以上深追いするのはやめました。

会社組織を離れて変わったこと

前職を辞めて半年くらい経ちましたので、どういうところが変わったのかを羅列してみました。技術的な話、および、何かのdisり話は無いです。

  • 燃え尽きたりはせず、大してやることは変わらなかった。相変わらずOSSに関する何かをごそごそやっている。結局こういうのが好きなんだなあということを再認識
  • コードを書くよりドキュメントを書いていることが多い。もしかすると実は後者の方が好きなのかもしれない
  • 生活リズムは変化無し。やたら早く起きて早く寝るおじいちゃんスタイル
  • 好きなときに好きな場所で、自分のペースで作業できるのは非常に楽。スーパー気分屋なので、とくにそう感じる
  • 曜日や祝日の感覚が無くなった。開発MLの流量やtwitterのTL上から知ることが多い

ありきたりですが、盛ってもしょうがないので、こんなところです。日々穏やかに過ごしております。

iOS上のssh/moshアプリ、BlinkでC-mショートカットが効かない問題の続き

以下記事の続きです。

satoru-takeuchi.hatenablog.com

githubの既存issueで「俺のところでも起きる」と報告したところ、諸々あってBlinkのauto-repeat設定を有効にしているとC-mが効かないことがわかりました。あとはauto-repeatを有効にした状態でも問題が起きないようになる修正を待ちます。

スライド公開先の変更

これまで情報発信のために作ったスライドはSlideShareにおいて公開してきました。

www.slideshare.net

しかしSlideShareが、なぜかスライドの再アップロード機能を無くしてしまいました。

www.linkedin.com

このままでは不便なので、すべてのスライドをSpeakerDeckに移動させました。今後作るスライドもこちらで公開する予定です。

Presentations by Satoru Takeuchi // Speaker Deck

linuxでRyzenの温度センサーを動くようにする

Ryzenには温度監視機能があるのですが、本記事執筆現在、linuxのいわゆるupstream kernel(最新版は4.13)ではドライバが無いのでこの機能が使えません。温度監視をしたければWindowsFreeBSDを使うしかないという悲しい状況です。sensorsコマンドを実行しても次の通り、温度に関する情報は得られません。

$ sensors
asus-isa-0000
Adapter: ISA adapter
cpu_fan:        0 RPM

$ 

しかし、まだupstreamにマージされていないパッチを適用すれば、この機能を使えます。

AMD Zen Temperature Monitoring On Linux Is Working With Hwmon-Next - Phoronix

今使っているカーネルに関連パッチをcherry-pickしてきてもいいのですが、とりあえず試してみるだけなので、手間を省いて次のように関連パッチが入ったbranch, hwmon-nextをそのままビルドします。

$ cd ~/src/linux
$ git remote add staging git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
$ git fetch staging
...
$ git checkout staging/hwmon-next
...
$ cp /boot/config-$(uname -r) .config
$ make olddefconfig
...
$ make menuconfig                    # SENSORS_K10TEMP(Device Drivers -> Hardware Monitoring support -> AMD Family 10h+ temperature sensor)を選択
...
$ make -j$(grep -c processor /proc/cpuinfo)
...
$ 

できたカーネル上でsensorsコマンドを実行してみましょう(インストールとリブートの手順は省いています)。

$ sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +31.0°C  (high = +70.0°C)                  # 温度情報が出力されている

asus-isa-0000
Adapter: ISA adapter
cpu_fan:        0 RPM

$ 

うまく動いているようです。よかったよかった。後はupstream kernelにパッチがマージされるまで待ちです。残念ながら4.14のマージウィンドウは逃しているので4.15以降です。

ちなみに関連パッチは次の3つです。4.13に以下3つのパッチをcherry-pickした状態で温度情報が採取できていることを確認済です。

  • 398f86f hwmon: (k10temp) Add support for temperature offsets
  • 3b7317cc hwmon: (k10temp) Add support for family 17h
  • 12dbb1a hwmon: (k10temp) Move chip specific code into probe function

iOS用のmosh/ssh環境作成

iPad Pro+smartkeyboardを手に入れました。リモートのlinuxマシン上でちょっとした作業をしたいけれども、いちいちPCを起動するのが面倒なときのために、早速mosh/sshクライアントアプリをインストールすることにしました。結論から言うと、しばらくはBlinkというアプリを使う予定です。

App Storeにおいて"mosh ssh"で検索したところ、該当するのはTermiusとBlinkの二つのみでした。前者は評価版を無償で使えるようなので、とりあえず前者を試してみました。こちらはsshは期待通り動くのですが、moshの挙動が怪しいのが難点でした。なにより辛いのが、emacs上でC-spcによる範囲選択が動作しないことでした。このため候補から外しました。

次に試したのがBlinkです。ろくに情報もレビューも無いのに2400円もするのが不安でしたが、悩んでる時間が勿体無いので買ってみました。起動してみると、そろそろ2020年になろうとするこの時代のiOSアプリとしては信じられないほど不親切な出来栄えであり、最初はいきなり謎のコマンドプロンプトが表示されて放置でした。Windowsユーザだったころにlinuxを最初に触ったときの絶望感を思い出しました。

最初はハズレを掴まされたかなと思ったのですが、一旦触ってみるとTermiusとは異なり、前述のmoshの問題も無いため、しばらくはこれを使ってみることにしました。C-mが効かないという別の問題があるのですが、致命的ではないこと、かつ、次のように、すでにgithub上にissueも発行されていることより、しばらく我慢することにしました。

github.com

最後に、どちらのクライアントも私の持っているJISキーボードでは"\"が入力できずに"¥"になってしまうことが大きな問題でした。プログラミングで頻繁に使用するエスケープシーケンスを挿入するためには必須のキーなので、これは辛いです。本来は"option + ¥"によって"\"を入力できるのですが、optionキーでescをエミュレーションしているせいか、この手は使えませんでした。結局のところ.emacsへの次の行を追加によって解決しました。

(define-key global-map (kbd "¥") "\\")

wi2 300を契約&解約しました

最近外出先で仕事をすることが多くなってきたせいか、スマホに入れているSIMの通信容量制限に達しかける、あるいは達してしまって通信容量追加チケットを買う羽目になることが多くなってきました。最も単純な対処はSIMの契約プランを変更することですが、公衆無線wifi、とくにwi2 300がどんなものなのかに何となく興味があったこと、および月額料金が400円程度なので調査に時間を消費するより実際に使用感を確かめるほうがローコストだと判断して、契約してみました。

結論から言いますと、このサービスは私にはまったく合っておらず、残念ながら一週間程度で解約することになりました。理由は次の通りです。

  • 普段行く場所が追加料金無しで利用できるベーシックエリアに入っておらず、一時間100円の追加料金が必要なオプションエリアになっていることが多い。わざわざこの料金を払うくらいならSIMのプラン変更したほうがマシなので、あまり意味がない
  • ベーシックエリアになっている場所であっても、店舗自身が独自無償wifiを提供しており、わざわざwi2 300を利用する意味が無いことがよくある(スタバとかタリーズとか)
  • wifiスポットに自動接続する設定にしていると、移動中に滅茶苦茶電波の弱いスポットを掴んだ挙句に全然通信できないという事態が頻繁に発生する。かたや自動接続にしていないと、いちいち自分でスポットを探して接続する必要があるので、ちょっとめんどくさい(その上、探して出てくるのが高頻度でオプションエリアのスポット)。

通信速度に関しては、普段それほど速度が必要な作業をしないせいもあってか、とくに不満はありませんでした。追加課金無しで利用できる場所が十分に多ければ、たとえば今のオプションエリアが全て追加課金無しで利用できるのであれば、十分に使い物になっていたでしょう。

なお、このサービスの良し悪しは「普段外出時にどこに行くか」に強く依存するので、その場所がベーシックエリアにあるのなら、SIMのプラン変更よりも割安になるケースが多いので、一度使ってみてもよいのではないでしょうか。