DEV Community

Mohamed Reda Foshi
Mohamed Reda Foshi

Posted on

My Linux Journey

Intro

My Linux journey started with curiosity. I wanted to understand how computers really work, not just use them.

From Ubuntu and Kali to Arch, I learned Linux by experimenting, breaking things, researching, and fixing them. Along the way, I discovered the power of the terminal, open source, Docker, kernels, networking, and endless customization.

This is the story of how Linux went from just another operating system to something I genuinely enjoy using. 🐧
Where It All Started

At the end of summer, we went back home, so I decided to format my laptop and dual-boot Windows and Kali Linux. That decision made me hate Microsoft a lot. 😂

When I tried to split my storage and free up some space for Kali, Windows had something enabled called BitLocker, and it made partitioning the disk much harder. I tried several tools to work around it and finally found one that worked — or so I thought. I tried it again, and Windows only gave me 16 MB of free space. I was like, “Are you kidding me? What am I supposed to do with 16 MB?” 😂

I tried Microsoft’s tools, then a third-party tool, and somehow managed to make Windows act weird.

The next summer, I joined Network 42 pool in Rabat, Morocco. We used Ubuntu Linux, and I started loving Linux a lot. At the end of the program, I decided to try using Kali Linux as my main OS.

At that time, I was also trying to improve my cybersecurity skills. I wanted to install Docker on Windows, but fixing the installation problems was surprisingly difficult. After a few days of troubleshooting, I decided to format Windows.

I watched one last tutorial, and they told me to reboot Windows and enter Safe Mode. Then I ran into another problem: my PIN stopped working. Windows showed “Click to fix”, but clicking it did absolutely nothing. 😭

So I formatted the computer again.

This time, I decided to install Arch Linux. A friend had recommended Arch to me after the Network 42 program. Kali comes with many penetration-testing tools preinstalled, but I wanted to learn Linux itself instead of having everything configured for me.

And yes… I use Arch, btw. 😂

I installed Arch using a simple GUI installer because I wanted to try the easy way first. I installed it directly on my main computer — not inside a virtual machine.

Then came the partitioning problems.

Because I was dual-booting, I had to work with the command line and learn things like swap, filesystems, partitions, and bootloaders. Eventually, everything seemed to work.

Then I rebooted.

GRUB didn’t recognize Arch.

I spent about two days trying to fix it. I reinstalled GRUB several times. Eventually, GRUB detected Arch… but Arch still wouldn’t boot.

So I went into the GRUB command line and manually checked whether Arch was actually installed and where its files were. After about half a day, I finally fixed it.

So now we’re finished, right?

No. 😂

I had another problem: networking.

I spent around four hours trying to fix it. Instead of using a small terminal, I ended up using a huge GUI with a wall of text. Eventually, I discovered that I needed NetworkManager. I installed it from the USB installation environment and got networking working.

The next day, I discovered another problem.

The network was broken again.

I checked NetworkManager, but it wasn’t working. Even Bluetooth wasn’t working anymore. I ran:
ip
and it only showed:
lo
So I checked the hardware drivers. The driver was there, but after researching the problem, I discovered that I might need to update the kernel.

At this point, I thought:

“Arch is open source, so I can basically clone the source code onto Windows, and Linux can access Windows. That’s a brilliant idea, right?” 😂
Enter fullscreen mode Exit fullscreen mode

I asked AI about it, and it said yes but that this was more of an advanced-user approach.

Instead, I used my USB boot environment to update the kernel. And honestly, this was awesome. You can boot Linux from a USB, access the files on your installed system, and fix problems from the command line. You can even mount and unmount filesystems manually using commands like mount and umount.

Then I decided to update Arch to the LTS (Long-Term Support) kernel.

And, of course…

That caused another problem. 😭

My normal kernel was 6.17.1, while the LTS kernel was 6.12.5. I installed both kernels.

When I booted Arch, it started using the LTS kernel. I checked with:

uname -r

and it showed:

6.12.5

But my package manager showed the newer kernel, 6.17.2.

So I thought:

“Fine. I’ll just remove the LTS kernel.”
Enter fullscreen mode Exit fullscreen mode

I removed it, rebooted my laptop…

And Arch booted into the LTS kernel again.

I checked again, and the system told me that the LTS kernel wasn’t even installed anymore.

But somehow…

I was still booting into it. 💀

