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

Thank you for your reply

The man command is great! I'm liking the examples of command usage much more thorough then the -help I have been using so far.

I have got the resetusb.sh listed in the sudoers.d folder via visudoers but the system still keeps asking for a password.

I think the sleep problem is a hardware one, since I could not get the machine to automatically wake from sleep under Windows either without frequent hangs. I have disconnected all peripherals from the affected USB ports and crossed fingers its been up for 5 days without incident.

Because I couldn’t get the Stream Deck to run my script without a password I went down a different route to come up with a service script:


[Unit]

Description=Restart GDM after resume from sleep (on failure)

After=sleep.target

OnFailure=gdm.service



[Service]

Type=oneshot

ExecStartPre=/bin/systemctl is-active --quiet gdm || /bin/true

ExecStart=/bin/systemctl restart gdm



[Install]

WantedBy=sleep.target



The idea is the service will monitor GDM and restart it if it should fail.


I do see a problem in the future should I want to update the Nvidia drivers I wont be able to shut GDM down prior to installation.

I think I will need to run the following command:


sudo systemctl stop wake-up-restart-gdm.service

Install driver

sudo systemctl start wake-up-restart-gdm.service
 
System locked again with just a blank screen. On a plus side it lasted about a week without locking up.

I know the system is still running as my Stream Deck has Memory, CPU, and CPU temp displayed which are changing every second or so there is life.

The previous script failed with an error "/etc/systemd/system/wake-up-restart-gdm.service:6: Unknown key 'ConditionResult' in section [Unit], ignoring."

I am getting these scripts from copilot as I do not know enough about writing scripts but I am able to understand what is going on a basic level.

I put the old script back through copilot and I got a slightly different script which copilot insists is correct now :-)
Code:
[Unit]
Description=Restart GDM if it has failed after resume from sleep
After=sleep.target

[Service]
Type=oneshot
ExecStartPre=/bin/systemctl is-active --quiet gdm || /bin/true
ExecStart=/bin/systemctl restart gdm

[Install]
WantedBy=sleep.target

Interestingly while my system locked up I remote-ed in using my systems KVM out of band thingie, and the output was Debian 12 splash screen. Unfortunately I could not work out how to access the remote keyboard and it appeared to be stuck. I was able to use the reboot server button from a drop down menu.

I am beginning to think I should make a fresh start, and re-install Debian from scratch again in case my problem is of my own making, as I haven't found any similar issues to mine in all my searching.
 
