A device such as a printer, includes non-volatile memory storing a
communications kernel. Upon startup, a microprocessor executes the
communication kernel to prompt a host to download a setup kernel to the
device. The microprocessor may verify the downloading using a check sum
calculation. The microprocessor may execute the setup kernel to determine
the operational characteristics on the device. For example, the
microprocessor may interrogate the hardware elements of the device to
determine a set of hardware characteristics. The microprocessor may also
interrogate the device to determine a set of user selectable setup options
and may further interrogate the device or a nonresident register for
ownership and access attributes for selected modules and software. The
microprocessor may link a number of resident and non-resident library
modules, selected based on the operational characteristics. The library
modules are dynamically linkable to reconfigure the software as
operational characteristics change. The invention employs a dual kernel
system, including a minimal communications kernel and a setup kernel to
customize the device.