<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.lunar-linux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.lunar-linux.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sofar</id>
		<title>Lunar Linux - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lunar-linux.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sofar"/>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Special:Contributions/Sofar"/>
		<updated>2026-04-09T10:37:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.1</generator>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Submission</id>
		<title>Module Submission</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Submission"/>
				<updated>2007-03-10T20:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* So what do you need to be able to submit a module? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Submitting modules to the official Moonbase===&lt;br /&gt;
&lt;br /&gt;
====Why would I want to?====&lt;br /&gt;
&lt;br /&gt;
The official [[Moonbase]] is maintained and updated by the [[Lunar Linux]] developers.&lt;br /&gt;
But what if there isn't a module in the [[Moonbase]] for the package that you want,&lt;br /&gt;
or it is not the latest version, or it is out-of-date in some other way?&lt;br /&gt;
&lt;br /&gt;
Well obviously you can report the problem via&lt;br /&gt;
the [http://bugs.lunar-linux.org/view_all_bug_page.php Bug Tracker],&lt;br /&gt;
the [http://forums.lunar-linux.org/ Forums],&lt;br /&gt;
the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List], or discuss it on&lt;br /&gt;
the [irc://irc.freenode.net/lunar #Lunar] IRC channel on [http://freenode.net/ Freenode.net]&lt;br /&gt;
and hope that someone can help you.&lt;br /&gt;
&lt;br /&gt;
Or you can scratch your itch the open source way and create or update the module yourself using the information in&lt;br /&gt;
the articles:&lt;br /&gt;
[[Module Basics|A basic module outline]] and&lt;br /&gt;
[[Module Writing|Writing Lunar-Linux Modules]].&lt;br /&gt;
''Remember to work in the [[zlocal]] section so that your updates are not lost the next time you download a new Moonbase.''&lt;br /&gt;
&lt;br /&gt;
And then what?&lt;br /&gt;
Maybe other people could benefit from your module.&lt;br /&gt;
Maybe other people could improve your module.&lt;br /&gt;
So why not submit it to the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List]&lt;br /&gt;
so that the others can see it and the Lunar developers can decide whether to include it in the [[Moonbase]]?&lt;br /&gt;
Even if they don't, your module will still be available to interested parties via the mailing list archive.&lt;br /&gt;
&lt;br /&gt;
====So what do you need to be able to submit a module?====&lt;br /&gt;
&lt;br /&gt;
* '''You need to be subscribed to the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List].''' Why not do it now anyway?&lt;br /&gt;
&lt;br /&gt;
* '''You need to have a working out-going mail connection.''' Maybe you haven't yet got or don't want to have a full mail installation on your system. Then you will need to install a minimal out-going mail only system. Download the [http://modules.lunar-linux.org/index.php?option=module&amp;amp;module=esmtp esmtp] module from the [[Moonbase]] and configure the ''/etc/esmtprc'' or ''$HOME/.esmtprc'' file. That's all there is to it.&lt;br /&gt;
&lt;br /&gt;
* Simply run '''lvu submit myModule'''. You will see a submission template in the editor of your choice. Fill in the blanks: email address, some module details, and some explanatory text about your submission. Are you happy with the BUILD file? What options have you tackled? How much testing have you done? Write the template and submit. It's as easy as that.&lt;br /&gt;
&lt;br /&gt;
* '''Remember to watch the mailing list for feedback.''' It might show up as a new module in the Weekly Overview without further comment. You might not hear anything more because the developers are all busy with mainstream infrastructure and modules, but at least you have contributed and your contribution is available in the archives for other interested users.&lt;br /&gt;
&lt;br /&gt;
* '''If you don't have sendmail or esmtp installed''', you can still send updates as patches. Creating a patch is as easy as '''lvu diff myModule &amp;gt; myModule.patch'''. Send the patch file as an attachment to the mailinglist and it will be picked up as a normal submission.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2006-11-14T22:57:28Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* What are safe optimizations? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Faster (-O2, the default) or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I686.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===error : C compiler cannot create executables===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;C compiler cannot create executables&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Read the next topic - this is basically the same problem: There are kernel headers missing that are vital to compilation. You will have to restore them. Below is explained how to do that.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This is an include file problem. Sometimes ''/usr/include/gnu/stubs.h'' is missing, this can be found in the glibc source tarball. Most of the time the following applies:&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my disk?===&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Southern Rockhopper Penguin|Rockhopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rockhopper+Penguin Google Images] for lots of Rockhopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Moonbase:module</id>
		<title>Moonbase:module</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Moonbase:module"/>
				<updated>2006-04-22T19:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Reverted edit of Android18, changed back to last version by Engelsman&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Module==&lt;br /&gt;
&lt;br /&gt;
General term for the package installation and compilation instructions used in [[Lunar Linux]]. All [[modules]] together make up the [[moonbase]].&lt;br /&gt;
&lt;br /&gt;
===Definition===&lt;br /&gt;
A module is defined as ''a directory in [[moonbase]] that contains a [[DETAILS]] file''.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Basics</id>
		<title>Module Basics</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Basics"/>
				<updated>2006-03-27T22:45:52Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: more spam. bah.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
In ''lunar'' parlance, software packages are called [[modules]]. The collection of all modules is the [[moonbase]], which is simply a directory (usually &amp;lt;code&amp;gt;/var/lib/lunar/moonbase&amp;lt;/code&amp;gt;) containing ''sections'' (i.e. directories) which in turn contain the [[module]] directories.&lt;br /&gt;
&lt;br /&gt;
A module is simply a directory containing the scripts necessary to build a software package, and optionally configuration files which may be needed in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. Some modules require only a [[DETAILS]] file, however this is only the case for a few of the modules in the entire moonbase. In each case, after [[DETAILS]], [[DEPENDS]], and [[CONFIGURE]], where a module can use lunar's default internal function(s), there is no need for a module-specific script.&lt;br /&gt;
&lt;br /&gt;
* [[DETAILS]] sets version, source URL(s) and other critical data&lt;br /&gt;
* [[CONFLICTS]] specifies modules which must (will) be removed by module&lt;br /&gt;
* [[CONFIGURE]] interactive script where build options can be set&lt;br /&gt;
* [[DEPENDS]] specifies required and optional packages&lt;br /&gt;
* [[PRE_REMOVE]] used by [[lrm]]; actions which must preceed removal&lt;br /&gt;
* [[PRE_BUILD]] most often used for patching, unpacking addional source tarballs&lt;br /&gt;
* [[BUILD]] runs necessary variations on: configure; make; make install&lt;br /&gt;
* [[POST_BUILD]] install configuration scripts and data.&lt;br /&gt;
* [[POST_INSTALL]] messages, notes more cleanups, configuration fixes&lt;br /&gt;
* [[POST_REMOVE]] used by [[lrm]]; actions which must follow removal&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Package Build and Install Scripts ==&lt;br /&gt;
&lt;br /&gt;
The following scripts are used by [[lin]] or indirectly by [[lunar]] when building modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The DETAILS script ===&lt;br /&gt;
&lt;br /&gt;
Every module is required to have at least a [[DETAILS]] file. A minimal [[DETAILS]] may appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/emacs/DETAILS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs&lt;br /&gt;
          VERSION=21.3&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION&lt;br /&gt;
       SOURCE_URL=$GNU_URL/$MODULE/$SOURCE&lt;br /&gt;
       SOURCE_URL=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
          ENTERED=20010922&lt;br /&gt;
          UPDATED=20020529&lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
With comments, default values:&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs                                       # Module name, yes it's redundant&lt;br /&gt;
          VERSION=21.3                                        # Version, changes *often*&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz                     # Source filename&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION           # Where source unpacks&lt;br /&gt;
                                                              # ($BUILD_DIRECTORY=/usr/src)&lt;br /&gt;
    SOURCE_URL[0]=$GNU_URL/$MODULE/$SOURCE                    # Download URL&lt;br /&gt;
    SOURCE_URL[1]=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;   # Alternate URL(s)&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420        # Sets md5 hash or pgp/gpg sig url&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;           # where to learn more&lt;br /&gt;
          ENTERED=20010922                                    # First appearance in moonbase&lt;br /&gt;
          UPDATED=20020529                                    # Date of latest change.&lt;br /&gt;
                                                              # Force update by setting this&lt;br /&gt;
 &lt;br /&gt;
 # The remaining lines are used for input to the 'lvu what' command&lt;br /&gt;
 # and are best copied from the source-maintainer's own description.&lt;br /&gt;
 &lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== The DEPENDS script ===&lt;br /&gt;
&lt;br /&gt;
The [[DEPENDS]] script is essential to configuration management, and is the key to the overall operation of lunar. Dependencies should be exactly specified, preferably not assuming the presence of any other modules, while knowing the sub-dependencies of the modules which are added and not adding those explictly where not needed.&lt;br /&gt;
&lt;br /&gt;
'''Warning''' - Getting this right is difficult. Because the state of installed packages may vary widely, it's important to have a good understanding of what might be or not be installed on a target system.&lt;br /&gt;
&lt;br /&gt;
'''Note''' - By convention Lunar does not include the X Window System, xfree86 or XOrg, in any dependency. There are two reasons for this choice. First we expect that users must understand that to use a graphical application locally, the X Window System must be installed. Second, due to the sligtly unusual definition of client and server used by X11, it is often in fact possible to build graphical applications and tools for remote display, without the server components locally installed. At some future date we may elect to provide a client-only installation of xfree86.&lt;br /&gt;
&lt;br /&gt;
[[DEPENDS]] may include both required and optional dependencies. The '''depends()''' function statement simply determines one required package. The optional_depends function is a little more complex. It consists of the required package, necessary --options to give to &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; for yes and no respectively, and an explanatory comment telling the user the purpose of the option being presented. A typical [[DEPENDS]] file might appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/subversion/DEPENDS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 depends zlib    &amp;amp;&amp;amp;&lt;br /&gt;
 depends openssl &amp;amp;&amp;amp;&lt;br /&gt;
 optional_depends &amp;quot;db4&amp;quot; &amp;quot;--with-berkeley-db&amp;quot;  &amp;quot;&amp;quot;   &amp;quot;for creating local repositories&amp;quot;&lt;br /&gt;
 #                  ^            ^            ^                  ^&lt;br /&gt;
 #                  |            |            |                  |&lt;br /&gt;
 #     optional package       if &amp;quot;Y&amp;quot;       if &amp;quot;N&amp;quot;       explanatory comment&lt;br /&gt;
 #                        { ./configure strings }&lt;br /&gt;
&lt;br /&gt;
'''Aliases'''&lt;br /&gt;
&lt;br /&gt;
Aliases are a mean to select a generic module. When you need a functionnality that can be provided by two or more softwares, you can select one of them to provide a correct dependency.&lt;br /&gt;
&lt;br /&gt;
Example /var/lib/lunar/moonbase/aliases:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 %APACHE:apache apache2 apache-mod_ssl&lt;br /&gt;
 %FAM:fam gamin&lt;br /&gt;
 %GECKO_RENDERER: firefox thunderbird mozilla&lt;br /&gt;
 %GHOSTSCRIPT:espgs ghostscript&lt;br /&gt;
 %MTA:postfix exim sendmail esmtp&lt;br /&gt;
 %SLANG:slang slang2&lt;br /&gt;
 %X:XOrg XOrg-test xfree86 xfree86-beta&lt;br /&gt;
 %XMLRENDERER: libxml2 expat&lt;br /&gt;
 %XSCREENSAVER:xscreensaver xscreensaver-gtk1 xscreensaver-kde&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example you can choose %X instead of XOrg in a module that would depends on any X server:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 depends %X&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The CONFLICTS script ===&lt;br /&gt;
&lt;br /&gt;
This script is simply used to specify modules which will be removed when a given module is installed. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/elvis/CONFLICTS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 conflicts vim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CONFIGURE script ===&lt;br /&gt;
&lt;br /&gt;
The [[CONFIGURE]] script is used to collect interactive input from the user on optional parameters for the software build. use the '''query''' function and provide a default answer to each question. The results of the answers are then used to store configuration variables needed in configuration state files. An a simple example might be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/crypto/gnupg/CONFIGURE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if ! grep -q CONFIGURED $MODULE_CONFIG ; then&lt;br /&gt;
   if query &amp;quot;Enable experimental external HKP keyserver interface? &amp;quot; n ; then&lt;br /&gt;
     OPTS=&amp;quot;$OPTS --enable-external-hkp&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
   echo 'CONFIGURED=&amp;quot;y&amp;quot;' &amp;gt;&amp;gt; $MODULE_CONFIG&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Another way is using '''mquery''' like the lilo module does:&lt;br /&gt;
&lt;br /&gt;
 mquery RUN_LILO &amp;quot;Run LILO automatically upon LILO upgrades?&amp;quot; y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_BUILD]] is used where special processing is needed before undertaking the actual build steps. Typical requirements include unpacking multiple sources, creating necessary system or source-tree direcotries and applying source patches. And example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/doc-tools/html2db/PRE_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 mk_source_dir $SOURCE_DIRECTORY  &amp;amp;&amp;amp;&lt;br /&gt;
 unpack $SOURCE                   &amp;amp;&amp;amp;&lt;br /&gt;
 cd $MODULE&lt;br /&gt;
 unpack $SOURCE2&lt;br /&gt;
 cd tidy&lt;br /&gt;
 patch_it $SOURCE_CACHE/$SOURCE3 0&lt;br /&gt;
 cd /usr/src/$MODULE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[BUILD]] is used where the '''default_build()''' function does not work for a given software package. For reference the commands run by default are:&lt;br /&gt;
&lt;br /&gt;
Function '''default_build()''' calls '''default_config''' which executes:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --build=$BUILD            \&lt;br /&gt;
                --prefix=/usr             \&lt;br /&gt;
                --sysconfdir=/etc         \&lt;br /&gt;
                --localstatedir=/var      \&lt;br /&gt;
                --infodir=/usr/share/info \&lt;br /&gt;
                --mandir=/usr/share/man   \&lt;br /&gt;
                $OPTS&lt;br /&gt;
&lt;br /&gt;
Next, '''default_build()''' calls '''default_make''' which executes:&lt;br /&gt;
&lt;br /&gt;
   make &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
Where this build configuration does not work, the [[BUILD]] script is used to provide the needed steps. About 75% of modules need a [[BUILD]] script. Two examples include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/archive/gzip/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
  ./configure --build=$BUILD            \&lt;br /&gt;
              --prefix=/usr             \&lt;br /&gt;
              --bindir=/bin             \&lt;br /&gt;
              --infodir=/usr/share/info \&lt;br /&gt;
              --mandir=/usr/share/man   &amp;amp;&amp;amp;&lt;br /&gt;
  make &amp;amp;&amp;amp;&lt;br /&gt;
  prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
  make bindir=/bin install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/ex/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   cd $SOURCE_DIRECTORY                    &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/usr.local/usr/' Makefile       &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= man/= share\/man/' Makefile  &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/ucb/bin/' Makefile             &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= termlib/= ncurses/' Makefile &amp;amp;&amp;amp;&lt;br /&gt;
   make                                    &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install                         &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
The first example is a build which needs non-standard 'configure' and 'make install' commands. The second is a build which does not use gnu auto-tools' 'configure' script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' - [[BUILD]] scripts must execute inside a (), called a subshell invocation, construct and output is always directed to a named pipe (aka FIFO). Therefor all [[BUILD]] files take the follwing form:&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   # commands are put here&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1     # $C_FIFO holds the name of a fifo in /tmp used for 'voyeur'&lt;br /&gt;
&lt;br /&gt;
=== The POST_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] runs in place of the '''default_post_build''' routine which is used to install minor documentation and transfer/enable initialization scripts and similar system data, mostly into &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] script usage is '''deprecated'''. You should install your config files in [[BUILD]] (remember not to overwrite previous config files!) or install defaults from [[POST_INSTALL]] (again, do not overwrite present files!). The ability to use a [[POST_BUILD]] script is purely for certain internal functions.&lt;br /&gt;
&lt;br /&gt;
=== The POST_INSTALL script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_INSTALL]] has no equivalent functions, and is run to handle post-installation work in a general manner. An example is: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/gcc/POST_INSTALL&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 cd /usr/lib/gcc-lib/$BUILD/$VERSION                      &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp;&lt;br /&gt;
 cd /lib/                                                 &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp; &lt;br /&gt;
 if [ ! -e /usr/bin/cc ] ; then&lt;br /&gt;
   ln -s gcc /usr/bin/cc&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Removal Scripts ==&lt;br /&gt;
&lt;br /&gt;
Module removal is handled by [[lrm]]. Because installation is monitored and backup tarballs are created using installwatch, most of package removal is handled automatically using the logs created by installwatch. However we provide for additional actions to be taken through the [[PRE_REMOVE]] and [[POST_REMOVE]] scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_REMOVE script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_REMOVE]] is needed to execute any tasks needed prior to the main task of removing all files installed by the module. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/mail/docbook-3.1/PRE_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 CENTRALIZED=/etc/sgml/catalog&lt;br /&gt;
 DOCBOOK_INSTALL_DIR=/usr/share/sgml/docbook/$VERSION&lt;br /&gt;
 install-catalog -r $CENTRALIZED $DOCBOOK_INSTALL_DIR/catalog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_REMOVE Script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_REMOVE]] may be used to remove data not tracked by installwatch and to correctly adjust remaining configuration files and data. Examples would include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/binutils/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 install-info  --delete as         --info-dir /usr/info&lt;br /&gt;
 install-info  --delete bfd        --info-dir /usr/info&lt;br /&gt;
 install-info  --delete binutils   --info-dir /usr/info&lt;br /&gt;
 install-info  --delete configure  --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gasp       --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gprof      --info-dir /usr/info&lt;br /&gt;
 install-info  --delete ld         --info-dir /usr/info&lt;br /&gt;
&lt;br /&gt;
or: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/php/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if    module_installed  apache;  then&lt;br /&gt;
   cp        /etc/httpd/httpd.conf       /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 elif  module_installed  apache_mod_ssl;  then&lt;br /&gt;
   cp        /etc/httpsd/httpd.conf      /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpsd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Basics</id>
		<title>Module Basics</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Basics"/>
				<updated>2006-03-07T04:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* The BUILD script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
In ''lunar'' parlance, software packages are called [[modules]]. The collection of all modules is the [[moonbase]], which is simply a directory (usually &amp;lt;code&amp;gt;/var/lib/lunar/moonbase&amp;lt;/code&amp;gt;) containing ''sections'' (i.e. directories) which in turn contain the [[module]] directories.&lt;br /&gt;
&lt;br /&gt;
A module is simply a directory containing the scripts necessary to build a software package, and optionally configuration files which may be needed in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. Some modules require only a [[DETAILS]] file, however this is only the case for a few of the modules in the entire moonbase. In each case, after [[DETAILS]], [[DEPENDS]], and [[CONFIGURE]], where a module can use lunar's default internal function(s), there is no need for a module-specific script.&lt;br /&gt;
&lt;br /&gt;
* [[DETAILS]] sets version, source URL(s) and other critical data&lt;br /&gt;
* [[CONFLICTS]] specifies modules which must (will) be removed by module&lt;br /&gt;
* [[CONFIGURE]] interactive script where build options can be set&lt;br /&gt;
* [[DEPENDS]] specifies required and optional packages&lt;br /&gt;
* [[PRE_REMOVE]] used by [[lrm]]; actions which must preceed removal&lt;br /&gt;
* [[PRE_BUILD]] most often used for patching, unpacking addional source tarballs&lt;br /&gt;
* [[BUILD]] runs necessary variations on: configure; make; make install&lt;br /&gt;
* [[POST_BUILD]] install configuration scripts and data.&lt;br /&gt;
* [[POST_INSTALL]] messages, notes more cleanups, configuration fixes&lt;br /&gt;
* [[POST_REMOVE]] used by [[lrm]]; actions which must follow removal&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Package Build and Install Scripts ==&lt;br /&gt;
&lt;br /&gt;
The following scripts are used by [[lin]] or indirectly by [[lunar]] when building modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The DETAILS script ===&lt;br /&gt;
&lt;br /&gt;
Every module is required to have at least a [[DETAILS]] file. A minimal [[DETAILS]] may appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/emacs/DETAILS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs&lt;br /&gt;
          VERSION=21.3&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION&lt;br /&gt;
       SOURCE_URL=$GNU_URL/$MODULE/$SOURCE&lt;br /&gt;
       SOURCE_URL=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
          ENTERED=20010922&lt;br /&gt;
          UPDATED=20020529&lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
With comments, default values:&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs                                       # Module name, yes it's redundant&lt;br /&gt;
          VERSION=21.3                                        # Version, changes *often*&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz                     # Source filename&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION           # Where source unpacks&lt;br /&gt;
                                                              # ($BUILD_DIRECTORY=/usr/src)&lt;br /&gt;
    SOURCE_URL[0]=$GNU_URL/$MODULE/$SOURCE                    # Download URL&lt;br /&gt;
    SOURCE_URL[1]=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;   # Alternate URL(s)&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420        # Sets md5 hash or pgp/gpg sig url&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;           # where to learn more&lt;br /&gt;
          ENTERED=20010922                                    # First appearance in moonbase&lt;br /&gt;
          UPDATED=20020529                                    # Date of latest change.&lt;br /&gt;
                                                              # Force update by setting this&lt;br /&gt;
 &lt;br /&gt;
 # The remaining lines are used for input to the 'lvu what' command&lt;br /&gt;
 # and are best copied from the source-maintainer's own description.&lt;br /&gt;
 &lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== The DEPENDS script ===&lt;br /&gt;
&lt;br /&gt;
The [[DEPENDS]] script is essential to configuration management, and is the key to the overall operation of lunar. Dependencies should be exactly specified, preferably not assuming the presence of any other modules, while knowing the sub-dependencies of the modules which are added and not adding those explictly where not needed.&lt;br /&gt;
&lt;br /&gt;
'''Warning''' - Getting this right is difficult. Because the state of installed packages may vary widely, it's important to have a good understanding of what might be or not be installed on a target system.&lt;br /&gt;
&lt;br /&gt;
'''Note''' - By convention Lunar does not include the X Window System, xfree86 or XOrg, in any dependency. There are two reasons for this choice. First we expect that users must understand that to use a graphical application locally, the X Window System must be installed. Second, due to the sligtly unusual definition of client and server used by X11, it is often in fact possible to build graphical applications and tools for remote display, without the server components locally installed. At some future date we may elect to provide a client-only installation of xfree86.&lt;br /&gt;
&lt;br /&gt;
[[DEPENDS]] may include both required and optional dependencies. The '''depends()''' function statement simply determines one required package. The optional_depends function is a little more complex. It consists of the required package, necessary --options to give to &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; for yes and no respectively, and an explanatory comment telling the user the purpose of the option being presented. A typical [[DEPENDS]] file might appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/subversion/DEPENDS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 depends zlib    &amp;amp;&amp;amp;&lt;br /&gt;
 depends openssl &amp;amp;&amp;amp;&lt;br /&gt;
 optional_depends &amp;quot;db4&amp;quot; &amp;quot;--with-berkeley-db&amp;quot;  &amp;quot;&amp;quot;   &amp;quot;for creating local repositories&amp;quot;&lt;br /&gt;
 #                  ^            ^            ^                  ^&lt;br /&gt;
 #                  |            |            |                  |&lt;br /&gt;
 #     optional package       if &amp;quot;Y&amp;quot;       if &amp;quot;N&amp;quot;       explanatory comment&lt;br /&gt;
 #                        { ./configure strings }&lt;br /&gt;
&lt;br /&gt;
'''Aliases'''&lt;br /&gt;
&lt;br /&gt;
Aliases are a mean to select a generic module. When you need a functionnality that can be provided by two or more softwares, you can select one of them to provide a correct dependency.&lt;br /&gt;
&lt;br /&gt;
Example /var/lib/lunar/moonbase/aliases:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 %APACHE:apache apache2 apache-mod_ssl&lt;br /&gt;
 %FAM:fam gamin&lt;br /&gt;
 %GECKO_RENDERER: firefox thunderbird mozilla&lt;br /&gt;
 %GHOSTSCRIPT:espgs ghostscript&lt;br /&gt;
 %MTA:postfix exim sendmail esmtp&lt;br /&gt;
 %SLANG:slang slang2&lt;br /&gt;
 %X:XOrg XOrg-test xfree86 xfree86-beta&lt;br /&gt;
 %XMLRENDERER: libxml2 expat&lt;br /&gt;
 %XSCREENSAVER:xscreensaver xscreensaver-gtk1 xscreensaver-kde&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example you can choose %X instead of XOrg in a module that would depends on any X server:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 depends %X&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The CONFLICTS script ===&lt;br /&gt;
&lt;br /&gt;
This script is simply used to specify modules which will be removed when a given module is installed. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/elvis/CONFLICTS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 conflicts vim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CONFIGURE script ===&lt;br /&gt;
&lt;br /&gt;
The [[CONFIGURE]] script is used to collect interactive input from the user on optional parameters for the software build. use the '''query''' function and provide a default answer to each question. The results of the answers are then used to store configuration variables needed in configuration state files. An a simple example might be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/crypto/gnupg/CONFIGURE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if ! grep -q CONFIGURED $MODULE_CONFIG ; then&lt;br /&gt;
   if query &amp;quot;Enable experimental external HKP keyserver interface? &amp;quot; n ; then&lt;br /&gt;
     OPTS=&amp;quot;$OPTS --enable-external-hkp&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
   echo 'CONFIGURED=&amp;quot;y&amp;quot;' &amp;gt;&amp;gt; $MODULE_CONFIG&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Another way is using '''mquery''' like the lilo module does:&lt;br /&gt;
&lt;br /&gt;
 mquery RUN_LILO &amp;quot;Run LILO automatically upon LILO upgrades?&amp;quot; y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_BUILD]] is used where special processing is needed before undertaking the actual build steps. Typical requirements include unpacking multiple sources, creating necessary system or source-tree direcotries and applying source patches. And example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/doc-tools/html2db/PRE_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 mk_source_dir $SOURCE_DIRECTORY  &amp;amp;&amp;amp;&lt;br /&gt;
 unpack $SOURCE                   &amp;amp;&amp;amp;&lt;br /&gt;
 cd $MODULE&lt;br /&gt;
 unpack $SOURCE2&lt;br /&gt;
 cd tidy&lt;br /&gt;
 patch_it $SOURCE_CACHE/$SOURCE3 0&lt;br /&gt;
 cd /usr/src/$MODULE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[BUILD]] is used where the '''default_build()''' function does not work for a given software package. For reference the commands run by default are:&lt;br /&gt;
&lt;br /&gt;
Function '''default_build()''' calls '''default_config''' which executes:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --build=$BUILD            \&lt;br /&gt;
                --prefix=/usr             \&lt;br /&gt;
                --sysconfdir=/etc         \&lt;br /&gt;
                --localstatedir=/var      \&lt;br /&gt;
                --infodir=/usr/share/info \&lt;br /&gt;
                --mandir=/usr/share/man   \&lt;br /&gt;
                $OPTS&lt;br /&gt;
&lt;br /&gt;
Next, '''default_build()''' calls '''default_make''' which executes:&lt;br /&gt;
&lt;br /&gt;
   make &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
Where this build configuration does not work, the [[BUILD]] script is used to provide the needed steps. About 75% of modules need a [[BUILD]] script. Two examples include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/archive/gzip/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
  ./configure --build=$BUILD            \&lt;br /&gt;
              --prefix=/usr             \&lt;br /&gt;
              --bindir=/bin             \&lt;br /&gt;
              --infodir=/usr/share/info \&lt;br /&gt;
              --mandir=/usr/share/man   &amp;amp;&amp;amp;&lt;br /&gt;
  make &amp;amp;&amp;amp;&lt;br /&gt;
  prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
  make bindir=/bin install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/ex/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   cd $SOURCE_DIRECTORY                    &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/usr.local/usr/' Makefile       &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= man/= share\/man/' Makefile  &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/ucb/bin/' Makefile             &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= termlib/= ncurses/' Makefile &amp;amp;&amp;amp;&lt;br /&gt;
   make                                    &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install                         &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
