FullPliant is a three layers operating system.
There is: On the other hand, in a classical system, there are only two layers (kernel and everything else).

These are some interesting properties about FullPliant layers:

The other different think with FullPliant is that each computer definition is a record (a set of set of set of stings in facts) in the general computers databases, and the all computer files tree can be generated unattended from the informations in that record. You could think about this record as a central definition about the computer details just like the 'registry' in another well known system. Also there is still a big difference: You don't set each entry of the computer definition one after the other. There is a simple and easily extendable set of 'macros' that enables you to provide more meaningfull (I mean much shorter) declaration that will be expanded to the full declaration thanks to the macros. Here is an example about what you fill and the real content it generates after expanding the macros.
So, if you have quite a few computers, this mechanism enables you to install or reinstall efficiently any of your systems (and clean it in case it starts getting crazy, any real world administrator probably understanding what I mean here) even if all these systems are not all the same (what a raw file systems or sectors copy does not allow).

Lastly, if you look at FullPliant from a Linux perspective, then you can think about it as Linux without Unix, since all the basic services (DNS, HTTP, SMTP and so on) are Pliant applications, not Unix standard ones, and the all computer can be configured through a simple HTML browser.





First, you have to specify all the computer configuration in a form. The key difference between FullPliant and other installation systems is that with FullPliant, you specify most configuration details (all is the target) at installation time: when the computer boots for the first time, it should be up and running, fully configured. Here is the sample definition of the server servicing http://pliant.cx/ site.

Then, you select one of the three possible installation methods:

When you install through the network (or from a CD), you need to define two computers: one is the real target computer, and one is a middle computer definition that will be used to boot the target computer in a special mode that will run the installation program.


Let's start by clarifying:

What hardware do I need to run
a tiny server
a medium server
a client computer

If I want 10 users to use a Pliant database at once, or 10 users to download through FTP at onces, how powerfull a server do I need ?
There is no clear answer, but from what I've notice an old 90 Mhz pentium should be abble to service many users at onces (probably much more than 10). What you will see most if your processor is slow is how long it will be to boot or restart Pliant services. Here are some approximative numbers .



In order to install FullPliant, you need a running Linux or FullPliant system. You don't need to have Linux installed on the computer you want to install FullPliant on, but do need to have a computer (this one or another) installed with Linux or FullPliant. The main reason is that FullPliant installation tool will build a custom Linux kernel for the target computer, so it needs a working Linux or FullPliant system to run the kernel 'make' script.

First and once for all, you have to build the file:/fullpliant/  tree in your computer. It would be easier if you could download it all at once from Pliant web site, but it's too big for the 128 Kbps line linking http://pliant.cx/ site, so you will have to build it locally through downloading (most is done automatically by FullPliant installation tool) from various sites.

NB: If you already have a kernel source tree, but not the right one, as an example linux-2.2.17.tar.gz, then you need only to download patch-2.2.18.gz and patch-2.2.19.gz and put everything in file:/fullpliant/kernel/src/  since FullPliant installation script knows how to apply patches.


First start the Pliant HTTP server, log as administrator, and select 'Configuring the server' 'Computers' (how to start the HTTP server)

Now watch the declaration of a fiew sample computers through selecting 'Configuring the server' then 'Computers' buttons, and declare your own one as a copy of one of these.

As specifyed in the overview, a computer definition is a set of set of set of strings, so you can think about it as a set of tables, where the first level would be the table id, the second level would be the row id, and the third level would be the filed id.
Now remember that with FullPliant you will not fill the entire computer definition one entry after the other (you can view all settings about a computer through pressing 'Display settings' or 'Display raw settings database' button). You rather use a set of macros that will define many entries at once.

In a computer definition, the 'Component' column enables you to select one of the macros (You can get a list of all availables macros through selecting 'defining computer components' link in the computers list page).
The 'Instance' column enables you to specify the row id to apply the macro on. As an example, if you have several routing entries to define, you will declare several 'network/route' definitions, each of them with a different 'Instance' id.
Lastly, each time you've selected a macro and filled 'Instance' cell, you should press the 'Recompute settings' to get all the computer definition recomputed, and definitions created or destroyed, BEFORE filling extra parameters.

