<html>
<head><title>gBootRoot</title></head>
<body  text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E"
alink="#FF0000">

<center>$Id: index.html,v 1.44 2001/12/11 05:39:57 freesource Exp $</center>

<p>

<H1 align="center">gBootRoot</h1> 
<H3 align="center">at</h3> 

<p align="center"><A href="http://sourceforge.net/projects/gbootroot"> 
<IMG src="http://sourceforge.net/sflogo.php?group_id=9513&type=1" 
width="88" height="31" border="0"
alt="SourceForge Logo"> </A></p> 
<p></p>
<P align="center">
<b>bOOTrOOT</b> makes the development, construction, and
testing of distributions fun and simple.</P>

<br>

<P align="center">
<b>Download gBootRoot</b></P>
<P align="center">
<b>Newest version</b><br>

<a href="http://freshmeat.net/redir/gbootroot/3075/url_tgz/gbootroot.orig.tar.gz">gbootroot source (type make to install)</a><br>
<a href="http://freshmeat.net/redir/gbootroot/3075/url_deb/gbootroot_all.deb">
gbootroot debian package</a></p>

<P align="center">
<b>Add-ons</b><br>

<a href="http://freshmeat.net/redir/make-debian-x11/18842/url_tgz/make-debian-x11.orig.tar.gz">
make-debian-x11 source (type make to install)</a><br>
<a href="http://freshmeat.net/redir/make-debian-x11/18842/url_deb/make-debian-x11_all.deb">
make-debian-x11 debian package</a>
<p>


<p align="center">

<em>Users who use packaging tools which support apt should add these lines to 
their sources.list:</em><br><br>

<align>deb http://prdownloads.sourceforge.net/gbootroot ./<br>
deb http://prdownloads.sourceforge.net/avd ./<br></p>

<p align="center">Older versions found at this
<A href="http://prdownloads.sourceforge.net/gbootroot/">site</A></P>

<p align="center"><a href="images/screenshot.jpg">Screenshot</a></P>

<p align="center"><a href="#FAQ">FAQ</a></P>

<p align="center">and</P><br>

<P align="center">
<IMG ALT="" SRC="images/gbootroot.jpg">
</P>

<P align="center">
<b>How to Use gBootRoot's UI</b></P>
<P><IMG ALT="" SRC="images/gBS.jpg" align="right">The most important button to 
familiarize yourself with is the Submit button which starts the whole process;
dialogs are presented as the process continues asking you if you want to 
continue &quot;OK&quot; or stop &quot;Cancel&quot;.</P>

<p>
The <u>first row</u> presently has only one Boot Method choice:
"2 disk compression."&nbsp;&nbsp;Clicking on the menu on the right selects 
the Boot Method.</p>


<P>The <u>second row</u> allows you to select the kernel for the Boot/Root set.&nbsp;&nbsp;You 
may either use the file selector button on the right hand side, or you may 
type in the location on the left hand side.</P>

<P>
The <u>third row</u> allows you to select the compressed filesystem you are
providing, using either of the two ways mentioned before. &nbsp;&nbsp;You may use a
pre-made root filesystem or you may create one using one of the Methods 
provided in the Advanced Root Section.
</P>


<P>The <u>fourth row</u> allows you to select the device you want to use.&nbsp;&nbsp;The default
device is the first floppy disk - /dev/fd0.</P>

<p>
The <u>fifth row</u> allows you to choose the size of the device being used.&nbsp;&nbsp;The default size of 1440 assumes you are using a floppy drive 
(Note: You may 
want to experiment with 1722 which works fine with many floppy drives.), but
can be used with other sized devices like tape drives.&nbsp;&nbsp;Click on the 
appropriate radio button to choose either gzip or bzip2 compression if the 
program doesn't automatically detect it.</p>

<P align="center"><b>Verbosity Box</b></p>
<IMG ALT="" SRC="images/verbosity_box.jpg" align="right">

The <u>slider bar</u> on the right allows the output of the verbosity box 
to be 
changed from the highest (2) to the lowest setting (1) or to be turned off (0)
or on again.&nbsp;&nbsp;At times it may be advantageous to turn off the 
verbosity box 
since large quantities of output to this box may cause gbootroot to use too 
much cpu power; however, output may still be found in the text file "verbose" 
in /tmp/gbootroot_tmp'time-date' or /tmp/gboot_non_root_`id -u` for
normal users.</p>

<br><br><br><br><br><br><br><br>

<p><P align="center"><b>
Using the Advanced Boot Section</b></p>

<p><IMG ALT="" SRC="images/ABS.jpg" align="right">

Libraries & Binaries & Modules check boxes:&nbsp;&nbsp;Turn off and on the 
stripping of symbols.&nbsp;&nbsp;The stripping 
behavior for libraries may be changed by clicking on the right mouse button 
to change --strip-debug to --strip-all.&nbsp;&nbsp;Binaries default to
--strip-all and Modules default to --strip-debug.</p>

<p>

"Devel Device"&nbsp;&nbsp;If the device used for development is different than the 
actual boot device, use this field to indicate that device.&nbsp;&nbsp;You will have to 
run lilo -v -C brlilo.conf -r "device mount point" manually at a later time 
on the actual boot device.</p>

