This may be more of a linux general question, but the distro that we will be performing this on is Debian, with a minimal install.
High level scenario: We have some small x86 based motherboard and are deploying a kiosk system in a dedicated enclosure, booting off of a USB stick. When they go to production, there is no need to load anything but our program. We have custom hardware for visitors to interact with the kiosk system, so we are not even hooking up a keyboard much less a mouse to the system.
Here is the goal: To run a C++ compiled program that uses SDL (
http://www.libsdl.org/) to display a game, without having to load a desktop or any other unnecessary X components.
Here is the current setup: Running Puppy linux from a USB stick, starting our app in the .xinitrc script. Making sure our app takes up 100% of the screen, hiding the mouse cursor.
So whats the problem? I would like to be loading only the most minimal components that we have to, to run our program. As our kiosk system gets bigger and demands more cpu/gpu/ram I would like to know that we are not waisting any resources running a desktop system in the background. The tiny motherboard is x86, but we are running with 512Mb of ram and the cpu is equally small (can't remember numbers off the top of my head although I want to say 1.xGhz intel)
Another issue that I see with the current system, is that if our program isn't running you can see a desktop in the background. We do have all icons off the desktop, but there is still evidence of a full blown desktop system running. And by a Linux fella, easily identifiable as Puppy.
I would like to know that
if our application did not start (or dare I say crash! AAahhhh!) that it would either
a) Will fall back to a shell.
b) Display only a very minimal desktop that only has our company logo as the background, or maybe a message saying to reboot or something. Maybe some kiosk branding, who knows.
Ultimately whats the question? On a net install or any other minimal headless install, what would be the best way of achieving my intended goal? I would need to install X11, but I don't think that I will be needing a window manager or a desktop. And how would I (utilizing common practice methods) only start X when I needed it? Is it possible to start X from within my program? And if my program elegantly crashes, I can kill X? That way if I was at the CLI, I could just run the command "kiosk" and it would fire up?
I have been using Linux for almost a decade, but have never had to play with X like this. All my development has been on decapitated servers up to this point. Thanks for any help, and I apologize if this is somewhere already. I have googled it, and can't seem to find anything quite like this.