If you are installing your first FullPliant system, and have downloaded the file:/fullpliant/  parts as explained in the 'Before starting' part, you have to press the 'Upgrade Debian packages list' to get Debian packages list downloaded (and restart if the download process fails).
Then you have to press the 'Recompute settings' button to get FullPliant select the Debian packages it requires, and finally press 'Download Debian packages' to get these packages downloaded. This will take a very long time if you have a slow or unreliable connection, an you should try again until FullPliant install program does not attempt to download any more.

I see no cell to specify the network IP address in the sample computers definition ?
You have to set the name -> IP assignment in 'Configure the server' 'Names'. Since this assignment is site wide, it's not part of the computer definition.


Just press the 'Build target system archive' button.
on the other hand, rebuilding a tarball when none of these is required is only a few seconds.
If you are a Linux hacker, remember that this step will overwrite some file:/usr/src/linux*/  directories, so make backups !

The intermediate system is the system you are going to boot on the target computer to get the install program running, and ask it to partition, format, then unpack the target system tarball.
The intermediate system definition should be site wide (you should use the same one for all your target computers).
If you are installing from the network, you should use 'install' computer definition as a sample.
If you are installing from a CD, you should use 'recover' computer definition as a sample.

Please notice that (I gess that) you need Grub to be available in your system (you don't need your system to boot through Grub, but simply have Grub package installed).


You should first adjust adminsistrator account rights so that you will be abble to log on the intermediate system HTTP server with administrator rights. As a example, see the line 3 on my account definition.

Then, press 'Build the tree for installing through NFS' in the intermediate computer definition. The intermediate computer will be built in your file:/export/diskless/*/  tree

... and finally press the 'and the boot floppy' button.


Press 'Engrave a recovery CD' in the intermediate computer definition. A recovery CD is also an installation CD.

First, check that NFS server is running on your computer, and that  /export/diskless/  is properly exported.
Then boot thet target system from the floppy you've built.
If the floppy is ok, you should see Grub menu appear after a few seconds, and if the network settings are right you should get 'Lauching Pliant boot script' message right after the Linux kernel boot messages.

Connect to the intermediate system HTTP server, log as administrator, select 'Configuring the server' 'Computers', and select the target computer definition.
Now you can press the 'Partition ...' buttons to get your disks partitioned if required.
Then you can press the 'Format ...' buttons to get your partitions formated (and declared for the RAID ones) if required.
Then you should press 'Install the system'
and finally 'Make the new system bootable'.


When the system boots, you only have to provide one word form the keyboard, which is the installation level you want.
When you boot from the FullPliant CD, if you answer nothing withing 5 minutes, recovery will be started automatically.


You should create a /custom/domain/computer/fullpliant.page  module to provide a customized per computer home page. Here is a sample one.

You can also create a /custom/domain/computer/run.pli  module so that some HTTP pages will be compiled immediately when the HTTP server starts. Here is a sample.


The http://name_of_the_compter/pliant/fullpliant/status.html URL should provide you (remotely) most informations required to check the server status (memory, processor, disks, etc). Some informations and actions are available only to a user with 'administration' rights.

You can use the Pliant file browser to (remotely) view/edit individual files.


Uploading to well defined files will perform actions automatically:
When uploading to what does it mean what does it do
file:/boot/pliant.tgz you are installing a new Pliant release unpack at file:/ then recompile and restart Pliant services.
file:/boot/fullpliant.tgz you are upgrading FullPliant server (including Linux kernel) unpack at file:/, rerun Lilo, then reboot, recompile and restart Pliant services.
file:/boot/debian.tgz you are upgrading the embedded computer unpack at file:/debian/ the next time the system boots.

kernel.pli Installing the Linux kernel source tree, and compiling a custom kernel according the the target computer Pliant configuration database.
debian.pli Dealing with Debian packages (downloading, solving dependencies, unpacking)
rules.pli Computes all target computer individual settings according the the set of definitions.
install.pli The main script for installing a FullPliant system.
init.c Will be called by Linux kernel at boot time when running a FullPliant distribution.
boot.pli Called once by FullPliant 'init' in order to configure the computer.
run.pli Called by FullPliant 'init' in order to run Pliant services. When it stops, it's immediately restarted by 'init'.
recover.pli Called by FullPliant recovery/install CD.