{"id":19723996,"url":"https://github.com/vs4vijay/linux-kernel-playground","last_synced_at":"2026-05-06T00:05:24.430Z","repository":{"id":243432011,"uuid":"806717590","full_name":"vs4vijay/linux-kernel-playground","owner":"vs4vijay","description":"Linux Kernel Playground","archived":false,"fork":false,"pushed_at":"2024-06-09T05:35:12.000Z","size":10,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T16:43:39.878Z","etag":null,"topics":["buildroot","esp32","iot","kernel","linux","linux-kernel","operating-system","raspberry-pi","yocto","zephyr"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vs4vijay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-05-27T18:48:20.000Z","updated_at":"2024-12-24T09:30:59.000Z","dependencies_parsed_at":"2024-06-08T21:24:58.276Z","dependency_job_id":"fa448abf-4dcf-4a87-9171-130d62a99d93","html_url":"https://github.com/vs4vijay/linux-kernel-playground","commit_stats":null,"previous_names":["vs4vijay/kernel-playground","vs4vijay/linux-kernel-playground"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Flinux-kernel-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Flinux-kernel-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Flinux-kernel-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vs4vijay%2Flinux-kernel-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vs4vijay","download_url":"https://codeload.github.com/vs4vijay/linux-kernel-playground/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241045530,"owners_count":19899665,"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":["buildroot","esp32","iot","kernel","linux","linux-kernel","operating-system","raspberry-pi","yocto","zephyr"],"created_at":"2024-11-11T23:24:09.870Z","updated_at":"2026-05-06T00:05:24.424Z","avatar_url":"https://github.com/vs4vijay.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# BuildRoot Linux OS Playground\n\nA comprehensive system for building custom Linux-based operating systems using BuildRoot with proper CI/CD, testing, and extensibility for multiple machine architectures.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Linux development environment (Ubuntu/Debian recommended)\n- Basic build tools (make, gcc, git, etc.)\n- At least 8GB RAM and 20GB disk space for builds\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-username/linux-kernel-playground.git\ncd linux-kernel-playground\n\n# Install dependencies (Ubuntu/Debian)\nmake install-deps\n\n# Download BuildRoot source\nmake download\n\n# Build default configuration (generic x86_64)\nmake build\n```\n\n### Alternative: Using the Build Script\n\n```bash\n# Make the script executable\nchmod +x build.sh\n\n# Build with the script\n./build.sh generic_x86_64_defconfig\n\n# Build with options\n./build.sh --clean --menuconfig --test generic_x86_64_defconfig\n```\n\n## 📋 Available Configurations\n\n### x86_64 Configurations\n- **generic_x86_64_defconfig** - Generic x86_64 system suitable for QEMU and modern hardware\n  - Kernel: 6.6.21\n  - Features: SystemD, X11, Desktop environment, Development tools\n  - Use case: Development, testing, virtual machines\n\n### ARM64 Configurations  \n- **raspberrypi4_64_defconfig** - Raspberry Pi 4 (64-bit) optimized configuration\n  - Kernel: 6.6.21 with RPi patches\n  - Features: GPU acceleration, Camera support, WiFi/Bluetooth, Desktop\n  - Use case: Raspberry Pi 4 single-board computers\n\n## 🛠️ Building and Development\n\n### Using Makefile\n\n```bash\n# List all available configurations\nmake list-configs\n\n# Build specific configuration\nmake build-raspberrypi4_64_defconfig\n\n# Clean build directory\nmake clean\n\n# Run menuconfig to customize configuration\nmake menuconfig\n\n# Test built image with QEMU (x86_64 only)\nmake test\n\n# Show project information\nmake info\n```\n\n### Using Build Script\n\n```bash\n# Show help\n./build.sh --help\n\n# Build with clean start and menuconfig\n./build.sh --clean --menuconfig generic_x86_64_defconfig\n\n# Build and test with QEMU\n./build.sh --test generic_x86_64_defconfig\n\n# Download only (no build)\n./build.sh --download-only generic_x86_64_defconfig\n\n# Build with custom parallel jobs\n./build.sh --jobs 8 generic_x86_64_defconfig\n```\n\n## 🏗️ Project Structure\n\n```\nlinux-kernel-playground/\n├── buildroot-configs/          # Custom BuildRoot configurations\n│   ├── x86_64/                 # x86_64 specific configs\n│   │   └── generic_x86_64_defconfig\n│   ├── arm64/                  # ARM64 specific configs\n│   │   └── raspberrypi4_64_defconfig\n│   ├── board/                  # Board-specific files\n│   │   ├── x86_64/\n│   │   │   └── linux.config\n│   │   ├── raspberrypi4/\n│   │   │   ├── linux.config\n│   │   │   ├── config.txt\n│   │   │   └── boot.txt\n│   │   └── post_build.sh\n│   ├── system/                 # System-wide configurations\n│   │   └── device_table.txt\n│   └── package/                # Package configurations\n│       └── busybox/\n│           └── busybox.config\n├── .github/workflows/          # CI/CD workflows\n│   └── buildroot.yml\n├── build.sh                    # Build script\n├── Makefile                    # Makefile for development\n└── README.md                   # This file\n```\n\n## 🧪 Testing\n\n### Local Testing with QEMU\n\n```bash\n# Build and test x86_64 configuration\nmake build-generic_x86_64_defconfig\nmake test\n\n# Or using the build script\n./build.sh --test generic_x86_64_defconfig\n\n# Run different test suites\nmake test-basic      # Basic boot and system health tests\nmake test-network     # Include network connectivity tests  \nmake test-full        # Comprehensive testing with package management\nmake test-interactive # Interactive QEMU session for manual testing\n\n# Using the dedicated test scripts\n./test-ci.sh --arch x86_64 --suite basic --timeout 300 buildroot-2024.02.1/output\n./test-qemu.sh --arch x86_64 --test-type ssh --verbose buildroot/output/images/bzImage buildroot/output/images/rootfs.ext2\n```\n\n### QEMU Test Suites\n\nThe project includes comprehensive QEMU testing:\n\n**Basic Tests:**\n- System boot verification\n- Login prompt availability\n- System process checks\n- Filesystem mounting verification\n- Hello World execution\n\n**Network Tests:**\n- All basic tests plus:\n- Network interface configuration\n- IP address assignment\n- DNS resolution testing\n\n**Full Tests:**\n- All network tests plus:\n- SSH service accessibility\n- Package management verification\n- System performance testing\n- Memory usage monitoring\n- System logging verification\n\n**Interactive Testing:**\n- Full SSH access to the running system\n- Manual testing and exploration\n- Real-time system monitoring\n\n### CI/CD Testing\n\nThe GitHub Actions workflow automatically:\n- Validates all configuration files\n- Builds all configurations in parallel\n- Tests x86_64 images with QEMU\n- Runs security scans\n- Generates build reports\n- Comments on pull requests with results\n\n## 📝 Creating New Configurations\n\n### Method 1: Copy and Modify Existing Config\n\n```bash\n# Copy an existing configuration\ncp buildroot-configs/x86_64/generic_x86_64_defconfig buildroot-configs/x86_64/my_custom_defconfig\n\n# Create board directory if needed\nmkdir -p buildroot-configs/board/my_custom\n\n# Copy and modify kernel config\ncp buildroot-configs/board/x86_64/linux.config buildroot-configs/board/my_custom/linux.config\n\n# Edit the configuration files\nnano buildroot-configs/x86_64/my_custom_defconfig\nnano buildroot-configs/board/my_custom/linux.config\n```\n\n### Method 2: Use BuildRoot Menuconfig\n\n```bash\n# Build base configuration\nmake build-generic_x86_64_defconfig\n\n# Run menuconfig to customize\ncd buildroot-2024.02.1\nmake menuconfig\n\n# Save your configuration\nmake savedefconfig\n\n# Copy the generated defconfig to your project\ncp defconfig ../buildroot-configs/x86_64/my_custom_defconfig\n```\n\n### Configuration File Structure\n\nEach defconfig should include:\n- Architecture selection (BR2_x86_64, BR2_aarch64, etc.)\n- Toolchain configuration\n- Kernel configuration\n- Package selection\n- Filesystem settings\n- Bootloader configuration\n\n## 🔧 Customization Options\n\n### Kernel Configuration\n\nEdit the board-specific kernel config:\n```bash\nnano buildroot-configs/board/\u003carch\u003e/linux.config\n```\n\n### Package Selection\n\nModify the defconfig to add/remove packages:\n```bash\n# Add a package\nBR2_PACKAGE_\u003cPACKAGE_NAME\u003e=y\n\n# Remove a package\n# BR2_PACKAGE_\u003cPACKAGE_NAME\u003e=y\n```\n\n### Post-Build Customization\n\nEdit the post-build script:\n```bash\nnano buildroot-configs/board/post_build.sh\n```\n\n## 📦 Output Files\n\nAfter building, you'll find these files in `buildroot-\u003cversion\u003e/output/images/`:\n\n### x86_64 Output\n- `bzImage` - Linux kernel\n- `rootfs.ext2` - Root filesystem\n- `rootfs.tar` - Root filesystem archive\n\n### Raspberry Pi 4 Output\n- `kernel8.img` - 64-bit kernel\n- `bcm2711-rpi-4-b.dtb` - Device tree\n- `rootfs.ext2` - Root filesystem\n- `sdcard.img` - Complete SD card image\n\n## 🏷️ Version Management\n\nThe project includes a comprehensive version management system:\n\n### Using Version Script\n\n```bash\n# Show current version\n./version.sh --version\n\n# Bump patch version (v1.0.0 → v1.0.1)\n./version.sh --bump patch\n\n# Bump minor version (v1.0.1 → v1.1.0)\n./version.sh --bump minor\n\n# Bump major version (v1.1.0 → v2.0.0)\n./version.sh --bump major\n\n# Set specific version\n./version.sh --set v2.0.0\n\n# Bump version, create tag, and push\n./version.sh --bump patch --tag --push\n```\n\n### Creating Releases\n\n#### Automatic Release (Recommended)\n1. Bump version and create tag:\n   ```bash\n   ./version.sh --bump patch --tag --push\n   ```\n2. GitHub Actions will automatically create a release\n\n#### Manual Release\n1. Create and push a tag:\n   ```bash\n   git tag v1.0.0\n   git push origin v1.0.0\n   ```\n2. GitHub Actions will trigger the release workflow\n\n#### Workflow Dispatch\nYou can also create releases manually through GitHub Actions:\n1. Go to Actions → Release BuildRoot Linux OS\n2. Click \"Run workflow\"\n3. Enter version details\n4. Choose whether to create a pre-release\n\n### Release Contents\n\nEach release includes:\n- **Configuration archives** (.tar.gz, .zip) with all build artifacts\n- **Checksums** (SHA256, MD5) for verification\n- **Build reports** with detailed build information\n- **README files** with usage instructions\n- **QEMU testing** results (for applicable configurations)\n\n### Artifact Download\n\nRelease artifacts are available through:\n- **GitHub Releases**: Download from the release page\n- **GitHub Actions**: Download as workflow artifacts\n- **CI Artifacts**: Available for 30 days after build\n\n### Verification\n\nAlways verify downloaded releases:\n\n```bash\n# Download the checksum file\nwget https://github.com/your-repo/releases/download/v1.0.0/sha256sums.txt\n\n# Verify your download\nsha256sum -c sha256sums.txt\n```\n\n## 🚀 Deployment\n\n### QEMU (x86_64)\n\n```bash\nqemu-system-x86_64 \\\n  -m 512M \\\n  -kernel buildroot-2024.02.1/output/images/bzImage \\\n  -hda buildroot-2024.02.1/output/images/rootfs.ext2 \\\n  -append \"root=/dev/sda console=ttyS0\" \\\n  -nographic\n```\n\n### Raspberry Pi 4\n\n```bash\n# Write to SD card\nsudo dd if=buildroot-2024.02.1/output/images/sdcard.img of=/dev/sdX bs=1M\n\n# Or manually copy files\nsudo cp buildroot-2024.02.1/output/images/* /media/sdcard/boot/\n```\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n1. **Build fails with dependency errors**\n   ```bash\n   make install-deps\n   ```\n\n2. **QEMU test fails**\n   - Ensure you're using an x86_64 configuration\n   - Check that bzImage and rootfs.ext2 exist\n\n3. **Configuration not found**\n   ```bash\n   make list-configs\n   ```\n\n4. **Build takes too long**\n   - Increase parallel jobs: `./build.sh --jobs 16 \u003cconfig\u003e`\n   - Use SSD storage\n   - Ensure sufficient RAM\n\n### Getting Help\n\n- Check the build log: `buildroot-\u003cversion\u003e/build.log`\n- Review GitHub Actions build reports\n- Open an issue on GitHub\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Add your configuration\n4. Test locally\n5. Submit a pull request\n\n### Pull Request Guidelines\n\n- Include a clear description of changes\n- Test your configuration locally\n- Update documentation if needed\n- Ensure CI passes\n\n## 📚 Resources\n\n- [BuildRoot Documentation](https://buildroot.org/manual.html)\n- [Linux Kernel Documentation](https://www.kernel.org/doc/)\n- [QEMU Documentation](https://www.qemu.org/docs/master/)\n- [Raspberry Pi Documentation](https://www.raspberrypi.org/documentation/)\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- BuildRoot project for the excellent build system\n- Linux kernel developers\n- Raspberry Pi Foundation\n- QEMU project for virtualization support","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Flinux-kernel-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvs4vijay%2Flinux-kernel-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvs4vijay%2Flinux-kernel-playground/lists"}