Manjaro LinuxをHyper-VにインストールしてRDP接続で使う


環境

Windows 10 Pro 1909 build:18363.778
Manjaro Linux 19.0.2(xfce) 1

手順

Hyper-V マネージャーで仮想マシンの新規作成

新規仮想マシンの作成ウィザードで適当に作る。

項目 設定
世代 第2世代
メモリ 4096MB(お好みで。動的メモリも好きな方で)
NIC インターネットに接続可能な仮想スイッチ
仮想HDD 127GB(お好みで)
インストールメディア manjaro-xfce-19.0.2-200311-linux54.iso

作成までしたら起動する前に以下の設定を変更しておく。

  • セキュアブートのチェックを外して無効にする ※重要
  • 仮想プロセッサ数をお好みで変更する
  • その他はお好きなように

仮想マシンの起動・インストール

インストールメディアを起動し、メニューが開いたらそのままEnterでbootを選ぶ。(言語設定とかできるけど、ここでやってもそんなにメリットが無いのでそのままでいい)

起動中に以下の画面のような表示が出たところで止まってしまう。

これディスプレイドライバが対応していないのが原因らしい。
ここでCtrl+Alt+F2を押下すると、以下のようなコンソールのログイン画面に切り替えられる。

書いてあるとおり、ログイン名、パスワードは共にmanjaroでログインできる。
ログインしたら、Pacman(標準パッケージマネージャ)を使ってディスプレイドライバをインストールする。

$ sudo pacman -Sy
$ sudo pacman -S xf86-video-fbdev
$ sudo systemctl start lightdm

途中で入力を求められたら適当にEnterとかyとかで。
起動時の最初のメニューで言語を日本語にしてると、フォントが入っていなくて文字化けするっぽいが、ここでは無視してエンター連打とかで進んじゃって良いと思う。

無事GUI画面に切り替わったら「Launch installer」とか「インストールの開始」ボタンを押して、画面の指示に従ってインストールする。

初回起動

インストール完了後に再起動をかけると、インストール先の仮想HDDにはインストール時に使ったドライバが含まれていないため、またディスプレイドライバの問題が起きる。

インストール時の作業と同様にCUI画面にエラーが表示されて止まる事や、以下のようなノイズの入った画面で止まる場合がある。

とりあえず落ち着いてCtrl+Alt+F2を押下すればコンソールのログイン画面が出るので、ログインしてドライバをインストールする。(今度はインストール時に作成したユーザー名とパスワードでログインする事に注意)

まず

$ sudo pacman -Sy

を実行すると、

インストール時に日本語を選択しているとこんな感じで文字化けすると思われる。
[sudo]の行で入力待ちになってたら、sudoのパスワードを要求されているので、インストール時に設定した管理者アカウントのパスワードを入れて適当に進む。

この場合は以下のようにディスプレイドライバと一緒に日本語フォントをインストールしてやる。
インストール時に出てくる入力要求とかは適当にEnterとかでよい🙆‍♂️

$ sudo pacman -S noto-fonts-cjk
$ cd /etc/fonts/conf.d
$ sudo ln -s ../conf.avail/70-noto-cjk.conf
$ sudo pacman -S xf86-video-fbdev
$ sudo systemctl start lightdm

とりあえず、これで起動まではいけるハズ🙆‍♂️

初期設定

リポジトリのミラーリストの更新

お近くのリポジトリを使うようにする。
利用可能なリポジトリの接続速度をチェックしに行くため、ちょい時間がかかる。

$ sudo pacman-mirrors --fasttrack

パッケージのアップグレード

登録済みのパッケージを最新にする。
これもまぁまぁ時間がかかる。
ミラーリストを更新してからやった方が良いでしょう🙆‍♂️

$ sudo pacman -Syyu

AURヘルパー(yay)のインストール

必要なら。
自分でmakepkg -siとかやるなら要らない。

$ sudo pacman -S yay

日本語名ディレクトリの変更

$HOME以下に「ダウンロード」とか「ビデオ」とかの日本語名ディレクトリがあるのが気持ち悪い(かつCUIで扱いづらい)ので、英語名に変更したい。

~/.config/user-dirs.localeを任意のテキストエディタ開く(ここではnanoを利用)と、

~/.config/user-dirs.locale
ja_JP

となっているので、

~/.config/user-dirs.locale
C

に変更して保存する。

$ rm ~/.config/user-dirs.dirs
$ LC_ALL=C xdg-user-dirs-gtk-update

~/.config/user-dirs.dirsを削除してから更新をすると、英語名のディレクトリが作成される。

ここまで完了したら一度ログアウトしてからログインしなおして、ファイルマネージャー等で日本語ディレクトリを削除してやれば完成。

日本語入力

日本語の設定(公式)に手順は書いてあるが、いくつか問題があった。

  • 「ロケールの変更」の手順は不要。(おそらくインストール時に日本語を選択したからだと思う)
  • yaourtはもう開発停止になってる。(大体としてyayを使うことになると思う)
  • ibus-qtはpacmanではインストールできない。(AURにあるのでyayならいける)
  • 個人な事情があってmozcを使いたい。(普段Google日本語入力+dvorak入力のカスタマイズをしているので)
  • ibusでなくfcitxを使う場合、rdp接続した時にちゃんと起動してくれない。

また、Hyper-Vの「仮想マシン接続」ではちゃんと動いてくれるのに、xrdpをインストールしてWindows 10の標準リモートデスクトップクライアントから接続した場合に日本語入力ができずに色々試行錯誤した結果、以下の手順に落ち着いた。

