{"id":20623190,"url":"https://github.com/bignaux/lwnbd","last_synced_at":"2025-04-15T12:37:19.607Z","repository":{"id":45004103,"uuid":"362432568","full_name":"bignaux/lwNBD","owner":"bignaux","description":"A Lightweight NBD server library","archived":false,"fork":false,"pushed_at":"2023-10-02T13:10:38.000Z","size":277,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-28T20:21:17.421Z","etag":null,"topics":["disks","driver","embedded","framework","library","libuv","linux","lwip","nbd","playstation2","reverse-engineering"],"latest_commit_sha":null,"homepage":"https://bignaux.github.io/lwNBD/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bignaux.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}},"created_at":"2021-04-28T10:47:44.000Z","updated_at":"2025-01-10T22:31:37.000Z","dependencies_parsed_at":"2023-09-24T17:41:07.650Z","dependency_job_id":null,"html_url":"https://github.com/bignaux/lwNBD","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/bignaux%2FlwNBD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bignaux%2FlwNBD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bignaux%2FlwNBD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bignaux%2FlwNBD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bignaux","download_url":"https://codeload.github.com/bignaux/lwNBD/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249072826,"owners_count":21208253,"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":["disks","driver","embedded","framework","library","libuv","linux","lwip","nbd","playstation2","reverse-engineering"],"created_at":"2024-11-16T12:26:12.104Z","updated_at":"2025-04-15T12:37:19.580Z","avatar_url":"https://github.com/bignaux.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"lwNBD(3) -- A Lightweight NBD server library\n=============================================\n\n## SYNOPSIS\n\n    #include \u003clwnbd.h\u003e\n    #include \u003clwnbd-server.h\u003e\n    #include \u003clwnbd-plugin.h\u003e\n\n## ✨ DESCRIPTION\n\n* Official repository : \u003chttps://github.com/bignaux/lwNBD\u003e\n* BSD-style socket API: lwIP 2.0.0 and Linux supported.\n\nTargeting first the use on Playstation 2 IOP, a 37.5 MHz MIPS processor\nand 2 MB of RAM, lwNBD is designed to run on bare metal or OS embedded system.\nWith modulararity and portability in mind, it is developed according to several\ncode standards, including :\n\n* no dynamically allocate memory\n* static-linking\n* written in C99 (using -std=c99 compile-time flag), use standard library usage\n* thread-safe synchronous NBD protocol implementation\n* optional and experimental query support \n\nThe lwNBD API is broken down into 3:\n\n* an API to manage server and content to be embbed in apps. The idea is to be able to manage servers as xinetd would.\n\n* a server API to create protocol and transport plugins. Currently, only support NBD protocol, but could extend to Zmodem, AoE ... You then benefit from the mechanisms put in place for NBD such as content and management plugins.\n\n* a plugin API to create content plugins. The plugin API has been entirely rewritten to be closer to the [nbdkit-plugin](https://libguestfs.org/nbdkit-plugin.3.html) one in order to benefit from the experience of their software architecture, and to facilitate the porting of code from one or the other library. An obstacle to this convergence is that nbdkit does not support the use of multiple plugins in a single instance.\n\nThere are 2 targets supported :\n\n* GNU/Linux that use *file* plugin to\n  serve a list of files as command line parameters. For the time being, the main \n  purpose of the support is to facilitate development. It uses libuv as event loop, and can serve multiple client.\n\n* Playstation 2 IOP via an IRX module for [Open-PS2-Loader](https://github.com/ps2homebrew/Open-PS2-Loader).\n  It can export [hdd drive (atad plugin)](./plugins/atad/lwnbd-atad-plugin.md), [MemoryCard (mcman plugin)](./plugins/mcman/lwnbd-mcman-plugin.md), rom0 and IOP ram (*memory* plugin). Read more about this on [my Playstation 2 port notes](./ports/playstation2/lwnbd-playstation2-port.md).\n\n## HISTORY\n\nOn Playstation 2, there is no standardized central partition table like GPT for\nhard disk partitioning, nor is there a standard file system but PFS and\nHDLoader. In fact, there are few tools capable of handling hard disks,\nespecially under Linux, and the servers developed in the past to handle these\ndisks via the network did not use a standard protocol, which required each\nsoftware wishing to handle the disks to include a specific client part,\nwhich were broken when the toolchain was updated. The same goes for the memory\ncards and other block devices on this console, which is why I decided to\nimplement NBD on this target first.\n\n## STATUS\n\nAlthough this server is not yet complete in respect of the minimal requirements\ndefined by the [NBD protocol](https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md#baseline),\nit is nevertheless usable with certain clients. In a [RERO spirit](https://en.wikipedia.org/wiki/Release_early,_release_often)\ni publish this \"AS-IS\".\n\nKnown supported clients :\n\n* nbdcopy (provided by libnbd)\n* nbdfuse (provided by libnbd), works on windows with WSL2.\n* nbd-client\n* Ceph for Windows (wnbd-client.exe)\n\n## 🪶 AUTHOR\n\nBignaux Ronan \u0026lt;ronan at aimao.org\u0026gt;\n\n## LICENSE\n\nBSD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbignaux%2Flwnbd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbignaux%2Flwnbd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbignaux%2Flwnbd/lists"}