{"id":15003577,"url":"https://github.com/cepdnaclk/e19-co327-kernel-modules","last_synced_at":"2026-02-10T15:14:00.068Z","repository":{"id":236443953,"uuid":"792624429","full_name":"cepdnaclk/e19-co327-Kernel-Modules","owner":"cepdnaclk","description":"In this project, I will develop kernel modules in a Linux system","archived":false,"fork":false,"pushed_at":"2025-01-15T18:04:38.000Z","size":558,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-08T21:44:08.323Z","etag":null,"topics":["co327","e19166","jiffies","kernel","linux","linux-kernel","operating","operating-systems","os"],"latest_commit_sha":null,"homepage":"https://cepdnaclk.github.io/e19-co327-Kernel-Modules/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cepdnaclk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-27T05:15:19.000Z","updated_at":"2025-01-15T18:04:41.000Z","dependencies_parsed_at":"2024-05-20T01:39:26.187Z","dependency_job_id":"106034ab-63f2-4e50-90f2-0c5f975ce8d0","html_url":"https://github.com/cepdnaclk/e19-co327-Kernel-Modules","commit_stats":null,"previous_names":["cepdnaclk/e19-co327-kernel-modules"],"tags_count":0,"template":false,"template_full_name":"cepdnaclk/eYY-XXX-project-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cepdnaclk%2Fe19-co327-Kernel-Modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cepdnaclk%2Fe19-co327-Kernel-Modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cepdnaclk%2Fe19-co327-Kernel-Modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cepdnaclk%2Fe19-co327-Kernel-Modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cepdnaclk","download_url":"https://codeload.github.com/cepdnaclk/e19-co327-Kernel-Modules/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253154068,"owners_count":21862450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["co327","e19166","jiffies","kernel","linux","linux-kernel","operating","operating-systems","os"],"created_at":"2024-09-24T18:59:04.889Z","updated_at":"2026-02-10T15:14:00.016Z","avatar_url":"https://github.com/cepdnaclk.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Linux Kernel Modules (LKM) Project\n\nWelcome to the **Linux Kernel Modules (LKM)** project repository! This project is based on assignments from the **Operating System Concepts, 10th Edition** textbook, specifically focusing on Linux kernel modules, task listing, kernel data structures, and system building.\n\n## Project Overview\n\nIn this project, you will develop kernel modules for a Linux system to perform a variety of tasks. The assignments are organized into three main parts:\n\n### Part I - Introduction to Linux Kernel Modules (LKM) - Chapter 2\n\n- **Assignment: Introduction to LKM**  \n  This part will help you get started with Linux Kernel Modules (LKM), covering the basics of module development and compilation.\n\n- **Learning Resources**:  \n  - Chapter 2 of *Operating System Concepts, 10th Edition*  \n  - Section 2.9 on building and booting a Linux system\n\n- **Key Topics**:\n  - Understanding the structure and building blocks of LKM\n  - Compiling and loading modules into the Linux kernel\n\n---\n\n### Part II - Linux Kernel Module for Listing Tasks - Chapter 3\n\n- **Assignment: ps-el**  \n  Develop a kernel module to list processes running on the system, similar to the `ps -el` command.\n\n- **Assignment: ps-eLf**  \n  Extend the `ps-el` module to display more detailed information, resembling `ps -eLf`.\n\n- **Learning Resources**:  \n  - Chapter 3 of *Operating System Concepts, 10th Edition*  \n  - Pages 201–205 for detailed instructions\n\n- **Key Topics**:\n  - Listing tasks in the kernel using kernel data structures\n  - Implementing process listing functionality in kernel space\n\n---\n\n### Part III - Kernel Data Structures - Chapter 3\n\n- **Assignment: dmesg**  \n  Implement a kernel module to interact with the `dmesg` command and display kernel messages.\n\n- **Assignment: collatz**  \n  Create a kernel module to compute the Collatz sequence and output the results.\n\n- **Learning Resources**:  \n  - Chapter 3 of *Operating System Concepts, 10th Edition*  \n  - Pages 205–208 for detailed instructions\n\n- **Key Topics**:\n  - Understanding and utilizing kernel data structures\n  - Implementing the `dmesg` functionality and algorithmic tasks in kernel space\n\n---\n\n## Setup and Installation\n\n### Requirements\n- A Linux virtual machine (VM) is recommended to avoid crashes or errors on the host system.\n  - Use VMware Player, VirtualBox, Microsoft Hyper-V, or any similar tool.\n- A basic understanding of Linux kernel module programming and C language.\n\n### Steps to Build the Kernel Modules\n\n1. Clone the repository:\n   ```bash\n   git clone \u003crepository-url\u003e\n   cd \u003crepository-directory\u003e\n\n2. Build the kernel module:\n\n  ```bash\n  make\n```\n\n3. Load the kernel module:\n\n  ```bash\n  sudo insmod \u003cmodule-name\u003e.ko\n```\n\n4. Check the output of the module (depending on the assignment):\n\n  * Use dmesg to view kernel log messages.\n  * For process listing assignments, use the appropriate ps commands.\n\n5. Unload the kernel module:\n\n  ```bash\n  sudo rmmod \u003cmodule-name\u003e\n```\n\n## Additional Notes\n* Caution: Working with the Linux kernel can cause system instability if errors occur. It is strongly recommended to complete these exercises on a virtual machine.\n* Refer to the relevant chapters in the textbook for step-by-step instructions\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcepdnaclk%2Fe19-co327-kernel-modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcepdnaclk%2Fe19-co327-kernel-modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcepdnaclk%2Fe19-co327-kernel-modules/lists"}