{"id":32135224,"url":"https://github.com/bestouff/genext2fs","last_synced_at":"2026-02-21T03:02:14.267Z","repository":{"id":28883098,"uuid":"112740136","full_name":"bestouff/genext2fs","owner":"bestouff","description":"genext2fs - ext2 filesystem generator for embedded systems","archived":false,"fork":false,"pushed_at":"2024-03-13T00:56:29.000Z","size":715,"stargazers_count":54,"open_issues_count":15,"forks_count":34,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-10-21T03:52:35.356Z","etag":null,"topics":["embedded-linux","ext2","mkfs"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bestouff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-12-01T12:57:28.000Z","updated_at":"2025-09-29T06:27:59.000Z","dependencies_parsed_at":"2023-10-20T18:12:55.062Z","dependency_job_id":"7f550c59-4e97-4562-8ebf-86adcf873b6c","html_url":"https://github.com/bestouff/genext2fs","commit_stats":{"total_commits":241,"total_committers":12,"mean_commits":"20.083333333333332","dds":0.6307053941908713,"last_synced_commit":"3b99f4a43f612b9ee74bbf24ca9890606295313f"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/bestouff/genext2fs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestouff%2Fgenext2fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestouff%2Fgenext2fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestouff%2Fgenext2fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestouff%2Fgenext2fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bestouff","download_url":"https://codeload.github.com/bestouff/genext2fs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestouff%2Fgenext2fs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29672257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T00:11:43.526Z","status":"online","status_checked_at":"2026-02-21T02:00:07.432Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["embedded-linux","ext2","mkfs"],"created_at":"2025-10-21T03:52:22.409Z","updated_at":"2026-02-21T03:02:14.261Z","avatar_url":"https://github.com/bestouff.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"GENEXT2FS\n=========\n\ngenext2fs - ext2 filesystem generator for embedded systems\n\nSYNOPSIS\n--------\n\n`genext2fs [ options ] [ output-image ]`\n\nDESCRIPTION\n-----------\n\n**genext2fs** generates an ext2 filesystem as a normal (non-root) user.\nIt does not require you to mount the image file to copy files on it, nor\ndoes it require that you become the superuser to make device nodes.\n\nThe filesystem image is created in the file *output-image*. If not\nspecified, it is sent to stdout. The `-d` and `-a` options support reading\nfrom stdin if a single hyphen is given as an argument. Thus, genext2fs\ncan be used as part of a pipeline without any temporary files.\n\nBy default, the maximum number of inodes in the filesystem is the\nminimum number required to accommodate the initial contents. In this\nway, a minimal filesystem (typically read-only) can be created with\nminimal free inodes. If required, free inodes can be added by passing\nthe relevant options. The filesystem image size in blocks can be\nminimised by trial and error.\n\nOPTIONS\n-------\n\n**-x, --starting-image image**\n\nUse this image as a starting point.\n\n**-d, --root directory[:path]**\n\nAdd the given directory and contents at a particular path (by default\nthe root).\n\n**-D, --devtable spec-file[:path]**\n\nUse **spec-file** to specify inodes to be added, at the given path (by\ndefault the root), including files, directories and special files like\ndevices. If the specified files are already present in the image, their\nownership and permission modes will be adjusted accordingly (this can\nonly occur when the -D option appears after the options that create the\nspecified files). Furthermore, you can use a single table entry to\ncreate many devices with a range of minor numbers (see examples below).\nAll specified inodes receive the mtime of **spec-file** itself.\n\n**-a, --tarball file[:path]**\n\nAdd the given archive (tarball) contents at a particular path (by default\nthe root). If **file** is a hyphen, then the tarball will be read from\nstandard input.\nNote: if not compiled with `libarchive`, genext2fs will use a builtin\ntarball parser with very primitive capabilities (e.g. no sparse file\nsupport, generally no support other than for modern GNU tar without\nfancy options).\n\n**-b, --size-in-blocks blocks**\n\nSize of the image in blocks.\n\n**-B, --block-size bytes**\n\nSize of a filesystem block in bytes.\n\n**-N, --number-of-inodes inodes**\n\nMinimum number of inodes. The required inode number will be computed\nautomatically for all input that is not read from stdin. The number given\nby this option sets the minimum number of inodes. If you add anything\nfrom standard input, you should set this value because in that case the\nrequired number of inodes cannot be precomputed. The value set by this\noption will be overwritten by the value computed from the `-i` option,\nif the resulting number of inodes is larger.\n\n**-L, --volume-label name**\n\nSet the volume label for the filesystem.\n\n**-i, --bytes-per-inode ratio**\n\nUsed to calculate the minimum number of inodes from the available blocks.\nInodes are computed by multiplying the number of blocks (`-b`) by the blocksize\n(1024) and dividing that by the **ratio** given in this option. If the result\nis larger, then the number of required inodes counted from the input or the\nminimum number of inodes from the `-N` option, then the value computed by\nthis option is used.\n\n**-m, --reserved-percentage N**\n\nNumber of reserved blocks as a percentage of size. Reserving 0 blocks\nwill prevent creation of the `lost+found` directory.\n\n**-o, --creator-os name**\n\nValue for creator OS field in superblock.\n\n**-g, --block-map path**\n\nGenerate a block map file for this path.\n\n**-e, --fill-value value**\n\nFill unallocated blocks with value.\n\n**-z, --allow-holes**\n\nMake files with holes.\n\n**-f, --faketime**\n\nUse a timestamp of 0 for inode and filesystem creation, instead of the\npresent. Useful for testing.\n\n**-q, --squash**\n\nSquash permissions and owners (same as -P -U).\n\n**-U, --squash-uids**\n\nSquash ownership of inodes added using the -d option, making them all\nowned by root:root.\n\n**-P, --squash-perms**\n\nSquash permissions of inodes added using the -d option. Analogous to\n`umask 077`.\n\n**-v, --verbose**\n\nPrint resulting filesystem structure.\n\n**-V, --version**\n\nPrint genext2fs version.\n\n**-h, --help**\n\nDisplay help.\n\nEXAMPLES\n--------\n\n**genext2fs -b 1440 -d src /dev/fd0**\n\nAll files in the *src* directory will be written to **/dev/fd0** as a\nnew ext2 filesystem image. You can then mount the floppy as usual.\n\n**genext2fs -b 1024 -d src -D devicetable.txt flashdisk.img**\n\nThis example builds a filesystem from all the files in *src*, then\ndevice nodes are created based on the contents of the file\n*devicetable.txt*. Entries in the device table take the form of:\n\n              \u003cname\u003e \u003ctype\u003e \u003cmode\u003e \u003cuid\u003e \u003cgid\u003e \u003cmajor\u003e \u003cminor\u003e \u003cstart\u003e \u003cinc\u003e \u003ccount\u003e\n\nwhere name is the file name and type can be one of:\n\n              f    A regular file\n              d    Directory\n              c    Character special device file\n              b    Block special device file\n              p    Fifo (named pipe)\n\nuid is the user id for the target file, gid is the group id for the\ntarget file. The rest of the entries (major, minor, etc) apply only to\ndevice special files.\n\nAn example device file follows:\n\n              # name    type mode uid gid major minor start inc count\n\n              /dev      d    755  0    0    -    -    -    -    -\n              /dev/mem  c    640  0    0    1    1    0    0    -\n              /dev/tty  c    666  0    0    5    0    0    0    -\n              /dev/tty  c    666  0    0    4    0    0    1    6\n              /dev/loop b    640  0    0    7    0    0    1    2\n              /dev/hda  b    640  0    0    3    0    0    0    -\n              /dev/hda  b    640  0    0    3    1    1    1    16\n              /dev/log  s    666  0    0    -    -    -    -    -\n\nThis device table creates the /dev directory, a character device node\n`/dev/mem` (major 1, minor 1), and also creates `/dev/tty`, `/dev/tty[0-5]`,\n`/dev/loop[0-1]`, `/dev/hda`, `/dev/hda1` to `/dev/hda15` and `/dev/log` socket.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestouff%2Fgenext2fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbestouff%2Fgenext2fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestouff%2Fgenext2fs/lists"}