DEV Community

Yashvi Kothari for AWS Community Builders

Posted on

13 1 1

Dive into Linux Working

Image description

Let's dive into Linux Working

Understanding the Linux Operating System: A Deep Dive

1. Kernel Initialization

The kernel is the heart of the Linux operating system. During boot, several critical steps occur:

  • BIOS/UEFI and Bootloader:

    • The BIOS or UEFI firmware initializes hardware components.
    • The bootloader (e.g., GRUB) loads the Linux kernel (vmlinuz).
  • Kernel Initialization:

    • The kernel initializes hardware devices (CPU, memory, storage, etc.).
    • It sets up essential data structures (e.g., process tables, page tables).
    • The root filesystem is identified and mounted.

2. Init Process

  • The kernel starts the init process (traditionally init, but modern systems use systemd).
  • Init is responsible for:
    • Starting system services and daemons.
    • Managing user sessions and spawning user-space processes.

3. User Space Initialization

  • Init spawns the first user-space process (usually init or systemd).
  • User sessions (e.g., graphical desktop environments) start from here.

4. Filesystem Hierarchy

  • Linux follows a standard directory structure:
    • /: Root directory.
    • /bin, /sbin: Essential system binaries.
    • /etc: Configuration files.
    • /home: User home directories.
    • /var: Variable data (logs, caches).
    • /tmp: Temporary files.
    • /usr: User programs and libraries.
    • /opt: Optional software.
    • /dev: Device files.
    • /proc: Virtual filesystem for process information.

5. Processes and Scheduling

  • The scheduler (e.g., Completely Fair Scheduler) manages process execution.
  • Processes are created using fork() and exec() system calls.
  • Priorities, nice values, and CPU affinity affect scheduling.

6. Memory Management

  • Virtual memory management:
    • Page tables map virtual addresses to physical memory.
    • TLB (Translation Lookaside Buffer) caches page table entries.
    • Demand paging and swapping optimize memory usage.
  • Memory allocation:
    • malloc(), free() manage dynamic memory.
    • Kernel memory management handles system memory.

7. File I/O and System Calls

  • File descriptors (stdin, stdout, stderr) facilitate I/O.
  • System calls (e.g., open(), read(), write(), close()) interact with files.

8. Networking

  • Network stack:
    • IP, TCP, UDP protocols.
    • Socket API for network communication.
  • Network configuration:
    • ifconfig, ip commands.
    • Routing tables determine packet forwarding.

9. Security and Permissions

  • Users, groups, and permissions control access.
  • sudo allows privilege escalation.
  • File integrity checks (e.g., md5sum, sha256sum) verify file integrity.

10. Device Drivers

  • Kernel modules manage hardware devices.
  • Examples: usb-storage, e1000 (Ethernet), i915 (graphics).

11. Logging and Debugging

  • syslog and dmesg provide system logs.
  • Debugging tools (e.g., strace, gdb) help diagnose issues.

12. Shutdown and Reboot

  • Init sends signals to processes.
  • Filesystems are unmounted.
  • The system halts or reboots.

🌟 Cheatsheet Linux🐧

  1. Linux Basics:

    • Commands:
      • ls: List files and directories.
      • cd: Change directory.
      • pwd: Print working directory.
      • cp: Copy files or directories.
      • mv: Move or rename files.
      • rm: Remove files or directories.
    • File Permissions:
      • chmod: Modify file permissions.
      • chown: Change file ownership.
      • chgrp: Change group ownership.
    • Processes:
      • ps: List running processes.
      • top: Monitor system processes.
      • kill: Terminate processes.
      • nice: Adjust process priority.
    • Package Management:
      • yum (RPM-based systems): Install, update, and manage packages.
      • apt-get (Debian-based systems): Similar functionality.
  2. File System Hierarchy:

    • Understand the directory structure:
      • /: Root directory.
      • /bin: Essential system binaries.
      • /etc: Configuration files.
      • /home: User home directories.
      • /var: Variable data (logs, caches).
      • /tmp: Temporary files.
      • /usr: User programs and libraries.
      • /opt: Optional software.
      • /dev: Device files.
      • /proc: Virtual filesystem for process information.
  3. Networking:

    • ifconfig or ip: Network configuration.
    • ping: Check network connectivity.
    • netstat: Network statistics.
    • ssh: Secure shell for remote access.
    • iptables: Firewall rules.
  4. Shell Scripting:

    • Create and execute shell scripts:
      • Variables.
      • Loops (for, while).
      • Conditionals (if, else).
      • Functions.
      • Input/output redirection.
  5. System Administration:

    • User management:
      • useradd, userdel, passwd.
    • Disk management:
      • df, du, mount.
    • Cron jobs:
      • crontab.
  6. Security:

    • sudo: Execute commands with superuser privileges.
    • File integrity checks:
      • md5sum, sha256sum.
    • Firewalls and SELinux.

Sharing working overview, and there's much more to explore!

Feel free to ask questions and share with beginners starting with AWS DevOps. Happy learning! 🌟🐧

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Best Practices for Running  Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK cover image

Best Practices for Running Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK

This post discusses the process of migrating a growing WordPress eShop business to AWS using AWS CDK for an easily scalable, high availability architecture. The detailed structure encompasses several pillars: Compute, Storage, Database, Cache, CDN, DNS, Security, and Backup.

Read full post

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay