Skip to content
forked from jrohel/NetMount

NetMount allows DOS to mount directories from remote computers as network drives.

License

Notifications You must be signed in to change notification settings

ltning/NetMount

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetMount


NetMount allows DOS to mount directories from remote computers as network drives. It consists of two programs.

  • netmount: Driver (TSR program) for DOS, which allows to mount and unmount remote directories as network drives.
  • netmount-server: Program for Linux (but can be adapted for other operating systems), which shares directories as drives.

netmount

  • DOS client (driver)
  • Allows to mount and unmount remote directories from multiple servers without rebooting.
  • Has minimal dependencies, only needs DOS Packet Driver.
  • Implements Ethernet Type II frame, ARP, IPv4, UDP and its own NetMount protocol.
  • It works over Ethernet, but if using the appropriate packet driver, it also works over other devices. For example, over a serial port using SLIP.
  • It should work with MS-DOS 5.0 and newer and with sufficiently compatible systems such as FreeDOS.
  • Written in C99 and assembler for Open Watcom v2 compiler.

Usage:

NETMOUNT INSTALL /IP:<local_ipv4_addr> [/MASK:<net_mask>] [/GW:<gateway_addr>]
         [/PORT:<local_udp_port>] [/PKT_INT:<packet_driver_int>]

NETMOUNT MOUNT <remote_ipv4_addr>[:<remote_udp_port>]/<remote_drive_letter>
         <local_drive_letter>

NETMOUNT UMOUNT <local_drive_letter>

NETMOUNT UMOUNT /ALL

Commands:
INSTALL                      Installs NetMount as resident (TSR)
MOUNT                        Mounts remote drive as local drive
UMOUNT                       Unmounts local drive(s) from remote drive

Arguments:
/IP:<local_ipv4_addr>        Sets local IP address
/PORT:<local_udp_port>       Sets local UDP port. 12200 by default
/PKT_INT:<packet_driver_int> Sets interrupt of used packet driver.
                             First found in range 0x60 - 0x80 by default.
/MASK:<net_mask>             Sets network mask
/GW:<gateway_addr>           Sets gateway address
<local_drive_letter>         Specifies local drive to mount/unmount (e.g. H)
<remote_drive_letter>        Specifies remote drive to mount/unmount (e.g. H)
/ALL                         Unmount all drives
<remote_ipv4_addr>           Specifies IP address of remote server
<remote_udp_port>            Specifies remote UDP port. 12200 by default
/?                           Display this help

netmount-server

  • A directory sharing server. It is written for Linux, but can be adapted for other operating systems.
  • Allows to share directories as drives.
  • Allows listening on different IP addresses and UDP ports. This allows to run multiple instances on the server with different configurations.
  • It can run under a regular unprivileged user.
  • It is CPU architecture independent. I am currently developing it on x86-64, but it should work on other architectures as well. Both little and big endian architectures are supported.
  • Written in C++20. Tested compilation using GCC and Clang.

Usage:

Usage:
./netmount-server [--help] [--bind_ip_addr=] [--bind_port=udp_port] <drive>=<root_path> [... <drive>=<root_path>]

Options:
  --help                   Display this help
  --bind-addr=<IP_ADDR>    IP address to bind, all address ("0.0.0.0") by default
  --bind-port=<UDP_PORT>   UDP port to listen, 12200 by default
  <drive>=<root_path>      drive - DOS drive C-Z, root_path - paths to serve

Backgroud

I was looking for possibilities to mount remote directories on old laboratory devices that use the DOS operating system. I was looking for software that allows to mount and unmount remote directories without rebooting and works over IP. Because the mentioned laboratory devices do not have a network card, but only an RS232 serial port, the software must work over it. The used laboratory devices have little RAM and low CPU power.

I haven't found any software that meets the requirements. The closest was the program etherdfs, but even that does not meet several requirements. So I decided to write my own.

In the past I have written software for various industrial embedded devices. For example, industrial protocol converters, drivers for special hardware, realtime signal processing software, etc. So it is not a problem to write something new. But there is a problem with the documentation. For example, when writing industrial communication, there is an official standard to meet. When writing NetMount, I didn't find an official standard (API documentation) of MS-DOS interface for writing drivers. So I read the texts and source codes I found on the internet. I would specifically mention RBIL, the source code of etherdfs-server, etherdfs-client. Thanks to the authors of these documentation and software.

I decided to publish my work as open source to help other people.

During development I am testing a DOS client in DOSEM running on Linux. I also tried basic tests on a physical device with MS-DOS 6.22 and FreeDOS 1.3. When testing on a physical device, I used the RS232 serial port instead of a network card and the "ethersl.com" packet driver from Crynwr, which implements SLIP.

About

NetMount allows DOS to mount directories from remote computers as network drives.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 61.0%
  • C++ 38.6%
  • Makefile 0.4%