Solved Cannot boot home server without GPU installed

Solved issue

Kaffannen

New Member
Joined
Sep 14, 2024
Messages
7
Reaction score
2
Credits
109
I was able to resolve the issue by reinstalling the OS with my tv hooked up through a HDMI->DP adapter, instead of an ancient Nvidia GTX570 from 2010.

I speculate that the issue was that the GPU somehow corrupted the ubuntu server install with regards to network functionality only working when the GPU was in slot 1.

I discovered that the OS had in fact booted up in scenario 3 described below, as I was able to do a blind login + sudo shutdown. The issue was that networking functionality would not initialize unless the GPU was in place, an issue that was resolved by reinstalling the OS without the GPU in place.

If I had a modern GPU lying around, I would install UBS with it plugged in and have not issues with networking after.

Video clipping (see below pic) is not an issue on new install.

Should this be forwarded to the Ubuntu crew somehow? Maybe this is a thing other hobbyists run into from time to time (while setting up home servers on ancient hardware)

@CaffeineAddict Thanks for help

OP BELOW*
Hello!

I running a headless ubuntu servert, and need to resolve an an issue where it appears I must have a GPU plugged in for the system to boot.

If the GPU is in the motherboard, then the server will boot and i can get into it via SSH from my main desktop (which is what I intend).

If the GPU isnt in the motherboard, it does not boot. If I try to ping the server from powershell, i get the below (ip is correct)
Pinging 192.168.10.189 with 32 bytes of data:
Reply from 192.168.10.103: Destination host unreachable.
Reply from 192.168.10.103: Destination host unreachable.
Reply from 192.168.10.103: Destination host unreachable.
Reply from 192.168.10.103: Destination host unreachable.

These are the specs
  • OS
    • Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-44-generic x86_64)
  • MB
    • MB: Z370-A PRO (MS-7B48)
  • CPU
    • Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
  • GPU
    • GF110 [GeForce GTX 570 Rev. 2]
  • Integrated graphics
    • CoffeeLake-S GT2 [UHD Graphics 630]
  • SSD
    • WD Blue SN570 500GB

Can anyone help me understand what I need to do?


Can anyone help me out?
 
Last edited:


Was this installed with a desktop GUI?
 
Hello!

I running a headless ubuntu servert, and need to resolve an an issue where it appears I must have a GPU plugged in for the system to boot.

If the GPU is in the motherboard, then the server will boot and i can get into it via SSH from my main desktop (which is what I intend).


Can anyone help me understand what I need to do?


Can anyone help me out?
It may be worth checking the BIOS/UEFI for a menu item on the graphics card options. In the past here there's been a BIOS issue in which a menu item enabled either the integrated graphics on the motherboard, or a discrete graphics card inserted in a PCI slot. A problem similar to the one described in post #1 occurred if the option in the BIOS was set for a discrete graphics card, but none was inserted.
 
If the GPU isnt in the motherboard, it does not boot.
If you don't need desktop environment you might want to enable text mode on that system:
Bash:
sudo systemctl set-default multi-user.target

This will make the system not require GPU driver during boot.
If there is no GPU present but system requires GPU driver then boot will freeze.

To revert back to desktop mode login from CLI and run:
Bash:
sudo systemctl set-default graphical.target
 
Ref Post#2
The server OS was installed with a USBbootstick

Ref Post#3
The MSI UEFI of the z370-apro has an option called 'Innate graphics adapter', with a choice of
IGD (integrated graphics device I think) or PEG (Pci Express graphics I think)
-IGD does not fix the issue, but causes me to have no video output untill I am past the UEFI stage of the boot.
If I want to switch back out from IGD, I have to navigate UEFI blind..
-PEG is the default option and does nothing to fix the issue. I at least can navigate UEFI

Ref Post#4
sudo systemctl set-default multi-user.target
This did not fix the issue unfortunately. I checked that the setting was 'multi-user.target'

I have done a little experiment, basically using my desktop PC to ping for my server in various GPU configurations.
Please see below if you're a superstar.

This is a powershell script that pings all LAN ips from 1-255, outputting the MAC of any device that responds.

$start = 1
$end = 255

for ($i = $start; $i -le $end; $i++) {
$ip = "192.168.10.$i"
$result = ping $ip -n 1 -w 250 | Select-String -Pattern "Reply from"
if ($result) {
$arpResult = arp -a $ip
Write-Output "$arpResult"
}
}

I ran the script from my normal desktop under 3 GPU scenarios, hoping that the server would pop up under a new IP adress, but alas it did not..


1: GPU seated in default slot PCI_E1 - the x16 slot
The server is the last line and I can ssh to it just fine

192.168.10.1 b8-d5-26-23-40-e1
192.168.10.114 fc-67-1f-ba-18-28
192.168.10.145 4c-ba-d7-5e-ea-86
192.168.10.191 fc-67-1f-b4-1b-96
192.168.10.199 30-9c-23-81-40-a3 <-server

kaffannen@kaff1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 30:9c:23:81:40:a3 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.199/24 brd 192.168.10.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 2a01:799:b11:2900:329c:23ff:fe81:40a3/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 22275sec preferred_lft 22275sec
inet6 fe80::329c:23ff:fe81:40a3/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:26:45:6c:e7 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever


2: GPU seated in other x4 slot, PCI_E4
The server boots and I can interact with it via a monitor/KB - but it's off the LAN and I cant ssh to it.

192.168.10.1 b8-d5-26-23-40-e1
192.168.10.114 fc-67-1f-ba-18-28
192.168.10.145 4c-ba-d7-5e-ea-86
192.168.10.191 fc-67-1f-b4-1b-96