<p>

"Opt. Device"&nbsp;&nbsp;Add devices to the boot disk which are necessary for the
kernel to function properly.&nbsp;&nbsp;Put a space between each 
device.&nbsp;&nbsp;For instance, /dev/fb0 for frame buffer devices.</p>

<p>

"append ="&nbsp;&nbsp;Add append options to brlilo.conf.&nbsp;&nbsp;If you are using a frame
buffer device you could add something like video=matrox:vesa:402,depth:16.</p>

<p>

"Kernel Module"&nbsp;&nbsp;Add the modules found in 
/lib/modules/kernel-version which are necessary for the Boot Method to work
properly.&nbsp;&nbsp;If these modules aren't found in the modules directory 
it is assumed 
that they either are in the kernel or they do not exist.&nbsp;&nbsp;In the 
case of 2 disk compression, floppy needs to be included in the 
kernel or included as a module. &nbsp;&nbsp;Kmod inserts the modules, and 
kmod needs to be built into the kernel along
with initrd and ramdisk."</p>

<p>

"Kernel Version"&nbsp;&nbsp;Override the kernel version number found in the
kernel header.&nbsp;&nbsp;This will change the /lib/modules/kernel-version
directory.</p>

<p>

System.map:&nbsp;&nbsp;When a non-running kernel is chosen it is important 
to include a copy of that kernel's System.map file so that depmod can use 
the correct set of kernel symbols to resolve kernel references in each 
module.&nbsp;&nbsp;This can be found in the kernel's source code after 
compilation.

<br><br><br><br><br><br><br>

<P align="center">
<b>Using the Advanced Root Section</b></P>
<p><IMG ALT="" SRC="images/ARS.jpg" align="right">

"Root Device"&nbsp;&nbsp;This is the device used for the root filesystem when 
constructing the Boot/Root set.&nbsp;&nbsp;You may choose a device which is 
different 
than the Boot device, but presently only floppy devices are supported.</p>

<p>

"Root Device Size"&nbsp;&nbsp;The size of the actual media used for the Root Device.</p>

<p>

"Root Filename"&nbsp;&nbsp;The name give to the root filesystem when 
initially made in the temporary creation location.&nbsp;&nbsp;The save 
button allows the creation to
be saved in the permanent default location when the 
Accept button is pressed.</p>

<p>

"Filesystem Size"&nbsp;&nbsp; Root Methods make the filesystem the size 
which is specified here.</p>

<p>

"Compression"&nbsp;&nbsp;Off by default to allow user-mode-linux 
testing.&nbsp;&nbsp;Turn on 
compression when you are ready to use a Boot Method 
which requires compression.</p>

<p>

"Method"&nbsp;&nbsp;The root filesystem creation method.</p>

<p>

"Template"&nbsp;&nbsp;The template associated with a Root 
Method.&nbsp;&nbsp;Not all Root Methods
have templates.</p>

<p>

"Generate"&nbsp;&nbsp;This puts the chosen Root Method in action.</p>

<p>

"UML"&nbsp;&nbsp;Abbreviation for user-mode-linux.&nbsp;&nbsp;This is a 
linux kernel which runs on
top of the host system's linux kernel and allows a you run a live root 
filesystem.</p>

<p>  

"Accept"&nbsp;&nbsp;This accepts the created root filesystem if it is 
found in the 
temporary creation directory.&nbsp;&nbsp;The UML box and the main section 
will now 
reflect the path to this root filesystem.&nbsp;&nbsp;You can now test with 
the UML 
button or a put together a complete Boot/Root set with the Submit button.</p>

<br><br><br><br><br><br><br>

<p><P align="center"><b>User Mode Linux Box</b></p>

<p><IMG ALT="" SRC="images/uml_box.jpg" align="right">

"Xterm"&nbsp;&nbsp;Choose an xterm with its executable options switch.</p>

<p>

"Options"&nbsp;&nbsp;Enter uml command-line options like: mem=64, 
devfs=nomount.</p>

<p>

"Root_Fs"&nbsp;&nbsp;Choose an uncompressed root 
filesystem.&nbsp;&nbsp;Append with ubd?=.</p>

<p>

"Abort"&nbsp;&nbsp;Abort user-mode-linux kernel processes.</p>


<p><P align="center"><b>
About the Yard Box</b></p>

<p><IMG ALT="" SRC="images/yard_box.jpg" align="center"></p>

The Yard Box is a Root Method which is "Generated" from the Advanced Root
Section after a Template is chosen.&nbsp;&nbsp;It has several 
interesting features.

<p>

The check boxes at the bottom represent the different stages involved in
creating a root filesystem.&nbsp;&nbsp;The behavior of these stages 
may be altered in
three ways: Edit->Stages->one-by-one (default) will perform each stage
sequentially, stopping between each stage, the user may continue the process
by pressing the Continue 
button.&nbsp;&nbsp;Edit->Stages->continuous proceeds non-stop
through all the 
stages.&nbsp;&nbsp;Edit->Stages->'user defined' allows the user to
choose any stages the user wants, and will then proceed through all the
chosen 
stages.&nbsp;&nbsp;Choosing only 'Check', 'Links & Deps', 'Create' is a good 
example.</p>  

