Switching from Windows to Linux: Sharing My Experience and Lessons Learned

Looks like I made things difficult for myself.

Don't download the first Nvidia drivers from nvidia.com instead install the drivers from the repository.
I followed this thread and it installed an older driver but also did a huge load of configuration as well as disabling nouveau correctly without breaking the Gnome settings.

Edit: I thought I might have been able to manually upgrade the drivers after installing the repo version, but the Nvidia installer is having none of it. My previous work around's to get drivers for the 3090 installed did not work for the 4090 and resulted in a black screen every time. Looks like I will just have to wait for the repository to get updated.

Anyway that's all three of my PC's now running Linux so I am committed now.

Edit 2: I found a solution further down.
 
Last edited:
LOL Locked out root again trying to get my RAID volume mounted without having to enter a password every time I restart :rolleyes:

Edit: Managed to undo the edit to fstab by using the Debian live USB.

Back in business :-)
 
Last edited:
I have been using a programme called Gigolo to mount SMB shares automatically but have not been able to work out how to get the location URI for mounting physical disks. I thought I would try adding the RAID volume to the fstab file but it seems a bit overly sensitive if not done correctly. I will look into creating a credential file as I may help me learn how to format the entry on fstab properly.

The RAID voulume is a Highpoint RocketRAID 840 SATA Controller card I bought several years ago. At the time I thought it would be cool to see how fast I could get 16 SSD's going in an array. Turns out it was around 7GB/s which is nothing today, but I thought it was stupidly fast at the time maxing out a PCIe gen3x8 connection. The controller is so fast it could do it in RAID5 without it slowing down. I still run the array today with 500GB SSD's as they are as cheap as chips and I have only had 2 disks fail, and I have never lost data.

Going to Linux has been problematic for the card as it is only supported up to Debian 11, however the driver works partially but it can't handle sleep states. Randomly the WebGUI will report all disks have failed after a wake event requiring me to reboot to get the disks back in full working order.

I am going to try to re-configure the card as a HBA and try to set it up with ZFS in a Z2 vdev. Its a bit risky as the card does not support IT mode but I don't currently have any data on the drive. If it doesn't work, I have ordered an LSI SAS 9300-16I to do the job properly.

Edit: Highpoint support just confirmed the linux driver does not support sleep at present. This is a known limitation.
 
Last edited:
How is your RAID formatted?

If you take a look in /dev/disk/by-id and /dev/disk/by-uuid you should be able to see the disks and any partitions. Find the UUID for the RAID partition and use that in fstab to mount it.

That's how it works for the most part but it can vary for different filesystems.
I formatted the RAID volume as ext4 so I could put my VM, steam library, and Timeshift on it. I will try it on Gigolo when I get things working.

It does not matter now as I cannot stop the disks from failing after a suspend event.

I have tried disabling PCIe sleep states in BIOS and in GRUB but it does not make any difference. Tried hibernate instead but it takes just as long to boot up as it does from a cold start and the disks still reported as all failed.

One of the things I wanted with the move to Linux was to have the PC suspend after inactivity. My Windows 11 install could never do, it as it would lock up, unless I initiated it manually via the power button.

I will have to forget about this for now until I get the LSI card in a couple of weeks which hopefully will work better if not I will have 20+ x 500GB SSD's for sale lol.

The good thing to take away from this is the suspend function works in Linux just fine, and the problem is the Highpoint card, its driver, and probably me. :-)
 
Set up my Windows 11 Pro VM with VirtualBox without much issue.

TPM, EFI, and Secure Boot all present in the virtual machine system configuration, so it installed without having to do any hacks.

Interestingly, MS had saved my old Windows settings and Apps, and gave me the option to apply it to my new install. It was a nice Idea but the only apps that could be restored where ones downloaded from the MS apps store. The rest of the apps just gave a prompt to search the internet for an installer when trying to open them, so is of limited use. I also don't remember ever giving MS permission to back up my configuration.

Using VirtualBox is a breeze, with the only issue I had was on the sharing of USB devices. In order to share devices you need to add your user name to a group called vboxusers.

To do this you need to run the command "sudo usermod -a -G vboxusers $USER" where "$USER" is replaced with your user name. Then a quick reboot and the device sharing options are now available. To connect a USB device to the VM all you have to do is tick a box in the drop down devices menu.
 
Another success! I was able to get my Stream Deck mini working in Linux. There are 2 versions of controller software in the wild "Stream Deck-UI" and "Stream Controller". While I was able to install Stream Deck-UI, I could not configure the buttons for some reason. Stream Controller comes via a package manager called flatpak which installed with a couple of clicks. Stream Controller worked straight away and very configurable.
 
I have revisited the Nvidia repository driver update problem.

