Ubuntu22.04でWindows同様Chromeリモートデスクトップを使う…黒い画面にログインループ

Ubuntu・iOS
スポンサーリンク

WindowsでChromeリモートデスクトップを使った時と同じノリでUbuntuでも使ってみたところ、黒い画面が出るわログインできなくなるわ…。ハマったのでメモしときます。

スポンサーリンク

Windowsからインターネット経由でUnuntuをリモート操作したい

UbuntuをWindows11のPCから操作できるようにxrdpを使ってみましたが、インターネット経由では使えないようです。現状、インターネット経由でUbuntuリモート接続するにはChromリモートデスクトップを使うしかなさそうです。

ChromリモートデスクトップはWindows同士でのリモート操作で使ったことがあったので、同じ様に使えることを期待してまずインストールしてみました。

なお、Chromeリモートデスクトップを使うためにはGoogleアカウントでログインする必要があります。Googleアカウントがある前提で説明します。

Ubuntu(ホスト)側の設定

Google Chromeインストール

UbuntuにChromeをインストールします。

$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb

ChromeRemoteDesktopインストール準備

以下のコマンドでフォルダを作成します。

$ mkdir ~/.config/chrome-remote-desktop

GoogleRemoteDesktopインストール

以下のサイト(https://remotedesktop.google.com/)より「パソコンにアクセス」を選択します。

Chrome Remote Desktop
Chromeリモートデスクトップリモートアクセスの設定

ダウンロードボタンを押します。Chrome Remote Desktop を Chrome の拡張機能として追加していなければ追加を促されます。「Chromeに追加」を選択します。

Chrome Remote Desktop を Chromeに追加

改めてリモートアクセスの設定(https://remotedesktop.google.com/access)よりダウンロードボタンを選択し、ChromeRemoteDesktopのインストーラーをダウンロードします。

インストーラーを右クリックし「別のアプリケーションで開く」-「ソフトウェアのインストール」を選択しインストールします。

ChromeRemoteDesktopのインストーラーを実行
ChromeRemoteDesktopのインストール

ChromeRemoteDesktopのサイト(https://remotedesktop.google.com/access/)にアクセスし、リモート設定を「オン」にします。

リモートアクセスの設定をオンにする

PC名、PINを設定しChromeリモートデスクトップのインストールは完了です。

同一画面を参照できるように設定変更

この状態でWindowsからUbuntuに接続すると、仮想デスクトップに接続してしまい、真っ黒の画面が表示され何もできません。Ubuntuで見えている画面に接続できるように設定を変更します。

Chrome Remote Desktopを停止

リモートデスクトップを停止します。

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop

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, server_args, backoff_time):
    """Launches process required for session and records the backoff time
    for inhibitors so that process restarts are not attempted again until
    that time has passed."""
    logging.info("Setting up and launching session")
    self._setup_gnubby()
    self._launch_server(server_args)
    if not self._launch_pre_session():
      # If there was no pre-session script, launch the session immediately.
      self.launch_desktop_session()
    self.server_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
                                      backoff_time)
    self.session_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
                                     backoff_time)

【修正後】
  def launch_session(self, server_args, backoff_time):
    """Launches process required for session and records the backoff time
    for inhibitors so that process restarts are not attempted again until
    that time has passed."""
    logging.info("Setting up and launching session")
    self._setup_gnubby()
#    self._launch_server(server_args)
#    if not self._launch_pre_session():
      # If there was no pre-session script, launch the session immediately.
#      self.launch_desktop_session()
    display = self.get_unused_display_number()
    self.child_env["DISPLAY"] = ":%d" % display
    self.server_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
                                      backoff_time)
    self.session_inhibitor.record_started(MINIMUM_PROCESS_LIFETIME,
                                     backoff_time)

保存し、エディターを閉じます。

Chrome Remote Desktopを起動

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --start

Ubuntu on Xorgでログイン

この状態でもWindowsから接続できませんでした。Ubuntuを再起動し、でログインし直します。

以下はログイン画面のイメージです。ログインユーザを選択後、右下の歯車のアイコンを選択して「Ubuntu on xorg」を選んでからログインします。

Ubuntu Xorgでログイン

「設定」でウィンドウズシステムを確認すると”X11″になっています。

ウィンドウシステムがX11だとChromeRemoteDesktopが接続可能

Ubuntu on Xorg にてログインした状態でWindowsからの接続を待ちます。

Windows(クライアント)側から接続

以下のリンクからアクセスします。

Chrome Remote Desktop

接続先のPC(Ubuntu)を選択し、PINを入力すると接続することができました。

トラブル発生

ChromeRemoteDesktopインストール時のnVidiaのエラー

コマンドで ChromeRemoteDesktop をインストールした際、以下のエラーが出ました。ちなみに、私のUbuntuではNVIDIAのグラボGTX1070Tiを使用しています。

