[ I hesitate to call these "Frequently Asked Questions when no questions have been asked yet :) so these are my answers to the questions I *think* people might have. ] *What is JayOS useful for? JayOS is a full-blown system and program development environment. It has many programming tools and libraries including gcc, gdb, ddd, perl, gtk, tcl/tk, python, and glade-2. It is even capable of compiling itself. Cross development tools are also included, as well as virtualizers for x86, PowerPC, ARM, Sparc, and x86_64 processors. This programming environment is coupled with a nearly-complete set of applications that mirror Windows desktop functionality. All of these things combine to make JayOS an inexpensive and viable alternative. JayOS could be the driving OS behind any number of embedded devices or small footprint computers. Instead of stripping down a large distribution and having to continually track the distro for updates, one can use JayOS to build only the OS components that are necessary for a device to function. This helps to minimize the size and complexity of a product. A basic JayOS install is perfect for providing the boot and load process to a standalone application, game, or kiosk-like device. Since Linux runs on more architectures than either Windows or OS X, any Linux-based OS gives an immediate advantage to programmers who want their applications to reach a wider audience. And with virtualizing tools such as QEMU, JayOS could be used to drive a custom application on multiple operating systems by providing the layer of support it needs to be autonomous from the host computer. *What is the goal of this project? I intend to release JayOS for two architectures: x86 and PowerPC. The x86 release is already finished and ready for distribution. The PowerPC build is based on x86, with only a few changes (a different boot loader, patches to programs that generate assembly, etc). It will be finished Real Soon Now. My primary interest is in advancing JayOS to the point where it can replace OS X on my Mac Mini. It has already replaced Windows on my x86, and does almost everything I want it to. Development on the x86 branch has slowed to mostly maintenance and adding new bells and whistles. I decided to release that branch for people to play around with whilst I complete the PowerPC branch. *How often will JayOS be released, and in what format? I plan to maintain at least two quality delineations, stable and bleeding-edge. The build that I call stable has actually been used in private for over a year. Aside from software upgrades and minor feature creep, it has proven to be an excellent development base. I will try to upload a "dated" release of JayOS in ISO format about twice a month, sometimes sooner :) Files will be named JayOS-[arch]-[date].iso. The dated releases will be considered stable. I will also maintain development snapshots of the LiveCD filesystem. Suppose I update something like the initial ramdisk or the /usr filesystem. You shouldn't need to download a +600MB image for only a few megs worth of changes. Further explanations can be read in http://jayos.lfs-matrix.net/jayos/vader/*/00BURNME. *What is the package format? Tarball! There will be no automated method for users to update packages, if you're thinking in terms of apt-get or emerge. However, anyone building on JayOS is free to add their own package management system. The best way for someone to update is to recompile their package/tarball, rebuild their root or usr partition, and optionally reburn the live cd. In practice, this is much less intrusive than it sounds! The root filesystem is in reality a read-only compressed image read into RAM. One can make use of any system changes immediately with union filesystems, or rebuild the root filesystem for loading in the next boot. The usr filesystem is a mounted compressed read-only image, so one can either use unionfs too, or rebuild the filesystem. Both steps are automated from a master makefile. You'll find more information on this in the file JayOS-Building.txt. *How can I contribute? If you make a change for yourself and you think it would improve JayOS for others, by all means send me a patch. Also, if you're in the mood, read the project TODO list to see what I plan to do but haven't gotten around to yet. I would especially appreciate any ideas from individuals who are familiar with Linux on the PowerPC. *What service do you provide as the author and lead developer? As lead developer, I attempt to guarantee the interoperability of all the packages that combine to make a JayOS release. Sometimes, a minor version change in one package can break fifteen or more dependant packages. This is colloquially known as dependancy hell. What I do is manage this for you so you can concentrate on writing and deploying your own applications. JayOS may never be fully finished (which is why my versioning is dated rather than numbered :), but I will always provide a stable release for folks to build on. As long as Linus keeps releasing kernels, and the Linux community keeps improving upon and extending its software base, JayOS will be around. Any fixes/improvements, whether done by me or contributors, will go directly into the unstable branch for testing. After a while, I will date the development version and release it as stable. This will continue at regular intervals until I lose interest and/or designate a successor :) From time to time, version changes in a package will require me to to create a patch to a mainstream source tarball in order for the code to compile cleanly. Once the tarball has been officially updated by its maintainer, I usually have to modify the JayOS build process again so the patch is no longer applied. So another service I provide is source code maintenance. The ueberadmin should be able to insert a source CD, and launch a script that builds their custom environment, not worry about getting trapped in dependancy hell. If JayOS doesn't do everything *you* want it to do, or if you are interested in customizing it for commercial use, then I am also available as a resource for guidance and coding. *Can JayOS do any cool tricks? JayOS can be abused and misused in many interesting ways. Here is a quick list: *Self hosting Boot JayOS, and launch a guest JayOS under QEMU. Both host and guest can run from same LiveCD. This is how the first demo was created with vnc2swf. Note that the guest will not run either QEMU or UML. See the next item for a workaround. *Nested virtual machines Launch a UML guest, and have that guest launch yet another UML guest. All filesystems are shared, with the writeable portions stored in /tmp on the host. *Emulate other architectures Run qemu-system-ppc and specify the JayOS PPC LiveCD as the boot device. Help me debug the damn thing! :) In all seriousness, read the TODO doc to see where I'm stuck. Maybe you can help me figure it out. * Encrypted root filesystem Run /root/bin/mklo to create root.alt (instead of root.gz). Copy root.alt to /boot in your LiveCD build directory and re-create the ISO. At the boot command line, pass an option of "alt" to signal the loading of the encrypted root filesystem. You will not be prompted for your password, the system will just appear to hang. If the password is incorrect, the original root filesystem is loaded and the boot process continues. See JayOS-Encryption.txt for details. *Finally, things I take for granted (but you probably want to know about) Certain functionality is still being integrated. For example, at one point, the kernel was patched for software suspend, but that has not been the case for some time. This shouldn't be an issue for the JayOS target audience, because I expect they will patch and recompile the kernel themselves. This brings me to my second point. You as ueberadmin are expected to make your own configuration changes. I've concentrated on eliminating "dependancy hell" and making things easier to change for those who already know how. Does dhclient not start up on boot as you'd like it? Change the boot scripts, you know where they are. Want to use a different window manager? No problem, modify root's .xinitrc. Your favorite program not available? Download it, compile it, and install it using unionfs. I think you get the picture :) But having said all that, if you can't figure out how something is done, drop me a line and I'll fix you up. Not every program or library is as up to date as it could be, but you should choose your battle well if you decide to upgrade. Things to watch out for are Gtk/Gnome programs that require a certain version of their core library. A library like Gtk requires that half a dozen other libraries be upgraded at the same time. GCC is notorious for breaking things between versions, and the programs that comprise the toolchain have especially intricate co-dependancies. You should be OK upgrading things like tar and Firefox, though. Sometimes *not* upgrading also has pitfalls. In upgrading my kernel from 2.6.11 to 2.6.12, I didn't upgrade linux-libc-headers, which was at version 2.6.4.0. Things broke very mysteriously after rebooting, which hung the machine between entering runlevels S and 3. When I upgraded to linux-libc-headers-2.6.11.2, the problem went away. (Of course, the time interval between finding the problem and the solution was more like weeks instead of minutes!) The window manager is set up to use a left-handed mouse. That behavior is also defined in /root/.xinitrc, and can be changed if it drives you nuts. In fact, *anything* can be changed...it's your OS. Although eth0 is configured with a non-routeable address and the firewall is active, networking is not started on bootup. Why? Well, since I don't know what kind of network I might be connecting to, I'd rather bring the connection up manually. For me, this means running dhclient, but for others that might require setting up PPPoE or dialup. YMMV. SSHD will accepts root logins, but you will need to set a password for the root account, and modify the firewall rules to allow ssh connections. An alternative to setting a password is changing sshd_config to allow password-less logins, but that makes me anxious just thinking about it. The default password for VNC viewer is "grandmother".