base on Armbian Linux build framework generates custom Debian or Ubuntu image for x86, aarch64, riscv64 & armhf <h2 align="center"> <a href=#><img src="https://raw.githubusercontent.com/armbian/.github/master/profile/logosmall.png" alt="Armbian logo"></a> <br><br> </h2> ### Purpose of This Repository The **Armbian Linux Build Framework** creates minimal, efficient, and fully [customizable operating system images](https://docs.armbian.com/#key-features) based on **Debian** or **Ubuntu**. It is designed specifically for **low-resource single board computers (SBCs)** and other embedded devices. This toolchain compiles a custom **Linux kernel**, **bootloader**, and **root filesystem**, providing fine-grained control over: - Kernel versions and configuration - Bootloader selection and customization - Filesystem layout and compression - Additional firmware, overlays, and device trees - System optimizations for performance and size The framework supports **native**, **cross**, and **containerized** builds for multiple architectures (`x86_64`, `aarch64`, `armhf`, `riscv64`), and is suitable for development, testing, production deployment, or automation pipelines. It ensures **consistency across devices** while remaining modular and extensible through a variety of configuration files, templates, and user patches. ### Quick Start ```bash git clone https://github.com/armbian/build cd build ./compile.sh ``` ### Resources [Documentation](https://docs.armbian.com/Developer-Guide_Overview/) • [Website](https://www.armbian.com) • [Blog](https://blog.armbian.com) • [Community Forums](https://forum.armbian.com) <a href="#how-to-build-an-image-or-a-kernel"><img src=".github/README.gif" alt="Armbian logo" width="100%"></a> ### Build Host Requirements - **Supported Architectures:** `x86_64`, `aarch64`, `riscv64` - **System:** VM, container, or bare-metal with: - **≥ 8GB RAM** (less with `KERNEL_BTF=no`) - **~50GB disk space** - **Operating System:** - Armbian / Ubuntu 24.04 (Noble) for native builds - Any Docker-capable Linux for containerized setup - **Windows:** Windows 10/11 with WSL2 running Armbian / Ubuntu 24.04 - **Access:** Superuser rights (`sudo` or `root`) - **Important:** Keep your system up-to-date — outdated tools (e.g., Docker) can cause issues. ### Download Prebuilt Armbian OS Images: <https://www.armbian.com/download> ### Contribute Learn how to report issues, suggest improvements, or submit code: [CONTRIBUTING.md](CONTRIBUTING.md) ### Support Armbian offers multiple support channels, depending on your needs: - **Community Forums** Get help from fellow users and contributors on a wide range of topics — from troubleshooting to development. 👉 [forum.armbian.com](https://forum.armbian.com) - **Discord / IRC/ Matrix Chat** Join real-time discussions with developers and community members for faster feedback and collaboration. 👉 [Community Chat](https://docs.armbian.com/Community_IRC/) - **Paid Consultation** For advanced needs, commercial projects, or guaranteed response times, paid support is available directly from Armbian maintainers. 👉 [Contact us](https://www.armbian.com/contact) to discuss consulting options. ### Contributors Thank you to all the people who already contributed to Armbian! <a href="https://github.com/armbian/build/graphs/contributors"> <img src="https://contrib.rocks/image?repo=armbian/build" /> </a> ## Armbian Partners Armbian's [partnership program](https://forum.armbian.com/subscriptions) helps to support Armbian and the Armbian community! Please take a moment to familiarize yourself with [our Partners](https://armbian.com/partners). ", Assign "at most 3 tags" to the expected json: {"id":"11893","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"