Can you get to a tty terminal? Try ctrl alt and a function key like F3, F4 etc. Then you might be able to run gdm or try startx as a command and see what happens (IIRC I used startx to reload the gui on earlier ubuntu if x11 crashed, might be irrelevant if you're on wayland). Once you get a working gui again it's probably on ctrl alt F2, you can switch between it and tty's at will. ctrl alt F1 is worth trying too, different distributions might put things on different function keys.

If you're going from scratch again, IMO it wouldn't hurt to try ubuntu or fedora and see if any of the remaining issues just go away. I doubt the sleep issue will go away, that's often a hardware-specific pain point on Linux and my workaround to that would be to just disable sleep.
 
Can you get to a tty terminal? Try ctrl alt and a function key like F3, F4 etc. Then you might be able to run gdm or try startx as a command and see what happens (IIRC I used startx to reload the gui on earlier ubuntu if x11 crashed, might be irrelevant if you're on wayland). Once you get a working gui again it's probably on ctrl alt F2, you can switch between it and tty's at will. ctrl alt F1 is worth trying too, different distributions might put things on different function keys.

If you're going from scratch again, IMO it wouldn't hurt to try ubuntu or fedora and see if any of the remaining issues just go away. I doubt the sleep issue will go away, that's often a hardware-specific pain point on Linux and my workaround to that would be to just disable sleep.
Can't get to TTY as keyboard does not register typing (no caps lock check). Plugging in a different keyboard doesn't work either. Even emulating via stream deck crtl alt F3 does not work but reboot command does, so something is listening.

Disabling automatic sleep was what I used to do in Windows and was one of the reasons I wanted to move to Linux.
 
With all my tinkering I cannot get Debian as stable as I would like, so I have installed Ubuntu 24.10 as per your recommendations.

On the plus side I did not have to deal with nouveau driver issues as it installs the latest proprietary driver during installation although the Nvidia x-server information seems to be limited to very basic options, ie no G-Sync/VRR which I think is supported in Gnome 47.

Another plus was I no longer need to use Onedriver to access my Onedrive files as the Settings programme lets me access them via the Online Accounts function which I could never get to work in Debian 12.

On the negative side the Ubuntu live iso kept popping up messages about programmes crashing in the background and some images were corrupted probably related due to the nouveau pre-install driver. Despite the errors the OS installed just fine, and I got no errors after booting into the newly installed OS.

I had some trouble importing my ZFS Pool as I could not get Cockpit Utilities to automatically mount the pool like it did when I was using Debian 12. Many hours were spent mounting and unmounting the volume and adding authorisations/permissions. I worked out that the values in fstab needed to be separated by a tab not a space otherwise the OS will fail during boot. In the end it turned out all I needed to do was import the pool via cli “sudo zpool import -f <tank>” and the pool mounted and persisted upon reboot.

The next issue I had was also related to ZFS. The Ubuntu App Centre has way more apps than the default Debian equivalent. I saw that the Steam app was available, so I installed it from there. The Steam client would not let me install games on the ZFS volume. My first thoughts where it must be a permissions problem, so I went about making sure the directory path had create and delete to no avail. By chance I found a forum page about this very issue, and it turned out the App Centre version of the Steam app was programmed to be in a walled garden preventing it from accessing external volumes. The solution was to download the steam_latest.deb from the Steam website and all was well.

Current problem I am investigating is the Brave Browser is very unstable under Ubuntu causing web tabs to become corrupt and window freezes. I have switched to Firefox and everything works fine again.

Going forward I still need to set up a notification system to report any ZFS errors and to run a scrub task automatically on a schedule. Hopefully it will be the same as in Debian to set up.

Time will tell if automatic sleep works better than it did on Debian 12.
 
I know nothing of ZFS except that it's not built into the Linux kernel proper, but it doesn't sound like a zfs issue but rather a snap issue. There's two main ways people package programs in a cross-distro way, snap and flatpak (also AppImage but that's more like a standalone binary than a package system). Flatpak seems preferred in general (including by me and I am biased), Canonical is pushing snaps hard so it's integrated into Ubuntu hard but can be used elsewhere. In both cases the programs are sandboxed by default with restrictive settings for security, I know that the flatpak way to modify settings is to use flatseal, presumably there's a way to do the same with snaps. The way Ubuntu does snaps is kind of a mess, they tried to force the issue by having apt install snaps for some things instead of the usual debs which annoyed many. I'm on Fedora and use the steam flatpak, can't remember if it had filesystem permission issues but if it did flatseal would've been the first thing I did.

This is just my personal opinion. I feel that the distros main package manager should be for distro things, core tools drivers etc, and that the likes of flatpak are where the big programs like steam, gimp, krita etc should live. Let distros do the distro thing with the distro package manager, let applications compile once run anywhere with a cross-distro package manager. I'd use flatpak on Ubuntu too if I were still on it, it's basically just an apt install flatpak away (looks like Canonical made it a little harder but not much: https://flatpak.org/setup/Ubuntu ). Then you can install programs browsable on flathub: https://flathub.org/

I don't know why brave is unstable. But I feel obligated to give my 2 cents that the brave browser seems shady as hell. They fork chrome, bolt an ad blocker into it, then optionally show you ads in exchange for cryptocurrency that they mint. It screams scam, because it is. They're blocking ad middlemen to become...ad middlemen. Novel way of breaking into a market.

edit: Firefox with ublock origin, noscript and sponsorblock is all I use to sanitise the web, no ads anywhere and the sponsored sections in popular videos on youtube get skipped.
 
Last edited:
I'm quite happy now with Kubuntu on my laptop (Dell 7415 2in1). Works great and battery life is actually better than it was with Win10/11. I only play really old/basic games on it mind, a lot of which don't need Steam anyway.

LibreOffice and Filen replaces Office and OneDrive nicely.
 
Last edited:
So it turns out that systemd version 256 has a bug preventing Ubuntu (and other distros) from waking from sleep manual or automatic. I am going to try the Ubuntu 25.4 daily build to see if its fixed
 
So it turns out that systemd version 256 has a bug preventing Ubuntu (and other distros) from waking from sleep manual or automatic. I am going to try the Ubuntu 25.4 daily build to see if its fixed
Some sources indicate that the kernel version may be involved, what didn't work for some with systemd 256 and kernel versions less than 6.12.8 works with kernels newer than that. If so Ubuntu 25.04 probably solves the issue, as would you manually updating the kernel on 24.10. But first check what kernel version you're running with uname -a, there's a good chance 24.10 is still on kernel 6.11. Kernel 6.13 is now stable, maybe 24.10 will move to 6.12 naturally soon (maybe not).

FWIW Fedora is on 6.12.15 and I can suspend/resume with systemd 256, but I may never have had the problem, don't normally sleep.
 
The daily build did not fix the problem :-(

Well just for a laugh I thought I would install Ubuntu 24.04.2 LTS since that should be as stable as stable can be.

Code:
Linux 6.11.0-17-generic #17~24.04.2-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 20 22:48:29 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:    24.04
Codename:    noble
systemd 255 (255.4-1ubuntu8.5)

And suspend seems to be working! :-)

Online accounts no longer works so I am back to using Onedriver but I can live with that.

Need to update the Nvidia driver as the stock one is too old

Edit: Online accounts started to work after a reboot and the Nvidia driver was 550 dated 15th of Jan so I will leave it along unless I run into problems.
 
Last edited:
That programme is perfect, it found my mouse straight away, however it won't let me assign my mouse button 5 to be a 'LCtrl' key press. I am trying to see if I can set it up from within Ratbag.

Edit: I found a work around by using by making the macro multi key press Ctrl + c + Ctrl and it accepted it. However I am open for anymore suggestions of programmes to do it properly.

Edit 2: Just realized I can use the same button to abort the current task in terminal as well as zoom in and out of web pages using my mouses scroll wheel. :-)
 
Last edited:
Just built an AM4 system, deliberately going AMD and back to NixOS as on my previous gaming machine. All smooth. I made one mistake (drive mounting) but was easily able to go back to a previous generation and then correct and update config.

Steam and my games there are basically flawless. Had a couple of issues with Lutris and the Epic Games Launcher, so tried Heroic, which works, but still need a work-around for GTA V, which is less than great.

I *think*, but can't prove - many of my games run better on Linux than Windows 10 (which I was on a couple of years ago). GTA IV for example is much smoother, probably due to DXVK but it's also other titles too.

It would be nice to have more control over the GPU features, like some GPU control panel but it's not strictly necessary. I think Steam OS is doing this very well - I really hope it comes for a more general release, but even then I'd be tempted to see if those packages can be brought to NixOS anyway as it's just really stable and works the way I tell it to. Definitely recommend still.
 
Giving up on auto sleep. Ubuntu 24.04 has similar issues to Debian 12, only it sometimes does wake, but loses the network connection for a couple of minutes. The auto sleep bug must be a hardware issue as it was present in Windows too. One thing that did work in Windows was manually pressing the power button to go into sleep. Not sure why that worked, I can only guess its a different shutdown process to the auto one. Manually sleeping Windows also stopped auto wake which was a problematic in itself. Auto wake doesn't appear to be a thing in Linux.
 
Auto wake is definitely a thing in Linux. It's the only thing that is bugging me with my Arch desktop. Sometimes it will sleep fine but at other times it will go to sleep and then wake again, sometimes immediately and sometimes after a short period. I haven't had the time/appetite yet to try and track down the reason(s).
 
Today I learned that there are different cron job tables ( I am assuming crontab is short for cron table) for root and user. My ZFS pool reported a load of errors but I never got the popup message that all was not well. Turned out I was running my zpool_status script as root when it needed to be run by user. I had put both the status and scrub script tasks in sudo crontab -e when I should have put the status script in crontab -e without the sudo.

Can anyone who tell me why I am getting so many non critical read errors on a pool consisting of SSD's? I had three drives with 1 read error and another with 4 read errors and 1 write error after yesterdays scrub. Surely it is not possible for all those SSD's to be failing? The ZFS documentation says it a minor error that does not automatically mean the drives are failing just that they might.

I have run
Code:
sudo zpool clear Tank
to clear the errors and will run the scrub task again.

Edit: Scrub complete and no errors on any drive.
 
Last edited:
Nvidia have released a new beta driver for Linux with an interesting highlight!

Release Highlights​


Highlights since R570 Beta Release, 570.86.16


  • Fixed a bug that could prevent displays from being restored correctly when resuming from suspend on some systems with multiple displays.
  • Fixed a regression which stopped VRR from working on HDMI displays.
  • Fixed an issue which caused stuttering and performance issues when scrolling windows in Wayland with GSP firmware enabled.
  • Fixed a bug that resulted in corruption or application crashes when using PRIME render offloading between two NVIDIA GPUs with modeset=1 enabled in nvidia-drm.
  • Added a new kernel module parameter, 'conceal_vrr_caps', to the nvidia-modeset kernel module. This parameter may be used to enable usage of features on some displays such as ULMB (Ultra Low Motion Blur) which are incompatible with VRR. See the "Direct Rendering Manager Kernel Modesetting" (DRM KMS) chapter of the README for further information.
Its worth one last shot.

Edit: Nope didn't work :-(
 
Last edited:
Back
Top Bottom