フォント

これは公式の手順にも載ってる通り。

$ sudo pacman -S ttf-sazanami

インプットメソッド・エンジン

AURからインストールするためyayを利用。

$ yay -S ibus-mozc
$ yay -S ibus-qt

設定

公式にはこう書けとあるが、

~/.xprofile
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=ibus"
export XMODIFIER="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export DefaultIMModule=ibus
ibus-daemon -drx
~/.bashrc
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

これだとRDP接続時に上手く動かない。

色々試した結果、環境変数の設定については/etc/environment~/.pam_environmentに記述してやることで上手くいった。これが正解なのかわからないが、調べているうちにどこかで見かけてやってみたら上手くできた、という事で、とりあえずヨシとしている。(検索しながら色々試しているうちに解決したため、どこでこの方法を見つけたのかは失念してしまった…)

それぞれ

$ sudo nano /etc/environment
$ nano ~/.pam_environment

LANG=ja_JP.UTF-8
XMODIFIERS=@im=ibus
XMODIFIER=@im=ibus
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
DefaultIMModule=ibus

を記述。

ibus-daemon -drx

の部分はibusデーモンの起動だが、これはDEの自動開始に登録すればとりあえずOK。

xfceのメニューから「設定」-「セッションと起動」を開き、「自動開始アプリケーション」タブで「+追加」を押して、自動開始するアプリケーションとして登録しておく。(名前は適当でコマンドに「ibus-daemon -drx」)

やり方が分かる場合は~/.config/autostartに適当にファイルを作っても良いと思う。

ここまでやってログアウトし、再度ログインすれば日本語入力できるはず。
初期設定では「Super+Space」が切り替えに割り当てられているっぽいので、気に食わない場合はibus-setupを起動して適当に変更。

xrdp

インストール

ローカルIPを固定したい場合は適宜IPを降ってから作業する。
基本はArch Linuxの公式に載っている通り2だが、AURのためyayを使ってインストールする。

$ yay -S xrdp
$ yay -S xorgxrdp-git

設定

$ sudo nano /etc/X11/Xwrapper.config
/etc/X11/Xwrapper.config
allowed_users=anybody

サービスの有効化・起動

$ sudo systemctl enable xrdp.service
$ sudo systemctl enable xrdp-sesman.service
$ sudo systemctl start xrdp.service
$ sudo systemctl start xrdp-sesman.service

ここまでやってWindows 10の「リモートデスクトップ接続(mstsc.exe)」から接続してみると、ログイン画面が出る。

そのままユーザー名とパスワードを入力するとちゃんと接続できた。
また、日本語入力も問題なくできた🙆‍♂️

英語配列キーボードなのにキーの割り当てが異なる問題の対応

ただし、英語配列キーボードを使っているとうまく認識してくれない。(=を入力しても^になってしまう等)
どうやら「リモートデスクトップ接続」が送っているキーコードに問題があるようだが、調べて出てくるレジストリをいじる方法等を試しても解決しない。

ちょっと強引かもしれないが、xrdp側で日本語配列キーボードを認識できないようにする事で対応。

$ sudo nano /etc/X11/xrdp/xrdp_keyboard.ini

でキーボード設定ファイルを開き、rdp_layout_jpのエントリを全てコメントアウトしてしまう。

/etc/X11/xrdp/xrdp_keyboard.ini
-rdp_layout_jp=0x00000411
-rdp_layout_jp=0xe0010411
-rdp_layout_jp=0xe0200411
-rdp_layout_jp=0xe0210411
+;rdp_layout_jp=0x00000411
+;rdp_layout_jp=0xe0010411
+;rdp_layout_jp=0xe0200411
+;rdp_layout_jp=0xe0210411

とりあえずこれで上手くいっている。

Windows環境とのファイル共有(samba)

samba本体はインストールに含まれているため、基本的な設定を行う。

設定ファイルのインストール

sudo pacman -S manjaro-settings-samba

/etc/samba/smb.confかインストールされる。
とりあえずそのままでも使えるが、必要に応じて設定を変更する。

共有ユーザー・パスワードの設定

専用の共有ユーザーを作る場合は、あらかじめuseraddなどで追加しておく。
普段利用するユーザーをそのまま利用する場合でも、パスワードは別管理なので設定が必要。

sudo pdbedit -a $USER #または共有専用のユーザー名

でパスワードを登録。

サービスの有効化

smb.servicenmb.serviceを有効化・起動しておく。

sudo systemctl enable smb.service
sudo systemctl enable nmb.service
sudo systemctl start smb.service
sudo systemctl start nmb.service

ここまでやって一度ログオフし、再ログインすればとりあえず共有が使えるようになっている。

thunarプラグインのインストール

thunar上でディレクトリを右クリック→プロパティの画面で「共有」タブを表示して設定できるようにする。

sudo pacman -S thunar-shares-plugin

インストール後、再ログインしたら使えるようになっている。

色々調べていると、/etc/X11/Xwrapper.configneeds_root_right=autoやらneeds_root_right=yesを追加するとか、~/.xinitrcを編集して--exit-with-sessionを削除するとか、その他諸々の設定方法が出てくるが、とりあえず新規で作った環境で以上の設定だけで上手く動いているっぽい。

何か問題があれば適宜修正したい。


  1. KDEを使ってみようかと思ったが、どうやらKDE Plasmaはxrdpがちゃんと動かない不具合があるっぽい(どこで見たか忘れたが、実際試してみたら動かなかった)のでxfceにした。 

  2. Xrdp - Arch Linux