1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
<!DOCTYPE html>
<html lang="" xml:lang="" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<meta content="pandoc" name="generator"/>
<meta content="width=device-width, initial-scale=1.0, user-scalable=yes" name="viewport"/>
<title>common-gfx-card-installation-woes</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link href="../../static/main.css" rel="stylesheet"/>
</head>
<body>
<nav id="TOC" role="doc-toc">
<h2 id="toc-title">Contents</h2>
<ul>
<li><a href="#step-1-the-replacement" id="toc-step-1-the-replacement" target="_self">Step 1: The Replacement</a></li>
<li><a href="#step-2-re-installing-the-drivers" id="toc-step-2-re-installing-the-drivers" target="_self">Step 2: Re-installing the
drivers</a>
<ul>
<li><a href="#part-one-fix-broken-packages" id="toc-part-one-fix-broken-packages" target="_self">Part one: Fix Broken
Packages</a></li>
<li><a href="#part-two-re-install-nvidia-driver" id="toc-part-two-re-install-nvidia-driver" target="_self">Part two: Re-install
nvidia-driver</a></li>
<li><a href="#part-negative-three-just-in-case" id="toc-part-negative-three-just-in-case" target="_self">Part negative three: Just in
case</a></li>
</ul></li>
<li><a href="#step-three-reboot-and-test" id="toc-step-three-reboot-and-test" target="_self">Step three: Reboot and test</a></li>
</ul>
</nav>
<p>I recently upgraded by PC from an Nvidia 1050 Ti card to a new 3060
Ti card. I've been updating the drivers for this card since before there
was a Debian package, so I've been through the installation quite a few
times and run into my share of weird issues. This last upgrade was no
exception, so I figured I'd document the process in case anyone out
there is as bad at installing these as me!</p>
<h2 id="step-1-the-replacement">Step 1: The Replacement</h2>
<p>The best part of installing a new graphics card is getting to open up
the guts of your computer (it's also the scariest part, since this is
also the best opportunity to knock out a hard drive or a RAM stick).
Fortunately this is pretty easy, first make sure you hit the little
lever (switch?) on the PCI slot to pop out the old card. Then just slide
the new guy in.</p>
<p>Note though to people getting a card from the RTX 30 line (or higher)
-- these cards run pretty big, so make sure you have enough space in
your case. I barely made it myself!</p>
<p>A second note to RTX users: most if not all these cards come with an
extra power supply input (two 8-pin connectors). If your power supply is
short on outputs, you can get a splitter cable like <a href="https://www.amazon.com/Liyafy-Female-Splitter-Power-Extension/dp/B07S8RWJYQ">this
one</a> to match the inputs. I personally am running a 600 W supply for
everything right now, which seems to be running fine. You should check
some other power guides though if you're concerned your power supply
won't drive the card</p>
<h2 id="step-2-re-installing-the-drivers">Step 2: Re-installing the
drivers</h2>
<p>At first I tried to just naively update and see what happened, but I
received a "broken packages" error for nvidia-driver and other related
packages after running this.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a aria-hidden="true" href="#cb1-1" tabindex="-1"></a><span class="ex">$</span> sudo apt update</span>
<span id="cb1-2"><a aria-hidden="true" href="#cb1-2" tabindex="-1"></a><span class="ex">$</span> sudo apt upgrade</span></code></pre></div>
<p>This turned out to be a two-part error, one was the driver itself,
two was an update in Debian sid.</p>
<h3 id="part-one-fix-broken-packages">Part one: Fix Broken Packages</h3>
<p>Whenever I see broken packages, I tend to to assume that the name of
a package got updated. In this case, there was a <a href="https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.en.html#non-free-split">note</a>
on the apt list changes that mentioned a separate "non-free-firmware"
branch had been made, which had some of the components I needed. I just
added "non-free-firmware" to my /etc/apt/sources.list:</p>
<pre><code>deb http://deb.debian.org/debian/ sid main contrib non-free non-free-firmware</code></pre>
<p>Note: you may not need "non-free" here anymore, I simply had that
since that was where the package used to be.</p>
<h3 id="part-two-re-install-nvidia-driver">Part two: Re-install
nvidia-driver</h3>
<p>I tried to update again at this point, but encountered the same
error. At this point I figured the best thing to do was to just try to
reinstall all nvidia related software again:</p>
<div class="sourceCode" id="cb3"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a aria-hidden="true" href="#cb3-1" tabindex="-1"></a><span class="ex">$</span> sudo apt purge nvidia-<span class="pp">*</span></span>
<span id="cb3-2"><a aria-hidden="true" href="#cb3-2" tabindex="-1"></a><span class="ex">$</span> sudo apt update</span>
<span id="cb3-3"><a aria-hidden="true" href="#cb3-3" tabindex="-1"></a><span class="ex">$</span> sudo apt upgrade</span></code></pre></div>
<p>Ok no errors on the update this time, let's try again:</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb4-1"><a aria-hidden="true" href="#cb4-1" tabindex="-1"></a><span class="ex">$</span> sudo apt install nvidia-driver</span></code></pre></div>
<h3 id="part-negative-three-just-in-case">Part negative three: Just in
case</h3>
<p>In the dark days before the Debian team had an Nvidia package, you
had to install drivers manually. I haven't had to do this in years, but
I like having the option. You can download the latest drivers on their
website:</p>
<p>https://developer.nvidia.com/vulkan-driver</p>
<p>The file will have a really long name like
"NVIDIA-Linux-x86_64-525.89.02.run," so I suggest renaming it first to
something like "driver.run"</p>
<p>In order to run this file, you need to stop your graphics
environment. Press CTRL + ALT + F1 to log out and open a terminal-only
session. Login with your credentials. Then stop the X-server</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb5-1"><a aria-hidden="true" href="#cb5-1" tabindex="-1"></a><span class="ex">$</span> sudo service lightdm stop</span></code></pre></div>
<p>If you use a different X manager you might need to replace "lightdm"
with "gdm" or "kdm" (Gnome and KDE). Now we can run the driver
install:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a aria-hidden="true" href="#cb6-1" tabindex="-1"></a><span class="ex">$</span> sudo chmod +x driver.run</span>
<span id="cb6-2"><a aria-hidden="true" href="#cb6-2" tabindex="-1"></a><span class="ex">$</span> sudo ./driver.run</span></code></pre></div>
<p>Accept all the prompts and you'll have the factory made driver
software. Note, you have to manually update this way though. So try to
figure out the nvidia-driver package before resorting to this
method!</p>
<h2 id="step-three-reboot-and-test">Step three: Reboot and test</h2>
<p>Reboot and then check the Nvidia X server setting panel
(nvidia-settings) to make sure your card is detected correctly. At this
point, as long as you're still seeing your desktop, you should be good
to go! I ran Kerbal Space Program 2 (currently in early access) as my
first test.</p>
<p><video controls="" src="/static/media/ksp2.webm"><a href="/static/media/ksp2.webm">Video</a></video></p>
<p>Looking good, Jeb!</p>
</body>
</html>
|