{"id":15003549,"url":"https://github.com/mranv/linux.micrognu","last_synced_at":"2026-02-25T11:03:11.619Z","repository":{"id":244334208,"uuid":"814937584","full_name":"mranv/linux.micrognu","owner":"mranv","description":"This is a simple, lightweight GUI-based Linux distribution designed to run on QEMU. It combines the Linux Kernel 6.9.4, BusyBox 1.36.1 for essential Unix utilities, and Nano-X (MicroWindows) for graphical capabilities.","archived":false,"fork":false,"pushed_at":"2024-06-14T03:10:52.000Z","size":1,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-08T22:29:10.439Z","etag":null,"topics":["busybox","distro","linux","linux-from-scratch","linux-kernel","linux-system","microwindows","minimalistic-os","nano-x","operating-system"],"latest_commit_sha":null,"homepage":"","language":null,"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/mranv.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-06-14T02:55:00.000Z","updated_at":"2024-12-25T07:38:33.000Z","dependencies_parsed_at":"2024-06-14T04:27:16.485Z","dependency_job_id":"f66764a2-06c6-4bb4-b358-736ce560114a","html_url":"https://github.com/mranv/linux.micrognu","commit_stats":null,"previous_names":["mranv/linux.micrognu"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mranv%2Flinux.micrognu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mranv%2Flinux.micrognu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mranv%2Flinux.micrognu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mranv%2Flinux.micrognu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mranv","download_url":"https://codeload.github.com/mranv/linux.micrognu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243154919,"owners_count":20245012,"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":["busybox","distro","linux","linux-from-scratch","linux-kernel","linux-system","microwindows","minimalistic-os","nano-x","operating-system"],"created_at":"2024-09-24T18:58:56.918Z","updated_at":"2025-10-27T19:49:02.076Z","avatar_url":"https://github.com/mranv.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple GUI-Based Linux Distro Creation Guide\n\nThis guide will walk you through creating a simple graphical Linux distribution based on BusyBox and Nano-X, adapted to run on QEMU.\n\n## Prerequisites\n\nEnsure you have a Debian-based system and install the necessary dependencies:\n\n```sh\nsudo apt update \u0026\u0026 sudo apt install wget bzip2 libncurses-dev flex bison bc libelf-dev libssl-dev xz-utils autoconf gcc make libtool git vim libpng-dev libfreetype-dev g++ extlinux nano\n```\n\n## Step-by-Step Instructions\n\n### 1. Download and Prepare the Linux Kernel\n\n1. **Download the Linux Kernel:**\n\n   ```sh\n   wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.4.tar.xz\n   ```\n\n2. **Extract the Kernel:**\n\n   ```sh\n   tar xf linux-6.9.4.tar.xz\n   cd linux-6.9.4\n   ```\n\n3. **Configure the Kernel:**\n\n   ```sh\n   make menuconfig\n   ```\n\n4. **Compile the Kernel:**\n\n   ```sh\n   make -j 4\n   ```\n\n5. **Create a Directory for the Distro:**\n   ```sh\n   mkdir /distro\n   cp arch/x86/boot/bzImage /distro/\n   ```\n\n### 2. Set Up BusyBox\n\n1. **Download BusyBox:**\n\n   ```sh\n   cd ~\n   wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2\n   ```\n\n2. **Extract BusyBox:**\n\n   ```sh\n   tar xf busybox-1.36.1.tar.bz2\n   cd busybox-1.36.1\n   ```\n\n3. **Configure BusyBox:**\n\n   ```sh\n   make menuconfig\n   ```\n\n4. **Compile and Install BusyBox:**\n   ```sh\n   make -j 4\n   make CONFIG_PREFIX=/distro install\n   ```\n\n### 3. Set Up MicroWindows\n\n1. **Clone MicroWindows:**\n\n   ```sh\n   git clone https://github.com/ghaerr/microwindows\n   cd microwindows/src/\n   ```\n\n2. **Configure MicroWindows:**\n\n   ```sh\n   cp Configs/config.linux-fb config\n   nano config\n   ```\n\n3. **Compile MicroWindows:**\n\n   ```sh\n   make -j 4\n   make install\n   make x11-demo\n   ```\n\n4. **Set Up a Sample GUI Application:**\n\n   ```sh\n   mkdir x11-demo\n   cd x11-demo/\n   nano gui.c\n   ```\n\n5. **Compile the GUI Application:**\n   ```sh\n   cd ..\n   mv x11-demo /distro/\n   cd /distro/x11-demo/\n   gcc gui.c -lNX11 -lnano-X -I /microwindows/src/nx11/X11-local/\n   mv a.out /distro/nirs-test-app\n   ```\n\n### 4. Prepare the Distro Environment\n\n1. **Create Necessary Directories:**\n\n   ```sh\n   mkdir -p /distro/lib/x86_64-linux-gnu/\n   mkdir /distro/lib64\n   ```\n\n2. **Copy Required Libraries:**\n\n   ```sh\n   cp /lib/x86_64-linux-gnu/libpng16.so.16 /distro/lib/x86_64-linux-gnu/libpng16.so.16\n   cp /lib/x86_64-linux-gnu/libz.so.1 /distro/lib/x86_64-linux-gnu/libz.so.1\n   cp /lib/x86_64-linux-gnu/libfreetype.so.6 /distro/lib/x86_64-linux-gnu/libfreetype.so.6\n   cp /lib/x86_64-linux-gnu/libc.so.6 /distro/lib/x86_64-linux-gnu/libc.so.6\n   cp /lib/x86_64-linux-gnu/libm.so.6 /distro/lib/x86_64-linux-gnu/libm.so.6\n   cp /lib/x86_64-linux-gnu/libbrotlidec.so.1 /distro/lib/x86_64-linux-gnu/libbrotlidec.so.1\n   cp /lib64/ld-linux-x86-64.so.2 /distro/lib64/ld-linux-x86-64.so.2\n   cp /lib/x86_64-linux-gnu/libbrotlicommon.so.1 /distro/lib/x86_64-linux-gnu/libbrotlicommon.so.1\n   ```\n\n3. **Copy Nano-X Binaries:**\n   ```sh\n   cp -r /microwindows/src/bin /distro/nanox\n   cp /microwindows/src/runapp /distro/nanox/\n   ```\n\n### 5. Create the Bootable Image\n\n1. **Create and Format the Image:**\n\n   ```sh\n   cd /distro/\n   truncate -s 200MB boot.img\n   mkfs boot.img\n   mkdir mnt\n   mount boot.img mnt\n   ```\n\n2. **Install Extlinux:**\n\n   ```sh\n   extlinux -i mnt/\n   ```\n\n3. **Copy Files to the Image:**\n\n   ```sh\n   mv bin bzImage lib lib64 linuxrc nanox nirs-test-app sbin usr mnt\n   ```\n\n4. **Create Additional Directories:**\n\n   ```sh\n   cd mnt/\n   mkdir var etc root dev tmp proc\n   ```\n\n5. **Unmount the Image:**\n   ```sh\n   cd ..\n   umount mnt\n   ```\n\n### Links\n\n- [Linux Kernel](https://www.kernel.org/)\n- [BusyBox](https://busybox.net/)\n- [MicroWindows](https://github.com/ghaerr/microwindows)\n- [X11 Hello](https://gist.github.com/nir9/098d83c7...)\n\nWith these steps, you will have created a simple graphical Linux distribution ready to run on QEMU.\n\n\u003c!-- https://www.youtube.com/watch?v=guSDz5Iwgw0\u0026t=3s --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmranv%2Flinux.micrognu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmranv%2Flinux.micrognu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmranv%2Flinux.micrognu/lists"}