14
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSL の 覚書(+ ホームディレクトリの変更)

Last updated at Posted at 2018-06-19

はじめに

WSL をはじめて使うので,私の備忘録代わりのメモにします. DrvFS に metafata を付与して,Linux 側のパーミッションを保持できるようになったので,ホームディレクトリを DrvFS 上に持っていきます.一度,wsl.conf の設定が有効にならなかったので諦めてたのですが,もう一度試してみたら有効になったので変更しました.前回は typo していたのかもしれません.

Windows

HP Spectre 13-af000 を購入したのファンクションキーと CtrlCaps Lock の変更します.

  • ファンクションキーの設定

電源投入後,ESC を押してメニューを表示させ、F10 から BIOS の設定をする.System ConfigurationAction Keys ModeDisabled に変更する.

  • キーの入替え

Caps lock(0x003a)左Ctrl(0x001d) に、左Alt(0x0038)左Win(0xe05b) を入れ替える.
regrdit を起動して,【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout】に【Scancode Map】(REG_BINARY) を追加する(参考: 1d,00,3a,00, (変更後)(変更前)).

00 00 00 00 00 00 00 00
04 00 00 00 1d 00 3a 00
5b e0 38 00 38 00 5b e0
00 00 00 00

WSL

いろいろなところに情報がありますが,取り敢えず作業した内容をメモします.

インストール

  • コントロールパネルプログラムWindows の機能の有効化または無効化 から Windiws Subsystem for Linux を有効にして再起動.

  • Microsoft Store から Ubuntu 18.04 をインストール

初期設定

スタートメニューから Ubuntu 18.04 を起動してユーザの作成をする.

  • システムの更新

プロキシ環境なら下記の設定を行う.

$ export http_proxy=http://サーバ名:ポート番号/
$ export https_proxy=$http_proxy
$ export ALL_PROXY=$http_proxy

sudo apt update,sudo apt upgrade でシステムの更新を行う.プロキシ環境なら sudo -E apt update,sudo -E apt upgrade のように -E を付けてコマンドを実行する.

$ sudo -E apt update
$ sudo -E apt upgrade
  • 日本語 Locale
$ sudo -E apt install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8

exitUbuntu を終了して,もう一度 Ubuntu を起動する.echo $LANG でロケールが変更されているか確認する.

  • 日本語 manpage の導入
$ sudo -E apt install manpages-ja manpages-ja-dev
$ sudo apt autoremove
  • タイムゾーンの設定
$ sudo dpkg-reconfigure tzdata
  • 開発環境のインストール
$ sudo -E apt install build-essential
$ sudo -E apt install gdb
  • フォント関連
    Windows と共通のフォントを利用する場合は,Windows にフォントをインストールする.
$ sudo ln -s /mnt/c/Windows/Fonts /usr/local/share/fonts/windows
$ sudo fc-cache -vf

Powerline のパッチを当てたフォントのような Linux からしか利用しないものに関しては,$HOME/.local/share/fonts にフォントをコピーして,fc-cache -vf を実行する.知らなかったのですが,$HOME/.local 以下に置くのがお作法みたいですね.

  • Hyper ターミナル

https://hyper.is/ からダウンロードしてインストールする.
%USERPROFILE%\appdata\local\hyper に本体があるので,スタートにピン留めする.

WSL(Ubuntu 18.04) が起動するように,%USERPROFILE%\.hyper.js を編集する.

fontSize: 14,
shell: 'C:\\Windows\\System32\\wsl.exe',
shellArgs: [],
  • VcXsrv Windows X Server

https://sourceforge.net/projects/vcxsrv/ からダウンロードしてインストールする.
(スタートメニューとデスクトップのショートカットのチェックを外す).

C:\Program Files\VcXsrv\vcxsrv.exe を右クリックして,プロパティを開き 高 DPI 設定 の変更高 DPI スケール設定の上書き にチェックをいれ,アプリケーションにする.

ホームディレクトリの変更

WSL のデフォルトユーザを変更するのに必要な [distro.exe] が分からなくて悩みました.Microsoft StoreUbuntu 18.04 の説明文に ubuntu1804 とあります.ただし,管理者権限の{コマンドプロンプト,PowerShell}からしか PATH が通っていないようで,気づくまで無駄に時間がとられました.

  • Drvfs の /mnt/cmetadata 付きで自動マウント

/etc/wsl.conf に下記内容で作成して,WSL を立ち上げ直します.

/etc/wsl.con
[automount]
options = "metadata,umask=22,fmask=11"

mount -l コマンドで

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata)

のように,metadata が付与されているのを確認する.

