A Linux image builder that creates a bootable system operating entirely from an initial ramdisk (initrd), designed to launch Chromium in DRM/GBM mode with minimal dependencies.
Webgate builds a Linux environment that:
- Boots directly into a ramdisk-based system
- Provides essential components required to run Chromium reliably
- Uses DRM (Direct Rendering Manager) and GBM (Generic Buffer Management) for hardware-accelerated graphics
- Reduces dependencies between the Linux kernel and Chromium browser while maintaining functionality
- Creates bootable UEFI images for bare-metal deployment
The system consists of several core components:
- Linux Kernel - Custom configured kernel with DRM/GBM support
- libdrm - Direct Rendering Manager userspace library
- Mesa - 3D graphics library with hardware-specific Gallium drivers
- libglvnd - OpenGL Vendor-Neutral Dispatch library
- Linux Firmware - GPU firmware files for various hardware
- Dockerized Environment - Reproducible builds using Debian Trixie
- Modular Architecture - Each component has independent build, setup, and install scripts
- UEFI Boot Support - Creates bootable EFI images using systemd-ukify
- Docker
- Privileged container support (for loop device mounting)
-
Clone the repository:
git clone https://github.com/lehtojo/webgate cd webgate -
Build the complete system:
./build.sh
-
The build process will:
- Sync module source code
- Configure and build all components
- Create a functional root filesystem
- Package everything into a bootable UEFI image
-
Output:
out/system.img- Bootable disk imageout/bootloader.efi- UEFI bootloaderout/filesystem.cpio- Initial ramdisk
For more control, you can run individual build phases:
./control.sh sync attach setup build install postinstall filesystem bootloader image- sync - Download/update module source code
- attach - Prepare module dependencies
- setup - Configure build systems (Meson, Make)
- build - Compile all modules
- install - Install to staging directory
- postinstall - Copy additional files and finalize
- filesystem - Create initrd archive
- bootloader - Generate UEFI bootloader
- image - Create bootable disk image
Graphics hardware support through Mesa drivers:
- Intel integrated graphics (i915, iris)
- NVIDIA graphics (Nouveau)
- Software rendering fallback (LLVMpipe, Softpipe)
- AMD graphics (RadeonSI, AMDGPU)
- Additional hardware support via Mesa's Gallium drivers
Each module contains configuration files:
config.json- Git repository and commit informationsetup.sh- Build system configurationbuild.sh- Compilation commandsinstall.sh- Installation scripts
- Add custom root filesystem files to
extra/directory - Modify kernel command line in
data/commandline/commandline.txt - Adjust module configurations in respective
setup.shscripts
- Create module directory in
modules/ - Add required scripts:
setup.sh,build.sh,install.sh - Optionally add
config.jsonfor Git-based modules
This project aims to create a path from Linux kernel to Chromium browser, reducing system complexity while maintaining hardware compatibility and functionality.
See LICENSE file for details.