UbuntuにChrome Remote Desktopをインストールする
Windowsマシンを新調したので、これまで使用していたWindowsマシンをUbuntuマシンとして使用することにした。
Webアプリ開発やスマホアプリ開発のために使用する予定だが、自宅にいないときでもUbuntuマシンに接続できたら便利だと思い、Chrome Remote DesktopをインストールしてWindowsマシンから接続できるようにした。
Chrome Remote Desktopの設定に苦労したため、備忘録として記録する。
環境
ホスト端末: Ubuntu 20.04 LTS
クライアント端末: Windows 10
手順
手順1: WindowsにChrome Remote Desktopをインストールする
https://remotedesktop.google.com/accessにアクセスして、Chromeアプリをインストールする。
クライアント端末の設定はこれだけ。
手順2: UbuntuにChrome Remote Desktopをインストールする
https://remotedesktop.google.com/accessにアクセスして、Debianパッケージをインストールする。
記事作成時点のパッケージにはバグがあるらしく、そのままではUbuntuをホスト端末として登録できない。
$ mkdir ~/.config/chrome-remote-desktop
としてconfigフォルダを作成すると、この問題は解決する。
手順3: Ubuntuの自動ログインを有効にする
外出先からUbuntuに接続することを前提としているため、Wake on LANでUbuntuを起動後、デスクトップ画面まで自動で遷移できるようにしておくと便利。
なお、後述する手順によりUbuntuとWindowsで同一セッションを使用する場合は、自動ログインの有効化は必須(要検証)。
ここでUbuntuを再起動する。
手順4: UbuntuとWindowsで同一セッションを使用するよう設定する
手順2まで行えばChrome Remote Desktopは利用可能であるが、WindowsからUbuntuに接続すると新しい仮想デスクトップが生成されてしまう。
これでは自宅で行った作業の続きを外出先で行いたい場合に不便。
Chrome Remote Desktopのソースコードを編集することで、UbuntuとWindowsで同一セッションを使用することができる。
手順4.1: Chrome Remote Desktopを停止する
$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop
手順4.2: Chrome Remote Desktopのソースコードを編集する
$ sudo gedit /opt/google/chrome-remote-desktop/chrome-remote-desktop
としてソースコードを編集。
まず、
FIRST_X_DISPLAY_NUMBER = 20
を
FIRST_X_DISPLAY_NUMBER = 0
に修正。
次に、
while os.path.exists(X_LOCK_FILE_TEMPLATE % display): display += 1
を
# while os.path.exists(X_LOCK_FILE_TEMPLATE % display): # display += 1
としてコメントアウト。
最後に、
def launch_session(self, x_args): self._init_child_env() self._setup_pulseaudio() self._setup_gnubby() self._launch_x_server(x_args) if not self._launch_pre_session(): # If there was no pre-session script, launch the session immediately. self.launch_x_session()
を
def launch_session(self, x_args): self._init_child_env() self._setup_pulseaudio() self._setup_gnubby() # self._launch_x_server(x_args) # if not self._launch_pre_session(): # If there was no pre-session script, launch the session immediately. # self.launch_x_session() display = self.get_unused_display_number() self.child_env[“DISPLAY”] = “:%d” % display
に修正。
手順4.3: Chrome Remote Desktopを起動する
$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --start
その後Ubuntuをホスト端末として登録する。
まとめ
自宅/外出先を問わずWindowsからUbuntuに接続できるようになった。
Vue.js 3系の参考書を購入したので、早速Ubuntuでお勉強したい。
※はてなブログ、難しい…。