<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ubuntu | Engineer Ryo Blog</title>
	<atom:link href="https://engineer-ryo-blog.com/category/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>https://engineer-ryo-blog.com</link>
	<description></description>
	<lastBuildDate>Sat, 22 Aug 2026 10:49:38 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://engineer-ryo-blog.com/wp-content/uploads/2022/11/cropped-site-icon-1-32x32.jpg</url>
	<title>Ubuntu | Engineer Ryo Blog</title>
	<link>https://engineer-ryo-blog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>再起動したらカーネルパニック。原因はNVIDIAドライバのビルド失敗でした&#8230;</title>
		<link>https://engineer-ryo-blog.com/2026/08/22/vma-lock-offset-error/</link>
					<comments>https://engineer-ryo-blog.com/2026/08/22/vma-lock-offset-error/#respond</comments>
		
		<dc:creator><![CDATA[ryo]]></dc:creator>
		<pubDate>Sat, 22 Aug 2026 10:39:36 +0000</pubDate>
				<category><![CDATA[Ubuntu]]></category>
		<guid isPermaLink="false">https://engineer-ryo-blog.com/?p=259</guid>

					<description><![CDATA[ある日、いつものように再起動したら起動しませんでした。カーネルパニックです&#8230; (数年ぶり) そのまま固まってしまったので、電源を落として GRUB のメニューから一つ前の 6.17 系カーネルを選んだところ、 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ある日、いつものように再起動したら起動しませんでした。カーネルパニックです&#8230; (数年ぶり)</p>



<p class="wp-block-paragraph">そのまま固まってしまったので、電源を落として GRUB のメニューから一つ前の 6.17 系カーネルを選んだところ、あっさり起動しました。パニックしたのはたぶん 7.0.0-28 だったと思うのですが、慌てていたので画面を控えておらず、ここは記憶が曖昧です。</p>



<p class="wp-block-paragraph">何度か試してみましたが、7.0系を選ぶと毎回パニック、6.17を選ぶと毎回ちゃんと起動する、という具合にきれいに再現しました。たまたま一度コケただけならまだしも、これでは新しいカーネルが完全に使い物になりません。逆に言えば、まぐれや気まぐれな不具合ではなく、原因がはっきり存在するということでもあります。</p>



<p class="wp-block-paragraph">とりあえず生きているカーネルで起動できたので、腰を据えて原因を追うことにしました。結論から言うと、<strong>NVIDIAドライバのカーネルモジュールがビルドできず、その巻き添えでカーネルのインストールが中途半端なまま放置されていた</strong>のが原因でした。</p>



<p class="wp-block-paragraph">環境は Ubuntu 24.04、GPUはRTX 2060とRTX 3060の2枚挿しです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">aptが壊れていた</a></li><li><a href="#toc2" tabindex="0">先に結論</a></li><li><a href="#toc3" tabindex="0">何が起きていたのか</a></li><li><a href="#toc4" tabindex="0">590は既に終わっていた</a></li><li><a href="#toc5" tabindex="0">次に同じことを起こさないために</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">aptが壊れていた</span></h2>



<p class="wp-block-paragraph">6.17で起動して <code>apt</code> を叩いたら、見慣れないエラーが流れてきました。</p>



<pre class="wp-block-code"><code>Error! Bad return status for module build on kernel: 7.0.0-30-generic (x86_64)
dkms autoinstall on 7.0.0-30/x86_64 failed for nvidia(10)
dpkg: パッケージ linux-image-7.0.0-30-generic の処理中にエラーが発生しました (--configure):
E: Sub-process /usr/bin/dpkg returned an error code (1)
</code></pre>



<p class="wp-block-paragraph">これ以降、何をインストールしようとしても同じところで止まります。しかも処理中にエラーが出ていたパッケージの一覧に、パニックした 7.0.0-28 と、その次の 7.0.0-30 が両方並んでいました。</p>



<p class="wp-block-paragraph">つまり僕が気づいていなかっただけで、<strong>カーネルのインストールはずっと前から失敗し続けていた</strong>わけです。エラーは <code>apt upgrade</code> の出力の中を流れていったはずなんですが、完全に見逃していました。再起動して初めて気づいたという。</p>



<p class="wp-block-paragraph">パニックの直接の原因は、たぶんカーネルの設定が完了しなかったせいで initramfs やモジュール周りが不完全なまま残っていたことだと思います。ここは画面を控えていないので断定はできませんが、少なくとも「起動に必要な処理が最後まで終わっていないカーネル」で起動しようとしていたのは確かです。</p>



<h2 class="wp-block-heading"><span id="toc2">先に結論</span></h2>



<p class="wp-block-paragraph">同じところで詰まった人向けに、直し方を先に書いておきます。</p>



<pre class="wp-block-code"><code># 1. 詰まりの原因になっているDKMSを外す
sudo apt purge nvidia-dkms-590

# 2. 保留されていた設定を完了させる
sudo dpkg --configure -a
sudo apt --fix-broken install

# 3. 新しいドライバを入れる
sudo ubuntu-drivers install nvidia:610
</code></pre>



<p class="wp-block-paragraph"><code>apt purge</code> が処理の冒頭で同じエラーを出して止まる場合は、dpkgで直接引き剥がします。</p>



<pre class="wp-block-code"><code>sudo dpkg --purge --force-depends nvidia-dkms-590
sudo dpkg --configure -a
</code></pre>



<p class="wp-block-paragraph">ポイントは、<strong>ドライバのバージョンを上げるしかない</strong>ということです。設定をいじって直る類のものではありませんでした。理由は以下。</p>



<h2 class="wp-block-heading"><span id="toc3">何が起きていたのか</span></h2>



<p class="wp-block-paragraph">まず <code>make.log</code> を見ました。DKMSは失敗の詳細をここにしか書いてくれません。</p>



<pre class="wp-block-code"><code>sudo tail -n 50 /var/lib/dkms/nvidia/590.48.01/build/make.log
</code></pre>



<p class="wp-block-paragraph">決定的だったのがこの行です。</p>



<pre class="wp-block-code"><code>nvidia/nv-mmap.c:928:42: error: ‘VMA_LOCK_OFFSET’ undeclared (first use in this function);
                          did you mean ‘VGA_CRTC_OFFSET’?
  928 |  detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &amp;vma-&gt;vm_refcnt);
</code></pre>



<p class="wp-block-paragraph">カーネル7.0でper-VMAロックまわりの実装が変わり、<code>VMA_LOCK_OFFSET</code> が廃止されていました。NVIDIAドライバ側は古い前提のままなので、コンパイルが通らないというわけです。ヘッダもgccも揃っているし、Secure Bootも無関係。純粋にバージョンの非互換でした。</p>



<p class="wp-block-paragraph">連鎖を整理するとこうなります。</p>



<ol class="wp-block-list">
<li>HWEカーネルが6.17系から7.0系に切り替わった</li>



<li>新カーネルのpostinstがDKMSを呼び、NVIDIAモジュールをビルドしようとする</li>



<li>API変更でビルドが落ちる</li>



<li><code>linux-image-7.0.0-XX-generic</code> の設定が失敗する</li>



<li>dpkgが中途半端な状態で止まり、以降のaptが全部巻き添えになる</li>



<li>その状態で7.0系を選んで起動 → 毎回カーネルパニック ← イマココ</li>
</ol>



<p class="wp-block-paragraph">設定が完了していないカーネルは、何度起動し直したところで完了しません。毎回同じところでコケていたのはそういうことでした。</p>



<h2 class="wp-block-heading"><span id="toc4">590は既に終わっていた</span></h2>



<p class="wp-block-paragraph">じゃあどのバージョンに上げればいいのか。ここで <code>apt-cache policy</code> が効きました。</p>



<pre class="wp-block-code"><code>$ apt-cache policy nvidia-dkms-590
nvidia-dkms-590:
  インストールされているバージョン: 590.48.01-0ubuntu0.24.04.4
  候補:               590.48.01-0ubuntu0.24.04.5
</code></pre>



<p class="wp-block-paragraph">新しい <code>.5</code> があるじゃないか、と思って中身を調べたら、変更内容がこれでした。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Transition the 590 driver to 595 (LP: #2146602)</strong></p>
</blockquote>



<p class="wp-block-paragraph"><code>.5</code> は中身のあるアップデートではなく、<strong>595へ移行させるためのパッケージ</strong>でした。590はUbuntu側で既に終息扱いだったんですね。だから <code>ubuntu-drivers list</code> の選択肢にも590は出てきませんし、カーネル7.0対応のパッチも当たらない。590を直す道はそもそも存在しなかった、というオチです。</p>



<p class="wp-block-paragraph">移行先を決めるときは、ビルド済みモジュールの有無を見ると確実です。</p>



<pre class="wp-block-code"><code>$ apt-cache policy linux-modules-nvidia-610-generic-hwe-24.04
  候補:               7.0.0-30.30~24.04.1
</code></pre>



<p class="wp-block-paragraph">候補のバージョンが <code>7.0.0-30</code> になっています。これは「カーネル7.0.0-30用にビルド済み・署名済みのモジュールが実在する」という直接の証拠なので、対応状況を推測しなくて済みます。</p>



<p class="wp-block-paragraph">僕の場合は最終的に595.84に着地しましたが、両方のカーネル向けにビルドが通ったので問題なしとしました。</p>



<pre class="wp-block-code"><code>$ dkms status
nvidia/595.84, 6.17.0-35-generic, x86_64: installed
nvidia/595.84, 7.0.0-30-generic, x86_64: installed
</code></pre>



<p class="wp-block-paragraph">この状態で再起動したら、あれだけ毎回パニックしていた7.0系が何事もなかったように立ち上がりました。<code>nvidia-smi</code> もGPU2枚をきちんと認識してくれています。</p>



<h2 class="wp-block-heading"><span id="toc5">次に同じことを起こさないために</span></h2>



<p class="wp-block-paragraph">今回の構成はDKMS方式なので、次にカーネルが上がるときも同じようにビルドが走ります。595系が終息扱いになった頃に、また同じことが起きる可能性があるわけです。</p>



<p class="wp-block-paragraph">予防したいなら、<code>linux-modules-nvidia-610-generic-hwe-24.04</code> 形式のビルド済みモジュールに移しておく手があります。Canonicalがカーネルに合わせてビルドしたものが降ってくるので、手元でのビルド失敗という事故が構造的になくなります。Secure Boot環境でも署名済みなのでMOK登録が要らないのも地味に嬉しいところ。</p>



<p class="wp-block-paragraph">とはいえ今は安定して動いているので、僕は次のカーネル更新のタイミングで移そうと思っています。</p>



<h2 class="wp-block-heading"><span id="toc6">まとめ</span></h2>



<ul class="wp-block-list">
<li>カーネルパニックの原因が、実は数日前の <code>apt upgrade</code> の失敗だったというパターンがある</li>



<li>DKMSのビルド失敗は <code>/var/lib/dkms/&lt;name>/&lt;version>/build/make.log</code> を見ないと原因が分からない</li>



<li><code>VMA_LOCK_OFFSET</code> のエラーはカーネル7.0のAPI変更が原因。設定では直らないのでドライバを上げるしかない</li>



<li>移行先を選ぶときは <code>apt-cache policy linux-modules-nvidia-XXX-generic-hwe-24.04</code> の候補バージョンを見ると確実</li>
</ul>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">HWEカーネルはこれからも上がっていくので、同じ踏み方をする人はぼちぼち出てくる気がします。誰かの役に立てば嬉しいです！</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://engineer-ryo-blog.com/2026/08/22/vma-lock-offset-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
