2026.04.06
GPU ノート PC に Ubuntu 22.04 を入れたら画面が映らなくなった時の備忘録
はじめに
グループ研究開発本部、AI研究開発室のY.Tです。
NVIDIA GPU 搭載の Galleria ノート PC に Ubuntu 22.04 をクリーンインストールし、NVIDIA ドライバを入れて動いたなーと思って作業してPower Off。
次の日に電源を入れたら画面が真っ暗になりました。
あるあるですね。
またやらかした時のために復旧の方法と、復旧の過程で X11・Wayland・GDM3 といった Linux のディスプレイスタックについて調べたところをまとめます。
セットアップ
環境
- ノート PC(NVIDIA GPU RTX5090搭載)
- Ubuntu 22.04 LTS (Jammy Jellyfish)
- NVIDIA driver 580-open
Ubuntu のインストール
今回はWindows が入った状態の ノート PC に Ubuntu 22.04 をクリーンインストールしました。インストーラーで「既存 OS を削除」を選ぶと Windows パーティションは消えるので、デュアルブートしたい人は注意。
- Ubuntu 22.04 のインストール USB を作成して挿す。
- 起動時に F2 連打で BIOS に入り、BOOT Menu から USB を選択。[Try or Install Ubuntu] を選ぶ。
- 「既にある OS は削除し Ubuntu をインストール」を選択。WiFi 接続、キーボードレイアウト (Japanese / US) を設定。
- インストール完了後、設定から省電力モード・自動スリープをすべてオフにしておく。
NVIDIA ドライバの導入
システムの準備
パッケージ更新、ビルドツール導入、nouveau の blacklist 登録を行います。nouveau は Linux にデフォルトで入っている NVIDIA 向け OSS ドライバで、プロプライエタリドライバと競合するため事前に無効化する必要があります(詳細は後述)。
# パッケージ更新 sudo apt update && sudo apt upgrade -y # ビルドツールと DKMS sudo apt install build-essential dkms # nouveau を blacklist sudo sh -c "echo 'blacklist nouveau options nouveau modeset=0' > /etc/modprobe.d/blacklist-nouveau.conf" # initramfs 再構築 → 再起動 sudo update-initramfs -u sudo reboot
ドライバのインストール
# 利用可能なドライバを確認 ubuntu-drivers devices # universe リポジトリの追加(通常は有効済み) sudo add-apt-repository universe sudo apt update # NVIDIA driver 580-open のインストール sudo apt install nvidia-driver-580-open # 再起動 sudo reboot
終わり!
で、画面が消えてました。
画面は真っ暗。カーソルが点滅しているだけで、ログイン画面が出ません。
OS 自体は起動しているはずで、ネットワークを設定していたのでなんならSSHでターミナルに入れました。つまり画面表示に関わる何かが壊れている。
復旧
1. とりあえずTTY に入る
Ctrl + Alt + F2(機種により Fn 併用)でテキスト端末に切り替え、ログイン。TTY が出ない場合は SSH。
2. Wayland を無効化する
sudo vim /etc/gdm3/custom.conf
[daemon] セクション内の WaylandEnable=false を有効化(# を外す。なければ追記)。
3. デフォルトターゲットを確認
systemctl get-default
multi-user.target の場合:
sudo systemctl set-default graphical.target
4. GDM3 を再起動
sudo systemctl restart gdm3
(5. それでもダメなら: display-manager.service のリンク修復)
sudo ln -sf /lib/systemd/system/gdm.service /etc/systemd/system/display-manager.service sudo systemctl restart gdm3
動作確認:
echo $XDG_SESSION_TYPE # → "x11" になっているはず nvidia-smi # GPU名・ドライバver・CUDA verが出ればOK lsmod | grep nouveau # 出力なし = 正常 systemctl status gdm3 # active (running)
ログイン画面が復活!今回はこんな感じでことなきを得ました。
なぜ直ったのか
今後のために、Linux のディスプレイスタック周りを整理しつつ説明しようと思います。
ディスプレイスタックの全体像
まず、Ubuntu で画面が表示されるまでには、カーネルから GUI まで、ざっくり書くと以下のようなスタックになっています。
単に画面が映らないと言っても、このどこで、どう壊れているかが状況が変わってくるわけです。
┌─────────────────────────────────────────────────────┐ │ GUI アプリケーション (Firefox, ターミナル, etc.) │ ├─────────────────────────────────────────────────────┤ │ ウィジェットツールキット (GTK, Qt) │ ├─────────────────────────────────────────────────────┤ │ ディスプレイサーバー / コンポジター │ │ X11 の場合: Xorg Server + Window Manager │ │ Wayland の場合: Mutter (GNOME Compositor) │ ├─────────────────────────────────────────────────────┤ │ Display Manager (GDM3) │ ├─────────────────────────────────────────────────────┤ │ GPU ドライバ — nouveau / nvidia │ ├─────────────────────────────────────────────────────┤ │ Linux Kernel — DRM / KMS / TTY │ └─────────────────────────────────────────────────────┘
TTY
Linux カーネルは GUI とは独立に複数の仮想端末 (VT) を提供しています。GUI は通常 VT1 を使い、VT2〜VT6 はテキストモードのログインプロンプトとしてカーネルが直接管理します。
VT1 ← GDM3 / Xorg / Wayland (GUI) ← 死 VT2 ← テキストログイン (Ctrl+Alt+F2) ← こちらは無事 VT3 ← テキストログイン (Ctrl+Alt+F3) : :
GUIが壊れていてもカーネルの VT はだいたい生きてるので、とりあえずTTY 経由で操作できるかを確認するのが良いですね。
X11 (Xorg)
1984年に MIT で生まれたディスプレイプロトコルです。「リモートサーバー上のアプリの画面を手元に転送する」前提のクライアント・サーバーモデルで、ユーザーの手元の PC が「X Server」(実装が Xorg)、アプリが「X Client」。Web とは逆の関係になります。
40年の歴史で拡張が積み重なり、セキュリティ(任意アプリが他アプリのキー入力を傍受可能)、画面テアリング、HiDPI 対応などに根本的な問題を抱えています。2024年にメンテナンスモードに入りましたが、現役です。
Wayland
2008年に X.Org 開発者の Kristian Høgsberg が開始した X11 の後継プロトコルです。ディスプレイサーバー・ウィンドウマネージャー・コンポジターが一体化しています。各アプリが自分のバッファに描画し、コンポジターに渡す。仲介者がいない分、レイテンシが低くセキュリティも改善されています。
X11 アプリを Wayland 上で動かすための互換レイヤーとして XWayland があるので、普段はユーザーは気にしなくてよいものではあります。
Ubuntu 22.04 バージョン由来の問題
Ubuntu のバージョン由来の問題が起こることもあります。
Ubuntu 22.04 はリリース直前まで NVIDIA 環境でも Wayland をデフォルトにする予定でしたが、リリース直後に NVIDIA ドライバの描画バグ(動きのあるオブジェクトがダブって見える)が見つかり、NVIDIA の要請でデフォルトが Xorg に戻されました。
ただし、この修正は gdm3 パッケージのアップデートで配布されたため、タイミングによっては Wayland のままの状態がありえます。今回の黒画面はこれが原因だった可能性が高く、WaylandEnable=false で Xorg を強制することで回避しています。
なお、Ubuntu 24.10 以降では NVIDIA 5xx ドライバ系列で Wayland がデフォルトに戻る方向で進んでおり、NVIDIA 495 での GBM サポート追加以降、互換性は大幅に改善されているので、Ubuntu 24.10 なら普通に動いたかもしれません。(未検証)
GDM3
GDM3 (GNOME Display Manager) はログイン画面を表示し、認証後にデスクトップセッションを起動するサービスです。systemd の display-manager.service として管理されていて、graphical.target が有効な場合に起動します。
systemctl get-default が multi-user.target を返す場合、systemd は GUI ターゲットに到達しないので GDM3 は起動しません。graphical.target に戻す必要があります。
GDM3 は起動時に GPU 構成を検査し Wayland/Xorg を自動判定します。/etc/gdm3/custom.conf の WaylandEnable=false はこの判定を上書きする設定です。
# /etc/gdm3/custom.conf [daemon] WaylandEnable=false # Xorg セッションを強制
nouveau を blacklist ?
前提となる手順ではしれっとnouveau を blacklistしてました。
nouveau はリバースエンジニアリングで開発された NVIDIA 向け OSS ドライバです。基本的なデスクトップ表示は可能ですが CUDA 等には非対応。NVIDIA プロプライエタリドライバと同じハードウェアを制御するため同時ロードで競合します。blacklist はこの競合防止のために必要でした。
nvidia-driver-580-open について補足すると、近年 NVIDIA はカーネルモジュールを OSS (MIT/GPL) で公開する方針に転換しており、このパッケージはそのオープンカーネルモジュール版です。Turing 世代以降の GPU で推奨されています。ユーザースペース側(CUDA ランタイム等)はプロプライエタリのままです。
まとめ
今回はこの辺で直りました。
- TTY (Ctrl+Alt+F2): カーネルの仮想端末は GUI とは独立して動いているので、画面が死んでもここから操作できる
- WaylandEnable=false: GDM3 のセッション選択を上書きし、NVIDIA の Wayland 互換性問題を回避
- set-default graphical.target: systemd のターゲットが multi-user.target だと Display Manager が起動しない
- systemctl restart gdm3: GDM3 は systemd サービスなので、設定変更後は再起動で反映
- display-manager.service のリンク修復: このシンボリックリンクがないと systemd が Display Manager を見つけられない
- nouveau の blacklist: OSS ドライバとプロプライエタリドライバの競合防止
GPUノートとかだと、画面周りはたまにやらかしますよね。gdm3が単に起動してないだけだったりもするのですが、ディスプレイスタック周りの競合だと少し厄介でした。
GPUの型番とかでも状況が変わったりするのですが、改めて振り返ると、Ubuntu 24.10 では特に気にしなくても問題なさそうでもあり、新しいものをちゃんと使えという話かもしれません。Ubuntu 22.04 の標準サポートも近く切れるので…
最後に
グループ研究開発本部 AI研究開発室では、データサイエンティスト/機械学習エンジニアを募集しています。ビッグデータの解析業務などAI研究開発室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。皆さんのご応募をお待ちしています。
グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。
Follow @GMO_RD


