<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: アダム・ジョンソン</title>
    <description>The latest articles on DEV Community by アダム・ジョンソン (@notrobot200).</description>
    <link>https://dev.to/notrobot200</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3603573%2F3b9af54f-1c91-4bef-9cdc-5afd4a5aafc2.jpg</url>
      <title>DEV Community: アダム・ジョンソン</title>
      <link>https://dev.to/notrobot200</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/notrobot200"/>
    <language>en</language>
    <item>
      <title>🔥 How to Install GNS3 on Fedora + Your First "Hello, World!" in GNS3 🖥️⚡</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Wed, 26 Nov 2025 09:03:58 +0000</pubDate>
      <link>https://dev.to/notrobot200/how-to-install-gns3-on-fedora-your-first-hello-world-in-gns3-208n</link>
      <guid>https://dev.to/notrobot200/how-to-install-gns3-on-fedora-your-first-hello-world-in-gns3-208n</guid>
      <description>&lt;p&gt;When I first tried installing GNS3 on Fedora, I checked the &lt;a href="https://docs.gns3.com/docs/getting-started/installation/linux/" rel="noopener noreferrer"&gt;official GNS3 website&lt;/a&gt; — and surprisingly, Fedora wasn’t listed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9gqotabc9uasjcjqs9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9gqotabc9uasjcjqs9f.png" alt="gns3 official" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They only provide installation guides for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu-based distros&lt;/li&gt;
&lt;li&gt;Debian-based distros&lt;/li&gt;
&lt;li&gt;Arch-based distros&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But no &lt;strong&gt;Fedora&lt;/strong&gt; 😅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58uevo0233spv67bij3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58uevo0233spv67bij3r.png" alt="official repo" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luckily, GNS3 is actually available on Fedora — directly from its &lt;a href="https://packages.fedoraproject.org/" rel="noopener noreferrer"&gt;official repositories&lt;/a&gt;. Here’s how you can install it and run your very first “Hello, World!” inside GNS3!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Installing GNS3 on Fedora
&lt;/h2&gt;

&lt;p&gt;Even though Fedora isn't listed on the official website, Fedora includes GNS3 in its own package repositories.&lt;br&gt;
You can install both the server and GUI with just one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;gns3-server gns3-gui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gns3-server → backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch778oeg8aws1drzuxfv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch778oeg8aws1drzuxfv.png" alt="gns3 server" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gns3-gui → the graphical application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81pm727uxf7pkae45ruk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81pm727uxf7pkae45ruk.png" alt="gns3 gui" width="800" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. GNS3 Setup Wizard — Run Locally
&lt;/h2&gt;

&lt;p&gt;When launching GNS3 for the first time, the setup wizard appears.&lt;/p&gt;

&lt;p&gt;Choose:&lt;/p&gt;

&lt;p&gt;👉 Run appliances on my local computer&lt;/p&gt;

&lt;p&gt;This means the GNS3 server runs on your machine with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host: &lt;code&gt;localhost&lt;/code&gt; / &lt;code&gt;127.0.0.1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;3080 TCP&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Server binary: &lt;code&gt;/usr/bin/gns3server&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the simplest and fastest way to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  * Required Components (Dynamips &amp;amp; QEMU/KVM)
&lt;/h2&gt;

&lt;p&gt;When you choose Run appliances on my local computer, the GNS3 server runs locally — but GNS3 still needs additional backend engines to actually run network devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧩 Why Dynamips?
&lt;/h3&gt;

&lt;p&gt;Dynamips is the emulator that allows GNS3 to run classic Cisco IOS images (like c3725, c7200, etc.).&lt;br&gt;
If you want to practice CCNA/CCNP using real IOS images, Dynamips is essential.&lt;/p&gt;
&lt;h3&gt;
  
  
  🧩 Why QEMU/KVM (even on local setup)?
&lt;/h3&gt;

&lt;p&gt;Even though you’re running the GNS3 server locally, you still need QEMU/KVM because most modern devices in GNS3 depend on them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Palo Alto (PA) VM&lt;/li&gt;
&lt;li&gt;FortiGate VM&lt;/li&gt;
&lt;li&gt;Linux VMs (Ubuntu, Alpine, Kali, etc.)&lt;/li&gt;
&lt;li&gt;Custom appliances from GNS3 marketplace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These devices cannot run with Dynamips and require full virtualization.&lt;br&gt;
That’s where QEMU (emulator) and KVM (hardware acceleration) come in.&lt;/p&gt;