<p><IMG ALT="" SRC="images/tests.jpg" align="center"></p>

<p>

The behavior of some of the stages may be 
altered.&nbsp;&nbsp;For instance Alt-T allows
you to choose which tests to run on the newly created 
root filesystem.</p>

<p><IMG ALT="" SRC="images/template_search.jpg" align="center"></p>

<p>

Press Alt-S to enable template text searching in either
direction.&nbsp;&nbsp;Find exact matches or ignore case with 
the case sensitive check box.</p>

<p><IMG ALT="" SRC="images/file.jpg" align="center"></p>

<p>

Use Ctl-S to save changes to a template, Alt-A to save the
template with a new name, or Alt-N to create a new template.&nbsp;&nbsp;
bOOTrOOT will not allow read-only 
templates (ex: Examples) or template links to be saved
with their own name; after you make changes to these kind of templates, 
save them with a new name to preserve the changes.</p>


<p><IMG ALT="" SRC="images/settings.jpg" align="center"></p>

<p>

Edit->Setttings has two check boxes which allow you to turn on and off
the automatic NSS and PAM configuration files parsing behavior described
in detail in Example.yard and Example-Mini.yard.

<p><IMG ALT="" SRC="images/stripping.jpg" align="center"></p>

<p>

Edit->Settings->Stripping allows you to turn off/on stripping for
Libraries, Binaries, and Modules.&nbsp;&nbsp;--strip-all is the 
default for binaries and libraries, 
and --strip-debug is the default for modules; however libraries may 
be changed to --strip-debug in the settings.</p>


<p><IMG ALT="" SRC="images/paths.jpg" align="center"></p>

<p>

Edit->Setting->Paths allows you to prepend a new search path to gbootroot's 
environment $PATH variable.
</p>

<p><IMG ALT="" SRC="images/filesystem.jpg" align="center"></p>

<p>

Edit->'File System" may alter the type of filesystem used to make the root
filesystem.&nbsp;&nbsp;Because the filesystem is 
created on a loop device, some 
filesystem types may complain or not be created at all.&nbsp;&nbsp;If there 
isn't any loop device support for the host system's kernel use 
genext2fs.&nbsp;&nbsp;The filesystem type defaults to genext2fs for normal 
users.</p>

<p><IMG ALT="" SRC="images/replacements.jpg" align="center"></p>

<p>

Edit->Replacements in your $HOME/.gbootroot/Replacements directory using
an editor of your choice.
</p>

<p><IMG ALT="" SRC="images/create.jpg" align="center"></p>

<p>

Create->Replacements creates special replacement 
files.&nbsp;&nbsp; Presently it creates 
a fstab configuration file as Replacements/etc/fstab.new in 
$HOME/.gbootroot/yard/.</p>

<br>

<P><IMG ALT="" SRC="images/gBSicon.jpg" align="center"> <b>FAQ</b></P>

<a name ="FAQ">
1.&nbsp;&nbsp;<a href="#1">What's the advantage of using this program?</a> 
<br>
2.&nbsp;&nbsp;<a href="#2">How do I use gBootRoot?</a>
<br>
3.&nbsp;&nbsp;<a href="#3">Oops, I can't get something to work, what should I do?</a>
<br>
4.&nbsp;&nbsp;<a href="#4">What are all these CVS directories doing in my replacements?</a>
<br>
5.&nbsp;&nbsp;<a href="#5">Can I use a program linked to uClibc in the template?</a>
<br>
6.&nbsp;&nbsp;<a href="#6">What do you mean by macro distribution?</a>
<br>
7.&nbsp;&nbsp;<a href="#7">How am I able to create root filesystems as a normal user?</a>
<br>
8.&nbsp;&nbsp;<a href="#8">How can a normal user create a root filesystem larger than 8192k?</a>
<br>
9.&nbsp;&nbsp;<a href="#9">How can I create boot disks as a normal user?</a>
<br>
10.&nbsp;&nbsp;<a href="#10">What is make_debian, and how do I use it?</a>
<br>
11.&nbsp;&nbsp;<a href="#11">My root filesystem doesn't start in single mode when started like this:  "bootdisk 1?"</a> 
<br>
12.&nbsp;&nbsp;<a href="#12">What does the 2 disk compression method do?</a>
<br>
13.&nbsp;&nbsp;<a href="#13">There isn't enough room left on my 1440 floppy to make a Boot or Root disk.  Is there any way to free up more space apart from reducing the size of the kernel?</a>
<br>
14.&nbsp;&nbsp;<a href="#14">gBootRoot doesn't start because it can't locate Gtk.pm?</a>
<br>
15.&nbsp;&nbsp;<a href="#15">If you roll the floppy density counter down to 0 and then try go back up towards 1440 and 1722, you get very funny figures.</a>
</a>


<P><a name="1"><b>What's the advantage of using this program?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></P>

