X-Git-Url: http://git.alex.org.uk diff --git a/README b/README index 5958873..e2e7291 100644 --- a/README +++ b/README @@ -16,10 +16,10 @@ Using NBD is quite easy. First, on the client, you need to create the device nodes: # cd /dev -# ./MAKEDEV nb0 +# ./MAKEDEV nbd0 -(if you need more than one NBD device, repeat the above command for nb1, -nb2, ...) +(if you need more than one NBD device, repeat the above command for nbd1, +nbd2, ...) Since there's a problem with nbd and the (default) cfq I/O scheduler, you may want to set it to deadline: @@ -47,7 +47,7 @@ nbd-client e.g., -nbd-client 10.0.0.1 1234 /dev/nb0 +nbd-client 10.0.0.1 1234 /dev/nbd0 nbd-client must be ran as root; the same is not true for nbd-server (but do make sure that /var/run is writeable by the server that nbd-server @@ -103,17 +103,12 @@ FreeBSD: "net/nbd-server", available in the ports tree since 2003. FreeBSD doesn't have kernel support for NBD, so obviously the client isn't built there. SuSE: "nbd", since SuSE 10.0 +Fedora: "nbd", since Fedora 7 +uClibc's "buildroot" script also seems to have support for NBD. If you're packaging NBD for a different operating system that isn't in the above list, I'd like to know about it. -Thanks, and have fun, - -Wouter Verhelst - - - - [1] When you write something to a block device, the kernel will not immediately write that to the physical block device; instead, your changes are written to a cache, which is periodically flushed by a @@ -125,6 +120,26 @@ If, while your kblockd is emptying the NBD buffer cache, the kernel decides that the cache of the block device your nbd-server is writing to needs to be emptied, then you've got a deadlock. -A kernel patch exists[2] to create a separate kernel thread for NBD -writes which woul fix this problem; however, it has not made it into -mainline yet. +A kernel patch exists to create a separate kernel thread for NBD writes +which woul fix this problem; however, it has not made it into mainline +yet. + +BUILDING THE SERVER FOR NON-LINUX OPERATING SYSTEMS +=================================================== + +Since the client requires kernel-side support, you can't just compile +nbd-client on a non-Linux kernel and hope it'll work; you'd have to +write a kernel-space driver before that would be possible. + +However, nbd-server assumes nothing more than POSIX and one headerfile +from the Linux kernel. Compiling it can be done as follows: +- Fetch the nbd userland sources, and unpack them. Since you're reading + this README file, you have already done this step. +- Fetch the "nbd.h" file from /usr/include/linux on a Linux system, or + from include/linux in the Linux source tree, and store it in the + toplevel directory of the nbd userland sources +- Edit the headerfile, and remove the line that says '#include + ' (on non-Linux systems, the userland source is smart + enough to figure out how this works by itself) +- now it's just a regular './configure && make && sudo make install' +