&lt;p&gt;Fedora provides them via the @virtualization group.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Install Dynamips (via Snap)
&lt;/h2&gt;

&lt;p&gt;Fedora doesn’t ship Dynamips in its default repositories, so the easiest way to install it is through Snap.&lt;/p&gt;

&lt;p&gt;But since Fedora does not include Snap out of the box, you must enable it first.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Step 1 — Installing snap on Fedora
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://snapcraft.io/docs/installing-snap-on-fedora" rel="noopener noreferrer"&gt;Snap can be installed on Fedora&lt;/a&gt; from the command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;snapd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installing Snap and setting it up, you need to &lt;strong&gt;refresh your session&lt;/strong&gt; so Fedora recognizes Snap’s new paths. You can do this by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logging out and logging back in, or&lt;/li&gt;
&lt;li&gt;Restarting your computer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, enable classic Snap support by creating a symbolic link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /var/lib/snapd/snap /snap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, log out and back in, or restart your system to make sure the change takes effect.&lt;br&gt;
To test your system, install the hello-world snap and make sure it runs correctly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;hello-world
hello-world 6.3 from Canonical✓ installed
&lt;span class="nv"&gt;$ &lt;/span&gt;hello-world
Hello World!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  📌 Step 2 — Install Dynamips via Snap
&lt;/h3&gt;

&lt;p&gt;Once Snap is enabled, install Dynamips with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;dynamips
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This installs the latest stable version directly from Snap’s repository because Fedora’s official packages do not include Dynamips.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Install QEMU/KVM
&lt;/h2&gt;

&lt;p&gt;Fedora makes this part easy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install&lt;/span&gt; @virtualization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This package group includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qemu — the main emulator&lt;/li&gt;
&lt;li&gt;qemu-kvm — hardware-accelerated virtualization&lt;/li&gt;
&lt;li&gt;libvirt — management service for VMs&lt;/li&gt;
&lt;li&gt;virtualization tools — additional utilities GNS3 relies on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these provide everything GNS3 needs to run modern virtual appliances like Linux VMs, firewalls, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Install xterm for Device Consoles
&lt;/h2&gt;

&lt;p&gt;GNS3 needs a terminal emulator to open console windows for devices like VPCS, Routers, and Switches.&lt;br&gt;
There are actually several console options available (as shown below) — such as gnome-terminal, konsole, tilix, kitty, and more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbadkajkkegdg36122lx9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbadkajkkegdg36122lx9.png" alt="list console" width="800" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But for now, I’m installing xterm, because it’s simple and works out of the box on Fedora.&lt;br&gt;
(I still don’t know the full comparison between all these terminals hehe 😅)&lt;/p&gt;

&lt;p&gt;Install xterm with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;xterm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without a terminal emulator installed, some console windows may fail to open.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Your First "Hello, World!" in GNS3 🖥️💬
&lt;/h2&gt;

&lt;p&gt;Let’s create the simplest possible network test using 2 VPCS nodes and 1 Ethernet switch.&lt;br&gt;
This mini-topology will help you confirm that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VPCS works ✔️&lt;/li&gt;
&lt;li&gt;Switch works ✔️&lt;/li&gt;
&lt;li&gt;Console works ✔️&lt;/li&gt;
&lt;li&gt;Basic connectivity (ping) works ✔️&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  1️⃣ Create a New Blank Project
&lt;/h3&gt;

