{"id":18282863,"url":"https://github.com/intjelic/debian-mmdebstrap-artifacts","last_synced_at":"2025-04-09T05:26:44.519Z","repository":{"id":150757027,"uuid":"365464271","full_name":"intjelic/debian-mmdebstrap-artifacts","owner":"intjelic","description":"Just a repository to make available some artifacts produced by the 'mmdebstrap' tool, quick and easy.","archived":false,"fork":false,"pushed_at":"2021-05-10T07:34:28.000Z","size":11,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-14T23:48:57.637Z","etag":null,"topics":["arm64","armhf","chroot","debian","debootstrap","mmdebstrap","qemu"],"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/intjelic.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":"2021-05-08T08:45:54.000Z","updated_at":"2021-05-10T07:34:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"d5e762f0-f996-4dee-a1a2-537be7f1199e","html_url":"https://github.com/intjelic/debian-mmdebstrap-artifacts","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intjelic%2Fdebian-mmdebstrap-artifacts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intjelic%2Fdebian-mmdebstrap-artifacts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intjelic%2Fdebian-mmdebstrap-artifacts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intjelic%2Fdebian-mmdebstrap-artifacts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intjelic","download_url":"https://codeload.github.com/intjelic/debian-mmdebstrap-artifacts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247983509,"owners_count":21028306,"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":["arm64","armhf","chroot","debian","debootstrap","mmdebstrap","qemu"],"created_at":"2024-11-05T13:06:35.224Z","updated_at":"2025-04-09T05:26:44.496Z","avatar_url":"https://github.com/intjelic.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Debian 'mmdebstrap' Artifacts\n\nJust a repository to make available some artifacts produced by the `mmdebstrap`\ntool, quick and easy.\n\n\u003e The `mmdebstrap` does not work consistently well on OSes other than Debian. Therefore, it's easier to work with a Docker container... or simply let **Github Actions** does the work.\n\n**Download Artifacts:** https://github.com/intjelic/debian-mmdebstrap-artifacts/actions (pick the last excecuted workflow and then pick the variation of the artifact you're interested in).\n\nThe 'mmdebstrap' tool is an alternative to 'debootstrap' to create chrootable\nDebian filesystems. The advantage of mmdebstrap is that it's also able to\ncreate them for different architectures other than the host architecture.\nArchitectures such as `armhf` or `arm64`, which is useful given most of us are\nrunning on the `amd64` architecture.\n\n**What are those artifacts useful for ?**\n\nCreating a Debian filesystem is one of the step needed in order to make images\nfor VM like QEMU. Those artifacts have the particularity of providing the \"boot\nfiles\" (initrd and vmlinuz) that QEMU is able to use in order to boot the\nDebian OS without setting up more complex boot loader. The downside is that any\nupdate of the Debian system will produce updated versions of those files (when\na new kernel is available in Debian package repositories).\n\nTherefore, inside the archive, you will find a structure similar to this.\n\n```\ninitrd.img-4.19.0-16-armmp-lpae\nvmlinuz-4.19.0-16-armmp-lpae\ndebian-buster-standard-armhf/\n  bin/\n  dev/\n  etc/\n  home/\n[...]\n```\n\nWhere the `initrd` and `vmlinuz` files are to be passed to the QEMU's `-initrd`\nand `-kernel` flags. Note that you can also pass additional options to the\nkernel using the `-append` flag. Consult the QEMU documentation for more\ninformation.\n\n**Cross-architecture chrooting**\n\nChrooting into the Debian filesystem before you make an image out of it is\nuseful if you need to make any additional configuration such as changing the\nroot password, creating additional system users, install more packages, set up\nthe network interfaces, etc.\n\nWhen the host has the same architecture, it's straight-forward and it can be\naccomplished with the following command.\n\n```\nsudo chroot debian-buster-standard-amd64/\n```\n\nWhen the host has a different architecture, `qemu-user-static` can be used\neasily. Assuming you're on `amd64` and want to chroot into a `armhf` Debian\nfilesystem, you would the following.\n\n```\nsudo apt-get install qemu-user-static\n\ncp /usr/bin/qemu-arm-static debian-buster-standard-armhf/usr/bin/\nsudo chroot debian-buster-standard-armhf/ qemu-arm-static /bin/bash\n```\n\nAfter you're done, you probably want to delete `qemu-arm-static` with\n`sudo rm debian-buster-standard-armhf/usr/bin/qemu-arm-static`.\n\nNote that you should not rely on information provided by the `uname` command.\n\n**Fork and adjust to your needs**\n\nAll the commands that are executed in order to create those artifacts are in\nthe `github/workflows/mmdebstrap.yml` file and it can be changed as needed.\n\nAdjust the matrix to produce only the artifacts that you need. It might get\nexpensive if the matrix is producing too many jobs. Notably, you'll want to\nchange the architecture and the Debian version to be installed (e.g `armhf`,\n`arm64`, `amd64`, `stretch` and `buster`).\n\nNext, change the `variant` variable, to select the system packages to install.\nThe `standard` value is the default for debootstrap, and values `required` and\n`important` are also supported. Consult mmdebstrap documentation for more\ninformation.\n\nFor a real desktop installation, you might want to use different network\nsettings, which can also be adjusted in the matrix, use either `ifupdown`,\n`systemd-networkd` or `network-manager`. But then after, you will need to do\nthe proper configuration too (advanced use).\n\nWhile you can still chroot into the produced Debian filesystem in order to\ninstall additional packages, you can also do it right in the 'mmdebstrap'\nstep. Add the comma-separated packages to the `--include` flag of the\nmmdebstrap tool.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintjelic%2Fdebian-mmdebstrap-artifacts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintjelic%2Fdebian-mmdebstrap-artifacts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintjelic%2Fdebian-mmdebstrap-artifacts/lists"}