1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Mac mini(M1)でもWindowsからRDPでリモートデスクトップしたい!

概要

MacではVNCがビルトインされているので、VNCでリモートデスクトップを行うのに特に困ることはないのですが、どうしてもVNCクライアントを入れるのが嫌だったので、xrdpを使って対応させにいきました。
すでにIntel版のMacでxrdpをインストールする方法は世に出ています。
その手順をベースにApple Silicon(arm64)向けに変えた手順で紹介します。
未確認ですが、M1チップのMacbook Air/Proでも同じ手順で動作すると思います。

検証環境

Mac mini(M1)
--> Mem 16GB SSD 512GB
macOS Big Sur Version 11.1

手順

brewの準備

まずはbrewを入れましょう
既に入っている方はスキップしてください
https://brew.sh/index_ja

OpenSSLのインストール

xrdpをビルドするために必要なOpenSSLをインストールしましょう
export系コマンドはバージョンやパスによって異なると思うので、installした後に出てくるメッセージをよく確認してください。

$ brew install openssl
$ echo 'export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc
$ export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
$ export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"

ビルド系のツールをインストール

$ brew install automake
$ brew install libtool
$ brew install pkgconfig
$ brew install nasm

XQuartzのインストール

通常のXQuartzをインストールするとのちのビルドでarm64がなくコケルので、githubからαバージョンのイメージをダウンロードしてインストールしましょう
自分がダウンロードしたバージョンは、XQuartz-2.8.0_alpha2でした。おそらくそれ以降のバージョンであれば、大丈夫だと思います。
https://github.com/XQuartz/XQuartz/releases

ダウンロードしたら、パッケージをインストールしてください。
インストールしたら一度ログアウトして、ログインしなおしてください。

VNCの有効化

バックエンドにVNCを使って、RDPを行うのでVNCをシステム環境設定から有効にします。

システム環境設定 -> 共有 -> 画面共有にチェック
その中のコンピュータの設定を開いて、
ほかのユーザが画面操作の権限を要求することを許可
VNC使用者が画面を操作することを許可にチェックを入れてください。
その横にあるパスワード欄にパスワードを適当に決めて入力してください。のちに使用します。

xrdpのダウンロード

リリースから最新のアーカイブファイルを落として解凍してください。
一応以下にコマンド例

$ tar -xvf xrdp-0.9.15.tar.gz
$ rm xrdp-0.9.15.tar.gz

xrdpのビルド&インストール

たぶんこれでうまくいくはずです。。。
PKG_CONFIG_PATH=の部分は、環境やバージョンによって違う可能性があるので、opensslをインストールしたときのパスを要チェックです。

$ cd xrdp-0.9.15/
$ ./bootstrap
$ ./configure PKG_CONFIG_PATH=/opt/homebrew/opt/openssl@1.1/lib/pkgconfig
$ make
$ sudo make install

Configを用意する

適当なテキストエディタで、/etc/xrdp/xrdp.iniを開いて編集しましょう。
configの作例を載せておきます。こだわりのない人はこれで大丈夫だと思います。

$ sudo vim /etc/xrdp/xrdp.ini

listenするアドレスとポート、使用するセッションの形式を弄れば後はデフォルトのままで大丈夫です。

[Globals]
; xrdp.ini file version number
ini_version=1

; fork a new process for each incoming connection
fork=true

; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
; ALL specified interfaces must be UP when xrdp starts, otherwise xrdp will fail to start
;
; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://<any ipv4 format addr>:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://<cid>:<port>
port=tcp://0.0.0.0:3389

この辺はデフォルトのままなので中略

;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
#[Xorg]
#name=Xorg
#lib=libxup.so
#username=ask
#password=ask
#ip=127.0.0.1
#port=-1
#code=20

#[Xvnc]
#name=Xvnc
#lib=libvnc.so
#username=ask
#password=ask
#ip=127.0.0.1
#port=-1
#xserverbpp=24
#delay_ms=2000
; Disable requested encodings to support buggy VNC servers
; (1 = ExtendedDesktopSize)
#disabled_encodings_mask=0


[vnc-any]
name=vnc-any
lib=libvnc.dylib
ip=127.0.0.1
port=5900
username=ask
password=ask
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000

#[neutrinordp-any]
#name=neutrinordp-any
#lib=libxrdpneutrinordp.so
#ip=ask
#port=ask3389
#username=ask
#password=ask

中略

起動して接続

以下のコマンドで起動します。自動で起動するわけではないので、ブートしたときに起動してほしい人は、以下のコマンドが実行されるようにすればいいと思います。

$ sudo /usr/local/sbin/xrdp

一応ログのパスも

$ sudo cat /var/log/xrdp.log

起動したら、接続してみましょう。IPアドレスを指定するだけで接続できると思います。
また初めに以下の画像のような画面が現れるので、usernameはMacのユーザー名、
passwordはユーザーのパスワードではなく、先ほどVNCの有効化の時に決めたパスワードを入れてください。

image.png

後はOKを押せば、Macの画面が表示されると思います。

お疲れ様でした!

まとめ

案の定苦労したので、メモして公開してみました。
結構怪しげな手順なので、動いた報告、動かなかった報告、こうすれば動いたよ報告、お待ちしております。
個人的に知りたい情報はディスプレイをつないでいない状態で、解像度を変更する方法と、最初のVNCの部分を省略する方法だったりします。

おまけ 4K出力したい

自分はふだん4K環境で作業することが多いので、以下のようなダミーディスプレイ機器を買って使用してます。

"https://www.amazon.co.jp/gp/product/B07SLHPYYQ/"

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?