<P><A href="./bootroot.html">BootRoot</A> 
was the original program, but I decided that a GUI approach
provided the user much more versatility and power in creating 
distributions.&nbsp;&nbsp;Since the first gBootRoot,
bOOTrOOT has become a full blown distribution creation program which may
be used by a normal user.
It may be used for the creation of root filesystems in every
imaginable application from Embedded Systems to Mini Distributions to 
Macro distributions to Full sized Distributions.&nbsp&nbsp;The root 
and boot filesystems may 
be tested long before implementation by using user-mode-linux.&nbsp;&nbsp;
Boot Methods are provided to allow root filesystems to run from different types
of media.&nbsp;&nbsp;
Historically, developers have written scripts
which have focused on providing a particular type of root 
filesystem and boot method.&nbsp;&nbsp;Observation reveals that all these
approaches share many commonalities.&nbsp;&nbsp;gBootRoot has been 
designed to embrace
these similiarities, and to allow developers to create drop-in methods 
via modules or easy to understand templates.&nbsp;&nbsp;
gBootroot is the GIMP of distribution creation!</P>

<P><a name="2"><b>How do I use gBootRoot?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></P>

<center><u>Test an existing mini distribution.</u></center>

<P>1.&nbsp;&nbsp;Download 
<a href="http://prdownloads.sourceforge.net/user-mode-linux/root_fs_tomrtbt_1.7.205.bz2">
root_fs_tomrtbt_1.7.205.bz2</a> from 
<a href="http://www.sourceforge.net/projects/user-mode-linux">
user-mode-linux</a> at Sourceforge to your 
$HOME/.gbootroot/root_filesystems. </p>


<p>  

2.&nbsp;&nbsp;bzip2 -dc root_fs_tomrtbt_1.7.205.bz2 > root_fs_tomrtbt_1.7.205.
</p>

<p>
 
3.&nbsp;&nbsp;Run 
gbootroot.&nbsp;&nbsp;Click on the Advanced Root Section (ARS), click on
the UML button. &nbsp;&nbsp;Select root_fs_tomrtbt_1.7.205, add devfs=nomount
to the options, and click on the Submit
button.</p>

<center><u>Create a boot and root floppy for an existing mini distribution.</u></center>

<p>

4.&nbsp;&nbsp;Click on the Advanced Boot 
Section (ABS).&nbsp;&nbsp;Root_fs_tomrtbt is about 16M, so add ramdisk_size=16384 to
the 'append=' entry.&nbsp;&nbsp;From the main box choose '2 disk compression', and
press on the Root Filesystem button and select root_fs_tomrtbt_1.7.205.bz2.
</p> 

5.&nbsp;&nbsp;Click the Submit button on the main 
box.&nbsp;&nbsp;Have two floppy disks ready.

<p>

6.&nbsp;&nbsp;When you boot the boot disk you will see Lilo, you may access the menu using [Ctrl] and [Tab] to see the available images, or wait for the
prompt to insert the root disk.</p>


<center><u>Test a macro distribution created by make_debian-X11.</u></center>


<p>

 
7.&nbsp;&nbsp;Download 
<a href="http://sourceforge.net/project/showfiles.php?group_id=9513">
root_fs_debian_x11-(latest revision).bz2</a>.&nbsp;&nbsp;Then follow the 
instructions in the 
first three steps, but don't add devfs=nomount.&nbsp;&nbsp;This root 
filesystem was created with 
the make_debian-X11 script from the make-debian-x11 add-on found at 
<a href="http://sourceforge.net/project/showfiles.php?group_id=9513">
gbootroot's</a> Sourceforge home.</p>


<center><u>Make your own micro distribution from an existing template.</u></center>

<p>

8.&nbsp;&nbsp;Click on the ARS if its not already opened.&nbsp;&nbsp;
Choose Yard from the Method pull-down menu.&nbsp;&nbsp;Choose 
<b>Example-Mini.yard</b>
from the pull-down Template menu.&nbsp;&nbsp;Click on the Generate button.
&nbsp;&nbsp;The Yard Box will pop up.&nbsp;&nbsp;Click on the Continue button
until the Create check box turns off.&nbsp;&nbsp;You could continue to the
tests, but they really wouldn't apply to this minimalistic example because
there are no links or login type files in the template.</p>

<p>

9.&nbsp;&nbsp;Experiment with Edit->Stages from the Yard Box menu.
&nbsp;&nbsp;Try different types of staging behavior, and notice the 
differences.</p>

<p>

10.&nbsp;&nbsp;Test your creation with the UML box as explained in step 3.
&nbsp;&nbsp;You will want to add init=/bin/bash to the Options entry.</p>

<p>

11.&nbsp;&nbsp;At this point you will probably want to play around a little 
bit.&nbsp;&nbsp;Familiarize yourself with the Format Rules found 
near the top of the template.&nbsp;&nbsp;You may want to save the template
with a different name and experiment with changes, or create a new template
using File->New (Shortcut: Alt-N).</p>


<center><u>Make your own mini distribution from an existing template.</u></center>

<p>

12.&nbsp;&nbsp;Choose <b>Example.yard</b> from the Template menu in the ARS.
&nbsp;&nbsp;Save it with a new name.</p>

