{"id":13753887,"url":"https://github.com/dslm4515/Musl-LFS","last_synced_at":"2025-05-09T21:36:04.263Z","repository":{"id":35664968,"uuid":"140633586","full_name":"dslm4515/Musl-LFS","owner":"dslm4515","description":"Linux From Scratch using Musl as Libc","archived":false,"fork":false,"pushed_at":"2025-04-15T22:51:47.000Z","size":23568,"stargazers_count":172,"open_issues_count":11,"forks_count":21,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-15T23:27:49.902Z","etag":null,"topics":["lfs","musl-lfs","musl-libc"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dslm4515.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,"zenodo":null}},"created_at":"2018-07-11T22:28:46.000Z","updated_at":"2025-04-06T17:39:07.000Z","dependencies_parsed_at":"2025-03-23T23:23:34.526Z","dependency_job_id":"75c25b1e-834b-493e-be49-b4585436f74e","html_url":"https://github.com/dslm4515/Musl-LFS","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dslm4515%2FMusl-LFS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dslm4515%2FMusl-LFS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dslm4515%2FMusl-LFS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dslm4515%2FMusl-LFS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dslm4515","download_url":"https://codeload.github.com/dslm4515/Musl-LFS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253329047,"owners_count":21891568,"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":["lfs","musl-lfs","musl-libc"],"created_at":"2024-08-03T09:01:32.777Z","updated_at":"2025-05-09T21:36:03.260Z","avatar_url":"https://github.com/dslm4515.png","language":"Shell","funding_links":[],"categories":["Uncategorized","Shell","Active"],"sub_categories":["Uncategorized"],"readme":"# Musl-LFS\nLinux From Scratch using Musl as Libc and S6+S6-rc as init system\n\nThis is based on the works of Linux From Scratch (http://www.linuxfromscratch.org), which use GLibc and SysVinit/systemD. Additional work was derived from Void Linux (https://voidlinux.org), Alpine Linux (https://alpinelinux.org), and Dragora Linux (https://dragora.org). For logging during development of tool chains, I used porg from http://porg.sourceforge.net/.\n\nThe aim of this project is to create a create a Linux system using Musl (www.musl-libc.org) instead of GNU's Glibc and S6 (https://skarnet.org/) instead SysVinit.\n\n## Supported Architectures\n\u003cul\u003e\n  \u003cli\u003ei686/i586 : Stable and tested. Stable enough to build Xorg, Qt5 (without QT-webengine), Rust, and Firefox.\u003c/li\u003e\n  \u003cli\u003ex86_64 : Stable and tested. Stable enough to build Xorg, Qt5, Rust, and Firefox.\u003c/li\u003e\n  \u003cli\u003eaarch64: Stable and tested. Stable enough to build Xorg, Qt5, Rust, and Firefox.\u003c/li\u003e\n  \u003cli\u003earmv7/armv6: Builds fine. Requires modification to suit target hardware.\u003c/li\u003e\n\u003c/ul\u003e\n\n## Goals:\n\u003cul\u003e\n  \u003cli\u003e [x] Properly name patches to reflect origin (i.e. Alpine or void) \u003c/li\u003e\n  \u003cli\u003e [x] Create a list for wget to download sources.\u003c/li\u003e\n  \u003cli\u003e [x] Create md5s list for sources\u003c/li\u003e\n  \u003cli\u003e [x] Update s6-rc \u0026 s6 to lastest version \u003c/li\u003e\n  \u003cli\u003e [x] Redesign tool chain build to avoid two build passes of binutils and GCC\u003c/li\u003e\n  \u003cli\u003e [ ] Generate HTML 'book' like LFS\u003c/li\u003e\n  \u003cli\u003e [x] Add utmp/utmpx implementation\u003c/li\u003e\n  \u003cli\u003e [x] Transition from pkgconfig to pkgconf\u003c/li\u003e\n  \u003cli\u003e [x] Transition from gettext to gettext-tiny\u003c/li\u003e\n  \u003cli\u003e [ ] POSIX compatibility \u003c/li\u003e\n  \u003cli\u003e [x] Unify directories bin, sbin, and lib from / and /usr \u003c/li\u003e\n  \u003cli\u003e [x] Remove obselete bin group \u0026 user \n\u003c/ul\u003e\n\n## Build Method\nMLFS is based on LFS 9.1 and composed of 3 stages: cross-tools, tools, and chroot.\n\u003col\u003e\n  \u003cli\u003eCross-Tools -- Create a very basic toolchain with host's own tool chain. THis will be used to build the next stage. It also allows the next stage to use Musl Libc instead of Glibc.\u003c/li\u003e\n  \u003cli\u003eTools -- Creates the tool chain that will be used in the next stage. Resulting toolchain is sandboxed from host and uses its own libc: Musl \u003c/li\u003e\n  \u003cli\u003eChroot -- Last stage in which the final Musl system is built, using the tool chain built in the previous stage \u003c/li\u003e\n\u003c/ol\u003e\n\n_Starting with LFS 10.x, LFS now uses as new method and has not been tested to work with MLFS at this time._\n\n## Tested Builds\n\n| Host         | Target      | Build Status   |\n| ------------ | ----------- | -------------- | \n| i686-musl    | i686-musl   | Pass |\n| i686-glibc   | i686-musl   | Pending |\n| x86_64-musl  | x86_64-musl | Pass |\n| x86_64-glibc | x86_64-musl | Pass |\n| aarch64-glibc | aarch64-musl | Pass |\n| armv7l-glibc | armv7l-musl | Pass |\n| armv7l-musl  | armv7l-musl | Pending |\n| armv6-glibc  | armv6-musl  | Pending |\n| armv6-musl   | armv6-musl  | Pending |\n\n*ARM builds will need some modification based on specific hardware*\n\n## Additional Required Packages \n\nIf pursuing BLFS, some packages will fail to compile due certain implementions left out in the Musl C Library.\n\n\u003cul\u003e\n\u003cli\u003eMusl C Library\nhttps://www.musl-libc.org/\u003c/li\u003e\n\n\u003cli\u003eMusl-FTS \nhttps://github.com/pullmoll/musl-fts\u003c/li\u003e\n\n\u003cli\u003eMusl-Obstack\nhttps://github.com/pullmoll/musl-obstack\u003c/li\u003e\n\n\u003cli\u003eMusl-RPmatch\nhttps://github.com/pullmoll/musl-rpmatch\u003c/li\u003e\n\n\u003cli\u003eMusl-Legacy-Compatibility Headers\nhttps://github.com/void-linux/void-packages/blob/master/srcpkgs/musl-legacy-compat \u003c/li\u003e\n\n\u003cli\u003eArgp-Standalone\nhttps://github.com/jahrome/argp-standalone\u003c/li\u003e\n\n\u003c/ul\u003e\n\n## Optional Packages:\n\u003cul\u003e\n\u003cli\u003eLibreSSL (instead of OpenSSL)\nhttps://www.libressl.org/\u003c/li\u003e\n\u003cli\u003eGNU Nano (Text Editor)\nhttps://www.nano-editor.org/ \u003c/li\u003e\n\u003c/ul\u003e\n\n## Projects of Interest\n\n\u003cul\u003e\n\u003cli\u003egCompat - \"The gcompat project provides a glibc-compatible runtime environment for distributions that use musl libc.\"\nhttps://code.foxkit.us/adelie/gcompat\u003c/li\u003e\n\u003cli\u003e Locales - \"Locale program for musl libc\"\nhttps://github.com/rilian-la-te/musl-locales \u003c/li\u003e\n\u003cli\u003eMussel - \"...the shortest and fastest script available today to build working cross compilers that target musl libc.\"\nhttps://github.com/firasuke/mussel \u003c/li\u003e\n\u003cli\u003eshimmy - POSIX:registered: compatibility shims for Linux (and other environments)\nhttps://code.foxkit.us/adelie/shimmy\u003c/li\u003e\n\u003cli\u003egettext-tiny - It provides lightweight replacements for tools typically used from the GNU gettext suite.\nhttps://github.com/AdelieLinux/gettext-tiny\u003c/li\u003e\n\u003cli\u003eMLFS-pkgtool - MLFS built with Slackware's pkgtools. \nhttps://github.com/dslm4515/MLFS-pkgtool \u003c/li\u003e\n\u003c/ul\u003e\n\n## Layout\n\n\u003cul\u003e\n  \u003cli\u003ebuild-scripts - Build scripts to use to semi-automate building /cross-tools, /tools, and the final system\u003c/li\u003e\n  \u003cli\u003econtrib - Additional sources that are hard to find or re-packed\n  \u003cli\u003edoc - Build instructions to build a LFS installation that uses Musl instead of Glibc and S6 instead of SysVint.\u003c/li\u003e\n  \u003cli\u003eextra - Helpful scripts to mount, chroot, and umount a MLFS build.\u003c/li\u003e\n  \u003cli\u003efiles - Files that will be needed during the build\u003c/li\u003e\n  \u003cli\u003epatches - All patches used to patch sources to work/recognize Musl C Library\u003c/li\u003e\n  \u003cli\u003esources.list - List of sources to download\n\u003c/ul\u003e\n\n## Changelog (since 8.00)\n\n\u003cul\u003e\n    \u003cli\u003e Completed scripts to build cross-tools and tools \u003c/li\u003e\n    \u003cli\u003e Upgraded bash to 5.1 \u003c/li\u003e\n    \u003cli\u003e Updated lsb-release to 9.0 \u003c/li\u003e\n    \u003cli\u003e Upgraded flex to 2.6.4 \u003c/li\u003e\n    \u003cli\u003e Upgraded expat to 2.4.1 \u003c/li\u003e\n    \u003cli\u003e Upgraded inetutils to 2.0 \u003c/li\u003e\n    \u003cli\u003e Upgraded perl to 5.34.0 \u003c/li\u003e\n    \u003cli\u003e Upgraded autoconf to 2.7.1 \u003c/li\u003e\n    \u003cli\u003e Upgraded automake to 1.16.3 \u003c/li\u003e\n    \u003cli\u003e Upgraded libelf to 0.185 \u003c/li\u003e\n    \u003cli\u003e Upgraded libreSSL to 3.3.3 \u003c/li\u003e\n    \u003cli\u003e Upgraded Python3 to 3.9.5 \u003c/li\u003e\n    \u003cli\u003e Upgraded procps-ng to 3.3.17 with utmps support \u003c/li\u003e\n    \u003cli\u003e Upgraded coreutils with utmps support \u003c/li\u003e\n    \u003cli\u003e Upgraded grub to 2.06 \u003c/li\u003e\n    \u003cli\u003e Upgraded iproute 2 to 5.12.0 \u003c/li\u003e\n    \u003cli\u003e Upgraded to man-db 2.9.4. \u003c/li\u003e\n    \u003cli\u003e Upgraded vim to 8.2.2890 \u003c/li\u003e\n    \u003cli\u003e Upgraded util-linux to 2.36.2 \u003c/li\u003e\n    \u003cli\u003e Upgraded execline to 2.8.0.1 \u003c/li\u003e\n    \u003cli\u003e Upgraded s6 to 2.10.0.3 \u003c/li\u003e\n    \u003cli\u003e Upgraded s6-rc to 0.5.2.2 \u003c/li\u003e\n    \u003cli\u003e Upgraded s6-linux-utils to 2.5.1.5 \u003c/li\u003e\n    \u003cli\u003e Upgraded s6-portable-utils to 2.2.3.2 \u003c/li\u003e\n    \u003cli\u003e Upgraded s6-linux-init 1.0.6.3 \u003c/li\u003e\n\u003c/ul\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdslm4515%2FMusl-LFS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdslm4515%2FMusl-LFS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdslm4515%2FMusl-LFS/lists"}