Skip to main content

Command Palette

Search for a command to run...

Under the Hood of JUICE-SHOP: A Fedora Linux Dev Environment

Exploring the architecture, zram memory management, SELinux enforcement, and GNOME 49 customizations of my daily driver.

Updated
•3 min read•View as Markdown
Under the Hood of JUICE-SHOP: A Fedora Linux Dev Environment

Node Overview Hostname: JUICE-SHOPHardware: Lenovo IdeaPad Slim 3 (15IRH8) CPU: Intel Core i5-13420H (13th Gen, 12 Threads) RAM: 8GB DDR4 + 8GB zram Swap OS: Fedora Linux 43 (Workstation Edition)

1. Filesystem Architecture (Btrfs)

My storage strategy leverages Btrfs (B-Tree Filesystem) for its snapshot capabilities and subvolume management. Unlike traditional partitioning, my root (/) and home (/home) share the same physical space on the NVMe drive, allowing dynamic space allocation.

Partition Map (nvme0n1)

PartitionFilesystemMount PointPurpose
p1vfat (FAT32)/boot/efiUEFI Bootloader partition.
p2ext4/bootKernel images (vmlinuz) and initramfs.
p3btrfs/ & /homeThe main data volume. Uses subvolumes.

Memory Management (zram)

Instead of a slow disk-based Swap partition, I utilize zram0.

  • Size: 7.4GB (Matching physical RAM).

  • Mechanism: Compresses RAM content on the fly. This effectively doubles my usable memory for heavy compilations (Rust/C++) without hitting the SSD.


2. Security Posture 🛡️

I adhere to the "Secure by Default" philosophy of the Red Hat ecosystem.

  • SELinux: Enforcing (Targeted Policy).

    • Every process runs in a confined domain. Even if a web service is hacked, it cannot access /home or /etc unless explicitly allowed.
  • Kernel: Linux 6.17.8

    • Running on the bleeding edge allows for the latest hardware support and scheduler optimizations for the Intel Hybrid Architecture (P-cores vs E-cores).
  • Package Isolation: Mixed ecosystem of RPM (Native), Flatpak (Desktop Apps), and Snap (Legacy CLIs).


3. The Developer Toolchain

My environment is configured for Full-Stack and Systems programming.

Core Languages

LanguageVersionUse Case
Python3.14.0Scripting, CTF exploits, Data Science.
Node.jsv22.20.0Frontend Development (Next.js/React).
Go1.25.4Backend Services, CLI tools.
GCC15.2.1C/C++ Compilation (Kernel modules).

Containerization

  • Engine: Docker 28.5.2

  • Privilege Model: Rootful (Standard).

  • Context: Used for creating reproducible builds and hosting local microservices (Postgres/Redis) for development.


4. Desktop Environment (GNOME 49)

I run a customized GNOME Shell (Wayland) focused on productivity and minimalism.

Extensions Active:

  • Dash to Dock: Converts the dash into a permanent dock for quick launching.

  • System Monitor: Real-time CPU/Net usage in the top bar.

  • Clipboard Indicator: History manager (essential for coding).

  • Color Picker: Frontend design utility.


5. Maintenance Routines

System Upgrade:

sudo dnf upgrade --refresh

Cleanup (Reclaim Space):

Since I use Docker and Snaps, disk usage can grow fast.

Bash

# 1. Clean DNF cache
sudo dnf clean all

# 2. Prune Docker (Stop hoarding images)
docker system prune -a

# 3. Vacuum System Logs
journalctl --vacuum-time=2d

Linked Notes

  • [[Linux-Basics]] - General command reference.

  • [[Docker-Ultimate-Guide]] - Deep dive into my container setup.

  • [[Linux-Kernel-Internals]] - Understanding the 6.17 Kernel.

More from this blog

H

Habibullah's Blog | DevOps & System Engineering

26 posts

Catching logic and exploring the obscure side of engineering. Notes on systems, security, and structure.