<p>

13.&nbsp;&nbsp;There are two types of inittabs provided for each major 
distribution type.&nbsp;&nbsp;The inittab with nodevfs appended doesn't use 
the
device fs, i.e. the devfs=nomount kernel option.&nbsp;&nbsp;Uncomment the 
inittab, getty, and gettydefs (if required) for
your distribution type.&nbsp;&nbsp;If you aren't using Debian make sure to 
comment (#) out the corresponding stuff for Debian.</p>

<p>

14.&nbsp;&nbsp;Example.yard template introduces you to Replacements like
the inittabs described above.&nbsp;&nbsp;
Replacements can be anywhere and are specified in the template as either 
an absolute path or relative to $PATH
(Edit->Settings->Path); the default path location for Replacements for users is
$HOME/.gbootroot/yard/Replacements.
&nbsp;&nbsp;Also, this template introduces you to links, $VERSION, 
how library dependencies are automatically figured for binaries 
and the automated 
approach for finding service modules and dependencies for PAM and NSS.
&nbsp;&nbsp;Once you learn the format rules and how they are interpreted 
by the program you will find that making your own templates is 
quite simple.</p>

<p>

15&nbsp;&nbsp;Click on the Continue button until you finish the Space Left 
stage.&nbsp;&nbsp;Adjust the Filesystem Size in the ARS to a size larger than 
the Total space shown in the verbosity box.&nbsp;&nbsp;Create your 
root_fs, 
and make sure there was enough room left.&nbsp;&nbsp;You may have to adjust the
size and run Create again.</p>

<p>

16&nbsp;&nbsp;Now that you have a root filesystem you may continue to 
the Test stage and observe what is missing.&nbsp;&nbsp;Next run the root_fs 
from the UML box.&nbsp;&nbsp;
If things don't work correctly you will have to hunt down the cause,
make the appropriate changes and proceed through the stages again.&nbsp;&nbsp
If you only make a change to a Replacement, you only have to run
the Create stage again.&nbsp;&nbsp;If you make a change to the template you 
have to run at least the Check, Links & Deps, and Create stages again.</p>


<center><u>Make your own root filesystems from your own templates.</u></center>

<p>

17.&nbsp;&nbsp;Now that you have done your homework, I set you free to create
your own root filesystems from your own templates with replacements
of your own choice.&nbsp;&nbsp;Create a root_fs which can fit on a block 
device, and then create an emergency disk customized for your own system, 
or create your own customized macro distribution and run it from the 
UML box to try things you never would have dreamed of doing on your host 
system.&nbsp;&nbsp;And that is just the beginning of the things you can do.


<P><a name="3"><b>Oops, I can't get something to work, what should I do?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

If something isn't working for you, I want to know!&nbsp;&nbsp;In fact, unlike
some developers who don't want to be deluged with bugs, I heartily encourage
users to send me all their problems.&nbsp;&nbsp;Why?&nbsp;&nbsp;I love bugs,
and I have experience working in Quality Assurance, so I know that a 
program like gbootroot is loaded with glitches unforeseen
 by the developer.&nbsp;&nbsp;I consider
a bug anything which effects the user negatively, 
whether it is a user interface (UI) which is hard to understand
or use, documentation which seems misleading, or if the program doesn't
seem to deliver results as it should.&nbsp;&nbsp;Even if you think 
your problem may be due to your own lack of understanding, I still 
recommend that you contact me after reasonable attempts, because what 
you may be experiencing is what "MANY" may be experiencing.&nbsp;&nbsp;At the
bottom of this page is the contact information.&nbsp;&nbsp;Your problem
will help gbootroot become a better program for all!

<P><a name="4"><b>What are all these CVS directories doing in my replacements?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<P>
CVS directories are deliberately put in the Replacement directories to 
prevent users from making changes to global replacement files.&nbsp;&nbsp;
This allows developers who create add-ons (ex: make-debian-x11) to remain 
confident that any changes made to
add-on replacements will remain available to all users.&nbsp;&nbsp;
Replacements
from add-ons are placed in the archictecture-independent 
/usr/share/gbootroot/yard/Replacements directory, and the
archictecture-dependent /usr/lib/bootroot/yard/Replacements 
directory.&nbsp;&nbsp;
When a user opens up gBootRoot, the program checks to see if there are any
new replacements and then creates symlinks from the 
$HOME/.gbootroot/yard/Replacements directory to the 
replacement repositories.&nbsp;&nbsp;
In general the repositories for replacements are owned by root, so normal 
users can't make changes to these files; however, when root is 
editing replacements in the $HOME Replacements location, it should be the 
administrator's policy to use an editor which respects versioned files (i.e. Emacs).&nbsp;&nbsp;Then the 
administrator will not be able to 
make any changes to the replacements repository because the CVS directories 
keep date information which prevents the editing of these
files.&nbsp;&nbsp;The files kept in /usr/lib are usually binary files
specific to the host architecture, 
where as the files linked from /usr/share are often text files compatible
with any architecture; however,
this directory is meant to be used for data which shouldn't be modified 
directly by any user 
(see <a href="http://www.pathname.com/fhs/">FHS</a>).</p>

<p>

<em>Note for users of version 1.2.14 or earlier</em>:  Verions of gbootroot
before 1.3.0 didn't have this set-up, instead there were just copies of add-on
replacements in the $HOME replacement directory to allow the user
to directly modify add-on replacements.&nbsp;&nbsp;
In order to get the full benefit of the new change you will need to
rename any of the $HOME/.gbootroot/yard/Replacements 
you've modified and put them in a safe place, then remove the old 
replacements, and return the renamed replacements.

<p>

<a name="5"><b>Can I use a program linked to uClibc in the template?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

Binaries are auto-magically checked to discover whether they require libc6 or
uClibc.&nbsp;&nbsp;If they are found to require uClibc 
/usr/i386-linux-uclibc/bin/ldd
is used to discover shared library dependencies, otherwise ldd is
called without any path.</p>


<a name="6"><b>What do you mean by macro distribution?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

A macro distribution is a term I coined.&nbsp;&nbsp;It implies a software
distribution larger than a mini distribution usually 
associated with 1.44 to 1.722 sized floppy disks, but smaller than a
base distribution which provides the foundation to create a full size 
distribution.&nbsp;&nbsp;It is usually pruned, and provides the 
absolute minimum needed to provide all the functionality usually
associated with a full sized distribution, yet it still uses the same 
libraries and binaries.&nbsp;&nbsp;Because it can be made quickly, it is 
useful for creating a current snapshot of ones own host systems, and can be 
used to run experiments safely via user-mode-linux without fear of 
corrupting the host system.</p>


<a name="7"><b>How am I able to create root filesystems as a normal user?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

Genext2fs is used to allow a normal user to create an ext2 
filesystem with all UIDS and GIDS belonging to 0 (root) without the need for 
a loop or ram device.&nbsp;&nbsp;Device nodes are created from a device table
file written to by gbootroot.&nbsp&nbsp;This program is authored by 
Xavier Bestel, but the version used by gbootroot has
modifications from Erik Andersen (BusyBox) to allow a device table
to be used rather than a device listing.&nbsp;&nbsp;The maximum allowable size
for a filesystem is 8192k.&nbsp;&nbsp;User and group information
can be changed when the filesystem is run from a kernel.

<p>

<a name="8"><b>How can a normal user create a root filesystem larger than 8192k?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

Although genext2fs only allows a normal user to create a UID/GID 0 root
filesystem up to a maximum size of 8192k, there is an easy solution to
creating root filesystems larger than this limit.&nbsp;&nbsp;Eventually,
I'll automate the steps required, but for now you will have to do it
manually.

<p>

1.&nbsp;&nbsp;You may want to create a helper root filesystem 
(<=8192k), and give it an unique name in the
ARS Root Filename.&nbsp;&nbsp;The root_fs 
created from Example.yard provides all the functionality you need, 
regardless, you will need some sort of working root_fs with all the 
necessary system utilities before proceeding with the next step.&nbsp;&nbsp;
We will call this root_fs_helper.

<p>

2.&nbsp;&nbsp;Create your root filesystem (>8192k) as you normally would when 
using
genext2f, making sure to choose the filesystem size you require from 
the ARS.&nbsp;&nbsp;
Proceed through the required stages, and when you finish the Create stage
an ERROR dialog box will pop up saying "Cannot genext2fs 
filesystem" which you can safely ignore.&nbsp;&nbsp;At this point in the 
"echo /tmp/gboot_non_ root_`id -u`" directory there is an empty file 
with the name 
specified in the ARS Root Filename field which we will assume is called
root_fs.&nbsp;&nbsp;Above this directory
in loopback/  all files and directories copied over during the Create stage 
can be found.

<p>

3.&nbsp;&nbsp;Open up the UML box from the ARS.&nbsp;&nbsp;In the Root_Fs
entry ubd0 should be pointing to the helper root_fs, and
ubd1 should be pointing to the empty root_fs file:&nbsp;&nbsp; 
<pre>
  ubd0=/tmp/gboot_non_root_1000/root_fs_helper ubd1=/tmp/gboot_non_root_1000/root_fs
</pre>
</p>

<p>

4.&nbsp;&nbsp;The devfs is used in this example.&nbsp;&nbsp;
Press the Submit button on the UML box, and login to 
the root_fs_helper.&nbsp;&nbsp;Create two mounting directories if they
don't exist.&nbsp;&nbsp;For this example, /mnt1 and
/mnt2 are used.&nbsp;&nbsp;

<p>

5.&nbsp;&nbsp;Make a filesystem type of your own choice on /dev/ubd/1:
<pre>
  mke2fs -m0 /dev/ubd/1
</pre>

<p>

6.&nbsp;&nbsp;Mount /dev/ubd/1 on /mnt1:
<pre>
  mount /dev/ubd/1 /mnt1
</pre>

<p>

7.&nbsp;&nbsp;Mount the host filesystem on /mnt2:
<pre>
   mount -t hostfs none -o /tmp/gboot_non_root_1000/loopback /mnt2
</pre>

<p>

8.&nbsp;&nbsp;Copy everything from loopback to /mnt1:
<pre>
  cp -a /mnt2/* /mnt1
</pre>

<p>

9.&nbsp;&nbsp;Change UIDs and GIDs to the appropriate user:
<pre>
  chown -v -R 0:0 /mnt1
  chown -v -R 1002:1002 /mnt1/home/user
</pre>

<p>

10.&nbsp;&nbsp;Unmount everything.&nbsp;&nbsp;Root_fs is now ready to be used!

<p>

<a name="9"><b>How can I create boot disks as a normal user?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

Make the boot disk as you normally would.&nbsp;&nbsp;As long as you have
write permissions to the boot device you shouldn't run 
into a problem.&nbsp;&nbsp;However, not all boot loaders
can be set-up as a non-root user, but, you may still continue to
the end of the process and set-up the boot loader later from a machine you
have root access on.&nbsp;&nbsp;In order to use lilo while running
gbootroot there
are two prerequisites your administrator will have to establish for you.
First, he will have to edit the fstab to allow you to mount a certain
block device.&nbsp;&nbsp;For instance, to allow you to mount /dev/fd0, you
have to mount the /tmp/gboot_non_root_mnt_`id -u` directory.&nbsp;&nbsp;If
your UID is 1000, then a line like this is added to the fstab:
<pre>
/dev/fd0   /tmp/gboot_non_root_mnt_1000   auto   defaults,user,noauto   0   0
</pre>

<p>

Next, the administrator needs to give you access to the 
lilo command.&nbsp;&nbsp;Sudo is a good solution, and in gbootroot the
$main::sudo variable is assigned "sudo", this can be changed by the 
administrator to some other sudo-like program.&nbsp;&nbsp;The administrator 
then uses visudo to edit the sudoers file with a line like this:

<pre>
user  hostname = NOPASSWD: /sbin/lilo
</pre>

<p>

Note that NOPASSWD is used.&nbsp;&nbsp;Gbootroot won't prompt for a password,
and just assumes no password in necessary.&nbsp;&nbsp;I could change this
behavior if people request it.&nbsp;&nbsp;If modules are required for
the boot method to work properly, you need to have read 
permissions to them so they can be copied.&nbsp;&nbsp;Now a bootdisk with 
lilo can be made.

<p>

<a name="10"><b>What is make_debian, and how do I use it?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>

Make_debian is a script which takes information from
a Debian installation and creates a template which can be used to make a
macro distribution using gBootRoot's yard method.&nbsp;&nbsp;
It creates replacements for important configuration files to represent
the actual packaging state it will be providing.&nbsp;&nbsp;
In order to use this script you need to be running a Debian-like
distribution, anotherwards, one which uses dpkg, apt and file-rc to maintain 
its packaging and boot hierarchy.&nbsp;&nbsp;Dswim is used to collect
information used in making the template.&nbsp;&nbsp;When you run the
template in the Yard Box as 
a normal user follow the instructions from the FAQ answer to
"How can a normal user create a root filesystem larger than 8192k?"</p>

<p>

Run make_debian from the command-line.&nbsp;&nbsp;The script first finds all
required packages on your host system, then it checks to see if any of
the extra packages mentioned in its configuration are missing.&nbsp;&nbsp;
As a rule, even if extra packages
are missing, a working distribution will still be created.&nbsp;&nbsp;
The script will then ask you a few questions, 
and then proceed to make Debian-`uname -n`.yard in your template 
directory.&nbsp;&nbsp;

<p>

<em>Extra Packages and static template data:</em>

<br>

You can resolve missing packages by installing them on your system, or you can
edit the script and replace those packages with a suitable replacement,
since you may be using a different version of Debian then the author 
used when putting together make_debian.&nbsp;&nbsp;Make a copy of make_debian,
and then edit the part under EDIT HERE between qw().&nbsp;&nbsp;
You may edit the static data for the template within the script where it says 
EDIT TEMPLATE BELOW.&nbsp;&nbsp;
The <b>make-debian-x11</b> add-on is actually the 
result of
making these modifications.&nbsp;&nbsp;First, extra packages were 
added, second, extra replacements were provided and the static information
in the template was modified to reflect these replacements.


</p>


<a name="11"><b>My root filesystem doesn't start in single mode when started like
this:&nbsp;&nbsp&quot;bootdisk 1?&quot;</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></P>

<P>

When you start a kernel image with 1, you are telling it to start in runlevel 
1, not in single mode.&nbsp;&nbsp;Use "single" instead.</p>

<p>

While on the subject, it should be pointed at the setting up init and its 
runlevels is one of the
most challenging areas of creating a bootable root_fs.&nbsp;&nbsp;Often 
your creation will only work with "single" until all the conflicts
are resolved.&nbsp;&nbsp;Things are complicated even futher by the fact that
devices can now be set up in two majors ways: tty? or ttys/? (devfs).
&nbsp;&nbsp;Fortunately, user-mode-linux comes in very handy for hunting
down all the bugs.



</P>


<P><a name="12"><b>What does the 2 disk compression method do?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></P>
<P>This Boot Method creates a boot disk with lilo, a kernel and an initrd 
image.&nbsp;&nbsp;The 
initrd script mounts another root disk with a compressed (gzip or bzip2) 
filesystem.</P>


<p><a name="13"><b>There isn't enough room left on my 1440 floppy to make a Boot or Root
disk.&nbsp;&nbsp;Is there any way to free up more space apart from reducing 
the size of the kernel?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>
Move the device size to 1722.  This is a trick that <a href="http://www.toms.net/rb/">tomsrtbt</a> uses on his famous rescue disk.</p>

<p>

(Update 10/06/2001)  <br>
Up until mke2fs version 1.19  you were able to do 
`mke2fs -F /dev/fd0 1722` on a 1440 device without any problem, but since 
then mke2fs has become much more particular about enforcing actual device 
size. .&nbsp;&nbsp;Mke2fs will complain:</p>

<p>

"mke2fs: Attempt to write block from filesystem resulted in short write 
zeroing block 1600 at end of filesystem."</p>

<p>

I understand Theodore Ts'o reasoning for doing this, but I strongly believe 
that the old behavior was very useful for people creating 
mini-distributions so I have issued 
<a href="
http://sourceforge.net/tracker/index.php?func=detail&aid=468652&group_id=2406&atid=352406">Feature Request #468652</a> at e2fsprogs site 
at Sourceforge.&nbsp;&nbsp;It should 
be noted that fdformat is an unacceptable solution because it tends
to be machine specific, and the original mke2fs behavior made floppies that
worked 
everywhere.&nbsp;&nbsp;Feel free 
to add your comments to the Feature Request.&nbsp;&nbsp;Thanks.</p>

<p>

<a name="14"><b>gBootRoot doesn't start because it can't locate Gtk.pm?</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></P>

<p>This program requires Gtk-Perl available from <a href="http://www.perl.com/CPAN">CPAN</a>, <a href="http://freshmeat.net/projects/gtk-perl">Freshmeat</a> or most GNU/Linux distributions.</p>

<p><a name="15"><b>If you roll the floppy density counter down to 0 and then try go back 
up towards 1440 and 1722, you get very funny figures.</b></a>&nbsp;&nbsp;<a href="#FAQ">[back]</a></p>

<p>
This is because of the way Gtk works.&nbsp;&nbsp;There are two adjustments, 
step and page increments.&nbsp;&nbsp;When you press your first mouse button the step 
has been set to 282 so that a person can easily switch between 1440 and 1722.  
&nbsp;&nbsp;When you use your second mouse button the page is set at 1024.  You can go 
down to zero by pressing your third mouse button on the 
down arrow.&nbsp;&nbsp;Now 
page up with the second button to 1440 and step with the first button to 
1722.&nbsp;&nbsp;Pretty cool, eh?</p>

<p>While we are on this subject please check out these keyboard shortcuts for Gtk.</p>

    <P>Motion Shortcuts
    
    <UL>
      <LI> Ctrl-A   Beginning of line </LI>
      <LI> Ctrl-E   End of line </LI>
      <LI> Ctrl-N   Next Line </LI>
      <LI> Ctrl-P   Previous Line </LI>
      <LI> Ctrl-B   Backward one character </LI>
      <LI> Ctrl-F   Forward one character </LI>
      <LI> Alt-B    Backward one word </LI>
      <LI> Alt-F    Forward one word </LI>
    </UL>
    
    <P>  Editing Shortcuts
    
    <UL>
      <LI> Ctrl-H   Delete Backward Character (Backspace) </LI>
      <LI> Ctrl-D   Delete Forward Character (Delete) </LI>
      <LI> Ctrl-W   Delete Backward Word </LI>
      <LI> Alt-D    Delete Forward Word </LI>
      <LI> Ctrl-K   Delete to end of line </LI>
      <LI> Ctrl-U   Delete line </LI>
    </UL>
    
    <P>Selection Shortcuts
    
    <UL>
      <LI> Ctrl-X   Cut to clipboard </LI>
      <LI> Ctrl-C   Copy to clipboard </LI>
      <LI> Ctrl-V   Paste from clipboard </LI>
    </UL>

<IMG ALT="Larry Ewing's Penguin celebrates in gBootRoot." SRC="images/peng-movie.4.gif">

<br><br><br>
Contact me:&nbsp;&nbsp;Jonathan Rosenbaum&nbsp;&nbsp;<<a href="freesource@users.sourceforge.net">freesource@users.sourceforge.net</a>>
<br>
Submit a Bug:&nbsp;&nbsp;<a href="http://sourceforge.net/bugs/?group_id=9513">gBootRoot Bug System</a>
<br>
Join or browse the mailing lists:&nbsp;&nbsp;<a href="http://sourceforge.net/mail/?group_id=9513">gbootroot-{devel,user} mailing lists</a>
<br>
Ask a question:&nbsp;&nbsp;<a href="http://sourceforge.net/forum/forum.php?forum_id=29639">Help Forum</a>
<br>
Start a discussion:&nbsp;&nbsp;<a href="http://sourceforge.net/forum/forum.php?forum_id=29638">Open Discussion Forum</a>

<p>


</body></html>