モジュールを先に読み込ませる gpu unlock の Ubuntu インストール
インストールは順序の問題がすべてです。gpu-unlock の Ubuntu では、パッケージの作り方も関わります。gpu_unlock は initramfs の中、nvidia より前に置く必要があります。さらにカーネルコマンドラインで読み込みを指定します。以下では、1つのディストリビューションでこの問題を扱います。
始める前の gpu unlock の3つの確認
- カード
カードは対応リストにあるか
これは PCIデバイスID のリストで、型番のリストではありません。何かをビルドする前に、自分のカードを確認してください。
- -110
物理的に電源を切れるか
失敗すると、カードは完全に電源が切れるまで応答しなくなることがあります。再起動では足りません。これが -110 のケースです。
- 署名
Secure Boot はどうするか
署名のないモジュールはカーネルを汚染します。署名を必須にするマシンは、このモジュールを拒否します。MOK で自分で署名すれば通ります。
Secure Boot を有効にした Fedora 43 で、MOK 署名により動作したという報告が issue #173 にあります。Secure Boot を切る方法もありますが、これは別の判断です。意図して選ぶ価値があります。 [公式 README]
gpu unlock のインストール全体を4つの手順で
パッケージをビルドしてインストールする
make install は /etc/os-release を読み、適切なパッケージ形式を選びます。make install-arch / install-deb / install-rpm のように指定もできます。drop-in を initramfs の生成ツールに渡す
対象は4つ、置き場所も4つです。ファイルは、自分の生成ツールが探す場所に置きます。README の例が想定した場所ではありません。カーネルコマンドラインで有効にする
gpu_unlock.targets=all、または個別の PCI アドレスを指定します。これがないと何も起きません。モジュールがイメージ内にあるか、次に実行されたかを確認する
2つのコマンドは、2つの別の問いに答えます。順序が重要です。イメージにないモジュールは、実行されていません。
gpu unlock のインストール経路は4つ
このプロジェクトは、主要3ファミリーと Unraid 向けのパッケージを用意しています。/etc/os-release を読む振り分けスクリプトもあります。
# reads ID / ID_LIKE and picks the right installer
make install
# or name it
make install-arch # makepkg
make install-deb # dpkg-buildpackage + apt
make install-rpm # rpmbuild + dnf
# build without installing
make arch / make deb / make rpm- Unraid は例外です。
makeの経路がなく、Releases にあるのは Unraid プラグインのパッケージだけです。 - AUR も一覧にありません。パッケージはまだオープンの pull request #223 です。
どの経路でも、ファームウェアを作るのはビルドです。
- 入力は NVIDIA と CachyOS から取得し、
~/.cache/gpu-unlock/inputsに置かれます。 - 入力はモジュールのディレクトリとパッケージに組み込まれます。
make inputsで更新できます。INPUTS=で別の場所を指せます。- ソースパッケージにはファームウェアが含まれません。コピーした blob が効かない理由を調べるときに、この違いが効いてきます。
initramfs の生成ツールで gpu unlock はどう変わるか
対象は4つ、drop-in の場所も4つです。そのうち1つは、予想した場所にありません。
- プロジェクトに記載された drop-in のパスです。ある生成ツール向けに書いたファイルは、別の生成ツールでは何もしません。
mkinitcpio
- drop-in ファイル
- /etc/mkinitcpio.conf.d/zz-gpu-unlock.conf
- 主なディストリビューション
- Arch, CachyOS, EndeavourOS
initramfs-tools
- drop-in ファイル
- /usr/share/initramfs-tools/modules.d/gpu-unlock.conf
- 主なディストリビューション
- Debian、Ubuntu 25.04 まで
dracut
- drop-in ファイル
- /usr/lib/dracut/dracut.conf.d/gpu-unlock.conf
- 主なディストリビューション
- Fedora、RHEL、openSUSE、Ubuntu 25.10 と 26.04
UKI / 自動生成エントリ
- drop-in ファイル
- /etc/kernel/cmdline, then rebuild
- 主なディストリビューション
- 統一カーネルイメージ(UKI)で起動するインストール
罠は3行目にあります。gpu-unlock の Ubuntu インストールが、何も言わずに失敗する最も多い原因です。gpu_unlock の Debian パッケージが書くのは initramfs-tools 向けの drop-in だけです。Ubuntu 25.10 や 26.04 は起動が dracut 経由なので、モジュールはイメージに入りません。
インストール時にエラーは出ません。ログに gpu_unlock の行がまったくない状態が、そのサインです。手動の drop-in は issue #54 にあり、インストールコマンド1つで済みます。
Arch で人を困らせる生成ツールの細かい点が、もう1つあります。mkinitcpio -c <config> と、_config を含む preset ファイルは、drop-in を完全に無視します。preset がそうなっていると、zz-gpu-unlock.conf に何を書いてもモジュールは入りません。
gpu unlock を有効にするカーネルパラメータ
gpu-unlock の Ubuntu インストールは、対象のカードを指定するまで何もしません。これは意図的な設計です。このモジュールは、既定では何もしないのが前提のマシンにも入るからです。
gpu_unlock.targets=all # every supported, unbound card
gpu_unlock.targets=0000:21:00.0 # one card
gpu_unlock.targets=0000:21:00.0,0000:22:00.0 # two cards- アドレスは
lspci -Dの完全な名前です。GPU の番号や、画面を駆動しているカードとは関係ありません。 - 対応リストにない指定は、ログに残してスキップします。
allと明示アドレスを混ぜた場合も同じです。 - サスペンドとレジュームの後の再実行は既定で有効です。
gpu_unlock.resume=0、または/sys/module/gpu_unlock/parameters/resumeに0を書くと無効になります。再実行が失敗の原因になっているマシン向けです。
パラメータの書き方はブートローダーで変わります。この違いは見た目以上に重要です。実行中のセッションに追加したパラメータは、次の起動には効きません。
# Debian / Ubuntu / Mint -> /etc/default/grub, then update-grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash gpu_unlock.targets=all"
# Arch / CachyOS
sudo grub-mkconfig -o /boot/grub/grub.cfg
# Fedora / RHEL
sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all"
# systemd-boot: edit the options line (bootctl status shows the path)
# UKI: write /etc/kernel/cmdline, then rebuild信じる前に gpu unlock を確認する
gpu-unlock の Ubuntu インストールは、2つの確認で検証します。まずモジュールがイメージ内にあるか、次に実際に実行されたかです。
lsinitramfs /boot/initrd.img-$(uname -r) | grep gpu_unlock
journalctl -k -b | grep gpu_unlockインストールの問題
1つ目のコマンドが何も出力しない
インストールの問題です。モジュールがイメージにありません。ほかを調べる前に、drop-in のパスを直して再ビルドしてください。タイミングの問題
1つ目がパスを出し、2つ目が何も出さない
タイミングの問題です。モジュールはありますが、実行されていません。-16 のページを参照してください。正常
正常な起動では gpu_unlock: unlocked の後に連鎖がログに出る
claim、layout、dma、gfw、fwsec、publish、pass、host、flr、handoff ret=0 と続きます。この連鎖がどこで止まるかが診断になります。
gpu unlock を3つの手順でロールバックする
カーネルコマンドラインからパラメータを外す
gpu_unlock.targets がモジュールを有効にしている指定です。ほかを変える必要はありません。ブートローダーの設定を作り直す
自分の起動方法に合わせて、update-grub、grub-mkconfig、grubby、UKI の再ビルドのいずれかを使います。コールドブート
カードは変更していないので、これで足ります。パッケージも消したいときは、ファイルを削除せずアンインストールしてください。モジュールと drop-in はパッケージが管理しています。
例外は、失敗した実行でファームウェアが落ち着かないまま残ったマシンです。その場合、モジュールは次の電源断まで DMA バッファを保持します。同じ状態で再起動せず、シャットダウンして電源を抜き、もう一度起動してください。
カーネル更新後に gpu unlock を再ビルドする
gpu-unlock の Ubuntu マシンでは、カーネルか initramfs を変えたら再ビルドが必要です。そうしないと、モジュールはビルドしたカーネルと一緒に消えます。
initramfs-toolsと dracut では、パッケージを入れておけば hook が新しいカーネルを処理します。- mkinitcpio では preset 次第です。前述の
_configのケースがまた当てはまります。
症状はエラーメッセージではありません。カードがロックされたままになり、起動ログに gpu_unlock: unlocked の行がないことだけが手がかりです。
バージョン、コミット、この確認の日付は、このサイトのすべてのページにあります。 [公式 README] が最新の手順を示しており、上のパスはそれに照らして確認しました。
次に読む: モジュールがイメージにあり、ログに gpu_unlock の行がまだない場合は、-16 のページです。ログに -2 が出る場合は、ファームウェアが入っていません。
確認日 バージョン 2.0.0コミット 1fc6d62