$Id: README,v 1.29 2003/02/18 18:28:06 freesource Exp $ Program: gBootRoot pronounced "bOOtrOOt" License: GNU General Public License BUILDING --------- If you can compile a kernel on your system, then you should have no problems getting the Makefile to work, and if you are using the sources for the Debian package, then you can always do an "apt-get build-dep gbootroot" to automatically figure out your build requirements. Gbootroot makes its own root_fs, when the output gets colorful (blue and red) you know this is happening. If things go wrong at this point you will want to look at the requirements below. You will want wget installed because the Makefile attempts to download the necessary sources and then places them in the sources/ directory. This is what makes the unofficial Debian and RedHat source packages unique, because usually another package would provide the necessary sources since official distributions aren't always used online. On the other hand, this is a FEATURE. Anytime you want to update gbootroot to the current user-mode-linux patch just change the Makefile PATCH_VERSION, run ./configure, run "make clean", and then "make". If this is your first time making gbootroot from the source package just run ./configure and "make". The two root_fs created are root_fs_helper and Initrd.gz. Root_fs_helper has lots of different filesystem utilities, but the CRUCIAL ones to get the build to work properly are mke2fs and mkcramfs. Here's a list of what utilities are included: mke2fs mkcramfs genromfs mkfs.minix mkminix mkreiserfs mkfs.jffs mkfs.jffs2 These are the build-depends from the Debian source package that can be used as a guide for other distributions: binutils (>= 2.12.90.0), fileutils (>= 4.0), gcc (>= 2:2.95.4), make, libc6-dev (>= 2.2.5), bin86, wget, mkcramfs, e2fsprogs, reiserfsprog, genromfs, util-linux, mtd-tools, m4, libreadline4-dev, libncurses5-dev, libgtk-perl (>= 0.7002) [see gbootroot's site], libexpect-perl [required rpms can be found at gbootroot's site]. For instance, in Redhat libc6-dev translates into glibc-devel and glibc-kernheaders, libreadline4-dev translates into readline-dev, libncurses5-dev translates into ncurses-devel, reiserfsprog translates into reiserfs-utils. Mandrake requires glibc-static-devel along with glibc-devel, but the other package names are more similar to Debian. Suse users may need to edit /usr/include/asm/ptrace.h adding "#define FRAME_SIZE 17" after the "#define SS 16" line or else uml won't compile. This was observed in Suse 7.3; why this line is missing is a complete mystery. UML KERNEL CUSTOMIZATION ------------------------ You may want to add your own customizations to the uml kernel. To accomplish this you will need to understand that the Makefile runs oldconfig on the configuration file ".config" which is first copied from user-mode-linux/usr/lib/uml/config to .config in the linux-$VERSION directory where the kernel sources reside. What this means is that after doing a make config or one of the config alternatives from the kernel sources directory, you should copy the customized configuration file you made to the ../user-mode-linux/usr/lib/uml directory and then run gbootroot's Makefile. INSTALLING ---------- If you build the package as a non-root user, and you don't have permissions to write to system directories you can always run gbootroot from the immediate source directory "./gbootroot --home ." or "perl -I . ./gbootroot --home ." if there is already another installed version on the system. To install on the system type "make install" and follow the instructions in the "Important Configurations" section near the bottom of this page, and then run gbootroot. When you run gbootroot if a boot or root method are missing required programs, pop-up dialog boxes and information from the verbosity box will give a good indication of what is causing the problem. REQUIREMENTS TO RUN GBOOTROOT ----------------------------- PERL MODULES Gtk-Perl (Required for CLI/GUI) ------------------------------- Version 0.7002 or greater. http://freshmeat.net/projects/gtk-perl [ The next three are required for automated normal (non-root) user functionality . ] Expect (tested with 1.11/1.15) ------------------------------ http://www.perl.com/CPAN/modules/by-module/Expect/ http://sourceforge.net/projects/expectperl RPM version can be found at sf.net/gbootroot. IO::Stty -------- http://www.perl.com/CPAN/modules/by-module/IO/IO-Stty-.02.tar.gz RPM versions can be found at sf.net/gbootroot. IO::Tty ------- http://www.perl.com/CPAN/modules/by-module/IO/IO-Tty-1.02.tar.gz http://sourceforge.net/projects/expectperl RPM versions can be found at sf.net/gbootroot. BOOT METHODS 2 disk compression ------------------ This method will tell you when any of these utilities are missing: ash lilo bzip2 file ROOT METHODS Yard (This is a method - not a program) -------------------------------------- Watch the verbosity box, it will be obvious when a required command is missing. Make sure you have this file installed on your system: file IMPORTANT CONFIGURATIONS "chown 0:0 /usr/bin/uml_net; chmod 4755 /usr/bin/uml_net" so normal users can have network capabilities; ofcourse, you may totally avoid doing the suid thing by using tunctl. Should the host kernel have the skas patch applied? "Yes, I highly recommended it. It's a great performance improvement, and gbootroot will run a lot better. Modes are figured out automatically by skas-or-tt so don't add mode={tt,skas} in the UML box. The host-skas3.patch is available from http://user-mode-linux.sf.net/dl-sf.html . Alternatively, there is a skas module available from http://www.rogerbinns.com/modskas3/ ." DOCUMENTATION Documentation and FAQ are in doc/html/index.html Have fun! -Jonathan Please infuse your suggestions, bug reports, insults, and patronage back to: Jonathan Rosenbaum