kaffannen@kaff1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 30:9c:23:81:40:a3 brd ff:ff:ff:ff:ff:ff
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:ef:c2:ec:22 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever

3: No GPU seated anywhere
I am unable to tell if the server boots at all, as I dont have any way to interact with it.

192.168.10.1 b8-d5-26-23-40-e1
192.168.10.114 fc-67-1f-ba-18-28
192.168.10.145 4c-ba-d7-5e-ea-86
192.168.10.191 fc-67-1f-b4-1b-96

My wishfull thinking is that the server boots up, but is unreachable due to the network card beeing disabled due to missing device in PCIe slot 1. I feel like this somehow aligns with scenario 2 above.

Thanks for your attention
 
I ran the script from my normal desktop under 3 GPU scenarios, hoping that the server would pop up under a new IP adress, but alas it did not..
Your scenario GPU 1 probably works because since you have video output you're able to log in to machine with username/password?
Did you log in to system in first scenario?

In other 2 scenarios you have no access to login screen due to no video output therefore no way to log in to system.

If that's true then likely reason for problem is that network does not start because it normally starts only once you log-in.

If you're unsure then please repeat your first scenario without logging in to system on CLI (text mode) and try to ping it.
if ping works without login in then something else is problem.
 
Hello

in scenario 1 the GPU is in the x16 default slot for GPUs.
I have access to the server from plugged in keyboard/monitor, in addition to SSH from my main desktop. I can ping the server, it works just fine

in scenario 2 the GPU is in another slot with x4 lanes, intended I guess for non GPU PCe devices.
I have access to the server from plugged in keyboard/monitor, but now does not work SSH from my main desktop and the server cant be pinget. It has not network access

in scenario 3 there is not GPU in the server.
There is no access via monitor/keyboard, so it's hard to see whats going on. I cant SSH into it from the main DT and it cannot be pinged
 
in scenario 1 the GPU is in the x16 default slot for GPUs.
I have access to the server from plugged in keyboard/monitor, in addition to SSH from my main desktop. I can ping the server, it works just fine
I understand, but my question was, do you login to server in that scenario with your username/password?
 
in scenario 1 the GPU is in the x16 default slot for GPUs.
I have access to the server from plugged in keyboard/monitor, in addition to SSH from my main desktop. I can ping the server, it works just fine
Sorry if my question is confusing, here are more details...

When your run sudo systemctl set-default multi-user.target and then reboot server in GPU 1 scenario what you should see it this screen:


Screenshot_20240914_104708.png


Do you input username/password on that screen to log-in?

You will of course not see this screen in your GPU 2 and GPU 3 scenario so won't be able to log-in, that means no network will be started! because by default you need to login to activate networking.

I hope this clear things a bit.
 
Hello!

Here is a screenie. It's a little cropped unfortunately

I'd Guess it says

Ubuntu 24.04.1 LTS Kaff1 tty1

????? .login:

I dont think there is a requirement of logging in to start the network - I can SSH into the server just fine even though it has not been logged into from the VGA of the server.

1726430913149.png
 
No I dont log in there prior to using the PS script or prior to SSHing into the terminal
OK, so that makes things more complicated because issue is not what I though to be.

One of the possible problem is that systemd default target doesn't reach the point of networking because video output comes prior that and so networking unit does not reach it's target unit file.

I'm not sure how to fix this.
IGD (integrated graphics device I think) or PEG (Pci Express graphics I think)
-IGD does not fix the issue, but causes me to have no video output untill I am past the UEFI stage of the boot.
If I want to switch back out from IGD, I have to navigate UEFI blind..
-PEG is the default option and does nothing to fix the issue. I at least can navigate UEFI
Yes, IGD is intergrated GPU which you seemingly don't have, so the only valid option is PEG0 for your primary GPU which needs to be attached to computer.

x4 slot likely doesn't work if your GPU is x16 GPU, and no GPU at all makes the boot stuck in systemd initialization.
So I'm not smart enough to troubleshoot this, sorry.

If you want to hack it, you'll probably need to modify systemd targets with possible consequences of screwing things up on your server software wise.
 
I'm not sure if I missed anything but I think I know the problem. When you change the gpu and boot your server up the network interface name changes. So old interface network configuration isn't applied to to the network interface with the new name.

The same happened to someone here.

It also shows in your ip a output.
1: GPU seated in default slot PCI_E1 - the x16 slot
The server is the last line and I can ssh to it just fine

192.168.10.1 b8-d5-26-23-40-e1
192.168.10.114 fc-67-1f-ba-18-28
192.168.10.145 4c-ba-d7-5e-ea-86
192.168.10.191 fc-67-1f-b4-1b-96
192.168.10.199 30-9c-23-81-40-a3 <-server

kaffannen@kaff1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
According to this you have network connection because you can ssh into the system, notice that here the network interface is named enp3s0.

Then here you with the new gpu you don't have an ssh connection because the network is down.
kaffannen@kaff1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 30:9c:23:81:40:a3 brd ff:ff:ff:ff:ff:ff
If you look closely here the network interface name is named enp4s0, so with the old gpu the network interface is named enp3s0 and with the new gpu the network interface name changes to enp4s0.

Try putting the new gpu back into your system, connect a monitor to your system. Then login and copy the network configuration from enp3s0 to enp4s0. I don't know if your system is using netplan or NetworkManager, but I'm pretty sure that should fix your problem.
 

Members online


Top