Assignment 2 + Project
Assignment 2 + Project
Objective
The purpose of this assignment is to provide students with hands-on experience in configuring, modifying,
compiling, and installing a custom Linux kernel in a virtual machine environment. This exercise will help
students understand the intricacies of the Linux kernel and operating system internals.
Assignment Overview
You will:
1. Set up a development environment using a virtual machine.
2. Download and configure the Linux kernel source code.
3. Optionally, modify the kernel to add new functionality or change existing features.
4. Compile the kernel and install it on your virtual machine.
5. Test and debug the custom kernel to ensure it works correctly.
Steps and Guidance
1. Set Up Your Development Environment
Task: Install a virtual machine (VM) and set up a Linux development environment.
Guidance:
- Choose a VM tool such as VirtualBox, VMware.
- Install a Linux distribution (e.g., Ubuntu, kali Linux) within your VM.
- Install essential development packages:
Commands:
sudo apt-get update
sudo apt-get install build-essential git libncurses5-dev bison flex libssl-dev libelf-dev
cd linux-stable
make modules_install
- If you encounter issues, revert to a previous snapshot of your VM (if you created one) and try to identify
and fix the problem.
Deliverables
1. Report: Document each step you took, including configurations, modifications, and any issues you
encountered and how you resolved them.
2. Source Code: Submit any modified kernel source files.
3. Demonstration: Provide a screenshots demonstrating the new kernel running on your virtual machine.
Evaluation Criteria
- Documentation: Clear and comprehensive documentation of the process and any issues encountered.
Additional Resources
- The Linux Kernel documentation (https://www.kernel.org/doc/html/latest/)
- Linux From Scratch (http://www.linuxfromscratch.org/)
- Kernel Newbies (https://kernelnewbies.org/)
Tips
- Regularly back up your virtual machine state.
- Make small, incremental changes and test each one thoroughly.
This assignment is designed to challenge you and provide a deep understanding of operating system
concepts through practical application. Good luck!