I rebooted again and manually selected the newer kernel, 6.17.1, from the GRUB menu.

Finally, everything worked.

So after all of that, I learned an important lesson:

If you’re using Arch, don’t update things just because you can. 😂
My Desktop Environment Journey

After a while, I got an idea: why not switch my desktop environment (DE)?

At that time, I was using GNOME, so I decided to try KDE Plasma.

I installed it, but I ran into a problem. I was using an LLM to help me, and it gave me two commands. The first one installed KDE normally, without all the KDE applications. The second one installed KDE with all the KDE applications.

And of course…

I chose number 2. 😂

Why?

Because I wanted to test the KDE applications.

Oh, and I forgot one important thing: I had only given Linux 180 GB out of my 500 GB disk. The rest was reserved for Windows.

After installing KDE with all the applications, suddenly I had two calculators, two file managers, and duplicates of almost everything.

And my disk was getting full all the time.

At first, I ignored it. I thought, “I’ll just delete some small files.”

But KDE has a lot of applications, and I didn’t know which packages were safe to remove. So I asked AI for a simple command.
Become a Medium member

Eventually, I removed all the unnecessary KDE applications.

And because I’m a developer, I had another idea:

node_modules

😂

I deleted node_modules from projects I wasn't working on anymore.

I managed to free up some space. I had around 40 GB free, then somehow I was down to about 15 GB.

But then something crazy happened.

One day I had 40 GB free.

The next day:

0 GB.

I thought:

“Did I install a game? Did I get a virus? What the hell happened?” 😂
Enter fullscreen mode Exit fullscreen mode

So I started investigating.

Then I found something taking up around 40 GB:

Docker volumes.

At that time, I had just started learning Docker, so I was confused.

“What is a volume?”

I knew about Dockerfiles and YAML files, but I didn’t really understand Docker volumes yet.

So I researched it and learned that, basically, a Docker volume is persistent storage that containers can use — for example, for databases.

And at that time, I was running three projects with Docker, all at the same time.

So yeah…

Docker ate my disk. 😂

After I had been using KDE for about two days, I also started experimenting with ricing.

For anyone who doesn’t know, ricing is basically heavily customizing your Linux desktop: the appearance, terminal, bars, colors, fonts, keybindings, wallpaper, and pretty much everything else.

I spent some time customizing KDE, and it was fun.

But I quickly realized something:

I’m spending more time customizing Linux than actually using Linux. 😂
Enter fullscreen mode Exit fullscreen mode

So I stopped ricing KDE.

After that, I thought:

“Okay, let’s try another DE.”

And that’s when I discovered Hyprland.
Welcome to Hyprland

What is Hyprland?

It’s a Wayland compositor with a highly customizable tiling-window experience.

And I thought:

“The most customizable desktop? Why not?” 😂
Enter fullscreen mode Exit fullscreen mode

Unlike GNOME or KDE, Hyprland doesn’t give you a complete desktop environment with everything already configured.

You basically build your desktop yourself.

You need to choose things like:

A bar
An application launcher
A notification system
A lock screen
Wallpapers
Clipboard tools
Screenshot tools
And many other components
Enter fullscreen mode Exit fullscreen mode

At first, it was really weird.

After using GNOME and KDE, Hyprland felt completely different.

But after I started understanding how it worked…

I loved it.

The windows don’t behave like traditional floating windows. They are arranged automatically, and you can customize almost everything.

The keyboard shortcuts were another thing I really liked.

You can create your own shortcuts for applications and even system actions.
For example, instead of using:
Ctrl + L

you can configure something like:
Ctrl + Shift + L

to lock your computer.

Of course, you need a lock-screen program such as hyprlock to actually provide the locking functionality.

And that’s what I liked about Hyprland:

You don’t just use the desktop. You build your desktop.
Enter fullscreen mode Exit fullscreen mode

My journey went from GNOME → KDE Plasma → KDE ricing → Docker → Hyprland.

And the funny thing is, every time I changed something, I learned something new about Linux.

Sometimes I broke something.
Sometimes I fixed it.
Sometimes I made the problem even worse. 😂
But that’s exactly what made the journey interesting.
Enter fullscreen mode Exit fullscreen mode

I use Arch, btw. 🐧

If you enjoyed this journey, stay tuned for my next one: My Linux Server Journey. 🐧

Top comments (0)