ホームディレクトリ の場所を C:\home 以下に変更するので,C ドライブに home フォルダを作成しておきます.

管理者権限でコマンドプロンプトを起動して,下記の手順でホームディレクトリを変更します.念のためバックアップをとることをおすすめします.

% ubuntu1804 config --default-user root
% wsl
# usermod -d /mnt/c/home/xxx -m xxx (xxx はユーザ名)
# exit
% ubuntu1804 config --default-user xxx
% wsl

pwd コマンドや /etc/passwd からホームディレクトリが変更できているか確認します.
usermod-m は,現在のホームディレクトリを新たに指定したホームディレクトリに移すオプションです.

Emacs

NTEmacs @ ウィキ の設定です.ありがとうございます。

  • インストール
$ sudo -E apt install emacs-25
$ sudo -E apt install cmigemo

.bashrc などに下記設定を追加.

.basrc
# emacs setting
export DISPLAY=localhost:0.0

if [ "$INSIDE_EMACS" ] ; then
    TERM=eterm-color
fi

(
    command_path="/mnt/c/Program Files/VcXsrv/vcxsrv.exe"
    command_name=$(basename "$command_path")

    if ! tasklist.exe 2> /dev/null | fgrep -q "$command_name"; then
        "$command_path" :0 -multiwindow -clipboard -noprimary -wgl > /dev/null 2>&1 & #
for us-keyboard
    fi
)

alias emacs="NO_AT_BRIDGE=1 LIBGL_ALWAYS_INDIRECT=1 emacs"

ターミナルから emacs と打って,Emacs が起動するのを確認する.

  • Google 日本語入力

Google 日本語入力 を利用するので,取り敢えずインストールします.Microsoft IME を使わないので,入力方式エディターから削除します.

設定時刻と言語地域と言語日本語 を選択した,オプションをクリックっして,キーボードの Microsoft IME を削除する.
時刻と言語地域と言語キーボードの詳細設定言語バーオプションキーの詳細設定 の入力言語のホットキーのキーシーケンスを無効にする.

IME のプロパティ のキー設定の編集から,

  • 変換前入力中,変換中,入力文字なしIMEを無効化
  • 直接入力IMEを有効化

の入力キーに C-\ を割り当てる.この設定は完全に私の好みです(普通は必要ないです).

mozc_emacs_helper については,WSL の Emacs で日本語入力 に書いています.

  • emacsclient

init.el に追加する.

init.el
;;; server start for emacsclient
(use-package server
  :if window-system
  :config
  (unless (server-running-p)
    (server-start))
  :diminish (server-buffer-clients . " ⓒ"))

コマンドプロンプトから wsl.exe emacsclient -n ファイル名 で開いています.wslpath が想定した動作をしてくれないので,カレントのファイルしか開くことができないです:persevere:

[6/20 追記]
wslpath ですが引数を 'aaa.txt'"..\aaa.tx " のようにすると想定した動作になってくれました.

どこに作成したもいいのですが,~/.local/binwslemacsclient.bat を下記に内容で作成する.

wslemacsclient.bat
@echo off

for /f "usebackq" %%i in (`wsl wslpath '%1'`) do set unixpath=%%i
wsl emacsclient -q -n %unixpath%

このままでは,使いづらいので doskey (alias みたいなもの) に登録して,アクセスしやすいようにします.
レジストリエディタを起動して,HKEY_CURRENT_USER\Software\Microsoft\Command Processor に移動する.
文字列値 AutoRun を作成し,値のデータを doskey ee=C:\home\xxx\.local\bin\wslemacsclient.bat $1 に設定する(xxx:ユーザ名).

コマンドプロンプトを開き,doskey /macrosee が登録されいることを確認します.ee ファイル名ee フォルダ名\ファイル名 などで,emacsclient が動作することを確認します.もしくは,wslemacsclient.bat にファイルをドラッグして動作することを確認します(一瞬コマンドプロンプトの画面が表示される).

私は必要ないですが,右クリックの送るメニューに追加してもいいかもしれません.
コマンドプロンプトから start shell:sendto を実行して SendTo を開き, wslemacsclient.bat のショートカットを作成し,プロパティから実行時の大きさ最小化にでもすれば,いいのではと思います.

これで,MSYS2Emacs よりはるかに快適になりました.
[6/20 追記終]

[6/22]
なぜか PATH の通ったところにバッチファイルを置いても wslemacsclient.bat のように拡張子まで入力しないと,上手くいかなかったので doskkey にバッチファイルを登録していましたが,拡張子なしでも動作するようになった(?)ので,doskey の登録はやめました.
[6/22 追記終]

14
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?