The first example is a build which needs non-standard 'configure' and 'make install' commands. The second is a build which does not use gnu auto-tools' 'configure' script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' - [[BUILD]] scripts must execute inside a (), called a subshell invocation, construct and output is always directed to a named pipe (aka FIFO). Therefor all [[BUILD]] files take the follwing form:&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   # commands are put here&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1     # $C_FIFO holds the name of a fifo in /tmp used for 'voyeur'&lt;br /&gt;
&lt;br /&gt;
=== The POST_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] runs in place of the '''default_post_build''' routine which is used to install minor documentation and transfer/enable initialization scripts and similar system data, mostly into &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] script usage is '''deprecated'''. You should install your config files in [[BUILD]] (remember not to overwrite previous config files!) or install defaults from [[POST_INSTALL]] (again, do not overwrite present files!). The ability to use a [[POST_BUILD]] script is purely for certain internal functions.&lt;br /&gt;
&lt;br /&gt;
=== The POST_INSTALL script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_INSTALL]] has no equivalent functions, and is run to handle post-installation work in a general manner. An example is: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/gcc/POST_INSTALL&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 cd /usr/lib/gcc-lib/$BUILD/$VERSION                      &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp;&lt;br /&gt;
 cd /lib/                                                 &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp; &lt;br /&gt;
 if [ ! -e /usr/bin/cc ] ; then&lt;br /&gt;
   ln -s gcc /usr/bin/cc&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Removal Scripts ==&lt;br /&gt;
&lt;br /&gt;
Module removal is handled by [[lrm]]. Because installation is monitored and backup tarballs are created using installwatch, most of package removal is handled automatically using the logs created by installwatch. However we provide for additional actions to be taken through the [[PRE_REMOVE]] and [[POST_REMOVE]] scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_REMOVE script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_REMOVE]] is needed to execute any tasks needed prior to the main task of removing all files installed by the module. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/mail/docbook-3.1/PRE_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 CENTRALIZED=/etc/sgml/catalog&lt;br /&gt;
 DOCBOOK_INSTALL_DIR=/usr/share/sgml/docbook/$VERSION&lt;br /&gt;
 install-catalog -r $CENTRALIZED $DOCBOOK_INSTALL_DIR/catalog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_REMOVE Script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_REMOVE]] may be used to remove data not tracked by installwatch and to correctly adjust remaining configuration files and data. Examples would include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/binutils/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 install-info  --delete as         --info-dir /usr/info&lt;br /&gt;
 install-info  --delete bfd        --info-dir /usr/info&lt;br /&gt;
 install-info  --delete binutils   --info-dir /usr/info&lt;br /&gt;
 install-info  --delete configure  --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gasp       --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gprof      --info-dir /usr/info&lt;br /&gt;
 install-info  --delete ld         --info-dir /usr/info&lt;br /&gt;
&lt;br /&gt;
or: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/php/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if    module_installed  apache;  then&lt;br /&gt;
   cp        /etc/httpd/httpd.conf       /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 elif  module_installed  apache_mod_ssl;  then&lt;br /&gt;
   cp        /etc/httpsd/httpd.conf      /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpsd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Basics</id>
		<title>Module Basics</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Basics"/>
				<updated>2006-03-07T02:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* The POST_BUILD script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
In ''lunar'' parlance, software packages are called [[modules]]. The collection of all modules is the [[moonbase]], which is simply a directory (usually &amp;lt;code&amp;gt;/var/lib/lunar/moonbase&amp;lt;/code&amp;gt;) containing ''sections'' (i.e. directories) which in turn contain the [[module]] directories.&lt;br /&gt;
&lt;br /&gt;
A module is simply a directory containing the scripts necessary to build a software package, and optionally configuration files which may be needed in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. Some modules require only a [[DETAILS]] file, however this is only the case for a few of the modules in the entire moonbase. In each case, after [[DETAILS]], [[DEPENDS]], and [[CONFIGURE]], where a module can use lunar's default internal function(s), there is no need for a module-specific script.&lt;br /&gt;
&lt;br /&gt;
* [[DETAILS]] sets version, source URL(s) and other critical data&lt;br /&gt;
* [[CONFLICTS]] specifies modules which must (will) be removed by module&lt;br /&gt;
* [[CONFIGURE]] interactive script where build options can be set&lt;br /&gt;
* [[DEPENDS]] specifies required and optional packages&lt;br /&gt;
* [[PRE_REMOVE]] used by [[lrm]]; actions which must preceed removal&lt;br /&gt;
* [[PRE_BUILD]] most often used for patching, unpacking addional source tarballs&lt;br /&gt;
* [[BUILD]] runs necessary variations on: configure; make; make install&lt;br /&gt;
* [[POST_BUILD]] install configuration scripts and data.&lt;br /&gt;
* [[POST_INSTALL]] messages, notes more cleanups, configuration fixes&lt;br /&gt;
* [[POST_REMOVE]] used by [[lrm]]; actions which must follow removal&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Package Build and Install Scripts ==&lt;br /&gt;
&lt;br /&gt;
The following scripts are used by [[lin]] or indirectly by [[lunar]] when building modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The DETAILS script ===&lt;br /&gt;
&lt;br /&gt;
Every module is required to have at least a [[DETAILS]] file. A minimal [[DETAILS]] may appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/emacs/DETAILS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs&lt;br /&gt;
          VERSION=21.3&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION&lt;br /&gt;
       SOURCE_URL=$GNU_URL/$MODULE/$SOURCE&lt;br /&gt;
       SOURCE_URL=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
          ENTERED=20010922&lt;br /&gt;
          UPDATED=20020529&lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
With comments, default values:&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs                                       # Module name, yes it's redundant&lt;br /&gt;
          VERSION=21.3                                        # Version, changes *often*&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz                     # Source filename&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION           # Where source unpacks&lt;br /&gt;
                                                              # ($BUILD_DIRECTORY=/usr/src)&lt;br /&gt;
    SOURCE_URL[0]=$GNU_URL/$MODULE/$SOURCE                    # Download URL&lt;br /&gt;
    SOURCE_URL[1]=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;   # Alternate URL(s)&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420        # Sets md5 hash or pgp/gpg sig url&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;           # where to learn more&lt;br /&gt;
          ENTERED=20010922                                    # First appearance in moonbase&lt;br /&gt;
          UPDATED=20020529                                    # Date of latest change.&lt;br /&gt;
                                                              # Force update by setting this&lt;br /&gt;
 &lt;br /&gt;
 # The remaining lines are used for input to the 'lvu what' command&lt;br /&gt;
 # and are best copied from the source-maintainer's own description.&lt;br /&gt;
 &lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== The DEPENDS script ===&lt;br /&gt;
&lt;br /&gt;
The [[DEPENDS]] script is essential to configuration management, and is the key to the overall operation of lunar. Dependencies should be exactly specified, preferably not assuming the presence of any other modules, while knowing the sub-dependencies of the modules which are added and not adding those explictly where not needed.&lt;br /&gt;
&lt;br /&gt;
'''Warning''' - Getting this right is difficult. Because the state of installed packages may vary widely, it's important to have a good understanding of what might be or not be installed on a target system.&lt;br /&gt;
&lt;br /&gt;
'''Note''' - By convention Lunar does not include the X Window System, xfree86 or XOrg, in any dependency. There are two reasons for this choice. First we expect that users must understand that to use a graphical application locally, the X Window System must be installed. Second, due to the sligtly unusual definition of client and server used by X11, it is often in fact possible to build graphical applications and tools for remote display, without the server components locally installed. At some future date we may elect to provide a client-only installation of xfree86.&lt;br /&gt;
&lt;br /&gt;
[[DEPENDS]] may include both required and optional dependencies. The '''depends()''' function statement simply determines one required package. The optional_depends function is a little more complex. It consists of the required package, necessary --options to give to &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; for yes and no respectively, and an explanatory comment telling the user the purpose of the option being presented. A typical [[DEPENDS]] file might appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/subversion/DEPENDS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 depends zlib    &amp;amp;&amp;amp;&lt;br /&gt;
 depends openssl &amp;amp;&amp;amp;&lt;br /&gt;
 optional_depends &amp;quot;db4&amp;quot; &amp;quot;--with-berkeley-db&amp;quot;  &amp;quot;&amp;quot;   &amp;quot;for creating local repositories&amp;quot;&lt;br /&gt;
 #                  ^            ^            ^                  ^&lt;br /&gt;
 #                  |            |            |                  |&lt;br /&gt;
 #     optional package       if &amp;quot;Y&amp;quot;       if &amp;quot;N&amp;quot;       explanatory comment&lt;br /&gt;
 #                        { ./configure strings }&lt;br /&gt;
&lt;br /&gt;
'''Aliases'''&lt;br /&gt;
&lt;br /&gt;
Aliases are a mean to select a generic module. When you need a functionnality that can be provided by two or more softwares, you can select one of them to provide a correct dependency.&lt;br /&gt;
&lt;br /&gt;
Example /var/lib/lunar/moonbase/aliases:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 %APACHE:apache apache2 apache-mod_ssl&lt;br /&gt;
 %FAM:fam gamin&lt;br /&gt;
 %GECKO_RENDERER: firefox thunderbird mozilla&lt;br /&gt;
 %GHOSTSCRIPT:espgs ghostscript&lt;br /&gt;
 %MTA:postfix exim sendmail esmtp&lt;br /&gt;
 %SLANG:slang slang2&lt;br /&gt;
 %X:XOrg XOrg-test xfree86 xfree86-beta&lt;br /&gt;
 %XMLRENDERER: libxml2 expat&lt;br /&gt;
 %XSCREENSAVER:xscreensaver xscreensaver-gtk1 xscreensaver-kde&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example you can choose %X instead of XOrg in a module that would depends on any X server:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 depends %X&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The CONFLICTS script ===&lt;br /&gt;
&lt;br /&gt;
This script is simply used to specify modules which will be removed when a given module is installed. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/elvis/CONFLICTS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 conflicts vim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CONFIGURE script ===&lt;br /&gt;
&lt;br /&gt;
The [[CONFIGURE]] script is used to collect interactive input from the user on optional parameters for the software build. use the '''query''' function and provide a default answer to each question. The results of the answers are then used to store configuration variables needed in configuration state files. An a simple example might be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/crypto/gnupg/CONFIGURE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if ! grep -q CONFIGURED $MODULE_CONFIG ; then&lt;br /&gt;
   if query &amp;quot;Enable experimental external HKP keyserver interface? &amp;quot; n ; then&lt;br /&gt;
     OPTS=&amp;quot;$OPTS --enable-external-hkp&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
   echo 'CONFIGURED=&amp;quot;y&amp;quot;' &amp;gt;&amp;gt; $MODULE_CONFIG&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Another way is using '''mquery''' like the lilo module does:&lt;br /&gt;
&lt;br /&gt;
 mquery RUN_LILO &amp;quot;Run LILO automatically upon LILO upgrades?&amp;quot; y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_BUILD]] is used where special processing is needed before undertaking the actual build steps. Typical requirements include unpacking multiple sources, creating necessary system or source-tree direcotries and applying source patches. And example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/doc-tools/html2db/PRE_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 mk_source_dir $SOURCE_DIRECTORY  &amp;amp;&amp;amp;&lt;br /&gt;
 unpack $SOURCE                   &amp;amp;&amp;amp;&lt;br /&gt;
 cd $MODULE&lt;br /&gt;
 unpack $SOURCE2&lt;br /&gt;
 cd tidy&lt;br /&gt;
 patch_it $SOURCE_CACHE/$SOURCE3 0&lt;br /&gt;
 cd /usr/src/$MODULE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[BUILD]] is used where the '''default_build()''' function does not work for a given software package. For reference the commands run by default are:&lt;br /&gt;
&lt;br /&gt;
Function '''default_build()''' calls '''default_config''' which executes:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --build=$BUILD            \&lt;br /&gt;
                --prefix=/usr             \&lt;br /&gt;
                --sysconfdir=/etc         \&lt;br /&gt;
                --localstatedir=/var      \&lt;br /&gt;
                --infodir=/usr/share/info \&lt;br /&gt;
                --mandir=/usr/share/man   \&lt;br /&gt;
                $OPTS&lt;br /&gt;
&lt;br /&gt;
Next, '''default_build()''' calls '''default_make''' which executes:&lt;br /&gt;
&lt;br /&gt;
   make &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
Where this build configuration does not work, the [[BUILD]] script is used to provide the needed steps. About 75% of modules need a [[BUILD]] script. Two examples include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/archive/gzip/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
  ./configure --build=$BUILD            \&lt;br /&gt;
              --prefix=/usr             \&lt;br /&gt;
              --bindir=/bin             \&lt;br /&gt;
              --infodir=/usr/share/info \&lt;br /&gt;
              --mandir=/usr/share/man   &amp;amp;&amp;amp;&lt;br /&gt;
  make &amp;amp;&amp;amp;&lt;br /&gt;
  prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
  make bindir=/bin install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/ex/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   cd $SOURCE_DIRECTORY                    &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/usr.local/usr/' Makefile       &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= man/= share\/man/' Makefile  &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/ucb/bin/' Makefile             &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= termlib/= ncurses/' Makefile &amp;amp;&amp;amp;&lt;br /&gt;
   make                                    &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install                         &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
The first example is a build which needs non-standard 'configure' and 'make install' commands. The second is a build which does not use gnu auto-tools' 'configure' script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' - [[BUILD]] scripts must execute inside a (), called a subshell invocation, construct and output is always directed to a named pipe (aka FIFO). Therefor all [[BUILD]] files take the follwing form:&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   # commands are put here&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1     # $C_FIFO holds the name of a fifo in /tmp used for 'voyeur'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] runs in place of the '''default_post_build''' routine which is used to install minor documentation and transfer/enable initialization scripts and similar system data, mostly into &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] script usage is '''deprecated'''. You should install your config files in [[BUILD]] (remember not to overwrite previous config files!) or install defaults from [[POST_INSTALL]] (again, do not overwrite present files!). The ability to use a [[POST_BUILD]] script is purely for certain internal functions.&lt;br /&gt;
&lt;br /&gt;
=== The POST_INSTALL script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_INSTALL]] has no equivalent functions, and is run to handle post-installation work in a general manner. An example is: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/gcc/POST_INSTALL&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 cd /usr/lib/gcc-lib/$BUILD/$VERSION                      &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp;&lt;br /&gt;
 cd /lib/                                                 &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp; &lt;br /&gt;
 if [ ! -e /usr/bin/cc ] ; then&lt;br /&gt;
   ln -s gcc /usr/bin/cc&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Removal Scripts ==&lt;br /&gt;
&lt;br /&gt;
Module removal is handled by [[lrm]]. Because installation is monitored and backup tarballs are created using installwatch, most of package removal is handled automatically using the logs created by installwatch. However we provide for additional actions to be taken through the [[PRE_REMOVE]] and [[POST_REMOVE]] scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_REMOVE script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_REMOVE]] is needed to execute any tasks needed prior to the main task of removing all files installed by the module. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/mail/docbook-3.1/PRE_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 CENTRALIZED=/etc/sgml/catalog&lt;br /&gt;
 DOCBOOK_INSTALL_DIR=/usr/share/sgml/docbook/$VERSION&lt;br /&gt;
 install-catalog -r $CENTRALIZED $DOCBOOK_INSTALL_DIR/catalog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_REMOVE Script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_REMOVE]] may be used to remove data not tracked by installwatch and to correctly adjust remaining configuration files and data. Examples would include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/binutils/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 install-info  --delete as         --info-dir /usr/info&lt;br /&gt;
 install-info  --delete bfd        --info-dir /usr/info&lt;br /&gt;
 install-info  --delete binutils   --info-dir /usr/info&lt;br /&gt;
 install-info  --delete configure  --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gasp       --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gprof      --info-dir /usr/info&lt;br /&gt;
 install-info  --delete ld         --info-dir /usr/info&lt;br /&gt;
&lt;br /&gt;
or: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/php/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if    module_installed  apache;  then&lt;br /&gt;
   cp        /etc/httpd/httpd.conf       /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 elif  module_installed  apache_mod_ssl;  then&lt;br /&gt;
   cp        /etc/httpsd/httpd.conf      /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpsd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Basics</id>
		<title>Module Basics</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Basics"/>
				<updated>2006-03-07T02:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* The POST_BUILD script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
In ''lunar'' parlance, software packages are called [[modules]]. The collection of all modules is the [[moonbase]], which is simply a directory (usually &amp;lt;code&amp;gt;/var/lib/lunar/moonbase&amp;lt;/code&amp;gt;) containing ''sections'' (i.e. directories) which in turn contain the [[module]] directories.&lt;br /&gt;
&lt;br /&gt;
A module is simply a directory containing the scripts necessary to build a software package, and optionally configuration files which may be needed in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. Some modules require only a [[DETAILS]] file, however this is only the case for a few of the modules in the entire moonbase. In each case, after [[DETAILS]], [[DEPENDS]], and [[CONFIGURE]], where a module can use lunar's default internal function(s), there is no need for a module-specific script.&lt;br /&gt;
&lt;br /&gt;
* [[DETAILS]] sets version, source URL(s) and other critical data&lt;br /&gt;
* [[CONFLICTS]] specifies modules which must (will) be removed by module&lt;br /&gt;
* [[CONFIGURE]] interactive script where build options can be set&lt;br /&gt;
* [[DEPENDS]] specifies required and optional packages&lt;br /&gt;
* [[PRE_REMOVE]] used by [[lrm]]; actions which must preceed removal&lt;br /&gt;
* [[PRE_BUILD]] most often used for patching, unpacking addional source tarballs&lt;br /&gt;
* [[BUILD]] runs necessary variations on: configure; make; make install&lt;br /&gt;
* [[POST_BUILD]] install configuration scripts and data.&lt;br /&gt;
* [[POST_INSTALL]] messages, notes more cleanups, configuration fixes&lt;br /&gt;
* [[POST_REMOVE]] used by [[lrm]]; actions which must follow removal&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Package Build and Install Scripts ==&lt;br /&gt;
&lt;br /&gt;
The following scripts are used by [[lin]] or indirectly by [[lunar]] when building modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The DETAILS script ===&lt;br /&gt;
&lt;br /&gt;
Every module is required to have at least a [[DETAILS]] file. A minimal [[DETAILS]] may appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/emacs/DETAILS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs&lt;br /&gt;
          VERSION=21.3&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION&lt;br /&gt;
       SOURCE_URL=$GNU_URL/$MODULE/$SOURCE&lt;br /&gt;
       SOURCE_URL=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
          ENTERED=20010922&lt;br /&gt;
          UPDATED=20020529&lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
With comments, default values:&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs                                       # Module name, yes it's redundant&lt;br /&gt;
          VERSION=21.3                                        # Version, changes *often*&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz                     # Source filename&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION           # Where source unpacks&lt;br /&gt;
                                                              # ($BUILD_DIRECTORY=/usr/src)&lt;br /&gt;
    SOURCE_URL[0]=$GNU_URL/$MODULE/$SOURCE                    # Download URL&lt;br /&gt;
    SOURCE_URL[1]=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;   # Alternate URL(s)&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420        # Sets md5 hash or pgp/gpg sig url&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;           # where to learn more&lt;br /&gt;
          ENTERED=20010922                                    # First appearance in moonbase&lt;br /&gt;
          UPDATED=20020529                                    # Date of latest change.&lt;br /&gt;
                                                              # Force update by setting this&lt;br /&gt;
 &lt;br /&gt;
 # The remaining lines are used for input to the 'lvu what' command&lt;br /&gt;
 # and are best copied from the source-maintainer's own description.&lt;br /&gt;
 &lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== The DEPENDS script ===&lt;br /&gt;
&lt;br /&gt;
The [[DEPENDS]] script is essential to configuration management, and is the key to the overall operation of lunar. Dependencies should be exactly specified, preferably not assuming the presence of any other modules, while knowing the sub-dependencies of the modules which are added and not adding those explictly where not needed.&lt;br /&gt;
&lt;br /&gt;
'''Warning''' - Getting this right is difficult. Because the state of installed packages may vary widely, it's important to have a good understanding of what might be or not be installed on a target system.&lt;br /&gt;
&lt;br /&gt;
'''Note''' - By convention Lunar does not include the X Window System, xfree86 or XOrg, in any dependency. There are two reasons for this choice. First we expect that users must understand that to use a graphical application locally, the X Window System must be installed. Second, due to the sligtly unusual definition of client and server used by X11, it is often in fact possible to build graphical applications and tools for remote display, without the server components locally installed. At some future date we may elect to provide a client-only installation of xfree86.&lt;br /&gt;
&lt;br /&gt;
[[DEPENDS]] may include both required and optional dependencies. The '''depends()''' function statement simply determines one required package. The optional_depends function is a little more complex. It consists of the required package, necessary --options to give to &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; for yes and no respectively, and an explanatory comment telling the user the purpose of the option being presented. A typical [[DEPENDS]] file might appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/subversion/DEPENDS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 depends zlib    &amp;amp;&amp;amp;&lt;br /&gt;
 depends openssl &amp;amp;&amp;amp;&lt;br /&gt;
 optional_depends &amp;quot;db4&amp;quot; &amp;quot;--with-berkeley-db&amp;quot;  &amp;quot;&amp;quot;   &amp;quot;for creating local repositories&amp;quot;&lt;br /&gt;
 #                  ^            ^            ^                  ^&lt;br /&gt;
 #                  |            |            |                  |&lt;br /&gt;
 #     optional package       if &amp;quot;Y&amp;quot;       if &amp;quot;N&amp;quot;       explanatory comment&lt;br /&gt;
 #                        { ./configure strings }&lt;br /&gt;
&lt;br /&gt;
'''Aliases'''&lt;br /&gt;
&lt;br /&gt;
Aliases are a mean to select a generic module. When you need a functionnality that can be provided by two or more softwares, you can select one of them to provide a correct dependency.&lt;br /&gt;
&lt;br /&gt;
Example /var/lib/lunar/moonbase/aliases:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 %APACHE:apache apache2 apache-mod_ssl&lt;br /&gt;
 %FAM:fam gamin&lt;br /&gt;
 %GECKO_RENDERER: firefox thunderbird mozilla&lt;br /&gt;
 %GHOSTSCRIPT:espgs ghostscript&lt;br /&gt;
 %MTA:postfix exim sendmail esmtp&lt;br /&gt;
 %SLANG:slang slang2&lt;br /&gt;
 %X:XOrg XOrg-test xfree86 xfree86-beta&lt;br /&gt;
 %XMLRENDERER: libxml2 expat&lt;br /&gt;
 %XSCREENSAVER:xscreensaver xscreensaver-gtk1 xscreensaver-kde&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example you can choose %X instead of XOrg in a module that would depends on any X server:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 depends %X&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The CONFLICTS script ===&lt;br /&gt;
&lt;br /&gt;
This script is simply used to specify modules which will be removed when a given module is installed. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/elvis/CONFLICTS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 conflicts vim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CONFIGURE script ===&lt;br /&gt;
&lt;br /&gt;
The [[CONFIGURE]] script is used to collect interactive input from the user on optional parameters for the software build. use the '''query''' function and provide a default answer to each question. The results of the answers are then used to store configuration variables needed in configuration state files. An a simple example might be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/crypto/gnupg/CONFIGURE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if ! grep -q CONFIGURED $MODULE_CONFIG ; then&lt;br /&gt;
   if query &amp;quot;Enable experimental external HKP keyserver interface? &amp;quot; n ; then&lt;br /&gt;
     OPTS=&amp;quot;$OPTS --enable-external-hkp&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
   echo 'CONFIGURED=&amp;quot;y&amp;quot;' &amp;gt;&amp;gt; $MODULE_CONFIG&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Another way is using '''mquery''' like the lilo module does:&lt;br /&gt;
&lt;br /&gt;
 mquery RUN_LILO &amp;quot;Run LILO automatically upon LILO upgrades?&amp;quot; y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_BUILD]] is used where special processing is needed before undertaking the actual build steps. Typical requirements include unpacking multiple sources, creating necessary system or source-tree direcotries and applying source patches. And example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/doc-tools/html2db/PRE_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 mk_source_dir $SOURCE_DIRECTORY  &amp;amp;&amp;amp;&lt;br /&gt;
 unpack $SOURCE                   &amp;amp;&amp;amp;&lt;br /&gt;
 cd $MODULE&lt;br /&gt;
 unpack $SOURCE2&lt;br /&gt;
 cd tidy&lt;br /&gt;
 patch_it $SOURCE_CACHE/$SOURCE3 0&lt;br /&gt;
 cd /usr/src/$MODULE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[BUILD]] is used where the '''default_build()''' function does not work for a given software package. For reference the commands run by default are:&lt;br /&gt;
&lt;br /&gt;
Function '''default_build()''' calls '''default_config''' which executes:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --build=$BUILD            \&lt;br /&gt;
                --prefix=/usr             \&lt;br /&gt;
                --sysconfdir=/etc         \&lt;br /&gt;
                --localstatedir=/var      \&lt;br /&gt;
                --infodir=/usr/share/info \&lt;br /&gt;
                --mandir=/usr/share/man   \&lt;br /&gt;
                $OPTS&lt;br /&gt;
&lt;br /&gt;
Next, '''default_build()''' calls '''default_make''' which executes:&lt;br /&gt;
&lt;br /&gt;
   make &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
Where this build configuration does not work, the [[BUILD]] script is used to provide the needed steps. About 75% of modules need a [[BUILD]] script. Two examples include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/archive/gzip/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
  ./configure --build=$BUILD            \&lt;br /&gt;
              --prefix=/usr             \&lt;br /&gt;
              --bindir=/bin             \&lt;br /&gt;
              --infodir=/usr/share/info \&lt;br /&gt;
              --mandir=/usr/share/man   &amp;amp;&amp;amp;&lt;br /&gt;
  make &amp;amp;&amp;amp;&lt;br /&gt;
  prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
  make bindir=/bin install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/ex/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   cd $SOURCE_DIRECTORY                    &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/usr.local/usr/' Makefile       &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= man/= share\/man/' Makefile  &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/ucb/bin/' Makefile             &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= termlib/= ncurses/' Makefile &amp;amp;&amp;amp;&lt;br /&gt;
   make                                    &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install                         &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
The first example is a build which needs non-standard 'configure' and 'make install' commands. The second is a build which does not use gnu auto-tools' 'configure' script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' - [[BUILD]] scripts must execute inside a (), called a subshell invocation, construct and output is always directed to a named pipe (aka FIFO). Therefor all [[BUILD]] files take the follwing form:&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   # commands are put here&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1     # $C_FIFO holds the name of a fifo in /tmp used for 'voyeur'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] runs in place of the '''default_post_build''' routine which is used to install minor documentation and transfer/enable initialization scripts and similar system data, mostly into &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. An example script would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/net/samba/POST_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if [ ! -d /etc/samba/private ]; then&lt;br /&gt;
   mkdir -p /etc/samba/private&lt;br /&gt;
   chmod 700 /etc/samba/private&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] script usage is '''deprecated'''. You should install your config files in [[BUILD]] (remember not to overwrite previous config files!) or install defaults from [[POST_INSTALL]] (again, do not overwrite present files!)&lt;br /&gt;
