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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
|
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>common-gfx-card-installation-woes</title>
<style>
html {
line-height: 1.5;
font-family: Georgia, serif;
font-size: 20px;
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 1em;
}
h1 {
font-size: 1.8em;
}
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
font-size: 85%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; 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 */
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<nav id="TOC" role="doc-toc">
<h2 id="toc-title">Contents</h2>
<ul>
<li><a href="#step-1-the-replacement">Step 1: The Replacement</a></li>
<li><a href="#step-2-re-installing-the-drivers">Step 2: Re-installing
the drivers</a>
<ul>
<li><a href="#part-one-fix-broken-packages">Part one: Fix Broken
Packages</a></li>
<li><a href="#part-two-re-install-nvidia-driver">Part two: Re-install
nvidia-driver</a></li>
<li><a href="#part-negative-three-just-in-case">Part negative three:
Just in case</a></li>
</ul></li>
<li><a href="#step-three-reboot-and-test">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. 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 you case. You can see 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 the one you see in
the picture 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 href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">$</span> sudo apt update</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" 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 href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">$</span> sudo apt purge nvidia-<span class="pp">*</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="ex">$</span> sudo apt update</span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" 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 href="#cb4-1" aria-hidden="true" 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 href="#cb5-1" aria-hidden="true" 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 href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">$</span> sudo chmod +x driver.run</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" 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 src="/static/ksp2.webm" controls=""><a
href="/static/ksp2.webm">Video</a></video></p>
<p>Looking good, Jeb!</p>
</body>
</html>
|