Assuming you have downloaded the driver from nvidia.com to your Downloads folder and you are running the Gnome desktop environment.

I ran the commands "sudo apt remove nvidia-driver" and "sudo apt purge nvidia-*" to remove all the repository Nvidia driver files.

I then re-created the .conf file with "sudo nano /etc/modprobe.d/blacklist-nouveau.conf" as it was deleted when purging the Nvidia driver. The contents of this file need to be is

blacklist nouveau
options nouveau modeset=0


After creating the .conf file run "sudo update-initramfs -u" otherwise it won't work. (I think I missed this step when trying to install on my 4090 earlier)

Next step was to shutdown the gnome desktop with the command "sudo systemctl stop gdm3" the screen should go blank.

Start a tty command line by pressing ctrl+alt+F3. to get a command prompt.

Log on when prompted, go to your Downloads folder "cd Downloads" and run the nvidia driver package with "sudo sh <Package name>.run"

once the driver is installed reboot by typing "sudo reboot"

That should be it. I managed to get the 550.78 driver to installed this time. Its worth noting that any system settings that require the nouveau browser will no longer work, so its best to configure those settings before updating the driver.
 
Well its been a week and I am happy everything is working as I like, to the point that I don’t even think about the Operating System. The only thing I need to set up is my ZFS volume when my HBA card arrives.

Steam Proton is an amazing piece of software. I have no issues playing Eve Online and Skyrim all this week. I would have liked to have test 3D Mark to bench, but it fails to get hardware details and exits before running.

As has been mentioned in this thread I could have made things easier on myself by choosing a distribution that already supports modern Nvidia hardware out of the box, but I feel I have learned a lot about how Linux works and that was my aim.
 
Well my LSI 9300 i16 HBA card arrived and it works straight of the box so no need to update the firmware.

Setting up ZFS was a piece of cake using a bit of software called Cockpit. It has a great GUI for setting up a zpool and it even mounts the volume automatically. The only bit of fiddling I had to do was transfer ownership of the Mount point to my username recursively.

After that I was able to move my steam folder and VM image of my old windows install.

The only thing that does not happen is that there is no automatic check that the zpool is healthy so I found this script to do just that

#!/bin/bash
export DISPLAY=:1

# Set the ZFS pool name
POOL="Tank"

# Set the path to the zpool command
ZPOOL="/sbin/zpool"

# Check the health of the ZFS pool
if [ "$($ZPOOL status $POOL -x)" != "pool '$POOL' is healthy" ]; then
# Display a pop-up message if there is an error
zenity --error --text="ZFS pool $POOL is not healthy" --title="ZFS Health Check"
fi


It is setup to only produce an output if there is an error.

Then set up a cron job by adding the line to crontab -e (note no sudo)
*/15 * * * * /usr/bin/zpool_status.sh
This runs my script every 15 minutes

All I have to do now it find a script to automatically run a scrub task once a week and I think I am golden :-)

edit: Had to add export DISPLAY=:1 to get the window to popup when cron task runs.
 
Last edited:
Found a script that will run the scrub task

#!/bin/bash

POOL="Tank" # Replace with your pool name

zpool scrub $POOL


added the line to sudo crontab -e

@weekly /usr/bin/zfs-scrub.sh

To run the scrub job weekly
Don't forget that the scripts need to be sudo chmod +x <your.sh> to make them executable.
 
Last edited:
I am having an issue once a day approximately where the computer gets stuck when waking up with a text screen that says
“usb 2-5: device not accepting address 2, error -62” and I have to reboot as the keyboard stops responding. I have searched all over but cannot find out what device is causing the problem. Looking at the logs I get this :

kernel
usb 2-5: device not accepting address 2, error -62
PRIORITY 3
SYSLOG_FACILITY 0
SYSLOG_IDENTIFIER kernel
_BOOT_ID 933f7fd50055494c9900fb676df5efaa
_HOSTNAME Debian-PC3
_KERNEL_DEVICE c189:129
_KERNEL_SUBSYSTEM usb
_MACHINE_ID 962407b5e2c440fd8d51e8f79f3596ce
_RUNTIME_SCOPE system
_SOURCE_MONOTONIC_TIMESTAMP 7665134203
_TRANSPORT kernel
_UDEV_DEVNODE /dev/bus/usb/002/002
_UDEV_SYSNAME 2-5
__CURSOR s=60a1afb0b8fb4f8e8b46a6d6ee2215e5;i=813c5;b=933f7fd50055494c9900fb676df5efaa;m=1c911895a;t=629a1ddf69237;x=35dfbe823c1b1b9
__MONOTONIC_TIMESTAMP 7668336986
__REALTIME_TIMESTAMP 1734625050661431