&lt;br /&gt;
=== The POST_INSTALL script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_INSTALL]] has no equivalent functions, and is run to handle post-installation work in a general manner. An example is: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/gcc/POST_INSTALL&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 cd /usr/lib/gcc-lib/$BUILD/$VERSION                      &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp;&lt;br /&gt;
 cd /lib/                                                 &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp; &lt;br /&gt;
 if [ ! -e /usr/bin/cc ] ; then&lt;br /&gt;
   ln -s gcc /usr/bin/cc&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Removal Scripts ==&lt;br /&gt;
&lt;br /&gt;
Module removal is handled by [[lrm]]. Because installation is monitored and backup tarballs are created using installwatch, most of package removal is handled automatically using the logs created by installwatch. However we provide for additional actions to be taken through the [[PRE_REMOVE]] and [[POST_REMOVE]] scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_REMOVE script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_REMOVE]] is needed to execute any tasks needed prior to the main task of removing all files installed by the module. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/mail/docbook-3.1/PRE_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 CENTRALIZED=/etc/sgml/catalog&lt;br /&gt;
 DOCBOOK_INSTALL_DIR=/usr/share/sgml/docbook/$VERSION&lt;br /&gt;
 install-catalog -r $CENTRALIZED $DOCBOOK_INSTALL_DIR/catalog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_REMOVE Script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_REMOVE]] may be used to remove data not tracked by installwatch and to correctly adjust remaining configuration files and data. Examples would include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/binutils/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 install-info  --delete as         --info-dir /usr/info&lt;br /&gt;
 install-info  --delete bfd        --info-dir /usr/info&lt;br /&gt;
 install-info  --delete binutils   --info-dir /usr/info&lt;br /&gt;
 install-info  --delete configure  --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gasp       --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gprof      --info-dir /usr/info&lt;br /&gt;
 install-info  --delete ld         --info-dir /usr/info&lt;br /&gt;
&lt;br /&gt;
or: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/php/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if    module_installed  apache;  then&lt;br /&gt;
   cp        /etc/httpd/httpd.conf       /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 elif  module_installed  apache_mod_ssl;  then&lt;br /&gt;
   cp        /etc/httpsd/httpd.conf      /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpsd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Tools:lrm</id>
		<title>Tools:lrm</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Tools:lrm"/>
				<updated>2006-03-05T19:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====lrm====&lt;br /&gt;
&lt;br /&gt;
[[tools:lrm|lrm]] is the lunar ''remove'' utility. It does nothing more than remove an installed package from your system.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Tools:lin</id>
		<title>Tools:lin</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Tools:lin"/>
				<updated>2006-03-05T18:58:53Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====lin====&lt;br /&gt;
&lt;br /&gt;
[[Tools:lin|lin]] is the lunar ''install'' tool. It handles downloading, upgrading (through [[tools:lrm|lrm]], installation and compilation of modules on your system.&lt;br /&gt;
&lt;br /&gt;
To do this, lin follows several steps:&lt;br /&gt;
&lt;br /&gt;
* resolve conflicts - if a package conflicts and is installed, it will prompt the user what to do (remove or keep).&lt;br /&gt;
* solve dependencies - if packages are missing, they are inserted into the install queue&lt;br /&gt;
* download - the packages are downloaded in the background while processing continues by [[tools:lget|lget]]&lt;br /&gt;
* configure options - the user may be prompted for additional configuration questions that affect the way a package is built&lt;br /&gt;
* checks - the checksums are checked if available, all sources are downloaded, etc.&lt;br /&gt;
* compile - the package is compiled&lt;br /&gt;
* upgrade - if a previous version of the package is installed, [[tools:lrm|lrm]] removes the old files in a safe way&lt;br /&gt;
* install - the package is physically installed to your system&lt;br /&gt;
* post-install actions - several things are done, such as administrativa, documentation, init.d scripts etc.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Tools</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Tools"/>
				<updated>2006-03-05T18:51:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Lunar tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Lunar tools ====&lt;br /&gt;
&lt;br /&gt;
There is an extra package called [[package:lunar_tools|lunar tools]] that installs extra tools specific to lunar, however those are not discussed here - this page is about the ''lunar coretools''&lt;br /&gt;
&lt;br /&gt;
* [[tools:lunar|lunar]] - does everything - it can be used as a cli or a menu-driven interface to all the other tools&lt;br /&gt;
* [[tools:lin|lin]] - installs packages&lt;br /&gt;
* [[tools:lrm|lrm]] - removes packages&lt;br /&gt;
* [[tools:lvu|lvu]] - viewing utility - shows you information about packages, etc.&lt;br /&gt;
* [[tools:lsh|lsh]] - debugging utility - the ''lunar shell''&lt;br /&gt;
&lt;br /&gt;
some deprecated old tools are still available in the core too&lt;br /&gt;
&lt;br /&gt;
* [[tools:lvis|lvis]] - follow a currently compiling program&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Tools</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Tools"/>
				<updated>2006-03-05T18:51:15Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Lunar tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Lunar tools ====&lt;br /&gt;
&lt;br /&gt;
There is an extra package called [[package:lunar_tools|lunar tools]] that installs extra tools specific to lunar, however those are not discussed here - this page is about the ''lunar coretools''&lt;br /&gt;
&lt;br /&gt;
* [[tools:lunar]] - does everything - it can be used as a cli or a menu-driven interface to all the other tools&lt;br /&gt;
* [[tools:lin]] - installs packages&lt;br /&gt;
* [[tools:lrm]] - removes packages&lt;br /&gt;
* [[tools:lvu]] - viewing utility - shows you information about packages, etc.&lt;br /&gt;
* [[tools:lsh]] - debugging utility - the ''lunar shell''&lt;br /&gt;
&lt;br /&gt;
some deprecated old tools are still available in the core too&lt;br /&gt;
&lt;br /&gt;
* [[tools:lvis]] - follow a currently compiling program&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Tools</id>
		<title>Tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Tools"/>
				<updated>2006-03-05T18:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: tools page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Lunar tools ====&lt;br /&gt;
&lt;br /&gt;
There is an extra package called [[package:lunar_tools|lunar tools]] that installs extra tools specific to lunar, however those are not discussed here - this page is about the ''lunar coretools''&lt;br /&gt;
&lt;br /&gt;
* [[lunar]] - does everything - it can be used as a cli or a menu-driven interface to all the other tools&lt;br /&gt;
* [[lin]] - installs packages&lt;br /&gt;
* [[lrm]] - removes packages&lt;br /&gt;
* [[lvu]] - viewing utility - shows you information about packages, etc.&lt;br /&gt;
* [[lsh]] - debugging utility - the ''lunar shell''&lt;br /&gt;
&lt;br /&gt;
some deprecated old tools are still available in the core too&lt;br /&gt;
&lt;br /&gt;
* [[lvis]] - follow a currently compiling program&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:About</id>
		<title>Lunar Linux:About</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:About"/>
				<updated>2006-01-30T16:01:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: hint towards minimal ISO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''What is Lunar Linux?'''&lt;br /&gt;
&lt;br /&gt;
Lunar is a source based Linux distribution developed by a very talented team of programmers from all over the world, working together to extend the Linux technology into better-tailored and more optimized software for the end user.&lt;br /&gt;
&lt;br /&gt;
Lunar uses and builds upon the Linux kernel, the software started by Linus Torvalds and supported by thousands of programmers worldwide, and offers a unique package management system which builds each software package, or module, from scratch for the machine in which it is being installed.&lt;br /&gt;
&lt;br /&gt;
This is what sets Lunar apart. It makes customization a breeze-- you choose the compile options before a module is built, and install a lean and uncluttered system that has exactly what you need. Nothing more, or less.&lt;br /&gt;
&lt;br /&gt;
Once installed, Lunar is remarkably fast, breaking new ground in flexibility and in the options it offers the individual user.&lt;br /&gt;
&lt;br /&gt;
'''How have you Licensed it?'''&lt;br /&gt;
&lt;br /&gt;
Lunar-Linux and all it's code are licensed under the GPLv2.&lt;br /&gt;
&lt;br /&gt;
'''How does it work?'''&lt;br /&gt;
&lt;br /&gt;
In a nutshell: Lunar installs a complete bootstrap development system on your machine. You then tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
Lunar's installer is fast and provides full control over the process of installation, including a wide variety of install and rescue tools. The installer provides the user with an interface to compile a custom kernel during installation.&lt;br /&gt;
&lt;br /&gt;
Installing applications is remarkably simple-- type in &amp;quot;lin [package name]&amp;quot; and the system will install the application from the moonbase, our module repository. Don't want it after all? Type &amp;quot;lrm [package name]&amp;quot; and it is gone. Lunar has a unique shell-based Application Management System which handles the dependencies when installing software. There is no &amp;quot;dependency hell&amp;quot;-- if there are other things the system needs to install a particular application, the AMS will simply find them for you.&lt;br /&gt;
&lt;br /&gt;
Updating lunar is a matter of one single command, lunar update. It fetches an updated moonbase, checks if there were any updated modules and builds those. The AMS is network aware and uses the network to acquire source code. The moonbase and core tools are updated every hour at Lunar-Linux.org.&lt;br /&gt;
What is the advantage?&lt;br /&gt;
&lt;br /&gt;
The advantage for the end user is clear: a system that is both robust and stable, and easy to install and maintain without sacrificing variety and flexibility. Lunar has built in integrity checking and a robust self-repairing capability. It also enables system users to develop their own source-packages using the toolset.&lt;br /&gt;
&lt;br /&gt;
Lunar is for everyone. Though it may be difficult for the beginner to administer, it provides you with all the possible features you could want from a Linux distribution. It is incredibly accessible to anyone who has played around with a UNIX system.&lt;br /&gt;
&lt;br /&gt;
All of this presents a rich potential for a user who seeks speed, strong performance, and a system that &amp;quot;works smart&amp;quot;.&lt;br /&gt;
How can I get started?&lt;br /&gt;
&lt;br /&gt;
If you'd like to start using Lunar, you can easily obtain downloads and ISO images from our web site.&lt;br /&gt;
&lt;br /&gt;
You will also need to download our installation manual, which will walk you through everything you need to know about installing Lunar on your machine. As you begin to put Lunar to work, you will find additional resources in our support section, including our FAQ, our Man Pages, and the archives for the Lunar mailing list.&lt;br /&gt;
&lt;br /&gt;
'''What do I get when I install the ISO?'''&lt;br /&gt;
&lt;br /&gt;
The Lunar-Linux ISO installs only a basic set of packages needed to build the rest. There is no GNOME or KDE, not even XOrg on your machine after you finish installing the ISO. The only service running is secure shell (ssh), and root logins are expressly prohibited! However, once you are done installing and have compiled a kernel once to get the kernel sources in /usr/src/linux, you can just `lin XOrg` and start installing your desktop from there!&lt;br /&gt;
&lt;br /&gt;
Allthough this may sound spartan to you, there are still a ton of things you can do with a finished installation. You have links, the text-based webbrowser to surf to webpages. Irssi is installed for IRC chat. The ISO also comes preloaded with a whole bunch of networking tools and hardware utilities (lspci, dmidecode, discover) that allow you to figure out what kind of hardware your system has.&lt;br /&gt;
&lt;br /&gt;
'''So what should I do now?'''&lt;br /&gt;
&lt;br /&gt;
You should either go to the download section or read some more in the library. Follow the links below:&lt;br /&gt;
&lt;br /&gt;
    * http://lunar-linux.org/&lt;br /&gt;
    * http://wiki.lunar-linux.org/&lt;br /&gt;
&lt;br /&gt;
''Copyright 2003, Lunar-Linux.org, written by Suzanne Burns''&lt;br /&gt;
&lt;br /&gt;
''history is irrelevant, only the future matters''&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:About</id>
		<title>Lunar Linux:About</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:About"/>
				<updated>2006-01-30T15:25:43Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Reverted edit of 200.1.117.23, changed back to last version by 206.131.211.110&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''What is Lunar Linux?'''&lt;br /&gt;
&lt;br /&gt;
Lunar is a source based Linux distribution developed by a very talented team of programmers from all over the world, working together to extend the Linux technology into better-tailored and more optimized software for the end user.&lt;br /&gt;
&lt;br /&gt;
Lunar uses and builds upon the Linux kernel, the software started by Linus Torvalds and supported by thousands of programmers worldwide, and offers a unique package management system which builds each software package, or module, from scratch for the machine in which it is being installed.&lt;br /&gt;
&lt;br /&gt;
This is what sets Lunar apart. It makes customization a breeze-- you choose the compile options before a module is built, and install a lean and uncluttered system that has exactly what you need. Nothing more, or less.&lt;br /&gt;
&lt;br /&gt;
Once installed, Lunar is remarkably fast, breaking new ground in flexibility and in the options it offers the individual user.&lt;br /&gt;
&lt;br /&gt;
'''How have you Licensed it?'''&lt;br /&gt;
&lt;br /&gt;
Lunar-Linux and all it's code are licensed under the GPLv2.&lt;br /&gt;
&lt;br /&gt;
'''How does it work?'''&lt;br /&gt;
&lt;br /&gt;
In a nutshell: Lunar installs a complete bootstrap development system on your machine. You then tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
Lunar's installer is fast and provides full control over the process of installation, including a wide variety of install and rescue tools. The installer provides the user with an interface to compile a custom kernel during installation.&lt;br /&gt;
&lt;br /&gt;
Installing applications is remarkably simple-- type in &amp;quot;lin [package name]&amp;quot; and the system will install the application from the moonbase, our module repository. Don't want it after all? Type &amp;quot;lrm [package name]&amp;quot; and it is gone. Lunar has a unique shell-based Application Management System which handles the dependencies when installing software. There is no &amp;quot;dependency hell&amp;quot;-- if there are other things the system needs to install a particular application, the AMS will simply find them for you.&lt;br /&gt;
&lt;br /&gt;
Updating lunar is a matter of one single command, lunar update. It fetches an updated moonbase, checks if there were any updated modules and builds those. The AMS is network aware and uses the network to acquire source code. The moonbase and core tools are updated every hour at Lunar-Linux.org.&lt;br /&gt;
What is the advantage?&lt;br /&gt;
&lt;br /&gt;
The advantage for the end user is clear: a system that is both robust and stable, and easy to install and maintain without sacrificing variety and flexibility. Lunar has built in integrity checking and a robust self-repairing capability. It also enables system users to develop their own source-packages using the toolset.&lt;br /&gt;
&lt;br /&gt;
Lunar is for everyone. Though it may be difficult for the beginner to administer, it provides you with all the possible features you could want from a Linux distribution. It is incredibly accessible to anyone who has played around with a UNIX system.&lt;br /&gt;
&lt;br /&gt;
All of this presents a rich potential for a user who seeks speed, strong performance, and a system that &amp;quot;works smart&amp;quot;.&lt;br /&gt;
How can I get started?&lt;br /&gt;
&lt;br /&gt;
If you'd like to start using Lunar, you can easily obtain downloads and ISO images from our web site.&lt;br /&gt;
&lt;br /&gt;
You will also need to download our installation manual, which will walk you through everything you need to know about installing Lunar on your machine. As you begin to put Lunar to work, you will find additional resources in our support section, including our FAQ, our Man Pages, and the archives for the Lunar mailing list.&lt;br /&gt;
&lt;br /&gt;
'''So what should I do now?'''&lt;br /&gt;
&lt;br /&gt;
You should either go to the download section or read some more in the library. Follow the links below:&lt;br /&gt;
&lt;br /&gt;
    * http://lunar-linux.org/&lt;br /&gt;
    * http://wiki.lunar-linux.org/&lt;br /&gt;
&lt;br /&gt;
''Copyright 2003, Lunar-Linux.org, written by Suzanne Burns''&lt;br /&gt;
&lt;br /&gt;
''history is irrelevant, only the future matters''&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2005-11-11T23:33:44Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Fast (-01) but most people will opt in for Faster, or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I586.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===error : C compiler cannot create executables===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;C compiler cannot create executables&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Read the next topic - this is basically the same problem: There are kernel headers missing that are vital to compilation. You will have to restore them. Below is explained how to do that.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This is an include file problem. Sometimes ''/usr/include/gnu/stubs.h'' is missing, this can be found in the glibc source tarball. Most of the time the following applies:&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my disk?===&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Rock Hopper Penguin|Rock Hopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rock+Hopper+Penguin Google Images] for lots of Rock Hopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:No_network</id>
		<title>Installation:No network</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:No_network"/>
				<updated>2005-11-11T21:37:50Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Added old howto.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installation without a fast network connection ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here's a brief howto on how to install Lunar without a fast network (or no network at all!)&lt;br /&gt;
