<?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: Chinenye Genevieve Onyema</title>
    <description>The latest articles on DEV Community by Chinenye Genevieve Onyema (@gennyonyema).</description>
    <link>https://dev.to/gennyonyema</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%2F2794421%2F577eece5-f219-4298-9e66-d662d2fa8d3d.png</url>
      <title>DEV Community: Chinenye Genevieve Onyema</title>
      <link>https://dev.to/gennyonyema</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gennyonyema"/>
    <language>en</language>
    <item>
      <title>How Linux Awakens: What Happens When You Press the Power Button.</title>
      <dc:creator>Chinenye Genevieve Onyema</dc:creator>
      <pubDate>Mon, 05 May 2025 22:08:19 +0000</pubDate>
      <link>https://dev.to/gennyonyema/how-linux-awakens-what-happens-when-you-press-the-power-button-2ap3</link>
      <guid>https://dev.to/gennyonyema/how-linux-awakens-what-happens-when-you-press-the-power-button-2ap3</guid>
      <description>&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%2Fxghsh6561oglj6hltlf8.jpg" 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%2Fxghsh6561oglj6hltlf8.jpg" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Linux Boot Process from Power-On to Login.
&lt;/h2&gt;

&lt;p&gt;Have you ever wondered what happens when you click the power button on your Linux system? When you press the power button on your Linux system, a complex sequence of events occurs in milliseconds, bringing your system to life. Whether you're a Linux System Administrator, DevOps engineer, Site Reliability engineer, or a Linux enthusiast, understanding the Linux boot process helps you to troubleshoot issues, optimize performance, and appreciate the inner workings of your system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is a Simplified Overview of What Happens behind the scenes:&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. BIOS/UEFI Initialization (Firmware Stage)
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
When you press the power button, the motherboard's system firmware (BIOS for older systems and UEFI for newer ones) kicks in.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Key Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performs a diagnostic test known as &lt;strong&gt;POST(Power-On Self Test)&lt;/strong&gt; to check hardware components such as RAM, CPU, storage devices, and peripherals.&lt;/li&gt;
&lt;li&gt;Detects and initializes boot devices(SSD, HDD, USB, etc)&lt;/li&gt;
&lt;li&gt;Once the hardware is verified, the firmware hands over control to the bootloader stored on the primary boot device.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important fact:&lt;/strong&gt; UEFI is replacing BIOS because it's faster, supports larger drivers (over 2TB), and has a graphical user interface.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. BOOTLOADER Execution
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
The firmware searches for the bootloader on the storage device and loads it into memory.&lt;br&gt;
The &lt;strong&gt;Bootloader&lt;/strong&gt; is a small program that loads the Linux kernel into memory. The most common Bootloader is GRUB(Grand Unified Bootloader).&lt;br&gt;
&lt;strong&gt;Key Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GRUB presents a boot menu to select the OS/Kernel options or automatically load the default Linux kernel.&lt;/li&gt;
&lt;li&gt;Loads the selected Linux kernel and initramfs/initrd into memory.&lt;/li&gt;
&lt;li&gt;Passes control to the kernel.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Initramfs/initrd:&lt;/strong&gt; A temporary filesystem used by the kernel to access necessary drivers before the real root filesystem is mounted.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. KERNEL Loading
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
The Linux Kernel is now in control of the system&lt;br&gt;
&lt;strong&gt;Key Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardware Detection: &lt;strong&gt;The Kernel&lt;/strong&gt; detects and initializes the hardware via built-in or loaded drivers(CPU, memory, I/O).&lt;/li&gt;
&lt;li&gt;Mounts the root file/system.&lt;/li&gt;
&lt;li&gt;Starts the first user space program, usually /sbin/init or systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Kernel also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages memory&lt;/li&gt;
&lt;li&gt;Sets up process scheduling&lt;/li&gt;
&lt;li&gt;Initializes networking and system calls.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Init/Systemd Starts
&lt;/h3&gt;