********@Debian-PC3:~$ sudo lsusb --tree
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 1: Dev 3, If 1, Class=Printer, Driver=usbfs, 480M
|__ Port 1: Dev 3, If 2, Class=Printer, Driver=usbfs, 480M
|__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 5, If 0, Class=Human Interface Device, Driver=usbfs, 480M
|__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
|__ Port 5: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M <---- I think its something to do with this!
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 4: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 4: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 5: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 10: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 12: Dev 5, If 3, Class=Vendor Specific Class, Driver=, 12M
|__ Port 12: Dev 5, If 1, Class=Vendor Specific Class, Driver=, 12M
|__ Port 12: Dev 5, If 2, Class=Vendor Specific Class, Driver=, 12M
|__ Port 12: Dev 5, If 0, Class=Vendor Specific Class, Driver=xpad, 12M
|__ Port 14: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M

********@Debian-PC3:~$ sudo lsusb
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 006: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 005 Device 005: ID 0fd9:0063 Elgato Systems GmbH Stream Deck Mini
Bus 005 Device 004: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 005 Device 003: ID 04a9:1912 Canon, Inc. LiDE 400
Bus 005 Device 002: ID 2109:2822 VIA Labs, Inc. USB2.0 Hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 05e3:0626 Genesys Logic, Inc. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 002: ID 046d:c332 Logitech, Inc. G502 Proteus Spectrum Optical Mouse
Bus 001 Device 006: ID 0b05:1867 ASUSTek Computer, Inc. AURA Custom Human interface
Bus 001 Device 005: ID 045e:028e Microsoft Corp. Xbox360 Controller
Bus 001 Device 004: ID 1b1c:1b20 Corsair STRAFE RGB Gaming Keyboard
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Can anyone tell me why this is happening? I understand it might be just a coincidence that I am getting the error at the same time as the system locks up. The same error pops up in the logs quite a few times ( two or three times an hour) without causing any apparent issue.
 
I seem to have found the culprit, it was not a device connected to my 4 port USB 3.0 HUB, but the HUB itself. I have not had any problems since disconnecting it. I moved all my extra USB devices to a 11 port USB 3.1 HUB connected to a USB 3.1 port on my computer and all seems well.

Another quality of life problem with the HBA is that grub scans all 17 of my SSD’s looking for other operating systems causing my boot times to be in minutes not seconds.

Turns out there is a simple fix

sudo nano /etc/default/grub

edit the line
GRUB_DISABLE_OS_PROBER=false
to
GRUB_DISABLE_OS_PROBER=true
then

sudo update-grub

Edit: this did not work :-( it would seem that the long loading times is due to a BIOS thing. Further investigation required.
 
Last edited:
I think there is a load of people waiting for Steam OS general release unnecessarily. I doubt it will have any advantages over just installing the Steam application on the Linux distribution of your choice. Words like proton might scare people away, but it all configures itself in the background and launching a game is the same as Windows. It wouldn't surprise me if Valve never release Steam OS generally since its not necessary.
 
I don't know if Valve would want to become responsible for maintaining and configuring Steam OS for every device out there when they can just maintain the App which works the same on any distribution. I think the fragmentation or diversity of distributions is what has kept Linux going as long as it has and will never become default even if Valve does release Steam OS. Its true that some people will never have the patients to install a Linux Distro and the Steam app, but I think there is a growing number of Windows Users that have become sick of Microsoft, like me, and they just need a little push, Its free after all. For the rest there is always Sony or Nintendo.
 
Another reason not to use Debian 12 is that it does not support G-Sync/VRR.

Apparently Debian 12 comes with Gnome 43.9. G-Sync/VRR is only experimental on Gnome 46.0.

Good news is that Debian 13 is coming this summer and should have Gnome 47 :-)

Its not a huge problem and I think I can wait for the update.
 
I need some help, Every so often when my computer wakes It displays a USB error and locks the keyboard. I can force a reboot by pressing a button on my Stream Deck to run the /sbin/reboot command to reboot the system without needing a password.

I would like to be able to recover the system without a reboot if possible.

I have created a new command called resetusb.sh to reset all the USB devices as follows:

#!/bin/bash

for bus in /sys/bus/usb/devices/*; do
if [ -f $bus/authorized ]; then
echo 0 > $bus/authorized
sleep 1
echo 1 > $bus/authorized
fi

done



Made the script executable with chmod +x resetusb.sh

Configured a button on my Stream Deck to run the command resetusb.sh

But nothing happens when I press the button.

When I type ./resetusb.sh in terminal I get Permission denied repeatedly for each USB device.

Running the command with sudo, it works and every USB device is reset one after the other..

Does any one know how I can make restart.sh run with the same permissions as /sbin/reboot without needing to enter a password?
 
Back
Top Bottom