Backend Interface (BKI) files are
scripts in a special language that are input to the Postgres backend running in the special
"bootstrap" mode that allows it to
perform database functions without a database system already
existing. BKI files can therefore be
used to create the database system in the first place. (And they
are probably not useful for anything else.)

initdb uses BKI files to do part of its job when creating a
new database cluster. The input files used by initbd are created as part of building and
installing Postgres by a program
named genbki.sh from some specially
formatted C header files in the source tree. The created BKI
files are called global.bki (for global
catalogs) and template1.bki (for the
catalogs initially stored in the template1 database and then
duplicated in every created database) and are normally installed
in the share subdirectory of the
installation tree.

This section describes how the Postgres backend interprets BKI files. This description will be easier to
understand if the global.bki file is
at hand as an example. You should also study the source code of
initdb to get an idea of how
the backend is invoked.

BKI input consists of a sequence of commands. Commands are
made up of a number of tokens, depending on the syntax of the
command. Tokens are usually separated by whitespace, but need
not be if there is no ambiguity. There is not special command
separator; the next token that syntactically cannot belong to
the preceeding command starts a new one. (Usually you would put
a new command on a new line, for clarity.) Tokens can be
certain key words, special characters (parentheses, commas,
etc.), numbers, or double-quoted strings. Everything is case
sensitive.