$ sudo apt install ~/Downloads/chrome-remote-desktop_current_amd64.deb

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 libnvidia-gl-535 : 破壊: libnvidia-gl-535:i386 (!= 535.54.03-0ubuntu0~gpu22.04.1) しかし、535.146.02-0ubuntu0.22.04.1 はインストールされています
 libnvidia-gl-535:i386 : 破壊: libnvidia-gl-535 (!= 535.146.02-0ubuntu0.22.04.1) しかし、535.54.03-0ubuntu0~gpu22.04.1 はインストールされています
 nvidia-driver-535 : 依存: libnvidia-gl-535 (= 535.146.02-0ubuntu0.22.04.1) しかし、535.54.03-0ubuntu0~gpu22.04.1 はインストールされています
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)。

NVIDIAのドライバーを最新化しコマンドを実行し直したらエラーは解消しました。

$ sudo apt install ~/Downloads/chrome-remote-desktop_current_amd64.deb

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
状態情報を読み取っています... 完了        
注意、'/home/user/Downloads/chrome-remote-desktop_current_amd64.deb' の代わりに 'chrome-remote-desktop' を選択します
chrome-remote-desktop はすでに最新バージョン (121.0.6167.13) です。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 289 個。

同一LANだと接続できない?

同一LANからリモート接続しようとすると、以下の「予想以上に時間がかかっています。」のメッセージが出て接続できないことがありました。

同一LANだと接続できない?

モバイルルーターなど別のインターネット回線からだと接続できました。

その後、同一LANからも接続できたので、ネットワークの状況によるものなのかもしれません。

黒い画面

先述の「同一画面を参照できるように設定変更」を行わないとWindowsから接続した際に真っ黒の画面になります。

ホスト端末(Ubuntu)にログインできない(ログインループ)

ホスト(ubuntu)にログインしようとパスワードを入力するのですが、またログイン画面に戻ってしまいます。ログインループと言われている現象です。

先述の「Ubuntu on Xorgでログイン」では “Ubuntu on Xorg” を選択してログインしていますが、”Ubuntu” を選択した状態ではログインループが発生しログインできませんでした。

“Ubuntu”でログインする場合は、Chromeリモートデスクトップを停止する必要があります。

まず「Ctrl + Alt + F2」でコンソール画面に切り替え、ID,パスワードを入力しログインします。

次に以下のコマンドでChromeリモートデスクトップを停止します。

$ /opt/google/chrome-remote-desktop/chrome-remote-desktop --stop

「Ctrl + Alt + F1」でグラフィカルインターフェースのログイン画面に切り替え、ログインできました。

「設定」でウィンドウズシステムを確認すると”Wayland”になっています。

WaylandではWindowsRemoteDesktopは接続できない

WaylandではWindowsからのChromeリモートデスクトップは接続できませんでした。接続できたとしても黒い画面が表示されすぐ切断されました。

Waylandでログインしないと変更できない設定があるので、その場合は面倒ですがChromeリモートデスクトップを停止してログインする必要があります。

自動ログインの設定…ウィンドウシステムは?

残念ながら Ubuntuのログイン画面はChromeリモートデスクトップからは操作できないため、Ubuntu PCのキーボードを操作しログインする必要があり面倒です。

そこで、UbuntuPCを起動したら自動ログインする設定にしました。

自動ログインを設定する際は”Ubuntu” を選択した状態でログイン(”Wayland”にログイン)する必要があります。(Waylandにログインしないとロック解除できず変更できませんでした。)

先述の「ホスト端末(Ubuntu)にログインできない(ログインループ)」を参考にしてください。

自動ログインを設定

Waylandにログインしてから設定を変更したため、再起動時にもWaylandにログインされて Chromeリモートデスクトップが接続できなくなるのでは?と懸念しましたが、自動ログイン時は”Ubuntu on Xorg” (X11)でログインされていました。

なお、自動ログインやキーリングロック解除については以下のサイトで分りやすく紹介されています。

Ubuntu 22.04 起動時のパスワードとキーリングのロック解除 - アラコキからの Raspberry Pi 電子工作
Raspberry Pi 活用事例集 Ubuntu Desktop 22.04 LTS 起動時のパスワードとキーリングのロック解除   Ubuntu 22.04 の起動には、「ユーザー名」と「パスワード」でのログインや「 … "Ubuntu...

参考メモ

Chromeリモートデスクトップ削除

sudo apt purge chrome-remote-desktop

NVIDIAドライバー削除

sudo apt purge nvidia-*

まとめ

UbuntuにChromeリモートデスクトップで接続する場合、ソースを編集する必要があります。

また、Ubuntu にログインする際には “Ubuntu on Xorg”(X11)でログインする必要があります。

コメント

タイトルとURLをコピーしました