&lt;p&gt;Open GNS3 → click New Blank Project → give it a name (e.g., &lt;code&gt;hello-world&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxozyns672sserof8t19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxozyns672sserof8t19.png" alt="new project" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2️⃣ Create the Topology
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf4us7bkhn4f8d7e31j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcf4us7bkhn4f8d7e31j0.png" alt="all devices" width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drag and drop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;VPCS (twice) → creates PC1 and PC2&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ethernet Switch → any basic unmanaged switch&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your topology will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwh58e3j2nwj9enkinzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwh58e3j2nwj9enkinzo.png" alt="topology start" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3️⃣ Connect the Devices
&lt;/h3&gt;

&lt;p&gt;Use the “Add a Link” tool:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4y2k1em1wnjiutgi0ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4y2k1em1wnjiutgi0ls.png" alt="with cable" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Connect PC1 → Switch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect PC2 → Switch&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any switch ports are fine (e0, e1, e2, etc.).&lt;/p&gt;
&lt;h3&gt;
  
  
  4️⃣ Start All Nodes &amp;amp; Assign IP Addresses to Each VPCS
&lt;/h3&gt;

&lt;p&gt;After building the topology, click Start all nodes to power on your VPCS and the switch:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo06ui2p74jt609hownkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo06ui2p74jt609hownkq.png" alt="start all nodes" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, open the console for each VPCS:&lt;/p&gt;

&lt;p&gt;👉 Right-click VPCS → Console (this will open an xterm window)&lt;/p&gt;

&lt;p&gt;📏 First time opening a VPCS console in xterm, you may notice the font is very small — hehe, same for me!&lt;br&gt;
So if you want to increase the font size or change the font style, you can customize xterm easily.&lt;/p&gt;

&lt;p&gt;Go to:&lt;br&gt;
Edit → Preferences → General Preferences → Console Applications → Console Settings&lt;/p&gt;

&lt;p&gt;Then edit the xterm command (Copy/Edit) and modify it, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xterm &lt;span class="nt"&gt;-fa&lt;/span&gt; &lt;span class="s2"&gt;"Monospace"&lt;/span&gt; &lt;span class="nt"&gt;-fs&lt;/span&gt; 14 &lt;span class="nt"&gt;-T&lt;/span&gt; &lt;span class="s2"&gt;"{name}"&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"telnet {host} {port}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeyav8m0uf25jm6bgwiw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faeyav8m0uf25jm6bgwiw.png" alt="xterm config" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now assign IP addresses.&lt;/p&gt;

&lt;p&gt;🖥️&lt;strong&gt;PC1&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip 192.168.1.10/24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🖥️&lt;strong&gt;PC2&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip 192.168.1.11/24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can confirm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;show ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqqfoyrcq9worclmg3o0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqqfoyrcq9worclmg3o0.png" alt="show ip pc1" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foatdwi9jpb3tkzy36bdc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foatdwi9jpb3tkzy36bdc.png" alt="show ip pc2" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5️⃣ Test Connectivity (“Hello, World!” Ping) 🎉
&lt;/h3&gt;

&lt;p&gt;From PC1, ping PC2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ping 192.168.1.11
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything is correct, you’ll see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;84 bytes from 192.168.1.11 &lt;span class="nv"&gt;icmp_seq&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="nv"&gt;ttl&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;64 &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.324 ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xs5kpycm8udixtn296f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0xs5kpycm8udixtn296f.png" alt="test ping" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats — that’s your Hello, World! Network inside GNS3! 🚀🌐&lt;/p&gt;

</description>
      <category>network</category>
      <category>linux</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Day I Learned Why Dev Environments Exist 🤯</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Wed, 26 Nov 2025 03:56:45 +0000</pubDate>
      <link>https://dev.to/notrobot200/the-day-i-learned-why-dev-environments-exist-3l00</link>
      <guid>https://dev.to/notrobot200/the-day-i-learned-why-dev-environments-exist-3l00</guid>
      <description>&lt;p&gt;So… this was actually my first time dealing with a situation like this.&lt;br&gt;
The app was already live, users had submitted their data 🧑‍💻📥, and suddenly I needed to add new features. I panicked a bit at first 😅, what if I broke something in production? What if user data got messed up?&lt;/p&gt;

&lt;p&gt;That’s when I realized:&lt;br&gt;
“Okay, I need a proper dev environment… and I need it now.” ⚙️🔥&lt;/p&gt;

&lt;p&gt;Before building that dev environment, I paused for a moment to review my production setup.&lt;br&gt;
And honestly… it was pretty solid for a first build 💪🙂&lt;/p&gt;
&lt;h2&gt;
  
  
  🏗️ My Production Architecture (Simple Overview)
&lt;/h2&gt;

&lt;p&gt;Basically, my production environment runs on Google Cloud Platform (RESTful API, database, storage) and Netlify (frontend deployment). Here’s the simplified architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend (Vue.js) → Deployed on Netlify as a static web app 🌐&lt;/li&gt;
&lt;li&gt;RESTful API (Flask) → Built with a Dockerfile 🐳 and deployed to Google Cloud Run &lt;/li&gt;
&lt;li&gt;File Storage 📄 → I use Google Cloud Storage to store user-uploaded documents (like invoices, etc.), organized into several folders based on category 🔐&lt;/li&gt;
&lt;li&gt;Database (MySQL) 🗄️ → Hosted on a Compute Engine VM 🖥️&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yeah... production worked. It served real users. But that also meant I had to be careful.&lt;br&gt;
One wrong change… and boom 💥, users would feel it 😬&lt;/p&gt;
&lt;h2&gt;
  
  
  So how did I end up building the dev environment?
&lt;/h2&gt;

&lt;p&gt;At first, I had no idea where to start, so I explored, asked around, and slowly pieced everything together. Here’s how the journey played out 👇&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Cloning the Production Database to a Dev Database 🗄️➡️🗄️
&lt;/h3&gt;

&lt;p&gt;The first thing I had to do was duplicate my production SQL database.&lt;br&gt;
I needed the exact same structure but in a safe sandbox where nothing I changed could affect real users.&lt;br&gt;
So I decided to clone the production database inside the same MySQL server, then restore it into a brand-new database for dev database.&lt;br&gt;
Here’s how I did it using the MySQL CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Export production database&lt;/span&gt;
mysqldump &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt; app_prod &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; app_prod_backup.sql

&lt;span class="c"&gt;# 2. Create a new dev database&lt;/span&gt;
mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"CREATE DATABASE app_dev;"&lt;/span&gt;

&lt;span class="c"&gt;# 3. Import production data into the new dev database&lt;/span&gt;
mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt; app_dev &amp;lt; app_prod_backup.sql

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Creating a New Branch from &lt;code&gt;main&lt;/code&gt; 🌿
&lt;/h3&gt;

&lt;p&gt;I knew enough to not touch production code directly.&lt;br&gt;
So I created a dev branch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n1460womnilavq3q3vv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7n1460womnilavq3q3vv.png" alt="github" width="405" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It became my sandbox, my first real “safe space” to test anything I wanted.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Deploying a New Cloud Run Service ☁️⚙️
&lt;/h3&gt;

&lt;p&gt;This part felt like a milestone.&lt;br&gt;
Spinning up a separate Cloud Run service for dev made me feel like:&lt;br&gt;
“Okay… I’m doing this the right way.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouo4qn7yhv6xg0jc01jy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouo4qn7yhv6xg0jc01jy.png" alt="cloud run" width="403" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now dev had its own backend service, completely isolated.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Switching Environment Variables to the Dev Database 🔧🗃️
&lt;/h3&gt;

&lt;p&gt;Next, I updated the environment variables so the dev backend pointed to the dev DB.&lt;br&gt;
This was one of those steps where I double-checked everything, because I was scared I’d accidentally reconnect to production 😅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ay9d881ife6csf8rgl2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ay9d881ife6csf8rgl2.png" alt="env cloud run" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Cloning the Storage Bucket 📦📤
&lt;/h3&gt;

&lt;p&gt;Then came the storage problem:&lt;br&gt;
“Wait… uploaded files also need a dev version??”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5kpi5g0cl0g2j3pay17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5kpi5g0cl0g2j3pay17.png" alt="cloud storage" width="252" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yup.&lt;br&gt;
So I cloned the production bucket into a dev bucket.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Updating Backend Config to Use the Dev Bucket 🔁📁
&lt;/h3&gt;

&lt;p&gt;After that, I switched the backend to use the dev bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu37ec2u8u6i7eobedp4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu37ec2u8u6i7eobedp4s.png" alt="dev bucket" width="396" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Updating Frontend to Use the Dev API 🌐➡️⚙️
&lt;/h3&gt;

&lt;p&gt;Of course, the frontend also needed to point to the new dev API URL.&lt;br&gt;
Another one of those steps where I said to myself:&lt;br&gt;
“Please don’t typo… please don’t typo…” 😆&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flf3fcn9rhkee3hvwgvv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flf3fcn9rhkee3hvwgvv3.png" alt="url cloudrun" width="385" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Testing, Experimenting, and Adding Features Safely 🛠️✨
&lt;/h3&gt;

&lt;p&gt;Once everything was separated—DB, bucket, Cloud Run, branch—it felt so good.&lt;br&gt;
For the first time, I could test new features freely without worrying about real users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7grprj7glaxlb2xzmac9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7grprj7glaxlb2xzmac9.png" alt="reimtrck dev" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And honestly?&lt;br&gt;
This was the first time I truly appreciated how important a dev environment is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up — Any Thoughts or Suggestions?
&lt;/h2&gt;

&lt;p&gt;Do you think this setup is on the right track?&lt;br&gt;
I’m open to any insights or best practices that could make it even better 🚀✨&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cloud</category>
      <category>devops</category>
      <category>discuss</category>
    </item>
    <item>
      <title>My Smooth Journey Setting Up Dual Boot: Windows + Fedora Workstation Linux 🚀🐧</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Sat, 15 Nov 2025 11:18:13 +0000</pubDate>
      <link>https://dev.to/notrobot200/how-i-successfully-set-up-dual-boot-windows-fedora-linux-574a</link>
      <guid>https://dev.to/notrobot200/how-i-successfully-set-up-dual-boot-windows-fedora-linux-574a</guid>
      <description>&lt;p&gt;I recently installed Fedora Linux alongside Windows on my laptop — and wow, the journey was smoother after I fixed one annoying issue: EFI partition placement.&lt;br&gt;
So here’s the full step-by-step guide I followed, plus how I solved my partitioning problems 🙌&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Prepare Disk Partitions 🧩
&lt;/h2&gt;

&lt;p&gt;Originally, my laptop had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C: (main Windows system)&lt;/li&gt;
&lt;li&gt;D: (a secondary partition I previously created from C)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since I wanted Fedora to handle automatic shrinking during installation, I decided to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Delete Drive D, turning it into Unallocated Space&lt;/li&gt;
&lt;li&gt;Merge that unallocated space back into C:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This would allow the Fedora installer to manage partitioning cleanly.&lt;/p&gt;

&lt;h3&gt;
  
  
  But here’s the problem:
&lt;/h3&gt;

&lt;p&gt;Windows wouldn’t let me merge the unallocated space back into C:&lt;br&gt;
because the EFI System Partition (ESP) was sitting between C: and the unallocated space.&lt;/p&gt;

&lt;p&gt;This made the layout look messy, and Windows Disk Management can’t extend a partition if something is blocking it from the right side.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fix: Move the EFI System Partition 🔧
&lt;/h3&gt;

&lt;p&gt;To solve this, I used &lt;a href="https://www.resize-c.com/" rel="noopener noreferrer"&gt;IM-Magic Partition Resizer&lt;/a&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Move the EFI System Partition to the far right&lt;/li&gt;
&lt;li&gt;After that, Windows finally allowed me to merge the unallocated space into C:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 If your laptop only has a single C: drive and no D:, you likely won’t face this issue.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Download Fedora Media Writer 📥
&lt;/h2&gt;

&lt;p&gt;I downloaded &lt;a href="https://www.fedoraproject.org/workstation/download" rel="noopener noreferrer"&gt;Fedora Media Writer&lt;/a&gt; from the official website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foozl2afw7pigajq3f6bz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foozl2afw7pigajq3f6bz.png" alt="fedora media writer" width="795" height="165"&gt;&lt;/a&gt;&lt;br&gt;
Since my laptop is running Windows, I selected the Windows download option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6oh42a3lydbsc7xgq21.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp6oh42a3lydbsc7xgq21.png" alt="github media writer" width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
On the next page, choose the win64 .exe file to download the installer.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Insert Your USB Drive 💾
&lt;/h2&gt;

&lt;p&gt;Plug in your USB stick (4GB or more).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvo709a1nbtihptg62v5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvo709a1nbtihptg62v5e.png" alt="min usb" width="798" height="233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Create the Bootable USB 🔨
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fzn9rieoid11fjl8qro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fzn9rieoid11fjl8qro.png" alt="fedora media writer" width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install and open Fedora Media Writer&lt;/li&gt;
&lt;li&gt;Select Fedora Workstation&lt;/li&gt;
&lt;li&gt;Choose your USB drive (usually auto-detected)&lt;/li&gt;
&lt;li&gt;Write the image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few minutes later — USB is ready! 🎉&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Restart 🔁 and Boot From USB
&lt;/h2&gt;

&lt;p&gt;Restart your laptop, and choose to boot from the USB drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Install Fedora on Your Computer
&lt;/h2&gt;

&lt;p&gt;In Live Mode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test your hardware (WiFi, Bluetooth, audio, etc.)&lt;/li&gt;
&lt;li&gt;Start the installer&lt;/li&gt;
&lt;li&gt;Choose how much space Fedora should use (it will detect the space you prepared earlier)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Boot Into Windows Again 🪟
&lt;/h2&gt;

&lt;p&gt;After Fedora finishes installing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Select Windows Boot Manager&lt;/li&gt;
&lt;li&gt;Check that Windows works properly&lt;/li&gt;
&lt;li&gt;Verify that your C: drive size has decreased based on the Fedora partition&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Eject the USB Drive
&lt;/h2&gt;

&lt;p&gt;Safely remove your USB stick and restart again.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Boot Into Fedora 🏁
&lt;/h2&gt;

&lt;p&gt;Restart again and choose Fedora from the boot menu.&lt;br&gt;
If everything loads fine — congrats! You now have a clean and stable Windows + Fedora dual-boot setup 🐧💻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Festv182yn0pufw05ejk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Festv182yn0pufw05ejk2.png" alt="blue lock" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🙏 Special Thanks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/z5xHkNPjPv8?si=yndujlNOBiI_ZHn_" rel="noopener noreferrer"&gt;Learn Linux TV&lt;/a&gt; – for the excellent explanation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/YOqGWwpY5R0?si=Guy0x8JsRKfTJTdo" rel="noopener noreferrer"&gt;IM-Magic&lt;/a&gt; – for solving the partition blocking issue&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>architecture</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Faced a Problem Cloning a Private Repo? Here’s How I Connected GitHub with SSH</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Wed, 12 Nov 2025 07:54:38 +0000</pubDate>
      <link>https://dev.to/notrobot200/faced-a-problem-cloning-a-private-repo-heres-how-i-connected-github-with-ssh-2po1</link>
      <guid>https://dev.to/notrobot200/faced-a-problem-cloning-a-private-repo-heres-how-i-connected-github-with-ssh-2po1</guid>
      <description>&lt;p&gt;I once ran into an issue cloning a private repo and got tired of typing my GitHub username and password every time I pushed or pulled changes. So, I decided to set up SSH authentication, a simple and secure way to connect to GitHub without those annoying password prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Check if You Already Have an SSH Key
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; ~/.ssh/id_&lt;span class="k"&gt;*&lt;/span&gt;.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see files like &lt;code&gt;id_ed25519.pub&lt;/code&gt; or &lt;code&gt;id_rsa.pub&lt;/code&gt;, you already have an SSH key pair. If not, proceed to generate one.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Generate a New SSH Key
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;"email@example.com"&lt;/code&gt; with the email address linked to your GitHub account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your system doesn’t support &lt;code&gt;ed25519&lt;/code&gt;, you can use &lt;code&gt;rsa -b 4096&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Enter file &lt;span class="k"&gt;in &lt;/span&gt;which to save the key &lt;span class="o"&gt;(&lt;/span&gt;/home/user/.ssh/id_ed25519&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simply press Enter to accept the default location.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Enter passphrase &lt;span class="o"&gt;(&lt;/span&gt;empty &lt;span class="k"&gt;for &lt;/span&gt;no passphrase&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set a Passphrase (Optional)&lt;br&gt;
You can either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Press Enter to leave it empty (no password)&lt;/li&gt;
&lt;li&gt;Or add a passphrase for extra security&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  3. Add Your SSH Key to GitHub
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Copy the entire output&lt;/li&gt;
&lt;li&gt;Go to GitHub → Settings → SSH and GPG keys&lt;/li&gt;
&lt;li&gt;Click “New SSH key”&lt;/li&gt;
&lt;li&gt;Paste your key into the Key field&lt;/li&gt;
&lt;li&gt;Give it a Title (e.g., “Fedora Laptop”)&lt;/li&gt;
&lt;li&gt;Click Add SSH key&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  4. Test the SSH Connection
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Verify that your SSH key is correctly connected to GitHub.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Hi username! You&lt;span class="s1"&gt;'ve successfully authenticated...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means your SSH setup works perfectly!&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Clone Your Private Repository via SSH
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone git@github.com:username/repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;username&lt;/code&gt; and &lt;code&gt;repo.git&lt;/code&gt; with your actual GitHub username and repository name.&lt;/p&gt;

</description>
      <category>github</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Set Up Your LAMP Stack on Fedora 42 🔥 Complete Guide to MySQL, Apache, PHP &amp; phpMyAdmin 🚀</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Wed, 12 Nov 2025 07:11:17 +0000</pubDate>
      <link>https://dev.to/notrobot200/set-up-your-lamp-stack-on-fedora-42-complete-guide-to-mysql-apache-php-phpmyadmin-36og</link>
      <guid>https://dev.to/notrobot200/set-up-your-lamp-stack-on-fedora-42-complete-guide-to-mysql-apache-php-phpmyadmin-36og</guid>
      <description>&lt;p&gt;Here’s a quick guide to set up a full LAMP stack (Linux, Apache, MySQL, PHP) on Fedora. Let’s get started! 💻✨&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install MySQL Server 🛢️
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;mysql-server &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installs the MySQL server package using Fedora’s package manager (&lt;code&gt;dnf&lt;/code&gt;). The &lt;code&gt;-y&lt;/code&gt; flag automatically confirms the installation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start mysqld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starts the MySQL service so it can begin running in the background.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;mysqld
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enables MySQL to start automatically on system boot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mysql_secure_installation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Launches a security setup script to configure root password, remove test databases, and secure your MySQL installation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access MySQL 🔐
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opens the MySQL command-line client as the root user. You’ll be prompted to enter the root password set during the secure installation step.&lt;br&gt;
&lt;a href="https://docs.fedoraproject.org/en-US/quick-docs/installing-mysql-mariadb/" rel="noopener noreferrer"&gt;Official Guide from Fedora&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Install Apache and PHP ⚙️
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;httpd php php-mysqlnd php-json php-mbstring php-zip php-gd php-fpm &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Installs Apache (&lt;code&gt;httpd&lt;/code&gt;) 🌐 and PHP along with common PHP extensions used by web apps, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;php-mysqlnd&lt;/code&gt;: for connecting PHP to MySQL&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;php-json&lt;/code&gt;: for working with JSON data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;php-mbstring&lt;/code&gt;: for multibyte string processing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;php-zip&lt;/code&gt;, &lt;code&gt;php-gd&lt;/code&gt;: for file compression and image handling&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;php-fpm&lt;/code&gt;: for managing PHP processes efficiently
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Starts the Apache web server service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensures Apache automatically starts on boot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access Apache 🌍
&lt;/h3&gt;

&lt;p&gt;👉&lt;code&gt;http://127.0.0.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5wwxnwt2lc7r2ku86gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5wwxnwt2lc7r2ku86gm.png" alt="fedora" width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
If you see a Fedora test page, Apache is running successfully!&lt;br&gt;
&lt;a href="https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-apache-http-server/" rel="noopener noreferrer"&gt;Official Guide from Fedora&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.php.net/manual/en/install.unix.dnf.php" rel="noopener noreferrer"&gt;Official Guide from PHP&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Install phpMyAdmin 🧰
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;https://rpms.remirepo.net/fedora/remi-release-&lt;span class="si"&gt;$(&lt;/span&gt;rpm &lt;span class="nt"&gt;-E&lt;/span&gt; %fedora&lt;span class="si"&gt;)&lt;/span&gt;.rpm &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Adds the Remi repository, which provides the latest PHP and phpMyAdmin packages for Fedora.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf config-manager setopt remi.enabled&lt;span class="o"&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enables the Remi repository you just installed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;phpMyAdmin &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Installs phpMyAdmin, a web-based interface for managing MySQL databases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restarts Apache to apply configuration changes and load phpMyAdmin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access phpMyAdmin 📊
&lt;/h3&gt;

&lt;p&gt;👉&lt;code&gt;http://127.0.0.1/phpmyadmin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozqenfh5qx3aex0f0eiu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozqenfh5qx3aex0f0eiu.png" alt="phpmyadmin" width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
Login using your MySQL username and password.&lt;br&gt;
&lt;a href="https://blog.remirepo.net/post/2020/01/22/phpMyAdmin-version-5-en" rel="noopener noreferrer"&gt;Official Guide from Remi's RPM repository&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 You're All Set!
&lt;/h2&gt;

&lt;p&gt;You now have:&lt;/p&gt;

&lt;p&gt;✅ MySQL&lt;br&gt;
✅ Apache&lt;br&gt;
✅ PHP + Extensions&lt;br&gt;
✅ phpMyAdmin&lt;/p&gt;

&lt;p&gt;All running smoothly on Fedora. Perfect for local development, testing, or learning web technologies 🐧💻✨&lt;/p&gt;

</description>
      <category>linux</category>
      <category>mysql</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>From whoami to "Who Am I?": My Journey as a Renamed Linux User</title>
      <dc:creator>アダム・ジョンソン</dc:creator>
      <pubDate>Mon, 10 Nov 2025 04:37:15 +0000</pubDate>
      <link>https://dev.to/notrobot200/from-whoami-to-who-am-i-my-journey-as-a-renamed-linux-user-p4g</link>
      <guid>https://dev.to/notrobot200/from-whoami-to-who-am-i-my-journey-as-a-renamed-linux-user-p4g</guid>
      <description>&lt;h2&gt;
  
  
  It All Started With My First Linux Install
&lt;/h2&gt;

&lt;p&gt;I typed a username without thinking much about it. For weeks, I knew I wanted to change it both for comfort and to learn how Linux manages users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Renaming a User on Fedora Workstation 42
&lt;/h2&gt;

&lt;p&gt;You can’t rename a logged-in user because system processes are running under that username. To fix this, log out completely by clicking the power icon in the top-right corner and selecting Log Out. Once you’re back at the login screen, switch to a TTY session by pressing Ctrl + Alt + F3, where you can safely perform the username change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;passwd &lt;span class="nt"&gt;-S&lt;/span&gt; root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows the status of the root account. If it’s locked, you won’t be able to log in as root yet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;passwd root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the root account is locked (status shows &lt;code&gt;L&lt;/code&gt;), you can unlock it by setting a new password.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps &lt;span class="nt"&gt;-u&lt;/span&gt; old_username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before renaming a user, make sure the old user isn't running any processes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;usermod &lt;span class="nt"&gt;-l&lt;/span&gt; new_username old_username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This changes the username from &lt;code&gt;old_username&lt;/code&gt; to &lt;code&gt;new_username&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/passwd | &lt;span class="nb"&gt;grep &lt;/span&gt;new_username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check &lt;code&gt;/etc/passwd&lt;/code&gt; to confirm that the user has been renamed successfully.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;usermod &lt;span class="nt"&gt;-d&lt;/span&gt; /home/new_username &lt;span class="nt"&gt;-m&lt;/span&gt; new_username
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command updates the user’s home directory to match the new username and moves all existing files to the new location. After completing the changes, return to the graphical interface by pressing Ctrl + Alt + F1 or Ctrl + Alt + F2.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixing File Manager
&lt;/h2&gt;

&lt;p&gt;After changing the username, you might notice broken bookmarks in the Nautilus file manager. To fix them, locate and edit the bookmarks file, then update all paths that still point to the old home directory so they match the new username.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find ~/.config &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"*bookmarks*"&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This searches for any files in your &lt;code&gt;~/.config&lt;/code&gt; directory that contain “bookmarks” in their name. The &lt;code&gt;2&amp;gt;/dev/null&lt;/code&gt; part hides any “permission denied” errors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.config/gtk-3.0/bookmarks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use a text editor (here, &lt;code&gt;nano&lt;/code&gt;) to open the bookmarks file.&lt;br&gt;
Inside the file, change all instances of the old home directory path (&lt;code&gt;/home/old_username&lt;/code&gt;) to the new one (&lt;code&gt;/home/new_username&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Linux user management involves multiple files and processes.&lt;/li&gt;
&lt;li&gt;The terminal becomes much more enjoyable when you love your username!😄&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>tutorial</category>
      <category>bash</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