&lt;br /&gt;
Here's the basic steps:&lt;br /&gt;
&lt;br /&gt;
* Get the lunar ISO&lt;br /&gt;
* Get a moonbase (here: [[http://lunar-linux.org/lunar/moonbase.tar.bz2]]) and the list of source URLS (here: [[http://download.lunar-linux.org/lunar/mirror-urls.txt]])at the same time&lt;br /&gt;
* Download all sources in the URL list and put them on CD-ROM (takes about 5 to 8 CD-ROM's!)&lt;br /&gt;
* Go home and install lunar using the ISO&lt;br /&gt;
* Insert the sources to your lunar box (they go in /var/spool/lunar), upload the special moonbase to your lunar box and voila&lt;br /&gt;
&lt;br /&gt;
A few notes:&lt;br /&gt;
&lt;br /&gt;
You should download the moonbase tarball and the entire list of download URLs at the same time.&lt;br /&gt;
&lt;br /&gt;
After downloading those two files, start up the download of all the sources from the URLs listed in the mirror-urls.txt. Preferably you should use wget something like this:&lt;br /&gt;
 ~ $ for URL in $(cat mirror-urls.txt) ; do wget -c $URL ; done&lt;br /&gt;
&lt;br /&gt;
Burn these files including the moonbase.tar.bz2 on one, two or three CD's. You can leave out the KDE files if you are not going to use KDE of course, adjust the list as necessary and you see fit&lt;br /&gt;
&lt;br /&gt;
After you went home and performed the first install of lunar the normal way, you have a booting lunar box. From there you can mount the CD-ROM's with all your sources and copy the sources to the place where lunar finds them automatically:&lt;br /&gt;
 mount /dev/cdrom /mnt/cdrom&lt;br /&gt;
 cp /mnt/cdrom/* /var/spool/lunar&lt;br /&gt;
continue with extracting the moonbase tarball that corresponds with the sources you have downloaded:&lt;br /&gt;
 cd /var/lib/lunar&lt;br /&gt;
 mv moonbase/zlocal .zlocal&lt;br /&gt;
 rm -rf moonbase&lt;br /&gt;
 tar xjf /var/spool/lunar/moonbase.tar.bz2&lt;br /&gt;
 mv .zlocal moonbase/zlocal&lt;br /&gt;
In order to properly initialize your new moonbase, you should run:&lt;br /&gt;
 lsh&lt;br /&gt;
 check_module_index&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that on theedge code as of 20041126 and newer, you can simply copy the moonbase onto the filesystem and install it with one command:&lt;br /&gt;
 lget moonbase --url file:///path/to/moonbase.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Now you can lin any module in moonbase without needing to be connected&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: because it is almost impossible that the URL list file is correct or complete, it may happen that files are missing from the list or are not available for download anymore at the moment you try. You should take into consideration that you may need to walk back and forth work 3 or more times before you have all files you need&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: if you really have no network, never lin modules as moonbase, lunar or theedge as they always try to download instead of use the source cache in /var/spool/lunar. You might want to check out the syntax for lunar hold&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Template:Main_Page:Misc</id>
		<title>Template:Main Page:Misc</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Template:Main_Page:Misc"/>
				<updated>2005-11-11T21:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Add no-network howto link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; padding-top: 0.1em; padding-right: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
{{ed|Main_Page:Misc|}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;font-variant: small-caps;&amp;quot;&amp;gt;[[Lunar Linux:Misc|Other Information]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;[[Howto Articles]]&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [[Installation:No CD|No CD installation]]&lt;br /&gt;
* [[Installation:No network|No network installation]]&lt;br /&gt;
* [[Installation:Kernel_2.6._HowTo|Installing a 2.6 kernel]]&lt;br /&gt;
* [[Installation:The_kernel_commandline_/dev_params_mini-HowTo|The kernel commandline /dev params mini-HowTo]]&lt;br /&gt;
* [[Installation:Software Raid|Installation on software RAID]]&lt;br /&gt;
* [[Miscellaneous:USB camera howto|USB camera howto]]&lt;br /&gt;
* [[Howto Articles|more...]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [http://www.bluefish.se/aquarium/lunar.html Review of Lunar Linux] &amp;amp;bull; by Göran Krampe [http://www.bluefish.se/index.html bluefish.se]&lt;br /&gt;
* [http://distrocenter.linux.com/distrocenter/05/07/25/1319212.shtml?tid=127 Lunar Linux Review] &amp;amp;bull; by Preston St Pierre on [http://linux.com/ Linux.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Fun Facts about Lunar&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [[how_long|How long does it take]] to install something on lunar?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;3rd Party Websites&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [http://lunar-linux.interhact.net/ Lunar Linux Non-Free Modules]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right; font-variant: small-caps; padding-right: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Lunar Linux:Misc|More Information]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2005-11-10T18:57:58Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Installing modules */ added another common error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Fast (-01) but most people will opt in for Faster, or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I586.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===error : C compiler cannot create executables===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;C compiler cannot create executables&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Read the next topic - this is basically the same problem: There are kernel headers missing that are vital to compilation. You will have to restore them. Below is explained how to do that.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my disk?===&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Rock Hopper Penguin|Rock Hopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rock+Hopper+Penguin Google Images] for lots of Rock Hopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T19:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Estimating compile time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==[[how_long|How long]] does it take...==&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Influencing Factors===&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Some basic numbers===&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimating compile time===&lt;br /&gt;
&lt;br /&gt;
If you correlate the size of the installed product or the source code size (in compressed form easily available), you get a very loose correlation shown in the graph below:&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/byinstallsize.png&lt;br /&gt;
&lt;br /&gt;
Above is correlated by install size (uncompressed size in kB against compile time in seconds), below is correlated against the size of the compressed source code tarballs (same scale).&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/bysourcesize.png&lt;br /&gt;
&lt;br /&gt;
As you can see there is a faint correlation possible. Most applications install about 10kB of product in 1 second. The other way around you can reason that it takes 1 second to compile 10kB of (compressed) source code. This allows you to pre-estimate the compile time, assuming that your system is the same speed as my reference system.&lt;br /&gt;
&lt;br /&gt;
We can do some more elaborate math on this and calculate the &amp;quot;index&amp;quot; for all modules. The index of a module would be easily calculated by the amount of time it took for lunar to compile and install 10kB of compressed source code. So we divide the total compile/install time (seconds) by the number of kilobytes that the compressed source package was:&lt;br /&gt;
&lt;br /&gt;
 gcc  took 8025 to compile + install 26952 compressed kB of source code == 3.35&lt;br /&gt;
 XOrg took 4087 to compile + install 47656 compressed kB of source code == 11.6&lt;br /&gt;
&lt;br /&gt;
If we do this for all modules we end up with the average index of about 27, which means that on average, lunar compiles and installs 27kB of compressed source code per second. Since the size of my /var/spool/lunar is about 1.4gB, it would take me about 51851 seconds to compile and install all of this source code files. That's about 14.5 hours! Of course that number really is not right - we haven't taken into account that larger modules might have a lower index and thus take much longer to compile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Indexing modules===&lt;br /&gt;
&lt;br /&gt;
We should be able to index the numbers of all modules right now, so it pays off to pay a closer look at the numbers a bit. Most importantly, the 27 index is averaged across all modules, but we know that this number is off for bigger modules. For modules larger than 100kB source size, it's already 32, and for modules over 1000kB, it's up to 52. This seriously changes perspective and shows you that smaller modules take relatively longer to install, and this is not surprising: the overhead is usually much larger for them, as all the autoconf and administrativa needs to be performed for smaller modules as well.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T07:27:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Estimating compile time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==[[how_long|How long]] does it take...==&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Influencing Factors===&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Some basic numbers===&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimating compile time===&lt;br /&gt;
&lt;br /&gt;
If you correlate the size of the installed product or the source code size (in compressed form easily available), you get a very loose correlation shown in the graph below:&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/byinstallsize.png&lt;br /&gt;
&lt;br /&gt;
Above is correlated by install size (uncompressed size in kB against compile time in seconds), below is correlated against the size of the compressed source code tarballs (same scale).&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/bysourcesize.png&lt;br /&gt;
&lt;br /&gt;
As you can see there is a faint correlation possible. Most applications install about 10kB of product in 1 second. The other way around you can reason that it takes 1 second to compile 10kB of (compressed) source code. This allows you to pre-estimate the compile time, assuming that your system is the same speed as my reference system.&lt;br /&gt;
&lt;br /&gt;
We can do some more elaborate math on this and calculate the &amp;quot;index&amp;quot; for all modules. The index of a module would be easily calculated by the amount of time it took for lunar to compile and install 10kB of compressed source code. So we divide the total compile/install time (seconds) by the number of kilobytes that the compressed source package was:&lt;br /&gt;
&lt;br /&gt;
 gcc  took 8025 to compile + install 26952 compressed kB of source code == 3.35&lt;br /&gt;
 XOrg took 4087 to compile + install 47656 compressed kB of source code == 11.6&lt;br /&gt;
&lt;br /&gt;
If we do this for all modules we end up with the average index of about 27, which means that on average, lunar compiles and installs 27kB of compressed source code per second. Since the size of my /var/spool/lunar is about 1.4gB, it would take me about 51851 seconds to compile and install all of this source code files. That's about 14.5 hours! Of course that number really is not right - we haven't taken into account that larger modules might have a lower index and thus take much longer to compile.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T07:26:18Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Estimating compile time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==[[how_long|How long]] does it take...==&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Influencing Factors===&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Some basic numbers===&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimating compile time===&lt;br /&gt;
&lt;br /&gt;
If you correlate the size of the installed product or the source code size (in compressed form easily available), you get a very loose correlation shown in the graph below:&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/byinstallsize.png&lt;br /&gt;
&lt;br /&gt;
Above is correlated by install size (uncompressed size in kB against compile time in seconds), below is correlated against the size of the compressed source code tarballs (same scale).&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/bysourcesize.png&lt;br /&gt;
&lt;br /&gt;
As you can see there is a faint correlation possible. Most applications install about 10kB of product in 1 second. The other way around you can reason that it takes 1 second to compile 10kB of (compressed) source code. This allows you to pre-estimate the compile time, assuming that your system is the same speed as my reference system.&lt;br /&gt;
&lt;br /&gt;
We can do some more elaborate math on this and calculate the &amp;quot;index&amp;quot; for all modules. The index of a module would be easily calculated by the amount of time it took for lunar to compile and install 10kB of compressed source code. So we divide the total compile/install time (seconds) by the number of kilobytes that the compressed source package was:&lt;br /&gt;
&lt;br /&gt;
 gcc  took 8025 to compile + install 26952 compressed kB of source code == 3.35&lt;br /&gt;
 XOrg took 4087 to compile + install 47656 compressed kB of source code == 11.6&lt;br /&gt;
&lt;br /&gt;
If we do this for all modules we end up with the average index of about 27, which means that on average, lunar compiles and installs 27kB of compressed source code per second. Since the size of my /var/spool/lunar is about 1.4gB, it would take me about 51851 seconds to compile and install all of this source code files. That's about 14.5 hours!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T06:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: properly headerified, adding graphs!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==[[how_long|How long]] does it take...==&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Influencing Factors===&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Some basic numbers===&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Estimating compile time===&lt;br /&gt;
&lt;br /&gt;
If you correlate the size of the installed product or the source code size (in compressed form easily available), you get a very loose correlation shown in the graph below:&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/byinstallsize.png&lt;br /&gt;
&lt;br /&gt;
Above is correlated by install size (uncompressed size in kB against compile time in seconds), below is correlated against the size of the compressed source code tarballs (same scale).&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/bysourcesize.png&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T06:44:50Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Adding correlation graphs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''''[[how_long]] does it take...'''''&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''''Influencing Factors''''&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''''Some basic numbers''''&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''''Estimating compile time''''&lt;br /&gt;
&lt;br /&gt;
If you correlate the size of the installed product or the source code size (in compressed form easily available), you get a very loose correlation shown in the graph below:&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/byinstallsize.png&lt;br /&gt;
&lt;br /&gt;
Above is correlated by install size (uncompressed size in kB against compile time in seconds), below is correlated against the size of the compressed source code tarballs (same scale).&lt;br /&gt;
&lt;br /&gt;
http://foo-projects.org/~sofar/bysourcesize.png&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/How_long</id>
		<title>How long</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/How_long"/>
				<updated>2005-10-17T06:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: Adding this fun facts numbers page: compile time comparisons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''''[[how_long]] does it take...'''''&lt;br /&gt;
* To install a specific module?&lt;br /&gt;
* To install the ISO?&lt;br /&gt;
* To recompile all my modules?&lt;br /&gt;
&lt;br /&gt;
These questions get asked a lot by new lunar users and it is a very logical question: Lunar is after all a source distro and requires you to compile all the applications from source, which can sometimes take extremely long!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''''Influencing Factors''''&lt;br /&gt;
&lt;br /&gt;
* ''System(CPU) speed''&lt;br /&gt;
Double the CPU MHz, and you double the amount of instructions that a system can make per time unit. So, as a rule, a faster CPU results in faster compiles.&lt;br /&gt;
&lt;br /&gt;
* ''Memory size''&lt;br /&gt;
Compiling may require large amounts of memory, especially when compiling C++ applications. Generally, a compilation will go 50% faster if you have double the memory. So, if you only have 128MB of memory, you will speed up your compiles by 225% by increasing the amount of memory to 512MB. This might be worth the trip to the hardware store.&lt;br /&gt;
&lt;br /&gt;
* ''Idle time''&lt;br /&gt;
Compiling takes a long time. Every second that your system is doing something else, especially interactive tasks, reduces the amount of time that your system can compile applications.&lt;br /&gt;
&lt;br /&gt;
* ''System architecture and components''&lt;br /&gt;
Needless to say that a compile on a SATA hard disk is a lot faster than on a ATA-33 system. Especially with larger modules this is a very important factor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''''Some basic numbers''''&lt;br /&gt;
&lt;br /&gt;
The following numbers are from a Pentium 4 laptop system with 256 MB, running at 1.8GHz. This is a fairly normal system and if you wish to compare it with your own system, you should keep in mind that this system might be relatively slower or faster based on the influencing factors mentioned earlier.&lt;br /&gt;
&lt;br /&gt;
The modules listed below are very common modules, so they should give you some good insight in how long it takes to compile and install something. Based on the size you can make rough estimates for new modules that you wish to install.&lt;br /&gt;
&lt;br /&gt;
 module      source size    installed size    compile time&lt;br /&gt;
 gcc         27.6          257.3              120:45&lt;br /&gt;
 XOrg        48.2           93.8              68:07&lt;br /&gt;
 glibc       13.5           64.7              47:09&lt;br /&gt;
 gtk+-2      11.8           34.5              26:08&lt;br /&gt;
 perl         9.8           52.3              17:50&lt;br /&gt;
&lt;br /&gt;
As you clearly can see there is some correlation between installed size and compile time, but there are many outliers in this trend: gtk+-2 comes with a lot of bitmaps and documentation, while the XOrg tarball is counted without documentation. The gcc compiler itself has a very elaborate bootstrap phase that takes almost half the time it takes to compile the target compiler. Many many module-specific factors are at work here.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Template:Main_Page:Misc</id>
		<title>Template:Main Page:Misc</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Template:Main_Page:Misc"/>
				<updated>2005-10-17T05:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;float: right; padding-top: 0.1em; padding-right: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
{{ed|Main_Page:Misc|}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;font-variant: small-caps;&amp;quot;&amp;gt;[[Lunar Linux:Misc|Other Information]]&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Howto Articles&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [[Installation:No CD|No CD Installation]], [[Installation:Software Raid|Installation on software RAID]]&lt;br /&gt;
* [[Installation:Kernel_2.6._HowTo|Install a 2.6 kernel]]&lt;br /&gt;
* [[Installation:The_kernel_commandline_/dev_params_mini-HowTo|The kernel commandline /dev params mini-HowTo]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [http://www.bluefish.se/aquarium/lunar.html Review of Lunar Linux] &amp;amp;bull; by Göran Krampe [http://www.bluefish.se/index.html bluefish.se]&lt;br /&gt;
* [http://distrocenter.linux.com/distrocenter/05/07/25/1319212.shtml?tid=127 Lunar Linux Review] &amp;amp;bull; by Preston St Pierre on [http://linux.com/ Linux.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Fun Facts about Lunar&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [[how_long|How long does it take]] to install something on lunar?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;3rd Party Websites&amp;lt;/h4&amp;gt;&lt;br /&gt;
* [http://lunar-linux.interhact.net/ Lunar Linux Non-Free Modules]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: right; font-variant: small-caps; padding-right: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Lunar Linux:Misc|More Information]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:No_CD</id>
		<title>Installation:No CD</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:No_CD"/>
				<updated>2005-10-06T04:47:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Chrooting into the ISO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Lunar-Linux without a CD drive or other removable media isn't really that hard. There are several ways of emulating a cd-rom with linux. There's some easy ways and some hard ways. I'll try to discuss all of them.&lt;br /&gt;
&lt;br /&gt;
''Disclaimer: The methods below might destroy all your data and not work for you at all. Make backups! You yourself are responsible for your own data and system!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO from a hard disk partition==&lt;br /&gt;
&lt;br /&gt;
Yes, I'm not kidding. This is by far one of the easiest methods. The idea behind this method is that you can boot the ISO from any media, all you need to do is boot from it. If that means that the ISO is somehow written on your hard disk, and you have a bootloader capable of booting boot sectors (like lilo, grub, windows all can do), then you're in business.&lt;br /&gt;
&lt;br /&gt;
'''requires:'''&lt;br /&gt;
&lt;br /&gt;
* Enough free disk space plus partition big enough for the iso image&lt;br /&gt;
* Any installed operating system and tools that allow directly to write to a partition&lt;br /&gt;
* A working boot loader like windows' bootloader, lilo or grub&lt;br /&gt;
&lt;br /&gt;
Your best bet is to free some space at the end of your disk. Make sure this is '''larger''' than the lunar iso (somewhere around 350mb). Create a partition and ''copy'' the contents of the iso to that partition:&lt;br /&gt;
&lt;br /&gt;
 cat lunar-1.5.1-i686.iso &amp;gt; /dev/hda15&lt;br /&gt;
&lt;br /&gt;
Once done, you should edit your bootloader (be it windows or grub or lilo) and make it boot the boot sector of the iso. Here's the lilo entry you would need:&lt;br /&gt;
&lt;br /&gt;
 other = /dev/hda15&lt;br /&gt;
     label = lunar-1.5.1&lt;br /&gt;
&lt;br /&gt;
That's it! reboot and select the iso entry, and you're ready to go! The lunar installer should start and everything should work just as good as from a CD!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chrooting into the ISO==&lt;br /&gt;
&lt;br /&gt;
If the above method fails, you can always manually chroot into the ISO and start the installer manually too.&lt;br /&gt;
&lt;br /&gt;
'''requires:'''&lt;br /&gt;
&lt;br /&gt;
* A running linux installation with relatively new 2.4 kernel that has devfs support and  allows chroot usage (must be root)&lt;br /&gt;
&lt;br /&gt;
This method is a bit trickier since you will be repartitioning your hard disk from which you just have booted, so you should actually install a '''small''' linux installation somewhere near the end of your disk, losetup/loopmount the iso on there, and then install to partitions that are NOT active/mounted. This might even fail since the kernel doesn't like changing partitions when it's running.&lt;br /&gt;
&lt;br /&gt;
So, start out by getting your 'tiny' linux running anf booting. Preferably install it at the end of your hard disk and re-partition the beginning of your hard disk already for the lunar installation. Reboot your system so the partitions are known by the kernel, and prepare to mount the ISO over loop:&lt;br /&gt;
&lt;br /&gt;
 losetup /dev/loop0 lunar-1.5.1-i686.iso&lt;br /&gt;
 mount /dev/loop0 /mnt -o ro&lt;br /&gt;
 chroot /mnt /sbin/lunar-install&lt;br /&gt;
&lt;br /&gt;
that's it! The installer should run and you can perform all steps necessary for installing lunar on the remaining partitions. At the end, make sure you don't accidentally overwrite your bootstrap linux installation so you can fallback to it. Beware that you might want to add the bootstrap bootloader info too, in case you want to boot that installation if something goes wrong. Once lunar installs succesfully, you can remove this partition of course.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Package_Management</id>
		<title>Package Management</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Package_Management"/>
				<updated>2005-08-20T16:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Package Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Package Management===&lt;br /&gt;
&lt;br /&gt;
[[Package Management]] is the general name used to describe the art of installing, removing and updating software packages. Often this is the key component of the [[wikipedia:operating system|Operating System]].&lt;br /&gt;
&lt;br /&gt;
[[Lunar Linux]]'s packagement system is unique in the way that all the applications are compiled directly from source-code.&lt;br /&gt;
&lt;br /&gt;
Both the [[lunar]] and [[theedge]] package provide this feature for [[Lunar Linux]]. These two are mutually exclusive and contain the same tools. [[Lunar]] is the ''stable'' version and [[theedge]] the ''development'' branch.&lt;br /&gt;
&lt;br /&gt;
Other Package Management systems known are [[wikipedia:rpm|RPM]], [[wikipedia:portage|portage]].&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Theedge</id>
		<title>Theedge</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Theedge"/>
				<updated>2005-08-20T16:20:08Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Theedge]] is the development branch of [[Lunar]], a set of tools that allow you to install, remove and upgrade packages. It also comes with several other tools to help you selecting packages and finding out information about their status, files etc. For more information about how [[theedge]] works, read the [[lunar]] page.&lt;br /&gt;
&lt;br /&gt;
The development fixes and new features go into [[theedge]] exclusively, so that they can be tested without bothering users who don't want to run developement code. You should install [[lunar]] if you don't want this. However, many bugfixes go directly into [[theedge]], so sometimes you might want to switch to [[theedge]] instead.&lt;br /&gt;
&lt;br /&gt;
See [[lunar]] for the list of [[tools]] that come with it.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux/Documentation</id>
		<title>Lunar Linux/Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux/Documentation"/>
				<updated>2005-08-20T14:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: renamed links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot; id=&amp;quot;toc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;center&amp;quot;&amp;gt;Quick Reference&amp;lt;/h4&amp;gt;&lt;br /&gt;
*  '''General'''&lt;br /&gt;
** [[Lunar Linux:FAQ|Frequently Asked Questions]]&lt;br /&gt;
*  '''Installation'''&lt;br /&gt;
** [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
** [[Installation:No CD|No CD Installation]]&lt;br /&gt;
** [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
*  '''[[Package Management]]'''&lt;br /&gt;
** [[Lunar|Package Management: Lunar]]&lt;br /&gt;
** [[Theedge|Package Management: Theedge]]&lt;br /&gt;
** [[Tools:lunar|lunar]]&lt;br /&gt;
** [[Tools:lin|lin]]&lt;br /&gt;
** [[Tools:lrm|lrm]]&lt;br /&gt;
** [[Tools:lvu|lvu]]&lt;br /&gt;
** [[Tools:lget|lget]]&lt;br /&gt;
*  '''[[Tools|Other lunar tools]]'''&lt;br /&gt;
** [[Tools:lnet|lnet]]&lt;br /&gt;
** [[Tools:clad|lids]]&lt;br /&gt;
** [[Tools:clad|clad]]&lt;br /&gt;
** [[Tools:luser|luser]]&lt;br /&gt;
** [[Tools:lservices|lservices]]&lt;br /&gt;
*  '''[[Moonbase|The Lunar Moonbase]]'''&lt;br /&gt;
** [[Module|Modules]]&lt;br /&gt;
** [[Moonbase:Examples|Module Examples]]&lt;br /&gt;
** [[Moonbase:Functions|Module Function List]]&lt;br /&gt;
*  '''Other'''&lt;br /&gt;
** [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
** [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
'''Lunar-Linux''' is a small, robust linux distribution forked from Sourcerer GNU/Linux. Available here are docs for many things about the project and how to use, maintain, and develop '''Lunar-Linux'''. It is suggested that all new users consult the [[FAQ]] or use the ''search'' box found at the top of the page to find the information you are looking for.&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently Asked Questions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Installation of '''Lunar-Linux''' is fairly straightforward, however there are [[Installation:caveats|caveats]] for everything in life, and as such, we have provided [[Lunar Linux:Installation]] to quick and easy installation. There are also other methods of installation, such as the [[Installation:No CD|no CD-ROM installation]] for when you would like to use '''Lunar-Linux''', but are unable to have direct access to the machine or no CD-ROM is available.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
* [[Installation:No CD|No CD Installation]]&lt;br /&gt;
* [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Package Management===&lt;br /&gt;
A '''Lunar-Linux''' installation is maintained by its [[Package Management]] system. There are currently two versions of the system; one is the stable branch for production installations and general end-user usage called [[Lunar|''lunar'']], and the other is the unstable branch for development installations typically used by '''Lunar-Linux''' developers called [[Theedge|''theedge'']]. Both of these packages come with the same tools -- however, new code is always introduced into [[Theedge|''theedge'']] first for testing among developers.&lt;br /&gt;
&lt;br /&gt;
* [[Package Management]]&lt;br /&gt;
* [[Lunar|Package Management: Lunar]]&lt;br /&gt;
* [[Theedge|Package Management: Theedge]]&lt;br /&gt;
* [[Tools:lunar|lunar]] &amp;amp;bull; Utility for installing/removing modules and basic system configuration.&lt;br /&gt;
* [[Tools:lin|lin]] &amp;amp;bull; Installs modules.&lt;br /&gt;
* [[Tools:lrm|lrm]] &amp;amp;bull; Removes modules.&lt;br /&gt;
* [[Tools:lvu|lvu]] &amp;amp;bull; Displays information about modules.&lt;br /&gt;
* [[Tools:lget|lget]] &amp;amp;bull; Retreives requisite files for modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other lunar tools===&lt;br /&gt;
'''Lunar-Linux''' comes with more tools than just the [[Package Management]]. These tools allow you to administrate several things on your system like users, services and more.&lt;br /&gt;
&lt;br /&gt;
* [[Tools:lnet|lnet]] &amp;amp;bull; Network configuration utility&lt;br /&gt;
* [[Tools:lids|lids]] &amp;amp;bull; File integrity checking and permission checking tool&lt;br /&gt;
* [[Tools:clad|clad]] &amp;amp;bull; A cluster administration tool&lt;br /&gt;
* [[Tools:luser|luser]] &amp;amp;bull; User administration frontend&lt;br /&gt;
* [[Tools:lservices|lservices]] &amp;amp;bull; Administrate startup services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Moonbase===&lt;br /&gt;
The [[Moonbase|Lunar Moonbase]] is the software catalog for our distribution, and contains [[modules]] that perform the necessary actions needed to install software.&lt;br /&gt;
&lt;br /&gt;
If you would like to write your own modules, there are [[Module Examples|module examples]] which you can use to help you understand how modules perform different functions.&lt;br /&gt;
&lt;br /&gt;
* [[Moonbase|The Lunar Moonbase]]&lt;br /&gt;
* [[Module|Modules]]&lt;br /&gt;
* [[Module Writing|Writing lunar modules]]&lt;br /&gt;
* [[Module Examples|Module Examples]]&lt;br /&gt;
* [[Module Functions|Module Function List]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The official '''Lunar-Linux''' chatroom is located on the [http://freenode.net/ freenode] network in [irc://irc.freenode.net/lunar #Lunar]. Many of the developers hang out in this chatroom and help users that stop by. If you cannot find the information you need in this wiki, you may find the information you seek in the chatroom. However, being that our developers live all around the world, they do have lives and are not always around, so be patient when asking for help.&lt;br /&gt;
&lt;br /&gt;
We also have a few mailing lists for support and information for users; the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] is for general support and sometimes announcements from developers. Developer commits for moonbase, theedge, and lunar (the core tools) are on the [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List]. Bug reports and updates are sent to the [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List].&lt;br /&gt;
&lt;br /&gt;
* [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
* [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar</id>
		<title>Lunar</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar"/>
				<updated>2005-08-20T14:46:22Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Lunar]] is the name of our distro, and that of the [[Package Management]] system (and tool) that is used in [[Lunar Linux]] to install, remove and upgrade packages.&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] is the name of the suite of tools that comes with the [[Lunar]] ''core tools''. This suite of tools provides you with a way to perform a lot of actions on the package management part of a [[Lunar Linux]] installation, and look at parameters and information on packages and files.&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] is what we call the ''stable'' set of ''core tools''. This package offers the same functionality as the development branch [[Theedge]], but it changed less often and tested more before it receives changes. If you want to follow the latest changes and additions in the [[Package Management]] instead, you should install [[Theedge]].&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] and [[Lunar]] can and will replace eachother seamlessly, just do this:&lt;br /&gt;
&lt;br /&gt;
 lin lunar&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] provides these [[tools]]:&lt;br /&gt;
&lt;br /&gt;
* [[Tools:lunar|lunar]]&lt;br /&gt;
* [[Tools:lin|lin]]&lt;br /&gt;
* [[Tools:lrm|lrm]]&lt;br /&gt;
* [[Tools:lget|lget]]&lt;br /&gt;
* [[Tools:lvu|lvu]]&lt;br /&gt;
&lt;br /&gt;
And some less known and less important tools.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar</id>
		<title>Lunar</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar"/>
				<updated>2005-08-20T14:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Lunar]] is the name of our distro, and that of the [[Package Management]] system (and tool) that is used in [[Lunar Linux]] to install, remove and upgrade packages.&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] is the name of the suite of tools that comes with the [[Lunar]] ''core tools''. This suite of tools provides you with a way to perform a lot of actions on the package management part of a [[Lunar Linux]] installation, and look at parameters and information on packages and files.&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] is what we call the ''stable'' set of ''core tools''. This package offers the same functionality as the development branch [[Theedge]], but it changed less often and tested more before it receives changes. If you want to follow the latest changes and additions in the [[Package Management]] instead, you should install [[Theedge]].&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] and [[Lunar]] can and will replace eachother seamlessly, just do this:&lt;br /&gt;
&lt;br /&gt;
 lin lunar&lt;br /&gt;
&lt;br /&gt;
[[Lunar]] provides these [[tools]]:&lt;br /&gt;
&lt;br /&gt;
* [[Tools:Lunar|lunar]]&lt;br /&gt;
* [[Tools:lin|lin]]&lt;br /&gt;
* [[Tools:lrm|lrm]]&lt;br /&gt;
* [[Tools:lget|lget]]&lt;br /&gt;
* [[Tools:lvu|lvu]]&lt;br /&gt;
&lt;br /&gt;
And some less known and less important tools.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux/Documentation</id>
		<title>Lunar Linux/Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux/Documentation"/>
				<updated>2005-08-20T09:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot; id=&amp;quot;toc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;center&amp;quot;&amp;gt;Quick Reference&amp;lt;/h4&amp;gt;&lt;br /&gt;
*  '''General'''&lt;br /&gt;
** [[Lunar Linux:FAQ|Frequently Asked Questions]]&lt;br /&gt;
*  '''Installation'''&lt;br /&gt;
** [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
** [[Installation:No CD|No CD Installation]]&lt;br /&gt;
** [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
*  '''[[Package Management]]'''&lt;br /&gt;
** [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
** [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
** [[Package Management#utilities|lunar]]&lt;br /&gt;
** [[Package Management#utilities|lin]]&lt;br /&gt;
** [[Package Management#utilities|lrm]]&lt;br /&gt;
** [[Package Management#utilities|lvu]]&lt;br /&gt;
** [[Package Management#utilities|lget]]&lt;br /&gt;
*  '''[[Tools|Other lunar tools]]'''&lt;br /&gt;
** [[Lunar tools#tools|lnet]]&lt;br /&gt;
** [[Lunar tools#tools|lids]]&lt;br /&gt;
** [[Lunar tools#tools|clad]]&lt;br /&gt;
** [[Lunar tools#tools|luser]]&lt;br /&gt;
** [[Lunar tools#tools|lservices]]&lt;br /&gt;
*  '''[[Moonbase|The Lunar Moonbase]]'''&lt;br /&gt;
** [[Module|Modules]]&lt;br /&gt;
** [[Moonbase:Examples|Module Examples]]&lt;br /&gt;
** [[Moonbase:Functions|Module Function List]]&lt;br /&gt;
*  '''Other'''&lt;br /&gt;
** [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
** [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
'''Lunar-Linux''' is a small, robust linux distribution forked from Sourcerer GNU/Linux. Available here are docs for many things about the project and how to use, maintain, and develop '''Lunar-Linux'''. It is suggested that all new users consult the [[FAQ]] or use the ''search'' box found at the top of the page to find the information you are looking for.&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently Asked Questions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Installation of '''Lunar-Linux''' is fairly straightforward, however there are [[Installation:caveats|caveats]] for everything in life, and as such, we have provided [[Lunar Linux:Installation]] to quick and easy installation. There are also other methods of installation, such as the [[Installation:No CD|no CD-ROM installation]] for when you would like to use '''Lunar-Linux''', but are unable to have direct access to the machine or no CD-ROM is available.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
* [[Installation:No CD|No CD Installation]]&lt;br /&gt;
* [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Package Management===&lt;br /&gt;
A '''Lunar-Linux''' installation is maintained by its [[Package Management]] system. There are currently two versions of the system; one is the stable branch for production installations and general end-user usage called [[Package Management#lunar|''lunar'']], and the other is the unstable branch for development installations typically used by '''Lunar-Linux''' developers called [[Package Management#theedge|''theedge'']]. Both of these packages come with the same tools -- however, new code is always introduced into [[Package Management#theedge|''theedge'']] first for testing among developers.&lt;br /&gt;
&lt;br /&gt;
* [[Package Management]]&lt;br /&gt;
* [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
* [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
* [[Package Management#utilities|lunar]] &amp;amp;bull; Utility for installing/removing modules and basic system configuration.&lt;br /&gt;
* [[Package Management#utilities|lin]] &amp;amp;bull; Installs modules.&lt;br /&gt;
* [[Package Management#utilities|lrm]] &amp;amp;bull; Removes modules.&lt;br /&gt;
* [[Package Management#utilities|lvu]] &amp;amp;bull; Displays information about modules.&lt;br /&gt;
* [[Package Management#utilities|lget]] &amp;amp;bull; Retreives requisite files for modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other lunar tools===&lt;br /&gt;
'''Lunar-Linux''' comes with more tools than just the [[Package Management]]. These tools allow you to administrate several things on your system like users, services and more.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar tools#tools|lnet]] &amp;amp;bull; Network configuration utility&lt;br /&gt;
* [[Lunar tools#tools|lids]] &amp;amp;bull; File integrity checking and permission checking tool&lt;br /&gt;
* [[Lunar tools#tools|clad]] &amp;amp;bull; A cluster administration tool&lt;br /&gt;
* [[Lunar tools#tools|luser]] &amp;amp;bull; User administration frontend&lt;br /&gt;
* [[Lunar tools#tools|lservices]] &amp;amp;bull; Administrate startup services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Moonbase===&lt;br /&gt;
The [[Moonbase|Lunar Moonbase]] is the software catalog for our distribution, and contains [[modules]] that perform the necessary actions needed to install software.&lt;br /&gt;
&lt;br /&gt;
If you would like to write your own modules, there are [[Module Examples|module examples]] which you can use to help you understand how modules perform different functions.&lt;br /&gt;
&lt;br /&gt;
* [[Moonbase|The Lunar Moonbase]]&lt;br /&gt;
* [[Module|Modules]]&lt;br /&gt;
* [[Module Writing|Writing lunar modules]]&lt;br /&gt;
* [[Module Examples|Module Examples]]&lt;br /&gt;
* [[Module Functions|Module Function List]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The official '''Lunar-Linux''' chatroom is located on the [http://freenode.net/ freenode] network in [irc://irc.freenode.net/lunar #Lunar]. Many of the developers hang out in this chatroom and help users that stop by. If you cannot find the information you need in this wiki, you may find the information you seek in the chatroom. However, being that our developers live all around the world, they do have lives and are not always around, so be patient when asking for help.&lt;br /&gt;
&lt;br /&gt;
We also have a few mailing lists for support and information for users; the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] is for general support and sometimes announcements from developers. Developer commits for moonbase, theedge, and lunar (the core tools) are on the [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List]. Bug reports and updates are sent to the [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List].&lt;br /&gt;
&lt;br /&gt;
* [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
* [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux/Documentation</id>
		<title>Lunar Linux/Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux/Documentation"/>
				<updated>2005-08-20T09:56:11Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot; id=&amp;quot;toc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;center&amp;quot;&amp;gt;Quick Reference&amp;lt;/h4&amp;gt;&lt;br /&gt;
*  '''General'''&lt;br /&gt;
** [[Lunar Linux:FAQ|Frequently Asked Questions]]&lt;br /&gt;
*  '''Installation'''&lt;br /&gt;
** [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
** [[Installation:No CD|No CD Installation]]&lt;br /&gt;
** [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
*  '''[[Package Management]]'''&lt;br /&gt;
** [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
** [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
** [[Package Management#utilities|lunar]]&lt;br /&gt;
** [[Package Management#utilities|lin]]&lt;br /&gt;
** [[Package Management#utilities|lrm]]&lt;br /&gt;
** [[Package Management#utilities|lvu]]&lt;br /&gt;
** [[Package Management#utilities|lget]]&lt;br /&gt;
*  '''[[Tools|Other lunar tools]]'''&lt;br /&gt;
** [[Lunar tools#tools|lnet]]&lt;br /&gt;
** [[Lunar tools#tools|lids]]&lt;br /&gt;
** [[Lunar tools#tools|clad]]&lt;br /&gt;
** [[Lunar tools#tools|luser]]&lt;br /&gt;
** [[Lunar tools#tools|lservices]]&lt;br /&gt;
*  '''[[Moonbase|The Lunar Moonbase]]'''&lt;br /&gt;
** [[Module|Modules]]&lt;br /&gt;
** [[Moonbase:Examples|Module Examples]]&lt;br /&gt;
** [[Moonbase:Functions|Module Function List]]&lt;br /&gt;
*  '''Other'''&lt;br /&gt;
** [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
** [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
'''Lunar-Linux''' is a small, robust linux distribution forked from Sourcerer GNU/Linux. Available here are docs for many things about the project and how to use, maintain, and develop '''Lunar-Linux'''. It is suggested that all new users consult the [[FAQ]] or use the ''search'' box found at the top of the page to find the information you are looking for.&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently Asked Questions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Installation of '''Lunar-Linux''' is fairly straightforward, however there are [[Lunar Linux/Installation|caveats]] for everything in life, and as such, we have provided [[Lunar Linux:Installation|a guide]] to quick and easy installation. There are also other methods of installation, such as the [[Lunar Linux:Installation:No CD|no CD-ROM installation]] for when you would like to use '''Lunar-Linux''', but are unable to have direct access to the machine or no CD-ROM is available.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
* [[Installation:No CD|No CD Installation]]&lt;br /&gt;
* [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Package Management===&lt;br /&gt;
A '''Lunar-Linux''' installation is maintained by its [[Package Management]] system. There are currently two versions of the system; one is the stable branch for production installations and general end-user usage called [[Package Management#lunar|''lunar'']], and the other is the unstable branch for development installations typically used by '''Lunar-Linux''' developers called [[Package Management#theedge|''theedge'']]. Both of these packages come with the same tools -- however, new code is always introduced into [[Package Management#theedge|''theedge'']] first for testing among developers.&lt;br /&gt;
&lt;br /&gt;
* [[Package Management]]&lt;br /&gt;
* [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
* [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
* [[Package Management#utilities|lunar]] &amp;amp;bull; Utility for installing/removing modules and basic system configuration.&lt;br /&gt;
* [[Package Management#utilities|lin]] &amp;amp;bull; Installs modules.&lt;br /&gt;
* [[Package Management#utilities|lrm]] &amp;amp;bull; Removes modules.&lt;br /&gt;
* [[Package Management#utilities|lvu]] &amp;amp;bull; Displays information about modules.&lt;br /&gt;
* [[Package Management#utilities|lget]] &amp;amp;bull; Retreives requisite files for modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other lunar tools===&lt;br /&gt;
'''Lunar-Linux''' comes with more tools than just the [[Package Management]]. These tools allow you to administrate several things on your system like users, services and more.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar tools#tools|lnet]] &amp;amp;bull; Network configuration utility&lt;br /&gt;
* [[Lunar tools#tools|lids]] &amp;amp;bull; File integrity checking and permission checking tool&lt;br /&gt;
* [[Lunar tools#tools|clad]] &amp;amp;bull; A cluster administration tool&lt;br /&gt;
* [[Lunar tools#tools|luser]] &amp;amp;bull; User administration frontend&lt;br /&gt;
* [[Lunar tools#tools|lservices]] &amp;amp;bull; Administrate startup services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Moonbase===&lt;br /&gt;
The [[Moonbase|Lunar Moonbase]] is the software catalog for our distribution, and contains [[modules]] that perform the necessary actions needed to install software.&lt;br /&gt;
&lt;br /&gt;
If you would like to write your own modules, there are [[Module Examples|module examples]] which you can use to help you understand how modules perform different functions.&lt;br /&gt;
&lt;br /&gt;
* [[Moonbase|The Lunar Moonbase]]&lt;br /&gt;
* [[Module|Modules]]&lt;br /&gt;
* [[Module Writing|Writing lunar modules]]&lt;br /&gt;
* [[Module Examples|Module Examples]]&lt;br /&gt;
* [[Module Functions|Module Function List]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The official '''Lunar-Linux''' chatroom is located on the [http://freenode.net/ freenode] network in [irc://irc.freenode.net/lunar #Lunar]. Many of the developers hang out in this chatroom and help users that stop by. If you cannot find the information you need in this wiki, you may find the information you seek in the chatroom. However, being that our developers live all around the world, they do have lives and are not always around, so be patient when asking for help.&lt;br /&gt;
&lt;br /&gt;
We also have a few mailing lists for support and information for users; the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] is for general support and sometimes announcements from developers. Developer commits for moonbase, theedge, and lunar (the core tools) are on the [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List]. Bug reports and updates are sent to the [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List].&lt;br /&gt;
&lt;br /&gt;
* [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
* [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:No_CD</id>
		<title>Installation:No CD</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:No_CD"/>
				<updated>2005-08-20T09:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: no-cd installation setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installing Lunar-Linux without a CD drive or other removable media isn't really that hard. There are several ways of emulating a cd-rom with linux. There's some easy ways and some hard ways. I'll try to discuss all of them.&lt;br /&gt;
&lt;br /&gt;
''Disclaimer: The methods below might destroy all your data and not work for you at all. Make backups! You yourself are responsible for your own data and system!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO from a hard disk partition==&lt;br /&gt;
&lt;br /&gt;
Yes, I'm not kidding. This is by far one of the easiest methods. The idea behind this method is that you can boot the ISO from any media, all you need to do is boot from it. If that means that the ISO is somehow written on your hard disk, and you have a bootloader capable of booting boot sectors (like lilo, grub, windows all can do), then you're in business.&lt;br /&gt;
&lt;br /&gt;
'''requires:'''&lt;br /&gt;
&lt;br /&gt;
* Enough free disk space plus partition big enough for the iso image&lt;br /&gt;
* Any installed operating system and tools that allow directly to write to a partition&lt;br /&gt;
* A working boot loader like windows' bootloader, lilo or grub&lt;br /&gt;
&lt;br /&gt;
Your best bet is to free some space at the end of your disk. Make sure this is '''larger''' than the lunar iso (somewhere around 350mb). Create a partition and ''copy'' the contents of the iso to that partition:&lt;br /&gt;
&lt;br /&gt;
 cat lunar-1.5.1-i686.iso &amp;gt; /dev/hda15&lt;br /&gt;
&lt;br /&gt;
Once done, you should edit your bootloader (be it windows or grub or lilo) and make it boot the boot sector of the iso. Here's the lilo entry you would need:&lt;br /&gt;
&lt;br /&gt;
 other = /dev/hda15&lt;br /&gt;
     label = lunar-1.5.1&lt;br /&gt;
&lt;br /&gt;
That's it! reboot and select the iso entry, and you're ready to go! The lunar installer should start and everything should work just as good as from a CD!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chrooting into the ISO==&lt;br /&gt;
&lt;br /&gt;
If the above method fails, you can always manually chroot into the ISO and start the installer manually too.&lt;br /&gt;
&lt;br /&gt;
'''requires:'''&lt;br /&gt;
&lt;br /&gt;
* A running linux installation with relatively new kernel / allowing chroot usage&lt;br /&gt;
&lt;br /&gt;
This method is a bit trickier since you will be repartitioning your hard disk from which you just have booted, so you should actually install a '''small''' linux installation somewhere near the end of your disk, losetup/loopmount the iso on there, and then install to partitions that are NOT active/mounted. This might even fail since the kernel doesn't like changing partitions when it's running.&lt;br /&gt;
&lt;br /&gt;
So, start out by getting your 'tiny' linux running anf booting. Preferably install it at the end of your hard disk and re-partition the beginning of your hard disk already for the lunar installation. Reboot your system so the partitions are known by the kernel, and prepare to mount the ISO over loop:&lt;br /&gt;
&lt;br /&gt;
 losetup /dev/loop0 lunar-1.5.1-i686.iso&lt;br /&gt;
 mount /dev/loop0 /mnt -o ro&lt;br /&gt;
 chroot /mnt /sbin/lunar-install&lt;br /&gt;
&lt;br /&gt;
that's it! The installer should run and you can perform all steps necessary for installing lunar on the remaining partitions. At the end, make sure you don't accidentally overwrite your bootstrap linux installation so you can fallback to it. Beware that you might want to add the bootstrap bootloader info too, in case you want to boot that installation if something goes wrong. Once lunar installs succesfully, you can remove this partition of course.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-17T22:56:21Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Creating or editing Partitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About this installation manual==&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this manual is very incomplete and inspecific. You will see examples that are not tailored towards your to-be built server or workstation, optimizations that are overly broad or too specific, and examples that don't apply to any real situations. We tried hard to give you the idea of how much power you have over how you can setup your system, but we are forgetting to tell you how to run your own server or desktop (or other system) at all. That means that the examples and steps taken most probably do not apply to your situation at all.&lt;br /&gt;
&lt;br /&gt;
Do not dispair: if you understand what is going on and you get the idea, the installer will allow you to do pretty much everything you want to do with your system. There are really (almost) no limits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0. (''Check the main site for the actual latest version!'')&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program that can extract bzip2 archives, like WinZip (also capable of extracting bzip2 archives under windows are Winrar, powerarchiver and 7-Zip). Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
It should be noted that since 1.5.0, the iso tries to autodetect some hardware (mostly scsi drivers and network interfaces) during this stage. This will help you establish a network connection if you desire so during installation. For this reason the prorams 'dhcpcd' and 'ftp' are already available at this stage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Virtual Consoles==&lt;br /&gt;
&lt;br /&gt;
Once the ISO has booted into the installer, you can immediately shell out or switch to one of the other virtual consoles. These will have ready to go root shells and are available throughout the installer sequence. With these you can start rescue actions, setup networking or double check the install progress and make manual adjustments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Language and keyboard interface Settings==&lt;br /&gt;
&lt;br /&gt;
After reading the introduction, you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
Less important for most people is the ability to choose the console font, although it may help display some non-english characters. Most people will want to set the system-default language variable and editor though. All these values are unset by default, so make sure you set them now.&lt;br /&gt;
&lt;br /&gt;
The keymap table allows people to use azerty and dvorak keyboards, and much more. This is especially required for non-english keyboards which provide many accented characters.&lt;br /&gt;
&lt;br /&gt;
All these language and keymap settings might not apply to the lunar code itself, which (currently) does not have any international support, but most programs that run during the installer sequence, and after booting into your new system, will be affected properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating or editing Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
(''If you're wondering about this choice of partitions: it's really just an example. Read the [[FAQ#So_how_should_I_partition_my_disk.3F|FAQ]] on what makes sense in the real world''))&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 or Pentium Pro falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing kernels==&lt;br /&gt;
&lt;br /&gt;
===Installing a precompiled kernel===&lt;br /&gt;
&lt;br /&gt;
The ISO's come with a variation of precompiled kernels and modules that should work for most people. If you have problems getting your kernel to compile, install or getting the right drivers, or just want to get a quick start at lunar, we ''suggest'' that you use this option instead of compiling your own kernel. You can later of course compile as many kernels as you want.&lt;br /&gt;
&lt;br /&gt;
===Building Your Customized Linux Kernel===&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* ''linux-2.4'' -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. &lt;br /&gt;
* ''linux-2.4-agr'' -- The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* ''linux-2.4-grsec'' -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* ''linux-2.4-stable'' -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
* ''linux-2.4-vanilla'' -- A completely unpatched kernel tree.&lt;br /&gt;
* ''linux-2.4-om'' -- A kernel specifically meant for clustering use.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux-2.4-agr. &lt;br /&gt;
&lt;br /&gt;
Before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* ''config'' -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* ''menuconfig'' -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* ''xconfig'' -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/lunar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other settings==&lt;br /&gt;
&lt;br /&gt;
The installer will prompt you now for some more settings. You should set a root password and generate ssh host keys to identify your box uniquely for later. You might also want to administrate services on the newly installed machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2005-08-17T22:54:42Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Lunar-Linux Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Fast (-01) but most people will opt in for Faster, or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I586.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my disk?===&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Rock Hopper Penguin|Rock Hopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rock+Hopper+Penguin Google Images] for lots of Rock Hopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2005-08-17T22:52:30Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Lunar-Linux Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Fast (-01) but most people will opt in for Faster, or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I586.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my di&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Rock Hopper Penguin|Rock Hopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rock+Hopper+Penguin Google Images] for lots of Rock Hopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:FAQ</id>
		<title>Lunar Linux:FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:FAQ"/>
				<updated>2005-08-17T22:51:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Lunar-Linux Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are the '''F'''requently '''A'''sked '''Q'''uestions for Lunar Linux. You have a question about Lunar? You might get your answer below.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==General==&lt;br /&gt;
&lt;br /&gt;
===What is Lunar Linux?===&lt;br /&gt;
What exactly is Lunar Linux?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
* Please read [[Lunar Linux:About|About Lunar Linux]].&lt;br /&gt;
&lt;br /&gt;
==Optimizations==&lt;br /&gt;
&lt;br /&gt;
===How do I set optimizations?===&lt;br /&gt;
How do I set these optimizations for my machine?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt;lunar optimize&amp;lt;/code&amp;gt;. You'll be taken through an interactive menu that explains all the options. Remember to optimize safely.&lt;br /&gt;
&lt;br /&gt;
===What are safe optimizations?===&lt;br /&gt;
What are the recomended safe optimizations for [[Lunar Linux]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The default sure fire optimizations that are recommended are:&lt;br /&gt;
&lt;br /&gt;
* '''C'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''C++'''&lt;br /&gt;
** &amp;lt;code&amp;gt;-pipe&amp;lt;/code&amp;gt;&lt;br /&gt;
* '''CPU Architecture'''&lt;br /&gt;
** You should pick the correct architecture for your own system (defaults to x86 for most people).&lt;br /&gt;
* '''Basic Optimzations'''&lt;br /&gt;
** Fast (-01) but most people will opt in for Faster, or Fastest (Note that fastest doesn't work on all systems, i.e. k6).&lt;br /&gt;
* '''CPU'''&lt;br /&gt;
** This, of course, should be set to your own cpu, or the cpu of the machine you plan to run this install on. If you want to be able to run this install on many machines, you should be safe with I586.&lt;br /&gt;
* '''Speed Optimizations'''&lt;br /&gt;
** If you want to be 100% sure that there won't be optimization problems you shouldn't select any of these.&lt;br /&gt;
* '''Extra features'''&lt;br /&gt;
** It is not recommended to use any of these optimizations, even for modules known to be able to handle them, since they cause many apps to break.&lt;br /&gt;
* '''Floating Point Math'''&lt;br /&gt;
** None. If your architecture is x86 and you don't own a 386SX and 486SX, it's safe to select x387.&lt;br /&gt;
* '''Linker Options'''&lt;br /&gt;
** Strip.&lt;br /&gt;
* '''Addon Program Support'''&lt;br /&gt;
** CCache. Make sure to install it first.&lt;br /&gt;
&lt;br /&gt;
These settings should work for almost everyone, and there is a lot room for pushing these optimizations more, at the risk of problems with some applications. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations may cause problems?===&lt;br /&gt;
What optimizations are known to cause problems in some setups?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Some optimizations that are known to cause problems on x86 with many applications, and even a entire system:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;-funroll-loops&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fstrict-aliasing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffast-math&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-ffloat-store&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are sorted from the least unstable to most unstable. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations can give some speed without issues?===&lt;br /&gt;
What optimizations can I use to gain some speed but without major risks?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Start with the basic optimizations in [[Lunar Linux:FAQ#What_are_safe_optimizations.3F|FAQ #2.2]] and change the Basic Optimizations to Faster or Fastest if you know that gcc will generate correct code for that cpu. -O2 obviously takes more compile time than -O1, and -O3 takes the most time to compile. Then select the cpu you will run it on. Some of the speed optimizations that should be decent and shouldn't cause too many problems, if any, are: -fomit-frame-pointer. A safe bet for floating point math on a x86 would be x387, if you know your cpu has a floating point unit. Check &amp;lt;code&amp;gt;cat /proc/cpuinfo&amp;lt;/code&amp;gt; to see if your cpu supports SSE or SSE2. If your cpu does have sse or sse2 then you can also add that to the math optimizations.&lt;br /&gt;
&lt;br /&gt;
Your results may vary. Read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it.&lt;br /&gt;
&lt;br /&gt;
===What optimizations should I avoid?===&lt;br /&gt;
What optimizations should I stay away from?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All the ones listed in the [[Lunar Linux:FAQ#What_optimizations_may_cause_problems.3F|FAQ #2.3]] plus:&lt;br /&gt;
* &amp;lt;code&amp;gt;-fprofile-arcs&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;-fbranching-probabilities&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please read &amp;lt;code&amp;gt;info gcc&amp;lt;/code&amp;gt; and make sure you understand a given optimization ''before'' you enable it. The Lunar developers will not respond to bug reports of broken compiles by users with risky optimizations.&lt;br /&gt;
&lt;br /&gt;
==Installing modules==&lt;br /&gt;
&lt;br /&gt;
===Can I compile several modules at once?===&lt;br /&gt;
Is it possible to install multiple modules at the same time without breaking things?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, Lunar even promotes it. However doing so will cause installs compile slower of course. Lunar will not install core system modules like gcc and glibc while something else is installing and will wait until the rest is finished. Also, you cannot install applications while those major modules are installing, they will wait their turn until it's safe and continue to install them automatically.&lt;br /&gt;
&lt;br /&gt;
===configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check===&lt;br /&gt;
What does this error mean and how can I fix it?&lt;br /&gt;
* &amp;lt;code&amp;gt;configure: error: C preprocessor &amp;quot;/lib/cpp&amp;quot; fails sanity check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Your kernel headers are missing from &amp;lt;code&amp;gt;/usr/include&amp;lt;/code&amp;gt;. This means the C PreProcessor cannot verify that it has the proper cached copies of those vital header files. You need to install the proper ones manually. Here's how:&lt;br /&gt;
&lt;br /&gt;
 lin kernel-headers-2.4&lt;br /&gt;
&lt;br /&gt;
This might work for you! (Use the 2.6 version if needed of course)&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /usr/include/{linux,asm}&lt;br /&gt;
&lt;br /&gt;
to create the two target dirs, if needed. Then execute:&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/linux /usr/include/&lt;br /&gt;
 cp -av /usr/src/linux/include/asm/* /usr/include/asm/&lt;br /&gt;
&lt;br /&gt;
to copy the files manually. Be warned that the second command has to be done this way since &amp;lt;code&amp;gt;/usr/src/linux/include/asm&amp;lt;/code&amp;gt; is a softlink to your arch asm header files, asm points to asm-i386, on x86 machines. So if, on the other hand, you had copied&lt;br /&gt;
&lt;br /&gt;
 cp -av /usr/src/linux/include/asm /usr/include/&lt;br /&gt;
&lt;br /&gt;
you would then get a softlink to nowhere under &amp;lt;code&amp;gt;/usr/include/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Last, you can always try to unpack the kernel tarball you have into &amp;lt;code&amp;gt;/usr/src/linux&amp;lt;/code&amp;gt; and manaully link or copy the headers over yourself.&lt;br /&gt;
&lt;br /&gt;
===Can I add more window managers to gdm?===&lt;br /&gt;
How do I add other window managers to the sessions list on gdm?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Copy the desktop startup files to &amp;lt;code&amp;gt;/etc/X11/dm/Sessions/&amp;lt;/code&amp;gt;. That works with gdm. For kdm you will have to copy them to &amp;lt;code&amp;gt;$KDE_PREFIX/share/apps/kdm/sessions&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===How do I get Flash to work in Mozilla or Firefox?===&lt;br /&gt;
How do I get Flash to work in Mozilla or Firefox?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
If you are using Mozilla or Firefox, then you can simply do a &amp;lt;code&amp;gt;lin flash-plugin&amp;lt;/code&amp;gt; and that will download and install the Macromedia Flash plugin that works with a gtk+ based mozilla through the old abi wrappers.&lt;br /&gt;
&lt;br /&gt;
The flash plugin does ''not'' work with Galeon. The Galeon developers have declined to provide the &amp;quot;old&amp;quot; abi wrappers needed for the plugin to work.&lt;br /&gt;
&lt;br /&gt;
===How do I install Java?===&lt;br /&gt;
How do I get Java for my Lunar box?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You will have to download the Java source code from Sun yourself and you have to &amp;quot;click&amp;quot; to agree on their license. You have to compile it yourself too. We don't have a Sun Java module as we currently have no way to automate the &amp;quot;click&amp;quot; to agree to the Sun Java license. See this URL for some handy info:&lt;br /&gt;
&lt;br /&gt;
http://www.linuxfromscratch.org/~tushar/hints/javafromscratch.txt&lt;br /&gt;
&lt;br /&gt;
There is a j2sdk module in moonbase which is the Blackdown port of Sun's Java Virtual Machine.&lt;br /&gt;
&lt;br /&gt;
==Lunar core tools==&lt;br /&gt;
&lt;br /&gt;
===How can I recompile my module with new options?===&lt;br /&gt;
How do I force lunar to recompile my modules with different options?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try:&lt;br /&gt;
&lt;br /&gt;
 lin -r ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -r switch will allow you to select new configuration and dependencies for modules.&lt;br /&gt;
&lt;br /&gt;
===How can I make modules recompile instead of resurrecting?===&lt;br /&gt;
How do I tell lunar to recompile my application instead of resurrecting it?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Try doing:&lt;br /&gt;
&lt;br /&gt;
 lin -c ''MODULE''&lt;br /&gt;
&lt;br /&gt;
The -c option means tells &amp;lt;code&amp;gt;lin&amp;lt;/code&amp;gt; to compile this module even if there is an install cache copy available in &amp;lt;code&amp;gt;/var/cache/lunar&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===My moonbase is gone and I can't install anything.===&lt;br /&gt;
How do I fix problems with my moonbase when it's missing or damaged?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Simple solution to this is just running:&lt;br /&gt;
&lt;br /&gt;
 lin moonbase&lt;br /&gt;
&lt;br /&gt;
This will download the latest moonbase from the internet, and restore it to working order.&lt;br /&gt;
&lt;br /&gt;
===What is a module?===&lt;br /&gt;
What is a [[module]] and what does it do??&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A [[module]] is a set of files that tell the core tools the following:&lt;br /&gt;
&lt;br /&gt;
* What name, version, and other properties a package has&lt;br /&gt;
* Where to download all needed source files&lt;br /&gt;
* What other modules are required, or conflict with this one&lt;br /&gt;
* How to unpack the source files, how to patch&lt;br /&gt;
* How to configure the code&lt;br /&gt;
* How to compile&lt;br /&gt;
* How to install everything&lt;br /&gt;
* What else to do with it&lt;br /&gt;
&lt;br /&gt;
The [[module]] is coded in a set of files in a directory structure, and scripted in bash.&lt;br /&gt;
&lt;br /&gt;
===What is the Moonbase?===&lt;br /&gt;
What is that thing you call [[Moonbase]]?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moonbase]] is a database with [[modules]]. In this database there are description of packages that tell the core tools where to download, how to compile, and how install a [[module]]. You can consider this the lunar equivalent of portage, grimoire, ports, etc.&lt;br /&gt;
&lt;br /&gt;
===What is theedge?===&lt;br /&gt;
What is theedge?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[theedge]] is the same as lunar, and also known as the core code. Theedge is just another version of lunar. These two pieces of code install your packages, but they do not contain package descriptions. Those are defined in moonbase.&lt;br /&gt;
&lt;br /&gt;
[[Theedge]] is a development version of [[lunar]]. Often there are much more features in theedge, and bugs are fixed quicker as well. However, if you do not like all this tweaking on your system, we advice you to use the stable lunar core tools instead on your system.&lt;br /&gt;
&lt;br /&gt;
You can install [[theedge]] by issuing:&lt;br /&gt;
&lt;br /&gt;
 lin theedge&lt;br /&gt;
&lt;br /&gt;
Theedge is automatically updated if you do a &amp;lt;code&amp;gt;lunar renew&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lunar update&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lunar-Linux Installation==&lt;br /&gt;
&lt;br /&gt;
===So how should I partition my di&lt;br /&gt;
I'm setting up lunar from scratch, but how should I partition my disk for a server or desktop system?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Server systems have very different demands than desktops. It's all about flexibility. First desktops:&lt;br /&gt;
&lt;br /&gt;
''desktops'' commonly have one hard disk. You don't want to reformat or repartition often, so you just want to be done with it at once. The easiest is just to setup 2 (two) partitions: one root filesystem big enough for all lunar software, and the rest for &amp;lt;code&amp;gt;/home&amp;lt;/home&amp;gt;. Typically, lunar occupies between 4 and 12 gb based on how many applications you install. If you clean up often you can manage with 8gb, but you should keep some extra space. I certainly advise to use a swapfile instead of a swap partition: you can always later delete the swap, or move the swapfile to another disk or partition. A swap partition is harder to relocate.&lt;br /&gt;
&lt;br /&gt;
''Servers'' have different needs. First of all &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; doesn't need to be that large, but you will want to setup space for logfiles that cannot cause problems if they grow too fast. Putting &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; on separate partitions is quite normal. &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; can be abused similarly, and is mostly run in [[tmpfs]] to avoid cluttering and give fast access times. Then &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt; will be separate and the usual separate &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt;. As you can see this list is already getting quite big! Most users will actually want to make the &amp;lt;code&amp;gt;rootfs&amp;lt;/code&amp;gt; quite small (as small as 200mb sometimes!) and thus &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt; also needs to be on a separate partition.&lt;br /&gt;
&lt;br /&gt;
===Kernel features, built-in or module?===&lt;br /&gt;
When I compile a kernel, should I compile drivers that I need in the kernel image or as module?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
There are many schools of thought on kernel compiling. One is to build everything into the main kernel without modules. The other one takes building modules to the extreme. Here is a suggestion, if it's not needed to boot it's a module. Thus usb, input, sound, mice ACPI, network, and also cdrom, floppy, and all the non boot file systems, all get built as modules. This reduces the size of the main kernel so it can be put on a floppy. Another thing to consider is that not everything works perfectly, and some features can cause your kernel to misbehave, so if some feature is built-in, the bad behavior is practically inevitible. Instead, with a module you can choose not to load it and thus be left with a working system.&lt;br /&gt;
&lt;br /&gt;
Please note that some people need to make some features built into their kernel and vice versa, do whatever works best for you.&lt;br /&gt;
&lt;br /&gt;
===QEMU and Lunar ISO testing===&lt;br /&gt;
How do I use qemu to try out lunar ISO's?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Just a quick note on how to use qemu for testing a Lunar Linux installation. See &amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/qemu/DETAILS&amp;lt;/code&amp;gt; for a description of qemu. Think of it as a low-cost (''read: free'') version of a virtual machine, that has quite a few useful features and is under active development.&lt;br /&gt;
&lt;br /&gt;
A very simple way to just test a Lunar ISO for booting purposes is:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d&lt;br /&gt;
&lt;br /&gt;
If you want to test a full install, then create a 512 megabyte sparse root_fs image with this &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; command:&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=hda.img bs=$((1024 * 1024)) count=0 seek=512&lt;br /&gt;
&lt;br /&gt;
Now invoke qemu:&lt;br /&gt;
&lt;br /&gt;
 qemu -cdrom lunar-1.5.0-i686.iso -boot d -hda hda.img&lt;br /&gt;
&lt;br /&gt;
You can then proceed to test your Lunar install. Refer the qemu homepage for further tips and tricks. qemu can also be quite easily used to test if your brand new kernel is bootable or not, which is quite neat.&lt;br /&gt;
&lt;br /&gt;
Note that you should say yes to using SDL as an optional_depends. The gui version of qemu is ''very'' nice in its own little X11 window.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===How do I unpack an .RPM file in lunar?===&lt;br /&gt;
How do I install RPM files in lunar? Is that possible?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The easiest way to unpack a rpm file is to use the module called &amp;lt;code&amp;gt;rpmunpack&amp;lt;/code&amp;gt;. Simply run &amp;lt;code&amp;gt;rpmupack ''XYZ''.rpm&amp;lt;/code&amp;gt; for your RPM. This will create a cpio file (''XYZ.cpio.gz'' and ''XYZ.cpio.bz2'' are not uncommon). Once you perform any additional uncompression with &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;bunzip2&amp;lt;/code&amp;gt;, you can then extract it using &amp;lt;code&amp;gt;cpio -i -d &amp;amp;lt; XYZ.cpio&amp;lt;/code&amp;gt; -- After all that you should be all done. If you are trying to rpmunpack a source RPM (i.e. .src.rpm) file then ''XYZ.cpio'' may further contain a tar.bz2 or tar.gz source tarball.&lt;br /&gt;
&lt;br /&gt;
In the zbeta section of moonbase, there is an '''''unsupported''''' module called &amp;lt;code&amp;gt;rpm&amp;lt;/code&amp;gt; for those of you that are really desperate.&lt;br /&gt;
&lt;br /&gt;
You might want to do &amp;lt;code&amp;gt;man cpio&amp;lt;/code&amp;gt;, to check out additional cpio parameters that may interest you, such as the -L switch.&lt;br /&gt;
&lt;br /&gt;
===What is that in the Lunar-Linux logo?===&lt;br /&gt;
What is that logo of yours? It looks like a &amp;lt;nowiki&amp;gt;[cat|ferret|dog|owl|insert nutty animal here]&amp;lt;/nowiki&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The logo is a [[wikipedia:Rock Hopper Penguin|Rock Hopper Penguin]]. It's a kind of nasty penguin, the one that crowd up in thousands to take over the continent. They have a few long feathers sticking out at their &amp;quot;ears&amp;quot; sideway, just like some owl species do.&lt;br /&gt;
&lt;br /&gt;
You can check out [http://images.google.com/images?q=Rock+Hopper+Penguin Google Images] for lots of Rock Hopper Penguin pictures!&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-17T22:34:24Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About this installation manual==&lt;br /&gt;
&lt;br /&gt;
Unfortunately, this manual is very incomplete and inspecific. You will see examples that are not tailored towards your to-be built server or workstation, optimizations that are overly broad or too specific, and examples that don't apply to any real situations. We tried hard to give you the idea of how much power you have over how you can setup your system, but we are forgetting to tell you how to run your own server or desktop (or other system) at all. That means that the examples and steps taken most probably do not apply to your situation at all.&lt;br /&gt;
&lt;br /&gt;
Do not dispair: if you understand what is going on and you get the idea, the installer will allow you to do pretty much everything you want to do with your system. There are really (almost) no limits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0. (''Check the main site for the actual latest version!'')&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program that can extract bzip2 archives, like WinZip (also capable of extracting bzip2 archives under windows are Winrar, powerarchiver and 7-Zip). Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
It should be noted that since 1.5.0, the iso tries to autodetect some hardware (mostly scsi drivers and network interfaces) during this stage. This will help you establish a network connection if you desire so during installation. For this reason the prorams 'dhcpcd' and 'ftp' are already available at this stage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Virtual Consoles==&lt;br /&gt;
&lt;br /&gt;
Once the ISO has booted into the installer, you can immediately shell out or switch to one of the other virtual consoles. These will have ready to go root shells and are available throughout the installer sequence. With these you can start rescue actions, setup networking or double check the install progress and make manual adjustments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Language and keyboard interface Settings==&lt;br /&gt;
&lt;br /&gt;
After reading the introduction, you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
Less important for most people is the ability to choose the console font, although it may help display some non-english characters. Most people will want to set the system-default language variable and editor though. All these values are unset by default, so make sure you set them now.&lt;br /&gt;
&lt;br /&gt;
The keymap table allows people to use azerty and dvorak keyboards, and much more. This is especially required for non-english keyboards which provide many accented characters.&lt;br /&gt;
&lt;br /&gt;
All these language and keymap settings might not apply to the lunar code itself, which (currently) does not have any international support, but most programs that run during the installer sequence, and after booting into your new system, will be affected properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating or editing Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
(''If you're wondering about this choice of partitions: it's really just an example. Read the [[FAQ]] on what makes sense in the real world''))&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 or Pentium Pro falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing kernels==&lt;br /&gt;
&lt;br /&gt;
===Installing a precompiled kernel===&lt;br /&gt;
&lt;br /&gt;
The ISO's come with a variation of precompiled kernels and modules that should work for most people. If you have problems getting your kernel to compile, install or getting the right drivers, or just want to get a quick start at lunar, we ''suggest'' that you use this option instead of compiling your own kernel. You can later of course compile as many kernels as you want.&lt;br /&gt;
&lt;br /&gt;
===Building Your Customized Linux Kernel===&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* ''linux-2.4'' -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. &lt;br /&gt;
* ''linux-2.4-agr'' -- The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* ''linux-2.4-grsec'' -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* ''linux-2.4-stable'' -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
* ''linux-2.4-vanilla'' -- A completely unpatched kernel tree.&lt;br /&gt;
* ''linux-2.4-om'' -- A kernel specifically meant for clustering use.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux-2.4-agr. &lt;br /&gt;
&lt;br /&gt;
Before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* ''config'' -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* ''menuconfig'' -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* ''xconfig'' -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/lunar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other settings==&lt;br /&gt;
&lt;br /&gt;
The installer will prompt you now for some more settings. You should set a root password and generate ssh host keys to identify your box uniquely for later. You might also want to administrate services on the newly installed machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-17T22:18:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Getting the ISO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0. (''Check the main site for the actual latest version!'')&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program that can extract bzip2 archives, like WinZip (also capable of extracting bzip2 archives under windows are Winrar, powerarchiver and 7-Zip). Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 or Pentium Pro falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing kernels==&lt;br /&gt;
&lt;br /&gt;
===Installing a precompiled kernel===&lt;br /&gt;
&lt;br /&gt;
The ISO's come with a variation of precompiled kernels and modules that should work for most people. If you have problems getting your kernel to compile, install or getting the right drivers, or just want to get a quick start at lunar, we ''suggest'' that you use this option instead of compiling your own kernel. You can later of course compile as many kernels as you want.&lt;br /&gt;
&lt;br /&gt;
===Building Your Customized Linux Kernel===&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* ''linux-2.4'' -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. &lt;br /&gt;
* ''linux-2.4-agr'' -- The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* ''linux-2.4-grsec'' -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* ''linux-2.4-stable'' -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
* ''linux-2.4-vanilla'' -- A completely unpatched kernel tree.&lt;br /&gt;
* ''linux-2.4-om'' -- A kernel specifically meant for clustering use.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux-2.4-agr. &lt;br /&gt;
&lt;br /&gt;
Before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* ''config'' -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* ''menuconfig'' -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* ''xconfig'' -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/lunar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other settings==&lt;br /&gt;
&lt;br /&gt;
The installer will prompt you now for some more settings. You should set a root password and generate ssh host keys to identify your box uniquely for later. You might also want to administrate services on the newly installed machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:Kernel_2.6._HowTo</id>
		<title>Installation:Kernel 2.6. HowTo</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:Kernel_2.6._HowTo"/>
				<updated>2005-08-14T20:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Why would I want to switch away from my 2.4 kernel? */ removed lies!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=What's this 2.6 kernel hoo-hah about anyway?=&lt;br /&gt;
&lt;br /&gt;
The Linux kernel version 2.6 is the current stable Linux kernel. Although Lunar Linux is a bleeding edge distribution, we do not think that a jump to a full 2.6 install is a good idea for production servers yet. A desktop can run comfortably on 2.6, but if you are a newbie, we strongly recommmend you starting off with 2.4. If you still think about going ahead, having a bootable fall back 2.4 kernel is useful, specially when you configure a 2.6 kernel for the first time.&lt;br /&gt;
&lt;br /&gt;
Having said that, and keeping it in mind, we will describe how to install a 2.6 kernel, using our lunar kernel module called linux-2.6 (that only holds stable kernel.org releases). Although we are going to use linux-2.6 here, this howto can be applied for any other of our linux-2.6 set (currently linux-2.6-ck, linux-2.6-grsec, linux-2.6-inotify, linux-2.6-mm and linux-2.6-prepatch).&lt;br /&gt;
&lt;br /&gt;
=When did this all come about?=&lt;br /&gt;
&lt;br /&gt;
The 2.5 kernel became grown up on the 18th of December 2003, when the stable 2.6 tree was released. Before that, since April 2003, we have had a 2.6 module in moonbase.&lt;br /&gt;
&lt;br /&gt;
=Who wrote all this fine software?=&lt;br /&gt;
&lt;br /&gt;
The main 2.5 and the later 2.6 trees have been maintained by Linus Torvalds. This responsability is now in hands of Andrew Morton, who for testing purposes keeps his own set of patches against the 2.6 tree. The patches' names are suffixed with -mm. A Lunar module with the mm patch is available, though not recommended for first 2.6 installs. If you have a problem with the current served kernel in linux-2.6, linux-2.6-mm maybe a temporary solution. Once tested, the features that are doing fine in mm patches are merged into the main 2.6 tree, so if linux-2.6-mm works now, it is very likely linux-2.6 will as well very soon.&lt;br /&gt;
&lt;br /&gt;
=Why would I want to switch away from my 2.4 kernel?=&lt;br /&gt;
&lt;br /&gt;
The first time I tried a (then) 2.5 kernel, I did so because of curiosity. I wanted to feel directly how this new thing ran. I've hardly ever stopped using it since then. If you have an X server running on your 2.6 kernel, the first thing that you'll notice is your mouse speed skyrocket. The responsiveness of the X apps has taken a huge step forward. This is only one of the many new features you will find in the 2.6 series.&lt;br /&gt;
&lt;br /&gt;
Apparently, there has been a focus on server side, though the average user should be pleased, as exampled above with X. PDA and embedded linux users should be happy, too.&lt;br /&gt;
&lt;br /&gt;
From server side, the leap from the 2.4 to the 2.6 kernel is more than a simple version change:&lt;br /&gt;
* 64 Bit&lt;br /&gt;
* NUMA ( Non-Uniform Memory Access ): For clusters with a high amount of nodes, memory sharing is vital. NUMA adresses this problem.&lt;br /&gt;
* Better performance under heavy loads: Many benchmarks demonstrate 2.4 is completely outperformed. High payload environments are webservers and databases, for example.&lt;br /&gt;
* The addressing space for unique users is no more 16 bit but 32 bit. so the user support has grown to 4 billion from 65,000.&lt;br /&gt;
* Higher limits: PIDs (process IDs) have grown from 32,000 to 1 billion, RAM's max is now 64 GB instead of 4 GB, and filesystem's top is set at 16 Terabytes, instead of 4.&lt;br /&gt;
* Higher bandwidth network support.&lt;br /&gt;
&lt;br /&gt;
Desktop/laptop have had their share of new features as well:&lt;br /&gt;
* ALSA (Advanced Linux Sound Architecture) has been merged in the kernel tree (and it has better joystick support.&lt;br /&gt;
* Broader wireless and native Bluetooth support.&lt;br /&gt;
* Software suspend-to-disk and speed scaling for laptops.&lt;br /&gt;
* Samba protocol update, to interact better with Windows environments.&lt;br /&gt;
&lt;br /&gt;
Embedded systems have also been taken care of:&lt;br /&gt;
* uCLinux support.&lt;br /&gt;
* Support for more types of MMU-less processors, like PDAs, for example.&lt;br /&gt;
* Embedded Profile support.&lt;br /&gt;
&lt;br /&gt;
At least the first 2 (servers and desktops/laptops) will benefit from some other upgrades:&lt;br /&gt;
* New scheduler: optimization of system resources, no matter if you have 1 CPU or you have many.&lt;br /&gt;
* Better I/O scheduler, faster read/writes.&lt;br /&gt;
* IPSec: IP Security protocol&lt;br /&gt;
&lt;br /&gt;
Those most probably are not all, but I suppose you can get a slight idea on how things have changed. Remember that 2.6 kernel is fairly young.&lt;br /&gt;
Where would I want to install it?&lt;br /&gt;
&lt;br /&gt;
Starting from the features listed above, the 2.6 kernel would be suited from any machine like a big cluster, SMP machine, down to desktop a or something as small as a handheld. But I have my own case to show you that 2.6 kernels work. I have 2 desktops and a server, all 3 with 2.6 kernels and fully 2.6 installs, and I must say I have no complaint. Don't think I'm alone here, since I have friends that I have helped install 2.6 kernels (no big deal, as you will see), or they have done so by themselves on their desktops, laptops or servers. They didn't worry about if their hardware was the oldest or brand new, they jumped anyway. The news I have is that they are quite happy. Sum up Lunar users and fellow Lunar devs, and I know a good lot running 2.6 kernels. And you are hopefully next :)&lt;br /&gt;
&lt;br /&gt;
=Okay. I'm convinced. How do I install this thing?=&lt;br /&gt;
&lt;br /&gt;
Before you do anything else, I'd recommend you take your time to do the switch, because changing from a 2.4 tree to a 2.6 tree kernel is not so simple as compiling a 2.6 kernel with your 2.4 .config. Please don't rush!&lt;br /&gt;
&lt;br /&gt;
==Installing the Kernel==&lt;br /&gt;
&lt;br /&gt;
The first stage of a jump to a 2.6 kernel install would be to install the latest available in moonbase; the second stage would be setting all your Lunar install to be 2.6 based, recompiling each Lunar module against 2.6 headers, but you need not worry about that, if you don't want to -it is not necessary, though it will be explained. By the way, you can still run a 2.6 kernel in a 2.4 header environment, if you just want to give it a small test.&lt;br /&gt;
&lt;br /&gt;
To install the last 2.6 kernel from moonbase all you have to do is to install the linux-2.6 Lunar module. You will start the compile from a default .config the kernel tarball brings, since the difference between 2.6's config and 2.4's is too big to import your current 2.4 kernel configuration -in some cases it has even been problematic. I again here strongly recommend walking through the whole kernel's configuration. This is important because the configuration's hierarchy tree has changed a lot: things have been moved, others taken out, and new features have been fitted in (that you might want to know).&lt;br /&gt;
&lt;br /&gt;
Now let's get to the nitty gritty of it, and do the install itself. As root:&lt;br /&gt;
&lt;br /&gt;
  root@myshinybox ~ # lin linux-2.6&lt;br /&gt;
&lt;br /&gt;
will fetch the sources and prepare the build. As a dependency, the module-init-tools Lunar module will be installed, because it is needed for kernel module management (as the modutils Lunar module is needed for 2.4 kernels).&lt;br /&gt;
&lt;br /&gt;
Now you will be asked a few questions, first of all about your bootloader: &lt;br /&gt;
&lt;br /&gt;
  Choose either GRUB or LILO&lt;br /&gt;
  linux-2.6: Use LILO? [y]&lt;br /&gt;
&lt;br /&gt;
If you answer 'y', LILO will be used; with any other answer, GRUB will be used. If you didn't say yes, so you have picked GRUB, you'll be prompted with another GRUB question: &lt;br /&gt;
&lt;br /&gt;
  linux-2.6: Configure grub? [n]&lt;br /&gt;
&lt;br /&gt;
If you say no, grub will be handled automagically. If you say yes, you will have to configure grub yourself after the kernel build. If, on the other hand, you said yes to LILO, you should see, analogously to GRUB:&lt;br /&gt;
&lt;br /&gt;
  linux-2.6: Configure lilo? [n]&lt;br /&gt;
&lt;br /&gt;
Once again, if you say 'y' (yes) you will have to hand configure lilo.conf after the kernel build has finished. If you said no, lin will take care for you. For now, a safe answer is say no to bootloader configuration, so Lunar takes care of your grub or lilo.&lt;br /&gt;
&lt;br /&gt;
Next step to cope with is what interface we are going to use to configure the kernel: &lt;br /&gt;
&lt;br /&gt;
  Reconfiguration is optional.&lt;br /&gt;
  linux-2.6: Do you prefer make menuconfig over make config [y]&lt;br /&gt;
&lt;br /&gt;
Unless you really know what you are doing, say 'y' to use a ncurses interface (make menuconfig) and not use a questionaire method (make config). Any other answer than 'y' will lead you to make config.&lt;br /&gt;
&lt;br /&gt;
Now that questions have been dealt with, the source will be downloaded. Once the download finished, the source has been unpacked, and the build began, your interface of choice to the kernel's configuration will be shown. Choose what you need for your box.&lt;br /&gt;
&lt;br /&gt;
After kernel configuration, you will be prompted one more time:&lt;br /&gt;
&lt;br /&gt;
  Repeat config? [n]&lt;br /&gt;
&lt;br /&gt;
If you think you missed something and you want to go back to kernel configuration, you are still in time; yet, if you are happy already, just say 'n', and watch your kernel build. You will prompted with this question every time you finish your config method.&lt;br /&gt;
&lt;br /&gt;
When the kernel has succesfully built, two things may happen, depending on what you answered previously: if you have answered yes to configure your bootloader, you will see your bootloader's config file opened in an editor for you. A new kernel entry, for your new kernel will be there, so you can do some tweaking if you like. If you decided to let lin take care (answered 'n' to configure your bootloader), this will be done without your interaction.&lt;br /&gt;
&lt;br /&gt;
If walking the kernel's configuration you added pts support, you must remember to add a line to /etc/fstab in order to have it mounted at boot time:&lt;br /&gt;
&lt;br /&gt;
   devpts  /dev/pts        devpts  defaults        0 0&lt;br /&gt;
&lt;br /&gt;
Yay, done with the kernel! ;)&lt;br /&gt;
&lt;br /&gt;
== udev and sysfs==&lt;br /&gt;
&lt;br /&gt;
udev is a new feature in 2.6. It brings dynamic userspace dev nodes, the equivalent in userspace of what devfs did in kernel for 2.4. Udev is based on another new feature: sysfs. Sysfs is a virtual filesystem, that lists system information in a hierarchical way (like a boosted proc, so you can get the idea). Both udev and sysfs, unlike other features in 2.6 that have been backported, are not seen in 2.4 kernels.&lt;br /&gt;
&lt;br /&gt;
There is no fixed reason why you should install udev, though it will simplify a lot your work, so we do recommend doing so. A good reason is that if you are used to using dynamic dev nodes, sooner or later devfs will be deprecated (it is already marked as such in the kernel) and will be droped out. Another solution is having a static /dev with permanent nodes, that you can hand create each time you need a new node, or create the whole lot of device nodes using the makedev Lunar module.&lt;br /&gt;
&lt;br /&gt;
udev uses hotplug to create the nodes under /dev, so it is completely independant from the running kernel. It uses namedev to set device naming policies, and libsysfs to query sysfs.&lt;br /&gt;
&lt;br /&gt;
To install udev, as root:&lt;br /&gt;
&lt;br /&gt;
   root@myshinybox ~ # lin udev&lt;br /&gt;
&lt;br /&gt;
will install udev, and sysfsutils and hotplug as dependencies. One thing you have to know about udev is that its use excludes the use of devfs. You can still have devfs support as a module but you must not enable &amp;quot;automatically mount devfs at boot&amp;quot; (see the kernel's Filesystems section, subsection pseudo filesystems). Furthermore, the kernel has to be hotplug aware, so this option should be included when compiling a kernel for udev (see General Setup -&amp;gt; Support for hot-pluggable devices).&lt;br /&gt;
&lt;br /&gt;
Yay, done with udev!&lt;br /&gt;
&lt;br /&gt;
==Rebuilding software against 2.6 headers==&lt;br /&gt;
The possible second stage of a 2.6 migration would be rebuilding our software against 2.6 headers.&lt;br /&gt;
&lt;br /&gt;
Before explaining how to accomplish the 2.6 header based Lunar box, I will make one last warning: The Lunar Linux team does not officially support 2.6 installs. This is very important, because we currently do not do 2.6 specific fixes, if these collide with 2.4 only Lunar module setups (there are exceptions). If you come around any problem, please report it, as it will be taken in consideration, that is for sure. Example of this willingness to help is this howto.&lt;br /&gt;
&lt;br /&gt;
The process of switching is quite simple, really. There is a Lunar module that serves a series of sanitized kernel headers, kernel-headers-2.6, but everytime glibc is recompiled it creates a tarball from the headers under /usr/src/linux. So if the last kernel you installed was linux-2.6, you'll have a 2.6 headers tarball created from it and installed, if you recompiled glibc after installing your kernel. This is not true if you installed kernel-headers-2.6's Lunar module; glibc would still create the headers, but not install them. This is an exception to the Lunar's 2.6 non-support module scheme.&lt;br /&gt;
&lt;br /&gt;
For the sake of standarization, we recommend the install of kernel-headers-2.6. Bug tracking for you and for us will be simplified if we use the same set of headers. If each of us have our own headers with different versions, it would be harder to know if it is an app problem or a header problem. So, if you decide to take this step, and move to a fully 2.6 environment, please install kernel-headers-2.6. We all move forward together.&lt;br /&gt;
&lt;br /&gt;
Taking for granted you do want to install kernel-headers-2.6, as root type: &lt;br /&gt;
&lt;br /&gt;
   root@myshinybox ~ # lin kernel-headers-2.6&lt;br /&gt;
&lt;br /&gt;
Second step here is to rebuild your software against your new headers. This should be done in a certain order. As a base 2.6 install, from which later rebuild the rest of your apps, you should lin:&lt;br /&gt;
* kernel-headers-2.6&lt;br /&gt;
* gcc&lt;br /&gt;
* glibc&lt;br /&gt;
* installwatch&lt;br /&gt;
* binutils&lt;br /&gt;
* coreutils&lt;br /&gt;
* bzip2&lt;br /&gt;
* gzip&lt;br /&gt;
* tar&lt;br /&gt;
* diffutils&lt;br /&gt;
* findutils&lt;br /&gt;
* make&lt;br /&gt;
* grep&lt;br /&gt;
* gawk&lt;br /&gt;
* sed&lt;br /&gt;
* gettext&lt;br /&gt;
* ncurses&lt;br /&gt;
* patch&lt;br /&gt;
* texinfo&lt;br /&gt;
* bash&lt;br /&gt;
* util-linux&lt;br /&gt;
* perl&lt;br /&gt;
&lt;br /&gt;
Having done this, you will have a good base towards having a fully 2.6 install. From now on, you can rebuild in whatever order you want the rest of your installed Lunar modules so they as well are 2.6 based.&lt;br /&gt;
&lt;br /&gt;
Yay, done with headers!&lt;br /&gt;
&lt;br /&gt;
=CREDITS=&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Linux 2.6.0: What's New&amp;quot; from osdl.org&lt;br /&gt;
&lt;br /&gt;
Special thanks to : Aaron Watry, Alex Hunsaker, and Auke Kok&lt;br /&gt;
&lt;br /&gt;
Original article text by Jaime Buffery (nestu AT lunar-linux DOT org)&lt;br /&gt;
&lt;br /&gt;
Old docbook conversion and other nifty tweaks by Drew Swayze (drew AT lunar-linux DOT org)&lt;br /&gt;
&lt;br /&gt;
Copyleft 2004-2005 The Lunar-Linux Team&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-13T20:48:18Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Getting the ISO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0.&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program that can extract bzip2 archives, like WinZip (also capable of extracting bzip2 archives under windows are Winrar, powerarchiver and 7-Zip). Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing kernels==&lt;br /&gt;
&lt;br /&gt;
===Installing a precompiled kernel===&lt;br /&gt;
&lt;br /&gt;
The ISO's come with a variation of precompiled kernels and modules that should work for most people. If you have problems getting your kernel to compile, install or getting the right drivers, or just want to get a quick start at lunar, we ''suggest'' that you use this option instead of compiling your own kernel. You can later of course compile as many kernels as you want.&lt;br /&gt;
&lt;br /&gt;
===Building Your Customized Linux Kernel===&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* ''linux-2.4'' -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. &lt;br /&gt;
* ''linux-2.4-agr'' -- The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* ''linux-2.4-grsec'' -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* ''linux-2.4-stable'' -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
* ''linux-2.4-vanilla'' -- A completely unpatched kernel tree.&lt;br /&gt;
* ''linux-2.4-om'' -- A kernel specifically meant for clustering use.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux-2.4-agr. &lt;br /&gt;
&lt;br /&gt;
Before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* ''config'' -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* ''menuconfig'' -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* ''xconfig'' -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/lunar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other settings==&lt;br /&gt;
&lt;br /&gt;
The installer will prompt you now for some more settings. You should set a root password and generate ssh host keys to identify your box uniquely for later. You might also want to administrate services on the newly installed machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-13T15:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0.&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program like WinZip. Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing kernels==&lt;br /&gt;
&lt;br /&gt;
===Installing a precompiled kernel===&lt;br /&gt;
&lt;br /&gt;
The ISO's come with a variation of precompiled kernels and modules that should work for most people. If you have problems getting your kernel to compile, install or getting the right drivers, or just want to get a quick start at lunar, we ''suggest'' that you use this option instead of compiling your own kernel. You can later of course compile as many kernels as you want.&lt;br /&gt;
&lt;br /&gt;
===Building Your Customized Linux Kernel===&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* ''linux-2.4'' -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. &lt;br /&gt;
* ''linux-2.4-agr'' -- The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* ''linux-2.4-grsec'' -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* ''linux-2.4-stable'' -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
* ''linux-2.4-vanilla'' -- A completely unpatched kernel tree.&lt;br /&gt;
* ''linux-2.4-om'' -- A kernel specifically meant for clustering use.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux-2.4-agr. &lt;br /&gt;
&lt;br /&gt;
Before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* ''config'' -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* ''menuconfig'' -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* ''xconfig'' -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/lunar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Other settings==&lt;br /&gt;
&lt;br /&gt;
The installer will prompt you now for some more settings. You should set a root password and generate ssh host keys to identify your box uniquely for later. You might also want to administrate services on the newly installed machine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-13T15:08:19Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Adding Additional GCC Optimizations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0.&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program like WinZip. Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
'''You can safely SKIP this entire step!'''&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
==Building Your Customized Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* linux -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. When this kernel is selected, you will want to decide whether to use the standard or aggresive patchset or not. The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* linux-grsec -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* linux-stable -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux with the aggressive patchset. Once you begin the kernel build, the first question you need to answer is whether you wish to use lilo or grub. We are going to use lilo in our example, so we will answer yes here.&lt;br /&gt;
&lt;br /&gt;
When we say yes to lilo, the next question is do we want to automatically configure and run lilo at the completion of building the kernel. If you want a completely customized lilo configuration, you would say no to this question, however for our example we are going to keep things simple and say yes here.&lt;br /&gt;
&lt;br /&gt;
The next question wants to know if we would like to hand edit our lilo.conf file for any additional changes after it has done the automatic configuration for us. We are going to say yes here so that once the kernel build is done, we can see what Lunar has set up for us.&lt;br /&gt;
&lt;br /&gt;
Next, the installer would like to know if we would like to use the aggressive patchset or not. We are going to say yes here.&lt;br /&gt;
&lt;br /&gt;
The final question before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* config -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* menuconfig -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* xconfig -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/luar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing The MBR==&lt;br /&gt;
&lt;br /&gt;
If you installed lilo or grub into the MBR then you don't need to use this step. If, however, you chose to place lilo or grub in the first sector of the /boot partition, then you would use this option. The MBR install is especially useful if the hard drive you are installing Lunar on is brand new and has never been used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-13T15:01:38Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Transferring Lunar To Your Partitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0.&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program like WinZip. Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
==Installing Lunar==&lt;br /&gt;
&lt;br /&gt;
Next, we need to ''format'' your partitions, ''mount'' them in the right place, create ''swap'' and transfer the entire Lunar system to the partitions that you now have created. This happens all in one single step.&lt;br /&gt;
&lt;br /&gt;
Select ''Install Lunar'', and the system will proceed to transfer all of the neccessary files for you. The installer will display progress as packages are transferred to your system and you'll have some idea how long it will take. On normal machines, this should take about 5 minutes.&lt;br /&gt;
&lt;br /&gt;
At the end of this step, the installer sets various system parameters like language, timezone and vital package configuration files in order for your machine.&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building Your Customized Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* linux -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. When this kernel is selected, you will want to decide whether to use the standard or aggresive patchset or not. The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* linux-grsec -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* linux-stable -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux with the aggressive patchset. Once you begin the kernel build, the first question you need to answer is whether you wish to use lilo or grub. We are going to use lilo in our example, so we will answer yes here.&lt;br /&gt;
&lt;br /&gt;
When we say yes to lilo, the next question is do we want to automatically configure and run lilo at the completion of building the kernel. If you want a completely customized lilo configuration, you would say no to this question, however for our example we are going to keep things simple and say yes here.&lt;br /&gt;
&lt;br /&gt;
The next question wants to know if we would like to hand edit our lilo.conf file for any additional changes after it has done the automatic configuration for us. We are going to say yes here so that once the kernel build is done, we can see what Lunar has set up for us.&lt;br /&gt;
&lt;br /&gt;
Next, the installer would like to know if we would like to use the aggressive patchset or not. We are going to say yes here.&lt;br /&gt;
&lt;br /&gt;
The final question before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* config -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* menuconfig -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* xconfig -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/luar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing The MBR==&lt;br /&gt;
&lt;br /&gt;
If you installed lilo or grub into the MBR then you don't need to use this step. If, however, you chose to place lilo or grub in the first sector of the /boot partition, then you would use this option. The MBR install is especially useful if the hard drive you are installing Lunar on is brand new and has never been used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0</id>
		<title>Lunar Linux:Installation/1.5.0</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux:Installation/1.5.0"/>
				<updated>2005-08-13T14:58:13Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Selecting Partitions and Filesystems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lunar Linux is a revolutionary linux distribution in that it is not binary based, as are most distributions, but is instead built entirely by compiling sourcecode, using your own custom optimizations. Essentially, it installs a complete bootstrap development system on your machine, and then you tell the Lunar package manager what tools you want, and it builds the entire system by downloading current source code and locally compiling an optimized system tailored toward your specific needs.&lt;br /&gt;
&lt;br /&gt;
The result is a leaner, meaner, refreshingly uncluttered, and strikingly faster operating system than most linux distributions.&lt;br /&gt;
&lt;br /&gt;
This installation guide is designed to get you through the installation process as painlessly as possible. It assumes that you have some experience with linux or another Unix variant, and have a general idea of what you are doing. If you are unfamiliar with such things as partitions, or have never used linux before, Lunar may not be the best introduction for you into the world of open source. There are always Lunar gods available on irc.freenode.net in the #lunar channel to answer any questions that this manual may not make quite clear enough.&lt;br /&gt;
&lt;br /&gt;
With that said, we hope you enjoy using Lunar!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Getting the ISO==&lt;br /&gt;
&lt;br /&gt;
The primary site for retrieving the ISO is [http://www.lunar-linux.org/ lunar-linux.org]. There, you will find links to our US, EU, and Internet2 mirrors, as well as a Bittorrent link. As of this writing, the current version of the Lunar ISO is version 1.5.0.&lt;br /&gt;
&lt;br /&gt;
Locate and retrieve the file lunar-1.5.0-i686.iso.bz2. After downloading this file, you will need to unpack the ISO using bzip2. Windows users will need a program like WinZip. Mac should unzip the file by itself. Then all that is left to do is use your favorite program to burn the ISO to a cdrom and begin the installation. Lunar can also be installed without using a CD. If you need to do it this way, our [[FAQ]] provides simple instructions.&lt;br /&gt;
&lt;br /&gt;
It should be noted that this ISO and Lunar use devfs for device management. If you prefer the &amp;quot;old-school&amp;quot; method of manually installing devices, there is an ISO available with this option at [http://thing.fwsystems.com/build/lunar/lunar-1.3_stddev.iso.bz2 thing.fwsystems.com].&lt;br /&gt;
&lt;br /&gt;
We are assuming the you are installing Lunar as your primary OS. Make sure you have a backup of any important data that you need to retain. The Lunar Linux Project and its developers are not responsible in any way for any loss of data on your system!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Booting the ISO==&lt;br /&gt;
&lt;br /&gt;
Upon booting the ISO, the first thing you will see are options for booting the ISO kernel, or for performing RAM tests. There is even a safe mode which will disable DMA, MTRR, RAID, LVM, USB keyboards, NTFS, HPFS, Advanced Partitions, and Firewire. Most folks, however, will be just fine pressing enter at the boot prompt and loading the default kernel.&lt;br /&gt;
&lt;br /&gt;
After loading the kernel, the first screen presents you with a few options. If there are extra modules you need to load in order continue with the install, they can be loaded here. There is also a shell option. However, if you are using this ISO for rescue purposes, you do not want to shell out here; rather continue booting and shell out in the next section. Most people will select &amp;quot;continue booting&amp;quot; here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Customization Settings==&lt;br /&gt;
&lt;br /&gt;
We now have some customization settings to configure. Select the option &amp;quot;Native Language Support&amp;quot;, where you will be presented with options for choosing the proper font, keymap, and language for your install.&lt;br /&gt;
&lt;br /&gt;
You will also need to choose an editor, as you are going to need one later on in the installation for setting up your lilo or grub configuration. The three choices available are vi, joe, and nano. If you have never used a text editor in linux before, nano is the best choice for you. If you skip the Native Language Support option, the system will install the default editor, nano, for you. When you have finished setting up your options, press cancel to return to the main setup menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Partitions==&lt;br /&gt;
&lt;br /&gt;
The next step is to set up partitions on your hard drive. Upon selecting the &amp;quot;Partition Drive&amp;quot; option, you will be shown a list of all the discs the kernel has detected. For this guide, we will assume that you have one hard drive connected via an IDE channel, which will show up in the menu as &amp;quot;disc0&amp;quot;. After selecting the disc to partition, you are given the option of using one of three partitioning programs. They are:&lt;br /&gt;
&lt;br /&gt;
* cfdisk -- A menu driven partitioner, and very easy to use. If you are unfamiliar with various partitioning programs, this is the best option for you.&lt;br /&gt;
* fdisk -- Text based partitioner that requires a little more know-how than cfdisk. More experienced users will probably use this program. However new users should not be daunted, as it does have help offered at every step.&lt;br /&gt;
* parted -- Text based partitioner that is good for advanced users. Parted is excellent for resizing current partitions on your hard disk, however be forewarned that resizing partitions is an excellent way to hose your entire disc.&lt;br /&gt;
&lt;br /&gt;
For our example, we have a 40GB IDE drive and we'll set up six partitions; /, /boot, /home, /usr, /var, and a swap partition. It's a good idea to keep certain directories, such as /var and /usr on separate partitions, as this can save you a lot of headache in the future incase your disk ever completely fails on you and you need to recover data (god forbid!). Also, when you have a separate /boot partition as we have in our example, you need to have your partitioning program mark that partion as active or bootable. In our example, if we were using fdisk, you would press &amp;quot;a&amp;quot; at the command line, and then select part1 as the active partition.&lt;br /&gt;
&lt;br /&gt;
You might also want to install a /tmp partition. By default, Lunar will create a tempfs filesystem mounted on /tmp (tempfs minimizes filesystem fragmentation because it resides in volatile memory). This can be a good choice if you have a lot of memory on your machine. If memory is tight, we recommend creating a /tmp partition to minimize filesystem fragmentation.&lt;br /&gt;
&lt;br /&gt;
It is important to note that you &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''can not''&amp;lt;/span&amp;gt; mount the directories /etc, /bin, /sbin, /dev, /lib and /proc on separate partitions. These directories need to be contained within the root (&amp;quot;/&amp;quot;) directory. The installation program should block you from doing this, but it's best not to try.&lt;br /&gt;
&lt;br /&gt;
Here's our partition setup:&lt;br /&gt;
&lt;br /&gt;
  1 /boot 100MB&lt;br /&gt;
  2 / 4GB&lt;br /&gt;
  3 swap 1GB&lt;br /&gt;
  5 /usr 10GB&lt;br /&gt;
  6 /var 10GB&lt;br /&gt;
  7 /home 15GB&lt;br /&gt;
&lt;br /&gt;
You'll notice that there is no fourth partition in our list above. In order for you to have more than four partitions on a single drive, the fourth partition is made into what is known as an extended or logical partition in which the fifth, sixth, and seventh (etc, etc) partitions reside. For our example above, if we were using fdisk, we would make the fourth partition an extended/logical partition that was 35GB, and then the fifth, sixth, and seventh partitions in our scheme resided within it. However, if we used cfdisk, we would just worry about creating six partitions, making sure that the first three are the primary type, and the last three logical.&lt;br /&gt;
&lt;br /&gt;
Note that the names and mount points for these partitions will be assigned during the next step of this process, when you mount the partitions. Write down exactly what partitions you are planning to create because it can otherwise get confusing!&lt;br /&gt;
&lt;br /&gt;
Lunar offers two choices when it comes to swap. You can set up a swap partition, as we have in our example, or you can set up a swapfile in the root directory. We recommend setting up a swap partition, as you will get better performance with it than with the swapfile. However, there may be a need for you to set up the swapfile instead, which can be setup and activated after you have mounted your other partitions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Selecting Partitions and Filesystems==&lt;br /&gt;
&lt;br /&gt;
After creating your partitions, you need to select them and assign file systems. Select the menu option &amp;quot;Select Filesystems&amp;quot; and verify that you are indeed done creating partitions.&lt;br /&gt;
&lt;br /&gt;
The partitions can be selected in random order with the new installer. First select the partition and then assign a filesystem and mountpoint to it. The installer will add this to the job queue and formatting and mounting takes place later so you can edit your selection. Here's a list of filesystems that are currently supported:&lt;br /&gt;
&lt;br /&gt;
* ''ext2'' (Second Extended File System) -- Version 2 of the Extended File System, which was designed for linux as a replacement for the Minix Filesystem. Ext2 is not a journaled filesystem, which means that you'll need to perform disc recovery operations after a power failure or other such system crash. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''ext3'' (Third Extended File System) -- Version 3 of the Extended File System, which is essentially just the journaled version of ext2. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''reiserfs'' (Reiser Filesystem) -- Journaled filesystem created by Hans Reiser that is excellent for use with extremely small files. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''jfs'' (Journaled File System) -- Created by IBM for AIX, IBM's brand of Unix, and later ported to linux by IBM under the GPL. A journaled filesystem that is very good at handling high throughput issues. This filesystem is available with all kernels on the ISO.&lt;br /&gt;
* ''xfs'' -- Created by SGI for IRIX, SGI's brand of Unix, and later ported to linux under the GPL. A journaled filesystem that SGI claims is better than any other at handling extremely large files and sparse files. This filesystem is only available with the lunar or grsec patched kernels, which we will come to in a few steps.&lt;br /&gt;
&lt;br /&gt;
After selecting the filesystem type you wish to use, you will be prompted through a series of steps to initialize the partition. You'll notice that the prompts are quite redundant in nature in order to be absolutely positive that you will not inadvertantly erase crucial data that you might have on a working filesystem. In addition, if you have more than four partitions, as we do in our example, you don't want to select any file systems on the fourth partition, as it is the extended partition that houses the fifth, sixth (and so on) partitions. (The installer will try to detect this and skip the extended partition from the list).&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, there is an option in the installation process to set up a swap file in the root partition instead of a swap partition as we have done in our example. The next option after selecting your filesystems is to select a swapfile if you so desire. &amp;lt;span class=&amp;quot;emphasis&amp;quot;&amp;gt;''If you have set up a swap partition already, as we have done, you can skip this step.''&amp;lt;/span&amp;gt; Otherwise, you can set up your swap file here, and the only thing you need to tell the installer is how large you want the file to be. Running without swap completely is also possible of course.&lt;br /&gt;
&lt;br /&gt;
'''Please note during this step, no modifications are made to your filesystem!'''&lt;br /&gt;
&lt;br /&gt;
==Transferring Lunar To Your Partitions==&lt;br /&gt;
&lt;br /&gt;
Next, we need to transfer the core Lunar system to the partitions that you now have created. Select Transfer Lunar, and the system will proceed to tansfer all of the neccessary files for you. Be forewarned that the /usr transfer can take some time, espescially on older or slower systems, so don't panic and think that your system has frozen. It's just doing its thing.&lt;br /&gt;
&lt;br /&gt;
After the transfer of the core system has completed, you need to set up your timezone. This should be pretty straightforward for just about everyone. Go to &amp;quot;Select Timezone&amp;quot; and you will be presented with a long list of countries and some of the more popular timezones. The only thing to note is to be sure of whether your hardware clock is set to local time or to UTC. Most everyone will choose local at this stage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Your GCC Architecture Optimizations==&lt;br /&gt;
&lt;br /&gt;
The architecture optimizations is a crucial step, since what you choose will make your system fly! However, it is important that you do not overdo it on you optimization settings, as certain selections can, in some instances, break code while compiling.&lt;br /&gt;
&lt;br /&gt;
The first step is to choose your preferred compiler. The default choice here is GCC 3.x, and is the preferred choice as GCC 2.x is no longer under development, and GCC 3.x is known to make compiled code run faster. For our example, we are going to use GCC 3.x.&lt;br /&gt;
&lt;br /&gt;
Next are options for the C and C++ compiler, called -pipe, that have already been checked off. Very few people, if any, would need to turn off the -pipe option, so in our example we are going to leave them checked.&lt;br /&gt;
&lt;br /&gt;
Next we have the platform selection. This question would seem to be rather silly, since our ISO only boots up on x86 systems, but we like to plan for the future. You'll want to say x86 here.&lt;br /&gt;
&lt;br /&gt;
Now we move onto the Basic Optimization screen. As you can see, the options speak for themselves. Your choice depends on what your needs are. Most folks will want to use -O2 here, as it is the wisest choice. More advanced users may want to use the -O3 option, but it's not for everyone. If you're short on disk space, you would take the -Os Small option. (As an example, we used -Os for the ISO since we were working within a confined amount of disc space.) Those of you with older or slower systems that wouldn't be able to take advantage of faster optimizations may choose a more conservative setting like -O1. For our example system, we will choose -O2.&lt;br /&gt;
&lt;br /&gt;
After choosing your basic optimization level, you'll need to tell the compiler what type of processor you have. This may seem unimportant, however the GCC 3.x compiler has ways of optimizing code for certain processors, even though they all may be x86 based. For example, GCC 3.x has certain optimizations it can perform on code for Pentium 4 machines, but not for Pentium 3. Our example machine is a Pentium 3, so we are going to select that.&lt;br /&gt;
&lt;br /&gt;
We could also select i686, as a Pentium 3 falls within that architecture. Choosing i686 is a more conservative choice than Pentium 3, as GCC 3.x will not try certain optimizations with a more general choice like i686.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Additional GCC Optimizations==&lt;br /&gt;
&lt;br /&gt;
Next up are some extra speed optimizations you can add in to tweak your code even futher. There are too many to go into much detail here, but suffice to say that you should choose carefully. As we mentioned in the prior section, certain optimizations will cause compilation errors or even failures. An optimization such as &amp;quot;-ffast-math&amp;quot; is very risky because it breaks certain rules to get faster code, and would only be used by the bravest of souls looking to endure lots of pain. More information about GCC 3.x optimization strings can be found on the [http://gnu.org/software/gcc/gcc.html gnu.org] website.&lt;br /&gt;
&lt;br /&gt;
The same rule applies on the next screen, where you are asked about some extra features that you may want further optimized, and on the following screen asking about floating point math optimizations. Some options may not pose a problem at all, while others may break things.&lt;br /&gt;
&lt;br /&gt;
Moving on to the next few screens, we have options to enable or disable C and C++ compiler warnings. Most people will want to leave these boxes unchecked as deprecation warnings can be very useful some of the time. Following that is the screen for linker options, where you will find that &amp;quot;-s Strip&amp;quot; has already been checked off. Very few people will want to uncheck this option, so we will leave this screen as is. After that, we have some addons for compiler caching and distributed compiler support. Most folks will not need either one of these.&lt;br /&gt;
&lt;br /&gt;
The final few steps involve setting up the number of concurrent makes and stack parameters. As the hint mentions on the &amp;quot;Concurrent Makes&amp;quot; screen, you'll want to enter in the number of cpu's your machine has. Unless you have a machine with more than one processor, you'll want to leave this field blank. The stack parameters is also fairly straightforward. The warning on that screen says that this field is best left empty, and so that is exactly what we will do with our example.&lt;br /&gt;
&lt;br /&gt;
We are now finished setting up our GCC optimizations! When you have you lunar system up and running, you can always change and tweak these GCC settings by typing &amp;quot;lunar&amp;quot; at the commandline prompt, and going to &amp;quot;Optimization Settings&amp;quot;. In addition, if you aren't that familiar with what your processor is capable of using for optimizations, you can go to the shell out option on the ISO and type&lt;br /&gt;
&lt;br /&gt;
 cat /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
at the prompt and the system will show you all the optimizations that the processor reports it can handle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Building Your Customized Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
We have now come to the most important part of the installation; the configuration of the kernel. The kernel is the heart of linux, and without it, nothing would work. Configuration is, actually, a rather simple process. All you need to remember is to not panic, and that lunar is going to do most of the work for you. Here are a few pointers that will make the configuration a breeze for you.&lt;br /&gt;
&lt;br /&gt;
* Help is a click away! The people working on creating and maintaining the linux kernel have help placed throughout the entire configuration process. If you're not sure what something does, just look at the help file for whatever item you're on, and it will almost certainly explain what it is and what it does. The most handy thing is that every help file will suggest whether you should really use the item or not. Many help files end with &amp;quot;If you're not sure, it is safe to say N here&amp;quot;, thus letting you know that it is safe to leave that particular item out of the kernel.&lt;br /&gt;
* You can use the ISO kernel! The configuration used to make the kernel for the ISO is the same configuration you'll see when you start your kernel customization. If you leave the configuration the way it is, the only thing you truly have to worry about is your network and, if you want it, sound. There are also two additional default configurations available on the ISO that are available to you called &amp;quot;config.safe&amp;quot; and &amp;quot;config.server&amp;quot;. We'll show you how to load these configurations in just a little bit.&lt;br /&gt;
* Never build filesystems or core components as modules! Make sure that whatever filesystems you decided to use for your partitions earlier are built into the kernel, and are not separate modules. Likewise, make sure that certain crucial things like ide and scsi drivers are not modules, as this will make your machine unbootable. (This rule doesn't apply to the scsi low level drivers though; they can be modules.) Modules are kernel drivers that can be manually activated and deactivated after the system has been booted, but not during boot time. The kernel from the ISO already has all the filesystems available during the installation built into the kernel, so if you don't change anything there, you will be fine.&lt;br /&gt;
&lt;br /&gt;
You will be shown two screens of information before you actually begin you kernel configuration, letting you know that you are going to need a few things built into the kernel in order to have Lunar run properly, and what options you have for boot loaders. Lunar comes with both lilo (LInux LOader) and grub (GRand Unified Bootloader).&lt;br /&gt;
&lt;br /&gt;
If you don't have much experience with bootloaders, we suggest using lilo for now, as the installation program will set up the configuration file for you. If you would prefer to use grub, and we encourage folks to learn how to use it, be forewarned that the installation program does not set up any configuration at all for you.&lt;br /&gt;
&lt;br /&gt;
There are serveral kernels for you to choose from. They are:&lt;br /&gt;
&lt;br /&gt;
* linux -- The default kernel for Lunar which is the Linus tree with some handy patches for the xfs filesystem, firewire, ext3, and several other fixes. When this kernel is selected, you will want to decide whether to use the standard or aggresive patchset or not. The aggressive patch includes everything from the standard patchset as well as the low latency, pre-emptive, and gcc 3.x architecture type patches.&lt;br /&gt;
* linux-grsec -- This is almost the same as linux, but with grsecurity, cpu frequency scaling, gcc 3.x architecture types, and crypto support.&lt;br /&gt;
* linux-stable -- This is the Linus tree with only critical patches for certain drivers that were created after the 2.4.20 kernel was released.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use linux with the aggressive patchset. Once you begin the kernel build, the first question you need to answer is whether you wish to use lilo or grub. We are going to use lilo in our example, so we will answer yes here.&lt;br /&gt;
&lt;br /&gt;
When we say yes to lilo, the next question is do we want to automatically configure and run lilo at the completion of building the kernel. If you want a completely customized lilo configuration, you would say no to this question, however for our example we are going to keep things simple and say yes here.&lt;br /&gt;
&lt;br /&gt;
The next question wants to know if we would like to hand edit our lilo.conf file for any additional changes after it has done the automatic configuration for us. We are going to say yes here so that once the kernel build is done, we can see what Lunar has set up for us.&lt;br /&gt;
&lt;br /&gt;
Next, the installer would like to know if we would like to use the aggressive patchset or not. We are going to say yes here.&lt;br /&gt;
&lt;br /&gt;
The final question before you begin is which type of configuration method you would like to use.&lt;br /&gt;
&lt;br /&gt;
* config -- The original way to configure the linux kernel. It is completely text based, and assumes you know what everything is. Unless you've been using linux since its inception, you probably don't want to use this method.&lt;br /&gt;
* menuconfig -- As the name implies, a menu driven version of the kernel configuration. This is the easiest, and by far the most popular way of configurating your kernel.&lt;br /&gt;
* xconfig -- If you have an X server running, you can use this option to configure your kernel using a nifty GUI interface. You won't be able to use this on the ISO, but once your system is up and running with X, you can use this option. If you do choose this option while installing from the ISO, the system will fall back to next available configuration method, in this case menuconfig, so there is no harm in selecting it if you do.&lt;br /&gt;
&lt;br /&gt;
For our example, we are going to use menuconfig. Once Lunar is finished applying the patches for the kernel, which can take a minute or two, you'll be brought to the configuration screen for the linux kernel.&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier, the configuration that was used to build the kernel for the ISO is the same configuration that you'll be presented with when you start. However, as we also mentioned earlier, there are two alternate kernel configurations available to you that you may want to use; config.safe and config.server. Both of there configurations can be found on the ISO, along with the original default config file, in /etc/lunar/local. When you are looking at the kernel menuconfig main page, scroll all the way to bottom, and you will find an option called &amp;quot;Load an Alternate Configuration File&amp;quot;. Select this and then give the absolute path to the alternate configuration file, i.e. /etc/luar/local/.config.server. As with all kernel configuration files, they are hidden files preceeded with a &amp;quot;.&amp;quot;, so make sure to not forget it.&lt;br /&gt;
&lt;br /&gt;
Once you have completed configuring your kernel, you'll get one more prompt from the installer asking if you want to go back to the configuration in case you exited by mistake or forgot something. If everything is good to go, say no here and sit back for a few minutes while your kernel compiles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring Your Bootloader==&lt;br /&gt;
&lt;br /&gt;
=== Configuring LILO ===&lt;br /&gt;
&lt;br /&gt;
If you chose to use lilo and also said yes to automatically configuring and running lilo, then most of the work is done for you. If you chose not to hand edit lilo.conf, however, be warned that the default configuration has the system set up to be password protected on boot. You can change this by selecting the option from the menu &amp;quot;Reconfigure LILO&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To turn off password protection, you will need to comment out (with the symbol &amp;quot;#&amp;quot;) or delete two lines in your lilo.conf file. The first is &amp;quot;password=lunar&amp;quot;, which is found in the top section of the file, and the other is &amp;quot;restricted&amp;quot; which is found right below the name of your kernel in the second section.&lt;br /&gt;
&lt;br /&gt;
The other item of note is whether you want lilo to reside in your MBR (Master Boot Record) or on the first sector of your /boot partition. The line in your lilo.conf file to edit for this purpose is&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda1&lt;br /&gt;
&lt;br /&gt;
To make lilo get installed on the first sector of your /boot partition, you would leave this line as it is. If you want lilo to be written to your MBR, which is the recommended method, you would change the line to read&lt;br /&gt;
&lt;br /&gt;
 boot=/dev/hda&lt;br /&gt;
&lt;br /&gt;
Of course, these examples are pertinent to our setup that we have been using thoughout this manual. Your actual lilo.conf file may be different.&lt;br /&gt;
&lt;br /&gt;
=== Configuring GRUB ===&lt;br /&gt;
&lt;br /&gt;
If you chose grub as your bootloader, you will need to set up the configuration file entirely on your own. An example would be:&lt;br /&gt;
&lt;br /&gt;
  default 0&lt;br /&gt;
  timeout 30&lt;br /&gt;
  color white/blue white/black&lt;br /&gt;
  title linux-2.4.20&lt;br /&gt;
  root (hd0,0)&lt;br /&gt;
  kernel /vmlinubz-2.4.25-r5.0.0 root=/dev/hda2 devfs=nomount&lt;br /&gt;
&lt;br /&gt;
As we mentioned earlier in the partitioning section, you would want to mark your /boot partition as active. With grub it is ''imperative'' that you mark your /boot partition as active, otherwise grub will not work at all when you are finished with the installation and reboot to your new system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installing The MBR==&lt;br /&gt;
&lt;br /&gt;
If you installed lilo or grub into the MBR then you don't need to use this step. If, however, you chose to place lilo or grub in the first sector of the /boot partition, then you would use this option. The MBR install is especially useful if the hard drive you are installing Lunar on is brand new and has never been used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting Up Networking==&lt;br /&gt;
&lt;br /&gt;
The final step is to set up networking. When you select the &amp;quot;Set Up Networking&amp;quot; option, you'll be prompted by a series of questions as to what kind of card you have (only needed if you built your networking device as a module, and not part of the kernel), if you need to set up wireless or not, and whether you'll need to use dhcp or not. You should be familiar enough with your network to set this up on your own, as the questions put to you are very straightforward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reboot!==&lt;br /&gt;
&lt;br /&gt;
Once you have completed setting up your networking, you are finished installing Lunar Linux! Congratulations! Select the option &amp;quot;Done&amp;quot; and remove the cd from the drive when it ejects. Your Lunar system is now ready to go!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Have Fun!!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/copyleft/ Copyleft] 2004 [http://lunar-linux.org/ The Lunar Penguin Team]&lt;br /&gt;
&lt;br /&gt;
Lunar Installation Manual and Harassment of Lunar Developers by Drew Swayze (drew AT lunar-linux DOT org).&lt;br /&gt;
&lt;br /&gt;
Edits and Nitpicking by Suzanne Burns (sburns AT lunar-linux DOT org).&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/User_talk:Fireglow</id>
		<title>User talk:Fireglow</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/User_talk:Fireglow"/>
				<updated>2005-08-12T21:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* OMG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OMG==&lt;br /&gt;
hi!&lt;br /&gt;
&lt;br /&gt;
* Striker, please sign your talk pages with &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; [[User:Sofar|Sofar]] 21:57, 12 Aug 2005 (UTC)&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Module_Basics</id>
		<title>Module Basics</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Module_Basics"/>
				<updated>2005-08-12T20:45:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* The DETAILS script */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
In ''lunar'' parlance, software packages are called [[modules]]. The collection of all modules is the [[moonbase]], which is simply a directory (usually &amp;lt;code&amp;gt;/var/lib/lunar/moonbase&amp;lt;/code&amp;gt;) containing ''sections'' (i.e. directories) which in turn contain the [[module]] directories.&lt;br /&gt;
&lt;br /&gt;
A module is simply a directory containing the scripts necessary to build a software package, and optionally configuration files which may be needed in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. Some modules require only a [[DETAILS]] file, however this is only the case for a few of the modules in the entire moonbase. In each case, after [[DETAILS]], [[DEPENDS]], and [[CONFIGURE]], where a module can use lunar's default internal function(s), there is no need for a module-specific script.&lt;br /&gt;
&lt;br /&gt;
* [[DETAILS]] sets version, source URL(s) and other critical data&lt;br /&gt;
* [[CONFLICTS]] specifies modules which must (will) be removed by module&lt;br /&gt;
* [[CONFIGURE]] interactive script where build options can be set&lt;br /&gt;
* [[DEPENDS]] specifies required and optional packages&lt;br /&gt;
* [[PRE_REMOVE]] used by [[lrm]]; actions which must preceed removal&lt;br /&gt;
* [[PRE_BUILD]] most often used for patching, unpacking addional source tarballs&lt;br /&gt;
* [[BUILD]] runs necessary variations on: configure; make; make install&lt;br /&gt;
* [[POST_BUILD]] install configuration scripts and data.&lt;br /&gt;
* [[POST_INSTALL]] messages, notes more cleanups, configuration fixes&lt;br /&gt;
* [[POST_REMOVE]] used by [[lrm]]; actions which must follow removal&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Package Build and Install Scripts ==&lt;br /&gt;
&lt;br /&gt;
The following scripts are used by [[lin]] or indirectly by [[lunar]] when building modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The DETAILS script ===&lt;br /&gt;
&lt;br /&gt;
Every module is required to have at least a [[DETAILS]] file. A minimal [[DETAILS]] may appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/emacs/DETAILS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs&lt;br /&gt;
          VERSION=21.3&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION&lt;br /&gt;
       SOURCE_URL=$GNU_URL/$MODULE/$SOURCE&lt;br /&gt;
       SOURCE_URL=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
          ENTERED=20010922&lt;br /&gt;
          UPDATED=20020529&lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
With comments, default values:&lt;br /&gt;
&lt;br /&gt;
           MODULE=emacs                                       # Module name, yes it's redundant&lt;br /&gt;
          VERSION=21.3                                        # Version, changes *often*&lt;br /&gt;
           SOURCE=$MODULE-$VERSION.tar.gz                     # Source filename&lt;br /&gt;
 SOURCE_DIRECTORY=$BUILD_DIRECTORY/$MODULE-$VERSION           # Where source unpacks&lt;br /&gt;
                                                              # ($BUILD_DIRECTORY=/usr/src)&lt;br /&gt;
    SOURCE_URL[0]=$GNU_URL/$MODULE/$SOURCE                    # Download URL&lt;br /&gt;
    SOURCE_URL[1]=&amp;lt;nowiki&amp;gt;ftp://ftp.gnu.org/pub/gnu/$MODULE/$SOURCE&amp;lt;/nowiki&amp;gt;   # Alternate URL(s)&lt;br /&gt;
       SOURCE_VFY=md5:a0bab457cbf5b4f8eb99d1d0a3ada420        # Sets md5 hash or pgp/gpg sig url&lt;br /&gt;
         WEB_SITE=&amp;lt;nowiki&amp;gt;http://www.gnu.org/software/emacs&amp;lt;/nowiki&amp;gt;           # where to learn more&lt;br /&gt;
          ENTERED=20010922                                    # First appearance in moonbase&lt;br /&gt;
          UPDATED=20020529                                    # Date of latest change.&lt;br /&gt;
                                                              # Force update by setting this&lt;br /&gt;
 &lt;br /&gt;
 # The remaining lines are used for input to the 'lvu what' command&lt;br /&gt;
 # and are best copied from the source-maintainer's own description.&lt;br /&gt;
 &lt;br /&gt;
            SHORT=&amp;quot;Emacs is the extensible, self-documenting real-time display editor.&amp;quot;&lt;br /&gt;
 cat &amp;lt;&amp;lt; EOF&lt;br /&gt;
 Emacs is the extensible, customizable, self-documenting real-time&lt;br /&gt;
 display editor. &lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== The DEPENDS script ===&lt;br /&gt;
&lt;br /&gt;
The [[DEPENDS]] script is essential to configuration management, and is the key to the overall operation of lunar. Dependencies should be exactly specified, preferably not assuming the presence of any other modules, while knowing the sub-dependencies of the modules which are added and not adding those explictly where not needed.&lt;br /&gt;
&lt;br /&gt;
'''Warning''' - Getting this right is difficult. Because the state of installed packages may vary widely, it's important to have a good understanding of what might be or not be installed on a target system.&lt;br /&gt;
&lt;br /&gt;
'''Note''' - By convention Lunar does not include the X Window System, xfree86 or XOrg, in any dependency. There are two reasons for this choice. First we expect that users must understand that to use a graphical application locally, the X Window System must be installed. Second, due to the sligtly unusual definition of client and server used by X11, it is often in fact possible to build graphical applications and tools for remote display, without the server components locally installed. At some future date we may elect to provide a client-only installation of xfree86.&lt;br /&gt;
&lt;br /&gt;
[[DEPENDS]] may include both required and optional dependencies. The '''depends()''' function statement simply determines one required package. The optional_depends function is a little more complex. It consists of the required package, necessary --options to give to &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt; for yes and no respectively, and an explanatory comment telling the user the purpose of the option being presented. A typical [[DEPENDS]] file might appear as follows: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/subversion/DEPENDS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 depends zlib    &amp;amp;&amp;amp;&lt;br /&gt;
 depends openssl &amp;amp;&amp;amp;&lt;br /&gt;
 optional_depends &amp;quot;db4&amp;quot; &amp;quot;--with-berkeley-db&amp;quot;  &amp;quot;&amp;quot;   &amp;quot;for creating local repositories&amp;quot;&lt;br /&gt;
 #                  ^            ^            ^                  ^&lt;br /&gt;
 #                  |            |            |                  |&lt;br /&gt;
 #     optional package       if &amp;quot;Y&amp;quot;       if &amp;quot;N&amp;quot;       explanatory comment&lt;br /&gt;
 #                        { ./configure strings }&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== The CONFLICTS script ===&lt;br /&gt;
&lt;br /&gt;
This script is simply used to specify modules which will be removed when a given module is installed. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/elvis/CONFLICTS&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 conflicts vim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CONFIGURE script ===&lt;br /&gt;
&lt;br /&gt;
The [[CONFIGURE]] script is used to collect interactive input from the user on optional parameters for the software build. use the '''query''' function and provide a default answer to each question. The results of the answers are then used to store configuration variables needed in configuration state files. An a simple example might be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/crypto/gnupg/CONFIGURE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if ! grep -q CONFIGURED $MODULE_CONFIG ; then&lt;br /&gt;
   if query &amp;quot;Enable experimental external HKP keyserver interface? &amp;quot; n ; then&lt;br /&gt;
     OPTS=&amp;quot;$OPTS --enable-external-hkp&amp;quot;&lt;br /&gt;
   fi&lt;br /&gt;
   echo 'CONFIGURED=&amp;quot;y&amp;quot;' &amp;gt;&amp;gt; $MODULE_CONFIG&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
Another way is using '''mquery''' like the lilo module does:&lt;br /&gt;
&lt;br /&gt;
 mquery RUN_LILO &amp;quot;Run LILO automatically upon LILO upgrades?&amp;quot; y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_BUILD]] is used where special processing is needed before undertaking the actual build steps. Typical requirements include unpacking multiple sources, creating necessary system or source-tree direcotries and applying source patches. And example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/doc-tools/html2db/PRE_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 mk_source_dir $SOURCE_DIRECTORY  &amp;amp;&amp;amp;&lt;br /&gt;
 unpack $SOURCE                   &amp;amp;&amp;amp;&lt;br /&gt;
 cd $MODULE&lt;br /&gt;
 unpack $SOURCE2&lt;br /&gt;
 cd tidy&lt;br /&gt;
 patch_it $SOURCE_CACHE/$SOURCE3 0&lt;br /&gt;
 cd /usr/src/$MODULE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[BUILD]] is used where the '''default_build()''' function does not work for a given software package. For reference the commands run by default are:&lt;br /&gt;
&lt;br /&gt;
Function '''default_build()''' calls '''default_config''' which executes:&lt;br /&gt;
&lt;br /&gt;
   ./configure  --build=$BUILD            \&lt;br /&gt;
                --prefix=/usr             \&lt;br /&gt;
                --sysconfdir=/etc         \&lt;br /&gt;
                --localstatedir=/var      \&lt;br /&gt;
                --infodir=/usr/share/info \&lt;br /&gt;
                --mandir=/usr/share/man   \&lt;br /&gt;
                $OPTS&lt;br /&gt;
&lt;br /&gt;
Next, '''default_build()''' calls '''default_make''' which executes:&lt;br /&gt;
&lt;br /&gt;
   make &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
&lt;br /&gt;
Where this build configuration does not work, the [[BUILD]] script is used to provide the needed steps. About 75% of modules need a [[BUILD]] script. Two examples include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/archive/gzip/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
  ./configure --build=$BUILD            \&lt;br /&gt;
              --prefix=/usr             \&lt;br /&gt;
              --bindir=/bin             \&lt;br /&gt;
              --infodir=/usr/share/info \&lt;br /&gt;
              --mandir=/usr/share/man   &amp;amp;&amp;amp;&lt;br /&gt;
  make &amp;amp;&amp;amp;&lt;br /&gt;
  prepare_install &amp;amp;&amp;amp;&lt;br /&gt;
  make bindir=/bin install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/editors/ex/BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   cd $SOURCE_DIRECTORY                    &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/usr.local/usr/' Makefile       &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= man/= share\/man/' Makefile  &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/ucb/bin/' Makefile             &amp;amp;&amp;amp;&lt;br /&gt;
   sedit 's/= termlib/= ncurses/' Makefile &amp;amp;&amp;amp;&lt;br /&gt;
   make                                    &amp;amp;&amp;amp;&lt;br /&gt;
   prepare_install                         &amp;amp;&amp;amp;&lt;br /&gt;
   make install&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
The first example is a build which needs non-standard 'configure' and 'make install' commands. The second is a build which does not use gnu auto-tools' 'configure' script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' - [[BUILD]] scripts must execute inside a (), called a subshell invocation, construct and output is always directed to a named pipe (aka FIFO). Therefor all [[BUILD]] files take the follwing form:&lt;br /&gt;
&lt;br /&gt;
 (&lt;br /&gt;
   # commands are put here&lt;br /&gt;
 ) &amp;gt; $C_FIFO 2&amp;gt;&amp;amp;1     # $C_FIFO holds the name of a fifo in /tmp used for 'voyeur'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_BUILD script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_BUILD]] runs in place of the '''default_post_build''' routine which is used to install minor documentation and transfer/enable initialization scripts and similar system data, mostly into &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;. An example script would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/net/samba/POST_BUILD&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if [ ! -d /etc/samba/private ]; then&lt;br /&gt;
   mkdir -p /etc/samba/private&lt;br /&gt;
   chmod 700 /etc/samba/private&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_INSTALL script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_INSTALL]] has no equivalent functions, and is run to handle post-installation work in a general manner. An example is: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/gcc/POST_INSTALL&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 cd /usr/lib/gcc-lib/$BUILD/$VERSION                      &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp;&lt;br /&gt;
 cd /lib/                                                 &amp;amp;&amp;amp;&lt;br /&gt;
 ln    -sf /usr/bin/cpp cpp                               &amp;amp;&amp;amp; &lt;br /&gt;
 if [ ! -e /usr/bin/cc ] ; then&lt;br /&gt;
   ln -s gcc /usr/bin/cc&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Removal Scripts ==&lt;br /&gt;
&lt;br /&gt;
Module removal is handled by [[lrm]]. Because installation is monitored and backup tarballs are created using installwatch, most of package removal is handled automatically using the logs created by installwatch. However we provide for additional actions to be taken through the [[PRE_REMOVE]] and [[POST_REMOVE]] scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The PRE_REMOVE script ===&lt;br /&gt;
&lt;br /&gt;
[[PRE_REMOVE]] is needed to execute any tasks needed prior to the main task of removing all files installed by the module. An example would be: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/mail/docbook-3.1/PRE_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 CENTRALIZED=/etc/sgml/catalog&lt;br /&gt;
 DOCBOOK_INSTALL_DIR=/usr/share/sgml/docbook/$VERSION&lt;br /&gt;
 install-catalog -r $CENTRALIZED $DOCBOOK_INSTALL_DIR/catalog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The POST_REMOVE Script ===&lt;br /&gt;
&lt;br /&gt;
[[POST_REMOVE]] may be used to remove data not tracked by installwatch and to correctly adjust remaining configuration files and data. Examples would include: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/devel/binutils/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 install-info  --delete as         --info-dir /usr/info&lt;br /&gt;
 install-info  --delete bfd        --info-dir /usr/info&lt;br /&gt;
 install-info  --delete binutils   --info-dir /usr/info&lt;br /&gt;
 install-info  --delete configure  --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gasp       --info-dir /usr/info&lt;br /&gt;
 install-info  --delete gprof      --info-dir /usr/info&lt;br /&gt;
 install-info  --delete ld         --info-dir /usr/info&lt;br /&gt;
&lt;br /&gt;
or: (&amp;lt;code&amp;gt;/var/lib/lunar/moonbase/compilers/php/POST_REMOVE&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
 if    module_installed  apache;  then&lt;br /&gt;
   cp        /etc/httpd/httpd.conf       /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 elif  module_installed  apache_mod_ssl;  then&lt;br /&gt;
   cp        /etc/httpsd/httpd.conf      /tmp/httpd.conf&lt;br /&gt;
   grep  -v  &amp;quot;LoadModule php4_module&amp;quot;    /tmp/httpd.conf  |&lt;br /&gt;
   grep  -v  &amp;quot;AddModule mod_php4.c&amp;quot;   &amp;gt;  /etc/httpsd/httpd.conf&lt;br /&gt;
   rm    -f  /tmp/httpd.conf&lt;br /&gt;
 fi&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:Software_Raid</id>
		<title>Installation:Software Raid</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:Software_Raid"/>
				<updated>2005-08-11T11:05:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: /* Partitioning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Software raid is a relatively powerful way of achieving better performance and/or reliability (redundancy). There is no automated way of setting this up in lunar yet but it's fairly easy to do manually.&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
First setup your box with the number of hard disks you need and boot the ISO. As soon as you boot into the installer and have selected language and locale stuff, switch to vc/2 and start with the manual part of the software raid setup&lt;br /&gt;
&lt;br /&gt;
==Partitioning==&lt;br /&gt;
&lt;br /&gt;
The easiest way to setup partitioning if you're working with partition raid-components is to partition one disc and copy the contents to another using [[cfdisk]] and [[sfdisk]]:&lt;br /&gt;
&lt;br /&gt;
 cfdisk /dev/hda&lt;br /&gt;
&lt;br /&gt;
Setup your partitions and make sure you have some space left over for later to resize and move stuff if needed. '''Make sure you set your partition type as linux-raid-autodetect''' (0xfd). Otherwise you won't be able to boot from the partitions.&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 sfdisk -d /dev/hda &amp;gt; dump&lt;br /&gt;
 sfdisk -i /dev/hdb &amp;lt; dump&lt;br /&gt;
&lt;br /&gt;
This formats the second disc identically to the first one, especially usefull for RAID-1 setups&lt;br /&gt;
&lt;br /&gt;
==Setting up your RAID devices==&lt;br /&gt;
&lt;br /&gt;
go to /tmp and create a new raidtab file:&lt;br /&gt;
&lt;br /&gt;
 raiddev         /dev/md0&lt;br /&gt;
 raid-level      1&lt;br /&gt;
 nr-raid-disks   2&lt;br /&gt;
 nr-spare-disks  0&lt;br /&gt;
 persistent-superblock 1&lt;br /&gt;
 chunk-size      32&lt;br /&gt;
 device          /dev/hda1&lt;br /&gt;
 raid-disk       0&lt;br /&gt;
 device          /dev/hda2&lt;br /&gt;
 raid-disk       1&lt;br /&gt;
&lt;br /&gt;
Now, since this is sitting on tmpfs you will lose your data if you reboot so be careful. The next step is to initiate the raid device so that it's actively mirroring them (or striping depending on your setup).&lt;br /&gt;
&lt;br /&gt;
 mkraid --really-force --config-file /tmp/raidtab /dev/md0&lt;br /&gt;
&lt;br /&gt;
The raid driver will start syncing the discs and you can check progress with:&lt;br /&gt;
&lt;br /&gt;
 cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
==Formatting the filesystem==&lt;br /&gt;
&lt;br /&gt;
From now on, you'll refer to your disks as /dev/md0 instead of hda1 etc. So the same goes with formatting. You can format and work with the disks even when syncing is in progress:&lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/md0&lt;br /&gt;
&lt;br /&gt;
It might be a bit slower due to the syncing going on. I advice you to have the unit finish syncing before you reboot, if only to make sure there's no bad sectors on the units and all is OK for normal work.&lt;br /&gt;
&lt;br /&gt;
==Saving your config raidtab==&lt;br /&gt;
&lt;br /&gt;
You should of course save your raidtab file and most likely you will want to save it as /etc/raidtab on the raid-device itself. You'll need to mount it therefore:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/hda1 /mnt&lt;br /&gt;
 mkdir /mnt/etc&lt;br /&gt;
 cp /tmp/raidtab /mnt/etc/raidtab&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
Now you're ready to install lunar in the normal way!&lt;br /&gt;
&lt;br /&gt;
==Installing on RAID==&lt;br /&gt;
&lt;br /&gt;
The last step is to let the normal installer code handle the partitions. For this reason, the installer allows you to pass an arbitrary block device name as an additional hard disk partition. In the partition selection, you select 'Add...' device and enter '/dev/md0'. Make sure you don't format the partition and select the right filesystem. Alternatively, you could have skipped to formatting and let the lunar ISO installer handle it as well.&lt;br /&gt;
&lt;br /&gt;
==BootLoader==&lt;br /&gt;
&lt;br /&gt;
As maybe known, only lilo can directly boot from software raid but with tricks grub can read the underlaying partition on only one of the raid devices, which will obviously not work with striping raid setups. Make sure you pass the proper device names to the lilo.conf. Your mileage may vary.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Lunar_Linux/Documentation</id>
		<title>Lunar Linux/Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Lunar_Linux/Documentation"/>
				<updated>2005-08-11T10:24:00Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right;&amp;quot; id=&amp;quot;toc&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4 class=&amp;quot;center&amp;quot;&amp;gt;Quick Reference&amp;lt;/h4&amp;gt;&lt;br /&gt;
*  '''General'''&lt;br /&gt;
** [[Lunar Linux:FAQ|Frequently Asked Questions]]&lt;br /&gt;
*  '''Installation'''&lt;br /&gt;
** [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
** [[Installation:No CD|No CD Installation]]&lt;br /&gt;
** [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
*  '''[[Package Management]]'''&lt;br /&gt;
** [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
** [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
** [[Package Management#utilities|lunar]]&lt;br /&gt;
** [[Package Management#utilities|lin]]&lt;br /&gt;
** [[Package Management#utilities|lrm]]&lt;br /&gt;
** [[Package Management#utilities|lvu]]&lt;br /&gt;
** [[Package Management#utilities|lget]]&lt;br /&gt;
*  '''[[Tools|Other lunar tools]]'''&lt;br /&gt;
** [[Lunar tools#tools|lnet]]&lt;br /&gt;
** [[Lunar tools#tools|lids]]&lt;br /&gt;
** [[Lunar tools#tools|clad]]&lt;br /&gt;
** [[Lunar tools#tools|luser]]&lt;br /&gt;
** [[Lunar tools#tools|lservices]]&lt;br /&gt;
*  '''[[Moonbase|The Lunar Moonbase]]'''&lt;br /&gt;
** [[Module|Modules]]&lt;br /&gt;
** [[Moonbase:Examples|Module Examples]]&lt;br /&gt;
** [[Moonbase:Functions|Module Function List]]&lt;br /&gt;
*  '''Other'''&lt;br /&gt;
** [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
** [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
** [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===General===&lt;br /&gt;
'''Lunar-Linux''' is a small, robust linux distribution forked from Sourcerer GNU/Linux. Available here are docs for many things about the project and how to use, maintain, and develop '''Lunar-Linux'''. It is suggested that all new users consult the [[FAQ]] or use the ''search'' box found at the top of the page to find the information you are looking for.&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently Asked Questions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Installation of '''Lunar-Linux''' is fairly straightforward, however there are [[Lunar Linux/Installation|caveats]] for everything in life, and as such, we have provided [[Lunar Linux:Installation|a guide]] to quick and easy installation. There are also other methods of installation, such as the [[Lunar Linux/Installation:No CD|no CD-ROM installation]] for when you would like to use '''Lunar-Linux''', but are unable to have direct access to the machine or no CD-ROM is available.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar Linux:Installation|Basic Installation]]&lt;br /&gt;
* [[Installation:No CD|No CD Installation]]&lt;br /&gt;
* [[Installation:Software Raid|Software RAID installation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Package Management===&lt;br /&gt;
A '''Lunar-Linux''' installation is maintained by its [[Package Management]] system. There are currently two versions of the system; one is the stable branch for production installations and general end-user usage called [[Package Management#lunar|''lunar'']], and the other is the unstable branch for development installations typically used by '''Lunar-Linux''' developers called [[Package Management#theedge|''theedge'']]. Both of these packages come with the same tools -- however, new code is always introduced into [[Package Management#theedge|''theedge'']] first for testing among developers.&lt;br /&gt;
&lt;br /&gt;
* [[Package Management]]&lt;br /&gt;
* [[Package Management#lunar|Package Management: Lunar]]&lt;br /&gt;
* [[Package Management#theedge|Package Management: Theedge]]&lt;br /&gt;
* [[Package Management#utilities|lunar]] &amp;amp;bull; Utility for installing/removing modules and basic system configuration.&lt;br /&gt;
* [[Package Management#utilities|lin]] &amp;amp;bull; Installs modules.&lt;br /&gt;
* [[Package Management#utilities|lrm]] &amp;amp;bull; Removes modules.&lt;br /&gt;
* [[Package Management#utilities|lvu]] &amp;amp;bull; Displays information about modules.&lt;br /&gt;
* [[Package Management#utilities|lget]] &amp;amp;bull; Retreives requisite files for modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other lunar tools===&lt;br /&gt;
'''Lunar-Linux''' comes with more tools than just the [[Package Management]]. These tools allow you to administrate several things on your system like users, services and more.&lt;br /&gt;
&lt;br /&gt;
* [[Lunar tools#tools|lnet]] &amp;amp;bull; Network configuration utility&lt;br /&gt;
* [[Lunar tools#tools|lids]] &amp;amp;bull; File integrity checking and permission checking tool&lt;br /&gt;
* [[Lunar tools#tools|clad]] &amp;amp;bull; A cluster administration tool&lt;br /&gt;
* [[Lunar tools#tools|luser]] &amp;amp;bull; User administration frontend&lt;br /&gt;
* [[Lunar tools#tools|lservices]] &amp;amp;bull; Administrate startup services&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Moonbase===&lt;br /&gt;
The [[Moonbase|Lunar Moonbase]] is the software catalog for our distribution, and contains [[modules]] that perform the necessary actions needed to install software.&lt;br /&gt;
&lt;br /&gt;
If you would like to write your own modules, there are [[Module Examples|module examples]] which you can use to help you understand how modules perform different functions.&lt;br /&gt;
&lt;br /&gt;
* [[Moonbase|The Lunar Moonbase]]&lt;br /&gt;
* [[Module|Modules]]&lt;br /&gt;
* [[Module Writing|Writing lunar modules]]&lt;br /&gt;
* [[Module Examples|Module Examples]]&lt;br /&gt;
* [[Module Functions|Module Function List]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
The official '''Lunar-Linux''' chatroom is located on the [http://freenode.net/ freenode] network in [irc://irc.freenode.net/lunar #Lunar]. Many of the developers hang out in this chatroom and help users that stop by. If you cannot find the information you need in this wiki, you may find the information you seek in the chatroom. However, being that our developers live all around the world, they do have lives and are not always around, so be patient when asking for help.&lt;br /&gt;
&lt;br /&gt;
We also have a few mailing lists for support and information for users; the [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] is for general support and sometimes announcements from developers. Developer commits for moonbase, theedge, and lunar (the core tools) are on the [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List]. Bug reports and updates are sent to the [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List].&lt;br /&gt;
&lt;br /&gt;
* [irc://irc.freenode.net/lunar #lunar]&lt;br /&gt;
* [http://lunar-linux.org/mailman/listinfo/lunar Lunar Mailing-List] [http://lunar-linux.org/pipermail/lunar/ (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-bugs/ Lunar Bugs Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-bugs (archive)]&lt;br /&gt;
* [http://lunar-linux.org/pipermail/lunar-commits/ Lunar Commits Mailing-List] [http://lunar-linux.org/mailman/listinfo/lunar-commits (archive)]&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	<entry>
		<id>http://wiki.lunar-linux.org/Installation:Software_Raid</id>
		<title>Installation:Software Raid</title>
		<link rel="alternate" type="text/html" href="http://wiki.lunar-linux.org/Installation:Software_Raid"/>
				<updated>2005-08-11T10:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Sofar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Software raid is a relatively powerful way of achieving better performance and/or reliability (redundancy). There is no automated way of setting this up in lunar yet but it's fairly easy to do manually.&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
&lt;br /&gt;
First setup your box with the number of hard disks you need and boot the ISO. As soon as you boot into the installer and have selected language and locale stuff, switch to vc/2 and start with the manual part of the software raid setup&lt;br /&gt;
&lt;br /&gt;
==Partitioning==&lt;br /&gt;
&lt;br /&gt;
The easiest way to setup partitioning if you're working with partition raid-components is to partition one disc and copy the contents to another using [[cfdisk]] and [[sfdisk]]:&lt;br /&gt;
&lt;br /&gt;
 cfdisk /dev/hda&lt;br /&gt;
&lt;br /&gt;
Setup your partitions and make sure you have some space left over for later to resize and move stuff if needed&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 sfdisk -d /dev/hda &amp;gt; dump&lt;br /&gt;
 sfdisk -i /dev/hdb &amp;lt; dump&lt;br /&gt;
&lt;br /&gt;
This formats the second disc identically to the first one, especially usefull for RAID-1 setups&lt;br /&gt;
&lt;br /&gt;
==Setting up your RAID devices==&lt;br /&gt;
&lt;br /&gt;
go to /tmp and create a new raidtab file:&lt;br /&gt;
&lt;br /&gt;
 raiddev         /dev/md0&lt;br /&gt;
 raid-level      1&lt;br /&gt;
 nr-raid-disks   2&lt;br /&gt;
 nr-spare-disks  0&lt;br /&gt;
 persistent-superblock 1&lt;br /&gt;
 chunk-size      32&lt;br /&gt;
 device          /dev/hda1&lt;br /&gt;
 raid-disk       0&lt;br /&gt;
 device          /dev/hda2&lt;br /&gt;
 raid-disk       1&lt;br /&gt;
&lt;br /&gt;
Now, since this is sitting on tmpfs you will lose your data if you reboot so be careful. The next step is to initiate the raid device so that it's actively mirroring them (or striping depending on your setup).&lt;br /&gt;
&lt;br /&gt;
 mkraid --really-force --config-file /tmp/raidtab /dev/md0&lt;br /&gt;
&lt;br /&gt;
The raid driver will start syncing the discs and you can check progress with:&lt;br /&gt;
&lt;br /&gt;
 cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
==Formatting the filesystem==&lt;br /&gt;
&lt;br /&gt;
From now on, you'll refer to your disks as /dev/md0 instead of hda1 etc. So the same goes with formatting. You can format and work with the disks even when syncing is in progress:&lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/md0&lt;br /&gt;
&lt;br /&gt;
It might be a bit slower due to the syncing going on. I advice you to have the unit finish syncing before you reboot, if only to make sure there's no bad sectors on the units and all is OK for normal work.&lt;br /&gt;
&lt;br /&gt;
==Saving your config raidtab==&lt;br /&gt;
&lt;br /&gt;
You should of course save your raidtab file and most likely you will want to save it as /etc/raidtab on the raid-device itself. You'll need to mount it therefore:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/hda1 /mnt&lt;br /&gt;
 mkdir /mnt/etc&lt;br /&gt;
 cp /tmp/raidtab /mnt/etc/raidtab&lt;br /&gt;
 umount /mnt&lt;br /&gt;
&lt;br /&gt;
Now you're ready to install lunar in the normal way!&lt;br /&gt;
&lt;br /&gt;
==Installing on RAID==&lt;br /&gt;
&lt;br /&gt;
The last step is to let the normal installer code handle the partitions. For this reason, the installer allows you to pass an arbitrary block device name as an additional hard disk partition. In the partition selection, you select 'Add...' device and enter '/dev/md0'. Make sure you don't format the partition and select the right filesystem. Alternatively, you could have skipped to formatting and let the lunar ISO installer handle it as well.&lt;br /&gt;
&lt;br /&gt;
==BootLoader==&lt;br /&gt;
&lt;br /&gt;
As maybe known, only lilo can directly boot from software raid but with tricks grub can read the underlaying partition on only one of the raid devices, which will obviously not work with striping raid setups. Make sure you pass the proper device names to the lilo.conf. Your mileage may vary.&lt;/div&gt;</summary>
		<author><name>Sofar</name></author>	</entry>

	</feed>