The traditional approach, used by most embedded operating systems offerings is to provide the customers with source code and tools for configuring and building the code. These methods have evolved from the methods used for 8- and 16-bit microcontrollers. The customers will configure the source and make any customization they see fit, effectively creating a fork of the source code. When this happens, the customer becomes responsible for both the embedded OS and their application.
Under the traditional methodology, the customer is responsible for managing updates to the OS and will have to merge in source changes themselves, consuming some of their resources just for OS maintenance.