Just wanted to share my experience moving to Linux from MacOS. Very satisfying, but of course not at first. I think my patience has improved a lot too lol.

I started out trying live bootables on my 2012 MBA. 4GB RAM, 60GB HDD. Not a beast really, but it is my only computer. I obviously couldn’t risk ending up without a working OS, so the only option was dual boot from an external drive. Bought an SSD connected via USB and started trying to install distros. Initially Fedora Workstation. Was a mess. Slow, wifi was not working well, odd crashes etc… Decided to start over with something lighter, but all other installers crashed halfway through. I kid you not I shot my back again bent over my small laptop i without working peripherals trying to install different distros. My doctor was not happy when I came back and told her I fucked up my back again because of my posture lol. Apparently, a shitty USB leads to crashes on most installers. I knew Anaconda worked tho, so I went back to a lighter DE with Fedora, XFCE. Set up an install on the SSD with a shared partition I could access from both MacOS and fedora. No big permission issues yet.

Then fixing network drivers. There is a lot of info about what chip needs what driver, a lot of which is incorrect apparently, because my chip which was supposed to work with bcma needed broadcom-wl. The joy when I remembered USB tethering was a thing… For a laptop with no ethernet plug this was a godsend. Got the drivers, got wifi.

And since then, many “issues” I encountered where simply things that generally happened behind the scenes on MacOS I didn’t even know where happening. Learning about these things has been very gratifying, and gives a lot of respect for a polished OS that just works like magic. Eventually, an issue on MacOS I could not solve due to it being a walled garden made me switch to Linux as a daily driver, and once I got over CMD and CTRL being swapped it sped up my workflows and runs better overall. More tweaking tho of course.

There are odd quirks but I found fun solutions for some, and began planning and learning to remedy others. Mostly, everything is working really well. I am having a lot of fun!

My tip for anyone struggling with getting started with linux, set up a log function so you can easily log any relevant changes you make, and have it accessible from somewhere else (like a shared partition or external drive for example). This way you know what you have done and can use that to fix whatever you fuck up. Also, make a knowledge base with the sources you find useful. I have a small kb in UpNote now so I can look up how some things were done instead of having to search and find the right guides over and over.

  • jamie_oliver@lemmy.worldOP
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    12 hours ago

    It is not as cryptic as it sounded I just explained it badly.

    Log everything you do in human readable text, because realistically as a beginner going through machine generated logs is not very fun, and .bash_history will be filled with stuff that isn’t relevant always.

    It is just a bash script that logs a message with the current date to a file I can access from MacOS as well (on the shared partition) so that I can see what I did if I mess up too bad…

    Edit:

    Here it is:

    # Log argument to changelog.txt with current date and time.
    
    function log()
    {
    	local changelog="/run/media/jamie/DUAL/changelog"
    	local text="$(cat $changelog)" 
    	if [ "$1" == "--view" ]; then
    		cat $changelog
    	else
    		printf "$text\n$(date +%D:%H:%M): $1\n" > $changelog
    	fi
    }
    

    Each line looks like this: 03/16/25:11:49: Running dnf upgrade

    I will probably add some stuff so I can get the last 5 lines or something if I want, but at the moment this is really fine.

    • wewbull@feddit.uk
      link
      fedilink
      English
      arrow-up
      2
      ·
      12 hours ago

      Rather than reading the whole log just to add a line to it, you can use >> to append to the end of the file.

      function log()
      {
      	local changelog="/run/media/jamie/DUAL/changelog"
      	if [ "$1" == "--view" ]; then
      		cat $changelog
      	else
      		echo "$(date +%D:%H:%M): $1" >> $changelog
      	fi
      }
      
      • jamie_oliver@lemmy.worldOP
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        11 hours ago

        Nice I didn’t know that ^^ should probably learn at least the basic bash operators, I am just hacking together the different commands I happen to know at the moment really

        Edit: why echo instead of printf?

        This was causing a lot of issues with newlines, like when I fetched the log to view it my $ was right after the log entry so I switched it back. But it is probably useful in the future to use >> instead :)

        • wewbull@feddit.uk
          link
          fedilink
          English
          arrow-up
          2
          ·
          9 hours ago

          Also. If you do want to add an option to show the last few lines of the log using tail instead of cat will do it.