はじめに (対象読者・この記事でわかること)

Live USB(Ubuntu や Linux Mint など)で PC を起動したとき、画面が 800×600 や 1024×768 に固定され、ネイティブ解像度が出ず「狭くて使い物にならない!」とお困りの方は多いはずです。
この記事は、そんな方に向けて「xrandr コマンドで解像度を追加し、USB ブートのたびに自動で復元する方法」を図解付きで解説します。仮想環境は不要で、ターミナルが打てれば OK です。読み終えると、Full HD や 4K モニターを持ち歩いても USB 一発で美しいデスクトップが手に入ります。

前提知識

  • ターミナルでコピー&ペーストができる(Ctrl+Shift+C/V)
  • sudo コマンドの意味を知っている
  • USB メモリに Linux イメージを書き込める(Rufus や Ventoy など)

USB ブートで解像度が出ない理由

Live OS はインストール先のグラフィックドライバを読み込まないため、EDID(モニタの能力情報)を正しく取得できず、安全側の低解像度でフォールバックします。特にノート PC の内蔵ディスプレイや、新しい外部モニタでは頻発します。
「Settings → Displays」に目的の解像度が表示されない場合、手動でモード(解像度+リフレッシュレート)を追加してやる必要があります。

xrandr で解像度を追加・永続化する

以降、Ubuntu 22.04 Live USB 上で動作確認したコマンドを紹介します。ディストリビューションが異なっても流れは同じです。

ステップ1:現在の状態を確認

Bash
xrandr --current

出力例

Screen 0: minimum 8 x 8, current 1024 x 768
HDMI-1 connected primary 1024x768+0+0
   800x600       60.00
   1024x768      60.00*

「1920x1080」などがリストに無ければ追加します。

ステップ2:追加したいモードを計算する

cvt コマンドでモデine を生成します(ここでは 1920x1080 60 Hz を例に)。

Bash
cvt 1920 1080 60

出力例

# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

ステップ3:新しいモードを登録+適用

Bash
# モード作成 xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync # 出力に紐付け(HDMI-1 の場合) xrandr --addmode HDMI-1 "1920x1080_60.00" # 適用 xrandr --output HDMI-1 --mode "1920x1080_60.00"

一瞬画面が点滅し、解像度が切り替わります。GUI の「Settings → Displays」でも新しい解像度が選べるようになります。

ステップ4:USB ブート時に自動で復元する

Live USB は再起動すると変更が消えるため、以下の簡易スクリプトを /usr/local/bin/fix-resolution.sh として保存し、起動時に実行します。

Bash
sudo nano /usr/local/bin/fix-resolution.sh
Bash
#!/bin/bash OUTPUT="HDMI-1" # xrandr で確認した出力名に置換 MODE="1920x1080_60.00" xrandr --newmode "$MODE" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr --addmode "$OUTPUT" "$MODE" xrandr --output "$OUTPUT" --mode "$MODE"

実行権限を付与

Bash
sudo chmod +x /usr/local/bin/fix-resolution.sh

crontab の @reboot で呼ぶか、Live USB の「Startup Applications」に登録すれば完了です。
(永続的な Live USB を作成している場合は、/etc/rc.local や systemd サービス化しても OK)

ハマった点と解決策

  • 「xrandr: cannot find output HDMI-1」
    出力名が異なるか、ドライバが読み込まれていません。xrandr --listmonitors で正確な名前を確認しましょう。

  • 「crtc 0 failed」 エラー
    計算したモデine がモニタに対応していない可能性があります。リフレッシュレートを 50 Hz に下げるか、別の解像度(1600×900 など)を試してください。

  • VirtualBox で USB ブート検証中に解像度が出ない
    VirtualBox の仮想ディスプレイは VESA モードのため、追加モードが使えません。実機で試すか、「VBoxVGA」→「VMSVGA」へ切り替えてみてください。

まとめ

本記事では、Live USB 起動時に限られた解像度で悩まされる問題を、xrandr で新しいモードを追加し、起動スクリプトで永続化する方法を解説しました。

  • xrandr で現在の出力名とモード一覧を確認
  • cvt でモデine を生成し、newmode/addmode/output の 3 コマンドで解像度追加
  • スクリプトを /usr/local/bin に配置、@reboot で自動実行

これでノート PC を持ち歩いても、Live USB を刺せばいつもの美しいデスクトップが即座に使えます。
次回は「Wayland 環境でも同等のことをする方法」や「GRUB カーネルパラメータで解像度を固定するテクニック」について掘り下げる予定です。

参考資料