<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Documentation on Samuel Matildes - Knowledge Base</title><link>https://matildes.dev/</link><description>Recent content in Documentation on Samuel Matildes - Knowledge Base</description><generator>Hugo</generator><language>en</language><atom:link href="https://matildes.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Linux Boot/Shutdown Quick-Analyzer</title><link>https://matildes.dev/linux/admin/linuxrebootcheck/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/linuxrebootcheck/</guid><description>&lt;h2 id="what-is-linux-bootshutdown-quick-analyzer-and-why-do-you-need-it"&gt;What is Linux Boot/Shutdown Quick-Analyzer and why do you need it?&lt;a class="td-heading-self-link" href="#what-is-linux-bootshutdown-quick-analyzer-and-why-do-you-need-it" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Linux Boot/Shutdown Quick-Analyzer is a Python script that analyzes Linux boot and shutdown logs.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://matildes.dev/linux/admin/linuxrebootcheck/images/linuxrebootch.png" alt="Preview"&gt;&lt;/p&gt;
&lt;p&gt;It makes it easy to find boot and shutdown events in system logs, providing information such as the number of boot and shutdown events, along with the timestamp, filename, and line number for each event.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="how-to-run-it"&gt;How to run it&lt;a class="td-heading-self-link" href="#how-to-run-it" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;You need to have Python 3 installed on your machine.&lt;/p&gt;</description></item><item><title>How to Inspect Azure VM Metadata with Profile Fetcher</title><link>https://matildes.dev/azure/vm/getvmprofile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://matildes.dev/azure/vm/getvmprofile/</guid><description>&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/samatild/azvmprofilefetcher"&gt;https://github.com/samatild/azvmprofilefetcher&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;a class="td-heading-self-link" href="#introduction" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Managing Azure Virtual Machines (VMs) can be complex, especially when dealing with multiple instances and ensuring they are configured correctly. The Profile Fetcher for Azure VM is a script designed to simplify the process of retrieving and displaying detailed metadata about your Azure VMs. This article explains how to use the script and how it can make the task of checking Azure VM profiles easier.&lt;/p&gt;</description></item><item><title>How Antivirus Software Can Prevent Linux Boot: Troubleshooting Guide</title><link>https://matildes.dev/linux/admin/antivirus-boot-issues/</link><pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/antivirus-boot-issues/</guid><description>&lt;h2 id="understanding-antivirus-boot-interference"&gt;Understanding Antivirus Boot Interference&lt;a class="td-heading-self-link" href="#understanding-antivirus-boot-interference" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Antivirus software, while crucial for system security, can sometimes interfere with the Linux boot process. This occurs when security modules become overly aggressive during system initialization, potentially causing boot failures, readonly filesystem mounts, or service startup issues.&lt;/p&gt;
&lt;h3 id="common-symptoms"&gt;Common Symptoms&lt;a class="td-heading-self-link" href="#common-symptoms" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;System fails to boot completely&lt;/li&gt;
&lt;li&gt;Filesystem mounts as readonly (&lt;code&gt;ro&lt;/code&gt;) instead of read-write (&lt;code&gt;rw&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Critical services fail to start&lt;/li&gt;
&lt;li&gt;Boot hangs at specific points&lt;/li&gt;
&lt;li&gt;SELinux/AppArmor policy violations during boot&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="filesystem-readonly-issues"&gt;Filesystem Readonly Issues&lt;a class="td-heading-self-link" href="#filesystem-readonly-issues" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;One of the most common problems occurs when antivirus software causes the root filesystem to mount readonly. This prevents the system from writing critical boot files and can halt the initialization process.&lt;/p&gt;</description></item><item><title>How to Enable Azure Serial Console and GRUB on Linux VMs</title><link>https://matildes.dev/azure/vm/serial-console/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/azure/vm/serial-console/</guid><description>&lt;p&gt;Azure Serial Console is invaluable when SSH or the network is unavailable. This guide shows how to configure Linux distributions to expose the GRUB menu and kernel boot logs over the VM’s serial port on Azure, fixing cases where migrated images or some distros don’t show GRUB or any serial output.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For proactive setup, follow Microsoft’s official guide: &lt;a href="https://learn.microsoft.com/en-us/troubleshoot/azure/virtual-machines/linux/serial-console-grub-proactive-configuration"&gt;Proactive GRUB and serial console configuration for Linux on Azure&lt;/a&gt;. This article is intended for cases where you’re facing issues getting serial console and the GRUB menu to display and need troubleshooting-oriented configuration.&lt;/p&gt;</description></item><item><title>Retiring kube-proxy IPVS on MicroK8s: An Upgrade Readiness Runbook</title><link>https://matildes.dev/kubernetes/microk8s-kube-proxy-ipvs-migration/</link><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/kubernetes/microk8s-kube-proxy-ipvs-migration/</guid><description>&lt;p&gt;&lt;i class="fas fa-route" aria-hidden="true"&gt;&lt;/i&gt; A focused runbook for checking whether a MicroK8s cluster needs an IPVS migration before its next Kubernetes minor upgrade.&lt;/p&gt;
&lt;h2 id="scope-and-outcome"&gt;Scope and outcome&lt;a class="td-heading-self-link" href="#scope-and-outcome" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is not a general CNI replacement guide and it does not change Traefik, IngressRoutes, or application manifests. It covers one question: &lt;strong&gt;does this cluster run kube-proxy in &lt;code&gt;ipvs&lt;/code&gt; mode, and if so, can it move safely to &lt;code&gt;iptables&lt;/code&gt; before the next MicroK8s minor upgrade?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Deploy Hermes Agent in a Proxmox LXC with Community Scripts</title><link>https://matildes.dev/ai/hermes-agent-proxmox-lxc/</link><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/ai/hermes-agent-proxmox-lxc/</guid><description>&lt;p&gt;&lt;i class="fas fa-cube" aria-hidden="true"&gt;&lt;/i&gt; A small, repeatable Hermes Agent deployment for a Proxmox VE container.&lt;/p&gt;
&lt;div class="kb-callout kb-callout--warning"&gt;
 &lt;div class="kb-callout__title"&gt;
 &lt;i class="fas fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;
 &lt;span&gt;Community-maintained installer&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="kb-callout__body"&gt;
 This installer is maintained by the Community Scripts project, not by Nous Research. It downloads and runs code from external sources. Review the current script and use it only on a Proxmox host you administer.
 &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="before-you-start"&gt;Before you start&lt;a class="td-heading-self-link" href="#before-you-start" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Have the following ready:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Proxmox VE host with capacity for a new LXC container.&lt;/li&gt;
&lt;li&gt;A current backup or recovery plan for the host and any affected storage.&lt;/li&gt;
&lt;li&gt;Outbound HTTPS access from the host and the new container.&lt;/li&gt;
&lt;li&gt;A model-provider account or an approved OpenAI-compatible endpoint. Complete provider authentication only in Hermes&amp;rsquo; interactive setup; do not put credentials in shell history or documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Community Scripts page currently lists a Debian 13 profile with 2 vCPUs, 4 GiB of RAM, and 20 GiB of disk. Treat these as installer defaults, not sizing guidance. Select the advanced installer flow when your workload needs different limits.&lt;/p&gt;</description></item><item><title>Self-Host Honcho on Kubernetes with LiteLLM, Redis, and GitHub Copilot</title><link>https://matildes.dev/ai/honcho-litellm-github-copilot/</link><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/ai/honcho-litellm-github-copilot/</guid><description>&lt;p&gt;&lt;i class="fas fa-brain" aria-hidden="true"&gt;&lt;/i&gt; A self-hosted memory service for Hermes, with LiteLLM as the model gateway and GitHub Copilot as an upstream provider.&lt;/p&gt;
&lt;div class="kb-callout kb-callout--warning"&gt;
 &lt;div class="kb-callout__title"&gt;
 &lt;i class="fas fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;
 &lt;span&gt;Illustrative configuration only&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="kb-callout__body"&gt;
 Every hostname, namespace, IP address, image version, model name, key and resource value in this guide is an &lt;strong&gt;example&lt;/strong&gt;. Do not paste it into a production cluster unchanged. Create your own secrets outside Git, verify the current upstream image and model names, and apply your own network, backup and update policies.
 &lt;/div&gt;
&lt;/div&gt;

&lt;h2 id="architecture-at-a-glance"&gt;Architecture at a glance&lt;a class="td-heading-self-link" href="#architecture-at-a-glance" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;figure class="honcho-architecture"&gt;
 &lt;img src="architecture.svg" alt="Diagram showing the relationship between Hermes, Honcho, LiteLLM, Redis, PostgreSQL with pgvector, and LLM endpoints"&gt;
&lt;/figure&gt;
&lt;p&gt;The request path is deliberately split into specialised layers:&lt;/p&gt;</description></item><item><title>How to Export Windows EVTX to CSV with evtxparser</title><link>https://matildes.dev/windows/admin/evtxparser/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/windows/admin/evtxparser/</guid><description>&lt;p&gt;
 &lt;a href="https://github.com/samatild/evtxparser" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt; GitHub
 &lt;/a&gt;
 &amp;nbsp;•&amp;nbsp;
 &lt;a href="https://pypi.org/project/evtxparser/" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-python" aria-hidden="true"&gt;&lt;/i&gt; PyPI
 &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i class="fas fa-file-alt" aria-hidden="true"&gt;&lt;/i&gt; Export Windows Event Viewer &lt;code&gt;.evtx&lt;/code&gt; logs to clean CSV output without dragging a GUI into the workflow.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://matildes.dev/windows/admin/evtxparser/images/evtxparser.png" alt="evtxparser example"&gt;&lt;/p&gt;
&lt;h2 id="what-is-evtxparser"&gt;What is evtxparser?&lt;a class="td-heading-self-link" href="#what-is-evtxparser" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/samatild/evtxparser"&gt;&lt;code&gt;evtxparser&lt;/code&gt;&lt;/a&gt; is a focused Python CLI for exporting Windows &lt;code&gt;.evtx&lt;/code&gt; files to CSV. It is designed for the cases where you do not want a full GUI workflow or a heavyweight parsing pipeline: open the log, stream records, and write rows immediately.&lt;/p&gt;</description></item><item><title>How to Troubleshoot Linux Performance — Field Playbook</title><link>https://matildes.dev/linux/admin/linux-performance-playbook/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/linux-performance-playbook/</guid><description>&lt;p&gt;&lt;i class="fas fa-tachometer-alt" aria-hidden="true"&gt;&lt;/i&gt; A field-ready reference for Linux performance investigations — keep it open in a second terminal.&lt;/p&gt;
&lt;h2 id="how-to-use-this-playbook"&gt;How to use this playbook&lt;a class="td-heading-self-link" href="#how-to-use-this-playbook" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Linux performance problems split cleanly into &lt;strong&gt;two very different investigations&lt;/strong&gt;, and picking the wrong one wastes hours:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Situation&lt;/th&gt;
 &lt;th&gt;Track&lt;/th&gt;
 &lt;th&gt;What you do&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;The problem is happening &lt;strong&gt;right now&lt;/strong&gt; (or you can reproduce it on demand)&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Track A — Live Triage&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Interactive tools, sample at 1s intervals, follow the bottleneck&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The problem is &lt;strong&gt;intermittent / random&lt;/strong&gt; (happens overnight, once a week, only under load you can&amp;rsquo;t reproduce)&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Track B — Background Collection&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Arm continuous loggers &lt;em&gt;before&lt;/em&gt; the next occurrence, then mine the logs afterwards&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="kb-callout kb-callout--rule"&gt;
 &lt;div class="kb-callout__title"&gt;
 &lt;i class="fas fa-bullseye" aria-hidden="true"&gt;&lt;/i&gt;
 &lt;span&gt;Rule of thumb&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="kb-callout__body"&gt;
 If you can&amp;rsquo;t reproduce it, &lt;strong&gt;do not&lt;/strong&gt; keep staring at &lt;code&gt;top&lt;/code&gt;. Stop, deploy collectors, walk away, and analyse later. Otherwise you&amp;rsquo;ll miss the event every single time.
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;img src="https://matildes.dev/linux/admin/linux-performance-playbook/workflow.png" alt="Decision flow: live triage vs. background collection"&gt;&lt;/p&gt;</description></item><item><title>MicroK8s with Traefik: Public and Private Application Deployment</title><link>https://matildes.dev/kubernetes/microk8s-simple-implementation/</link><pubDate>Mon, 12 Jan 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/kubernetes/microk8s-simple-implementation/</guid><description>&lt;p&gt;&lt;i class="fas fa-server" aria-hidden="true"&gt;&lt;/i&gt; MicroK8s Home Lab with Traefik Ingress&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;a class="td-heading-self-link" href="#summary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This guide walks through setting up a complete MicroK8s cluster on Ubuntu with &lt;strong&gt;Traefik&lt;/strong&gt; as the ingress controller. The architecture supports two types of applications: &lt;strong&gt;public apps&lt;/strong&gt; exposed to the internet via Cloudflare DNS and TLS, and &lt;strong&gt;private apps&lt;/strong&gt; accessible only from the local network. We&amp;rsquo;ll deploy containerized workloads running inside Kubernetes pods, proxy traffic to external hosts, and set up monitoring dashboards—all managed through declarative YAML manifests.&lt;/p&gt;</description></item><item><title>Understanding IO Delays in Linux - Performance Testing with io-delayer</title><link>https://matildes.dev/linux/admin/io-delayer-performance-testing/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/io-delayer-performance-testing/</guid><description>&lt;p&gt;
 &lt;a href="https://github.com/samatild/io-delayer" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt; GitHub
 &lt;/a&gt;
 &amp;nbsp;•&amp;nbsp;
 &lt;a href="https://pypi.org/project/tuxtoaster" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-linux" aria-hidden="true"&gt;&lt;/i&gt; Linux Kernel Module
 &lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i class="fas fa-clock" aria-hidden="true"&gt;&lt;/i&gt; Simulate and analyze IO performance degradation at multiple kernel layers to understand system bottlenecks.&lt;/p&gt;
&lt;h2 id="why-io-delays-matter-in-system-performance"&gt;Why IO Delays Matter in System Performance&lt;a class="td-heading-self-link" href="#why-io-delays-matter-in-system-performance" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Input/Output operations form the backbone of system performance, yet they represent one of the most complex and often misunderstood aspects of Linux performance engineering. When applications experience slowdowns, the root cause frequently traces back to IO delays introduced at various kernel layers.&lt;/p&gt;</description></item><item><title>How to Analyze Linux sosreport and supportconfig with SOSParser</title><link>https://matildes.dev/linux/admin/sosparser-analysis-tool/</link><pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/sosparser-analysis-tool/</guid><description>&lt;p&gt;
 &lt;a href="https://github.com/samatild/SOSParser" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt; GitHub
 &lt;/a&gt;
 &amp;nbsp;•&amp;nbsp;
 &lt;a href="https://hub.docker.com/r/samuelmatildes/sosparser" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-docker" aria-hidden="true"&gt;&lt;/i&gt; Docker Hub
 &lt;/a&gt;
 &amp;nbsp;•&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;&lt;i class="fas fa-search" aria-hidden="true"&gt;&lt;/i&gt; Parse, analyze, and understand Linux diagnostic reports with automated intelligence.&lt;/p&gt;
&lt;h2 id="what-is-sosparser"&gt;What is SOSParser?&lt;a class="td-heading-self-link" href="#what-is-sosparser" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/samatild/SOSParser"&gt;&lt;code&gt;SOSParser&lt;/code&gt;&lt;/a&gt; is a powerful web application designed to automatically parse and analyze Linux &lt;code&gt;sosreport&lt;/code&gt; and &lt;code&gt;supportconfig&lt;/code&gt; diagnostic files, converting them into comprehensive, interactive HTML reports. Created to streamline the often tedious process of manually reviewing system diagnostic data, SOSParser transforms raw diagnostic archives into structured, searchable insights that accelerate troubleshooting and system analysis.&lt;/p&gt;</description></item><item><title>How to Benchmark Linux with Tux Toaster</title><link>https://matildes.dev/linux/admin/benchmarking-with-tuxtoaster/</link><pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/admin/benchmarking-with-tuxtoaster/</guid><description>&lt;p&gt;
 &lt;a href="https://github.com/samatild/tuxtoaster" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-github" aria-hidden="true"&gt;&lt;/i&gt; GitHub
 &lt;/a&gt;
 &amp;nbsp;•&amp;nbsp;
 &lt;a href="https://pypi.org/project/tuxtoaster" target="_blank" rel="noopener"&gt;
 &lt;i class="fab fa-python" aria-hidden="true"&gt;&lt;/i&gt; PyPI
 &lt;/a&gt;
 &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;&lt;i class="fas fa-tachometer-alt" aria-hidden="true"&gt;&lt;/i&gt; Benchmark smarter, not harder — with Tux Toaster.&lt;/p&gt;
&lt;h2 id="what-is-tux-toaster"&gt;What is Tux Toaster?&lt;a class="td-heading-self-link" href="#what-is-tux-toaster" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/samatild/tuxtoaster"&gt;&lt;code&gt;Tux Toaster&lt;/code&gt;&lt;/a&gt; is an all-in-one performance toolkit for Linux. It triggers various load tests (&amp;ldquo;toasters&amp;rdquo;) to help you evaluate the performance and stability of your system across CPU, memory, disk, and network. It offers an interactive terminal menu with multi-select support and clear, stoppable workloads.&lt;/p&gt;</description></item><item><title>Why Kernel Crash Dumps Are Critical for Root Cause Analysis</title><link>https://matildes.dev/linux/kernel/why-kernel-crash-dumps-matter/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/kernel/why-kernel-crash-dumps-matter/</guid><description>&lt;p&gt;&lt;i class="fas fa-microscope" aria-hidden="true"&gt;&lt;/i&gt; Postmortem Kernel Forensics with vmcore&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;a class="td-heading-self-link" href="#summary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When the Linux kernel panics, there is no userspace stack, no application logs, and often no intact filesystems. The only canonical, lossless record of the kernel’s terminal state is the crash dump (vmcore). Without vmcore, you are constrained to heuristics and guesswork; with vmcore, you can deterministically reconstruct CPU state, task scheduling, memory allocators, locks, timers, and subsystems at the exact point of failure. This is the difference between timeline narratives and hard proof.&lt;/p&gt;</description></item><item><title>Enabling Automatic Kernel Crash Collection with kdump</title><link>https://matildes.dev/linux/kernel/enabling-kdump-crash-collection/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/kernel/enabling-kdump-crash-collection/</guid><description>&lt;p&gt;&lt;i class="fas fa-microchip" aria-hidden="true"&gt;&lt;/i&gt; Automatic Enablement of Kernel Crash Dump Collection with kdump-enabler&lt;/p&gt;
&lt;p&gt;This article explains how to automatically enable and configure kernel crash dump (kdump) collection on Linux systems using the &lt;code&gt;kdump-enabler&lt;/code&gt; script. This approach works across multiple distributions and simplifies the process of preparing your system to collect crash dumps for troubleshooting and analysis.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;kdump-enabler&lt;/code&gt; is a Bash script that automates the setup of kdump:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installs required packages&lt;/li&gt;
&lt;li&gt;Configures the crashkernel parameter in GRUB&lt;/li&gt;
&lt;li&gt;Enables and starts the kdump service&lt;/li&gt;
&lt;li&gt;Sets up SysRq for manual crash triggering&lt;/li&gt;
&lt;li&gt;Creates backups of configuration files before changes&lt;/li&gt;
&lt;li&gt;Supports Ubuntu, Debian, RHEL, CentOS, Fedora, openSUSE, Arch Linux, and more&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;a class="td-heading-self-link" href="#prerequisites" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Root privileges (run with &lt;code&gt;sudo&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;systemd-based Linux distribution&lt;/li&gt;
&lt;li&gt;GRUB bootloader&lt;/li&gt;
&lt;li&gt;Sufficient disk space in &lt;code&gt;/var/crash&lt;/code&gt; for crash dumps&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;a class="td-heading-self-link" href="#installation" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Clone the repository and run the script:&lt;/p&gt;</description></item><item><title>Understanding CPU Statistics in Linux (/proc/stat)</title><link>https://matildes.dev/linux/kernel/cpu-statistics/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><guid>https://matildes.dev/linux/kernel/cpu-statistics/</guid><description>&lt;p&gt;&lt;i class="fas fa-microchip" aria-hidden="true"&gt;&lt;/i&gt; Kernel-Level CPU Time Accounting&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;a class="td-heading-self-link" href="#summary" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Linux kernel maintains precise, per-CPU time accounting across ten distinct execution contexts. These statistics, exposed via &lt;code&gt;/proc/stat&lt;/code&gt;, represent cumulative jiffy counters (typically 1/100th or 1/1000th of a second) since system boot. Understanding these counters is essential for performance analysis, capacity planning, and diagnosing CPU contention, I/O bottlenecks, interrupt storms, and virtualization overhead.&lt;/p&gt;
&lt;h2 id="the-procstat-interface"&gt;The /proc/stat Interface&lt;a class="td-heading-self-link" href="#the-procstat-interface" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/proc/stat&lt;/code&gt; is a virtual file provided by the kernel&amp;rsquo;s proc filesystem. It contains system-wide statistics aggregated across all CPUs and individual per-CPU lines. The format is non-blocking and updated atomically by the kernel scheduler&amp;rsquo;s tick handler.&lt;/p&gt;</description></item><item><title>About</title><link>https://matildes.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://matildes.dev/about/</guid><description/></item><item><title>Privacy &amp; advertising</title><link>https://matildes.dev/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://matildes.dev/privacy/</guid><description>&lt;p&gt;&lt;em&gt;Last updated: 6 October 2026.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="td-heading-self-link" href="#overview" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This site is operated by Samuel Matildes. It publishes technical documentation and may use Google AdSense to display advertising. It does not require an account to read its content.&lt;/p&gt;
&lt;h2 id="advertising-and-consent"&gt;Advertising and consent&lt;a class="td-heading-self-link" href="#advertising-and-consent" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Google AdSense may use cookies, device identifiers, IP address, and related technical information to deliver and measure advertisements. Where required, the site presents Google&amp;rsquo;s consent message before advertising that relies on consent is used. You can use that message to accept, refuse, or manage your choices.&lt;/p&gt;</description></item><item><title>Search Results</title><link>https://matildes.dev/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://matildes.dev/search/</guid><description/></item></channel></rss>