はじめに (対象読者・この記事でわかること)
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:現在の状態を確認
Bashxrandr --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 を例に)。
Bashcvt 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 として保存し、起動時に実行します。
Bashsudo 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"
実行権限を付与
Bashsudo 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 カーネルパラメータで解像度を固定するテクニック」について掘り下げる予定です。
参考資料
- Ubuntu Official Wiki: Xorg Resolution
- Arch Linux Wiki: xrandr (日本語訳)
- 「Linux デスクトップカスタマイズ入門」(技術評論社、2023)