&lt;p&gt;This is the first user-space process with process ID 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;br&gt;
The Kernel starts the init process (traditionally, but in modern Linux distros, use systemd). It orchestrates the rest of the boot process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Tasks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads its initial configurations from &lt;code&gt;/etc/systemd&lt;/code&gt; and &lt;code&gt;/etc/initab&lt;/code&gt; in older systems.&lt;/li&gt;
&lt;li&gt;Mounts the remaining file system. (eg,&lt;code&gt;/home&lt;/code&gt;, &lt;code&gt;/boot&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Runs startup scripts/services to prepare the system, such as starting network services and setting up the graphical environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. User-space Login(TTY or GUI)
&lt;/h3&gt;

&lt;p&gt;Once all services are up, the system presents you with a login interface.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A TTY login prompt(text based) for servers or minimal systems.&lt;/li&gt;
&lt;li&gt;Graphical Login manager (like GDM, lightDM, SDDM) for desktop environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a successful authentication, the login session starts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For TTY login a shell (eg, bash) is launched allowing a command-line interractions.&lt;/li&gt;
&lt;li&gt;For GUI a desktop environment or windows manager is started, providing a graphical interface for user-interactions. 
This process signifies the transition of kernel system services to user-level interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In essence, pressing the power button triggers a chain of hardware checks, loads the kernel, sets up the system service, and finally presents you with a usable desktop environment. Despite its complexity, this seamless process ensures your Linux system is ready almost instantly after you power it on.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unlocking The Power Of Linux: A Beginner's Guide to the Tech Giant's Favorite Operating System.</title>
      <dc:creator>Chinenye Genevieve Onyema</dc:creator>
      <pubDate>Fri, 25 Apr 2025 15:57:10 +0000</pubDate>
      <link>https://dev.to/gennyonyema/unlocking-the-power-of-linux-a-beginners-guide-to-the-tech-giants-favorite-operating-system-49ig</link>
      <guid>https://dev.to/gennyonyema/unlocking-the-power-of-linux-a-beginners-guide-to-the-tech-giants-favorite-operating-system-49ig</guid>
      <description>&lt;h1&gt;
  
  
  Introduction: What Is Linux and Why Does It Matter?
&lt;/h1&gt;

&lt;p&gt;In the past, most people used commercial Operating Systems like Windows or MacOS. These Systems are popular, but they come with some downsides, such as needing to pay for licenses, limitations on customization, and potential security issues.&lt;/p&gt;

&lt;p&gt;Now, picture an operating system(OS) that's completely free, allows you to change and adapt the source code to your computing needs. &lt;br&gt;
&lt;strong&gt;That's LINUX!&lt;/strong&gt; A powerful platform embraced by tech giants and enthusiasts alike. It was built by Linus Torvalds in 1991 to give people control, flexibility, and freedom.&lt;/p&gt;

&lt;p&gt;In this article, we'll explore the fundamentals of Linux, the different distributions(distros) available, how Linux is structured under the hood, how the package managers install software's and how its unique folder hierarchy makes it ideal for everything from smartphones to supercomputers. Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Open Source Nature of Linux
&lt;/h2&gt;

&lt;p&gt;When we say Linux is open source, we mean:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Free to use:&lt;/strong&gt; This means anyone can download, install, and use it without paying for the license.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization:&lt;/strong&gt; Users can modify the source code, which means that if you want to change how your operating system works, you can do so without any legal issues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Support:&lt;/strong&gt; Linux benefits from a large community that contributes to its development, ensuring it remains secure and up-to-date without the need for a costly license.&lt;/li&gt;
&lt;/ol&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%2Fuqktiyv753y5tbi28fbb.jpg" 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%2Fuqktiyv753y5tbi28fbb.jpg" alt="Image description" width="589" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Structure of Linux: A Well-Organized System.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why Structure Matters&lt;/strong&gt;&lt;br&gt;
Just like peeling an onion, layer by layer. Like a well-organized office, Linux has a clear structure that makes it easy to find and manage files  &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%2Fwf2c89jzgshknezsvro7.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%2Fwf2c89jzgshknezsvro7.png" alt="Image description" width="251" height="201"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Here are the key components of the Linux Operating System:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🧠&lt;strong&gt;The Kernel:&lt;/strong&gt; The Brain of the OS. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the core of the Linux system lies the &lt;strong&gt;Kernel&lt;/strong&gt;, a program that connects your computer hardware to its software. Think of the Kernel as the traffic controller, directing communication between your hardware (CPU, memory, processes, and hard drives) and the software applications that you use.&lt;br&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%2Ffddz1ypizng13pjjsvt5.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%2Ffddz1ypizng13pjjsvt5.png" alt="Image description" width="313" height="161"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Why The Kernel?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without the Kernel, your application couldn't talk to your CPU, memory, or storage. The kernel distributes resources needed to perform a task. The Kernel schedules processes, manages memory and network interfaces, allocates file systems, and provides inter-process communication.&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%2Fpzu5y3hpnra4o8ekewto.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%2Fpzu5y3hpnra4o8ekewto.png" alt="Image description" width="734" height="182"&gt;&lt;/a&gt;&lt;br&gt;
2.&lt;strong&gt;The Shell:&lt;/strong&gt; The Command-Line Interface&lt;/p&gt;

&lt;p&gt;The Shell sits right above the Kernel, It's what you interact with when you open the terminal. It interprets your commands(&lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, etc) and passes them to the Kernel for execution.&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%2F8c4oeiw2ohw3294sv4fp.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%2F8c4oeiw2ohw3294sv4fp.png" alt="Image description" width="800" height="79"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Why Shell?&lt;/strong&gt;&lt;br&gt;
The Shell gives you direct control of the system, letting you automate, customize, and troubleshoot like a pro. The Shell acts as an interface between the user and the kernel.&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%2Fbu996w5m78mbfxkss6on.jpeg" 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%2Fbu996w5m78mbfxkss6on.jpeg" alt="Image description" width="300" height="168"&gt;&lt;/a&gt;&lt;br&gt;
3.&lt;strong&gt;System Libraries and Utilities:&lt;/strong&gt; Your System Toolkit&lt;/p&gt;

&lt;p&gt;Linux comes with hundreds of tiny programs(often called Utilities) that perform specific tasks, like managing files, monitoring processes, and configuring networks. These Libraries and Utilities are a collection of functions or pre-written code and tools that help software applications operate smoothly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why The Libraries and Utilities ?&lt;/strong&gt;&lt;br&gt;
By using these libraries, developers can save time and effort, as they don't need to write the same code repeatedly. The system libraries act as an interface between the system applications and the kernel.&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%2Fwbn82mz81nefo450cfza.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%2Fwbn82mz81nefo450cfza.png" alt="Image description" width="800" height="548"&gt;&lt;/a&gt;&lt;br&gt;
4.&lt;strong&gt;File System:&lt;/strong&gt; The Organized Foundation&lt;br&gt;
The Linux filesystem is organized in a tree-like structure. Every file, folder, and even hardware is treated as a file, with the root(/) directory at the top of the hierarchy. The organizational structure of the file system is crucial for easy navigation and file management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Key directories:&lt;/strong&gt;&lt;br&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%2F2othfzqs7ceeda9rogd8.jpg" 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%2F2othfzqs7ceeda9rogd8.jpg" alt="Image description" width="602" height="623"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Why File Systems?&lt;/strong&gt;&lt;br&gt;
As a Linux administrator or root user, understanding the structure of the file system matters. It enables you to manage system files, configure settings, and troubleshoot issues efficiently. Knowing where everything is helps maintain system health and security.&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%2Fi01ra33paf8fp1jf6bim.jpeg" 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%2Fi01ra33paf8fp1jf6bim.jpeg" alt="Image description" width="361" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exploring Linux Distributions: Why Variety is Key.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is a Distribution?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Linux Distribution(distro) is a packaged version of the operating system that includes the kernel, libraries, utilities, and user interface. Think of it as a specific flavor of Linux tailored for different needs and preferences.&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%2F019ld6h6u7bhzoc2pe7e.jpeg" 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%2F019ld6h6u7bhzoc2pe7e.jpeg" alt="Image description" width="280" height="180"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Popular Distributions:&lt;/strong&gt; Choose Your Flavor&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu: Perfect for beginners and the most popular distros, known for its user-friendly interface. Built from the Debian family.&lt;/li&gt;
&lt;li&gt;CentOS: A favorite in the world of servers, praised for its stability and security. Belongs to the family of Red Hat.&lt;/li&gt;
&lt;li&gt;Debian: One of the oldest and most popular distros, known for its commitment to free software, stability, and reliability.&lt;/li&gt;
&lt;li&gt;Red Hat Enterprise Linux (RHEL): Widely used by enterprises and businesses for its robust and reliable operating system. Known for its stability, security, and performance.&lt;/li&gt;
&lt;li&gt;Fedora: Sponsored by Red Hat, ideal for developers who want the latest software features in a secure and stable environment.&lt;/li&gt;
&lt;li&gt;Arch Linux: Ideal for advanced users who want complete control over their system and want to build from scratch. Offers the latest software updates.&lt;/li&gt;
&lt;li&gt;Kali Linux: Built on Debian with high security, designed for network analysts and cybersecurity experts.&lt;/li&gt;
&lt;li&gt;OpenSUSE: It has two kinds of releases. Perfect for users who want a reliable system with advanced configuration tools, along with the option to choose between a rolling release(Tumbleweed) and a stable release(Leap).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Having various distributions allows users to pick the one that best suits their needs, whether for everyday use, software development, or server management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package Managers: Simplifying Software Installation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What are Package Managers?&lt;/strong&gt;&lt;br&gt;
A Package Manager is a tool that makes installing and updating software as easy as clicking a button. It automatically handles downloading, installing, configuring software packages, updating, and removing software.&lt;br&gt;
&lt;strong&gt;Popular Package Managers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;apt&lt;/code&gt;(APT: Advanced Package Tool): Found in Debian and Ubuntu, it lets you install apps with simple commands like &lt;code&gt;apt install &amp;lt;package-name&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yum&lt;/code&gt; and &lt;code&gt;dnf&lt;/code&gt;: Used for RHEL, CentOS, and Fedora. These command tools facilitate managing software on RPM-based systems.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pacman&lt;/code&gt;: The go-to package manager for Arch Linux users, known for its simplicity and speed.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zypper&lt;/code&gt;: The package manager for OpenSUSE, it's easy to use and consumes fewer resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Use Package Managers&lt;/strong&gt;&lt;br&gt;
Think of a package manager like an application store. Instead of searching various websites to find software, a package manager lets you search, install, and update applications from a single place. This saves time and minimizes errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Linux is not just an operating system; it's a powerful, community-driven tool that offers flexibility and security. Whether you're a user, developer, or administrator, understanding Linux fundamentals, structure, distributions, package managers, and folder organization will empower you to make the most out of your computing experience. So, why not try out a Linux distribution today? Join the community and explore the endless possibilities of Linux.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Setup A Simple Nginx Web Server on an Ubuntu GCP Virtual Machine.</title>
      <dc:creator>Chinenye Genevieve Onyema</dc:creator>
      <pubDate>Fri, 31 Jan 2025 22:12:50 +0000</pubDate>
      <link>https://dev.to/gennyonyema/hng-stage-0-how-to-setup-a-simple-nginx-web-server-on-an-ubuntu-gcp-virtual-machine-28gi</link>
      <guid>https://dev.to/gennyonyema/hng-stage-0-how-to-setup-a-simple-nginx-web-server-on-an-ubuntu-gcp-virtual-machine-28gi</guid>
      <description>&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%2F4i57rngnjaatryde5f2i.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%2F4i57rngnjaatryde5f2i.png" alt="Nginx Web Server on Ubuntu GCP Virtual Machine" width="439" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;I have always wanted to share my learning experiences and knowledge from my tasks and projects. In this article, as part of the HNG Internship program, I will provide a step-by-step guide on configuring a simple Nginx web server on a Google Compute Engine Ubuntu virtual machine. &lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://console.cloud.google.com/" rel="noopener noreferrer"&gt;Google Cloud&lt;/a&gt; account, if you don't have an account, &lt;a href="https://console.cloud.google.com/" rel="noopener noreferrer"&gt;Sign up&lt;/a&gt;. GCP is giving free $300 credits to new accounts.&lt;/li&gt;
&lt;li&gt;Basic experience with Linux CLI.&lt;/li&gt;
&lt;li&gt;Sign in to your Google Cloud console.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Steps on how to set up an Ubuntu Virtual Machine.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the three bars by the left side of the console.
&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%2Fclbf7henwq0ynmirpev0.png" alt="Google Cloud Console" width="800" height="72"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on Compute Engine and then clickon VM Instances
&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%2Fqyy8n3tuqqf87c1tdh54.png" alt="Virtual Machines" width="429" height="501"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on "Create" Instance.
&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%2F0bqji7gm918telv3g980.png" alt="Create Instance" width="800" height="105"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4:  Machine Configuration settings&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give the instance any name of your choice.&lt;/li&gt;
&lt;li&gt;Choose the region and zone nearest to you for your instance.&lt;/li&gt;
&lt;li&gt;Choose the default General Purpose E2 machine for the task. &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%2Fn966tdltcffc7zrr65vc.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%2Fn966tdltcffc7zrr65vc.png" alt="Machine Configuration" width="800" height="523"&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%2Fujci0t43uf1p7134aert.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%2Fujci0t43uf1p7134aert.png" alt="Machine types" width="706" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Operating System and Storage&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continue the instance setup by clicking on OS and Storage.&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%2F2l7lyw1zef9gv3grt0dc.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%2F2l7lyw1zef9gv3grt0dc.png" alt="OS and Storage" width="211" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click "Change" in the Operating System configuration.&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%2Fbb3v0gs4no5yfy3kx83g.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%2Fbb3v0gs4no5yfy3kx83g.png" alt="Operating system and Storage" width="705" height="545"&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%2Fwq05hxrmdz1d1h7c81rz.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%2Fwq05hxrmdz1d1h7c81rz.png" alt="Ubuntu Image" width="597" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the OS image to Ubuntu and keep the remaining settings as default.&lt;/li&gt;
&lt;li&gt;Click "Select".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Networking&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choose Networking&lt;br&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%2Frmjg2awnary274plqehk.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%2Frmjg2awnary274plqehk.png" alt="Networking" width="215" height="318"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the firewalls, tick to allow HTTP and HTTPS traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on "create" instance&lt;/p&gt;&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%2Fq8y5frpkvyhyp8qp1rls.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%2Fq8y5frpkvyhyp8qp1rls.png" alt="Open firewalls and create instance" width="800" height="502"&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%2F5mwjpu1otkfm401s1wzs.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%2F5mwjpu1otkfm401s1wzs.png" alt="Running Virtual Instance" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Congratulations!&lt;/strong&gt; You have successfully launched a Google Cloud Virtual Instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  To SSH Into The Nginx Virtual Instance.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;On the instance dashboard, Tick the instance and click on "SSH"
A new window pops up.&lt;/li&gt;
&lt;li&gt;Click "Authorize" to connect to the instance.
And wait for SSH to connect to the instance successfully.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good Job! You are now connected to your Instance Command Line interface.&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%2Fuxdjhbqbvi8naky84q4b.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%2Fuxdjhbqbvi8naky84q4b.png" alt="SSH Connection" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Configure Nginx on Ubuntu Virtual Instance
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Run the command below to Update and Upgrade the Instance.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo apt update &amp;amp; sudo apt upgrade -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Install Nginx&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo apt install nginx -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Start and Enable Nginx&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start nginx
sudo systemctl enable nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Check if Nginx is actively running successfully&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo systemctl status nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Back up the Default Web Page&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /var/www/html
sudo cp index.nginx-debian.html index.nginx-debian.html.bk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6: Create a new file named index.html&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;touch index.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Move the content of the default page to the new file&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo mv index.nginx-debian.html index.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Open the index.html file&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo vi index.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Modify the content of index.html file to the code below&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To edit the file, press the letter "i"
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;HNG Stage 0 Nginx Web Server&amp;lt;/title&amp;gt;
&amp;lt;style&amp;gt;
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;h4&amp;gt;Welcome to DevOps Stage 0 - [Your Name]/[SlackName] &amp;lt;/h4&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After editing, press the escape key, colon, letters w and q. That is, ":wq"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Restart Nginx&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo systemctl restart nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Copy the External Ip address and paste in your browser&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;34.89.121.56&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%2F5es0qtri9drpozjymr7h.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%2F5es0qtri9drpozjymr7h.png" alt="Image description" width="800" height="355"&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%2Fscuwz6cg6bh5g5dz7ejw.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%2Fscuwz6cg6bh5g5dz7ejw.png" alt="Nginx web server" width="800" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Possible Challenges
&lt;/h2&gt;

&lt;p&gt;One potential challenge you may face when accessing your webpage is related to networking. Ensure that the firewall is configured to allow inbound HTTP traffic, as the NGINX server listens on port 80 by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  How This Task Contributed to My Learning
&lt;/h2&gt;

&lt;p&gt;As someone with extensive experience using AWS Cloud, I wanted to enhance my multi-cloud skills by leveraging Google Cloud as my development environment for this task. Previously, I primarily accessed virtual instances by clicking the SSH option on the Google Cloud Console. However, during this task, I explored alternative methods of connecting to a GCP instance using PuTTY, Git Bash, and other SSH tools.&lt;/p&gt;

&lt;p&gt;This was particularly exciting for me because, on AWS, I have always accessed EC2 instances by downloading and using the private key. Through this experience, I learned how to generate private and public key pairs using PuTTY, add the public key to the GCP instance's SSH configuration, and securely authenticate my connection.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In a forthcoming article, I will share a step-by-step guide on connecting to a GCP instance using third-party SSH tools and also generating keys through the command line.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hire your skilled &lt;a href="https://hng.tech/hire/devops-engineers" rel="noopener noreferrer"&gt;DevOps Engineers&lt;/a&gt; and &lt;a href="https://hng.tech/hire/cloud-engineers" rel="noopener noreferrer"&gt;Cloud Engineers&lt;/a&gt; here.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>googlecloud</category>
      <category>hng</category>
      <category>nginx</category>
    </item>
  </channel>
</rss>
