ndiscvt - convert Windows[rg] NDIS drivers for use with FreeBSD
The .INF file is typically required since only it contains device identification data such as PCI vendor and device IDs or PCMCIA identifier strings. The .INF file may be optionally omitted however, in which case the utility will only perform the conversion of the .SYS file. This is useful for debugging purposes only.
In Fx there are two mechanism for loading these files. If the driver is built as a loadable kernel module which is loaded after the kernel has finished booting (and after the root file system has been mounted), the extra files can simply be copied to the /compat/ndis directory, and they will be loaded into the kernel on demand when the the driver needs them.
If however the driver is required to bootstrap the system (i.e., if the NDIS-based network interface is to be used for diskless/PXE booting), the files need to be pre-loaded by the bootstrap loader in order to be accessible, since the driver will need them before the root file system has been mounted. However, the bootstrap loader is only able to load files that are shared Fx binary objects.
The -f flag can be used to convert an arbitrary file firmfile into shared object format (the actual conversion is done using the objcopy(1) and ld(1) commands). The resulting files can then be copied to the /boot/kernel directory, and can be pre-loaded directly from the boot loader prompt, or automatically by editing the loader.conf5 file. If desired, the files can also be loaded into memory at runtime using the kldload(8) command.
When an NDIS driver tries to open an external file, the ndisapi(9) code will first search for a loaded kernel module that matches the name specified in the open request, and if that fails, it will then try to open the file from the /compat/ndis directory as well. Note that during kernel bootstrap, the ability to open files from /compat/ndis is disabled: only the module search will be performed.
When using the -f flag, will generate both a relocatable object file (with a .o extension) and a shared object file (with a .ko extension). The shared object is the one that should be placed in the /boot/kernel directory. The relocatable object file is useful if the user wishes to create a completely static kernel image: the object file can be linked into the kernel directly along with the driver itself. Some editing of the kernel configuration files will be necessary in order to have the extra object included in the build.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |