Rev 46 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 46 | pmbaty | 1 | # IFS Tool for QNX | 
| 45 | pmbaty | 2 | |
| 47 | pmbaty | 3 |  | 
| 45 | pmbaty | 4 | |
| 47 | pmbaty | 5 | __ifstool__ is a portable open-source reimplementation of [QNX 8.0's mkifs](https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.utilities/topic/m/mkifs.html), that is able to pack, unpack and analyze x86_64 BIOS and UEFI QNX IFS images, compressed or not, bootable or not, using the same script file-based syntax as mkifs. Most of the mkifs options are supported. Can be built as a **native QNX tool**. Already used in production in some places. | 
| 45 | pmbaty | 6 | |
| 7 | As an illustration, the bootable QNX8 IFS pictured in the above screenshot was built using __ifstool__. | ||
| 8 | |||
| 47 | pmbaty | 9 | The goal was to turn QNX8 into a self-hosted platform. Since QNX no longer supplies a native toolchain (compiler, linker, binary utilities, IFS utilities) __ifstool__, when used along with the GNU linker (cf. [QNX8 GNU binutils](listing.php?repname=QNX%208.QNX8%20GNU%20binutils)) can be used as a drop-in replacement. | 
| 45 | pmbaty | 10 | |
| 11 | ## Language | ||
| 12 | |||
| 13 | POSIX-compliant ANSI C99. | ||
| 14 | |||
| 15 | ## IDE | ||
| 16 | |||
| 17 | The development environment used was [Microsoft Visual Studio](https://visualstudio.microsoft.com). A Visual Studio 2022 solution file is supplied. | ||
| 18 | |||
| 19 | ## Dependencies | ||
| 20 | |||
| 47 | pmbaty | 21 | * Oberhumer's [miniLZO](https://www.oberhumer.com/opensource/lzo/#minilzo) compression library (supplied) | 
| 22 | * Oberhumer's [UCL](https://www.oberhumer.com/opensource/ucl/) compression library (supplied) | ||
| 45 | pmbaty | 23 | |
| 24 | ## How to build | ||
| 25 | |||
| 26 | * For __Win32__: open Visual Studio project -> Build. | ||
| 47 | pmbaty | 27 | * For __QNX8/x86-64__: run `make.cmd` (if using Win32) or `make.sh` (if using a POSIX platform). | 
| 28 | * For __QNX8/aarch64le__: run `make.cmd` (if using Win32) or `make.sh` (if using a POSIX platform). Note the bootable IFS feature on this target is untested. | ||
| 29 | * For __GNU/Linux__: run `make.sh` | ||
| 30 | * For __FreeBSD__: run `make.sh` | ||
| 31 | * For __macOS/Darwin__: run `make.sh` -- yes, it works on macOS too :) | ||
| 45 | pmbaty | 32 | |
| 33 | Feedback is welcome. | ||
| 47 | pmbaty | 34 | |
| 35 | -- | ||
| 36 | Pierre-Marie Baty <pm@pmbaty.com> |