Linux Step By Steps
ROLLING YOUR OWN DISTRO.

From: Joseph Cheek <joseph@cheek.com>


"Redmond Linux, Personal Edition, caters to computer novices. It's
simplified RLizard graphical installer and automatic configuration of
windows (smb) networking make it easy to install. Add a simplified KDE
2.2 desktop, task-oriented menus, network browsing similar to network
neighborhood, and a "My Linux System" that allows quick configuration
of hardware, and it's easy to use also. Details at www.redmondlinux.org ."



When i started working on RL, i had no idea how caldera built their distro. i called them up and asked them if they would give me their build procedures; they said no, they  onsidered them their crown jewels and i couldn't have them. so this has all been reverse engineered; i stripped down the CD, figured out which files were key to the install process, and started to write scripts to create those scripts. now over a year later i've got just about all of it down 8-).

i'll give you the steps one at a time. go ahead and do these one at a time, and then when you have finished it i will document the next step. feel free to ask questions at any  point. i'm going to guide you through the RL build process first; once you have that down you should be able to modify the scripts for caldera as well.

the scripts, which were originally built by me for eD2.4, have been altered slightly by me to work with RL [now based on COL31]. some of the dirs are RL specific; in particular, RPMS are now built in /usr/src/RedmondLinux instead of /usr/src/OpenLinux, the images live in /opt/redmondlinux [more on this later], and the "col" directory on the CD has been renamed "rl". the scripts will need to be altered to move these locations back to the original places once you start on COL proper.

there are three main components to the building process: 1] the build directory with its associated tools, 2] the packages, and 3] lizard. question: do you want to show you how to update lizard as well?

we can start with the build directory. the necessary scripts are included in the rl/build-bin subdir of the cd1_binary cd. before using them, you will need to prepare your system.

Task 1: prepare your system.

get *at least* 5G of free disk space. more is better. right now i have 24G which gives me room for my a couple backups of builds; each build is .9G, and you need four of these [one installed running system, one build you are working on, one master build for reference, and one set of ISO images.

create at least 3 partitions: one for / [mine is 2G], one for /usr/src/RedmondLinux [mine is 4G], and one for /opt/redmondlinux [mine is 11G]. if you have room, create at least another 1-2G test partition [for testing clean installs]. create your swap partition and put all of the rest of the space into /opt/redmondlinux.

download and install all three RedmondLinux CD's. installing the first CD will put all 331 [currently] packages on your system; also install all of the optional components in the rl/*/RPMS directories of the cd, using rpm -ivh. install all of the devtools from the rl/devel/RPMS directory of the third cd, again with rpm -ivh.

if you have adequate room in /usr/src/RedmondLinux, install the SRPMS from the second cd. they live in rl/*/SRPMS on it. you don't have to do this now, but if you have the room you might as well.

you will have /opt/redmondlinux/bin as your only dir in /opt/redmondlinux  [and lost+found]. yes trust me, it really does need to be its own partition. create two more subdirs here, builds and source. each new [released] version of the CD is called 'build', numbered consecutively. redmond linux is on build 35 now.

so the build subdir holds new builds, in both source [raw files] and finished [ISO images] format. it also holds your master [reference] build, ie a virgin copy of the product you are rebuilding.

the source subdir holds CVS source for stuff you want to keep up to date on; i use it mainly for lizard and kde, but also XFree86 and mozilla
sometimes.

most likely you have done this as root; chmod builds and sources to your normal user. all scripts [unless otherwise stated] are run as your normal
user.

now you have:

sanfrancisco:~$ dir /opt/redmondlinux/
total 28
drwxr-xr-x 2 root root 4096 Jun 26 10:18 bin/
drwxr-xr-x 5 joseph users 4096 May 30 14:54 builds/
drwxr-xr-x 2 root root 16384 Jun 29 10:43 lost+found/
drwxr-xr-x 7 joseph users 4096 Jun 29 09:10 sources/

cd to your builds directory. here create three directories: "1", "COL31", and "current-iso". the "1" subdir is to hold the source files [*not* source code] for your first build, which will be build #1; the "COL31" is to hold the virgin COL31 source files; and "current-iso" is to hold the completed ISO images.

then create a symlink called "current", pointing to "1", and a file called CURRENT_BUILD, which contains the number of the current build.

sanfrancisco:/opt/redmondlinux/builds$ ln -s 1 current
sanfrancisco:/opt/redmondlinux/builds$ echo 1 > CURRENT_BUILD
sanfrancisco:/opt/redmondlinux/builds$ dir
total 16
drwxr-xr-x 2 joseph users 4096 Jun 29 22:49 1/
drwxr-xr-x 2 joseph users 4096 Apr 20 15:30 COL31/
-rw-r--r-- 1 joseph users 2 May 30 14:54 CURRENT_BUILD
lrwxrwxrwx 1 joseph users 2 Jun 29 10:44 current -> 1/
drwxr-xr-x 2 joseph users 4096 Jun 29 09:12 current-iso/

populate the "1" subdir with the contents of all three RL cd's by using cp -a. you'll get a few messages about overwriting symlinks; that's ok.

[insert cd1_binary into cd drive, close any kautorun popups]
sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* 1

[insert cd2_source into cd drive, close any kautorun popups]
sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* 1

[insert cd3_devtools into cd drive, close any kautorun popups]
sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* 1

do the same with your COL31 cd's [what? you don't have COL31 cd's? you can substitute RL cd's in a pinch, but i suggest getting the COL31 stuff because they can test their packages better. i also update my packages to match theirs when i can]:

[insert install cd into cd drive, close any kautorun popups] sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* COL31

[insert first source cd into cd drive, close any kautorun popups]
sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* COL31

[insert second source cd into cd drive, close any kautorun popups]
sanfrancisco:/opt/redmondlinux/builds$ cp -a /auto/sr0/* COL31

as i remember, the second source CD puts SRPMS into col/source/SRPMS
instead of col/install/SRPMS. move all of the SRPMS into
col/install/SRPMS where they belong.

now your hard drive is beginning to fill up; RL is 923M and COL31 is 1.4G. All in all we have used 2.3G, plus the ~1G to install RL in the first place [and possibly several hundred Megs installing SRPMS into /usr/src/RedmondLinux. and we haven't even built an ISO yet!

sanfrancisco:/opt/redmondlinux/builds$ du -hsc *
923M 1
1.4G COL31
4.0k CURRENT_BUILD
0 current
4.0k current-iso
2.3G total

the scripts i use are in the rl/build-bin subdir. make sure they are there:

sanfrancisco:/opt/redmondlinux/builds$ dir current/rl/build-bin/
total 72
-rwxr-xr-x 1 joseph users 734 Jan 2 17:47 cadd*
-rwxr-xr-x 1 joseph users 595 Jan 19 17:23 cls*
-rwxr-xr-x 1 joseph users 2901 May 29 11:37 createupdates*
-rwxr-xr-x 1 joseph users 2617 Jun 26 10:16 createupdatesets*
-rwxr-xr-x 1 joseph users 3676 May 28 21:33 dothefunkycdimage*
-rwxr-xr-x 1 joseph users 1509 May 29 17:55 dothefunkyhdimage*
-rwxr-xr-x 1 joseph users 2259 Oct 11 2000 fadd*
-rwxr-xr-x 1 joseph users 1417 Oct 27 2000 fls*
-rwxr-xr-x 1 joseph users 2310 Oct 11 2000 frm*
-rwxr-xr-x 1 joseph users 2877 Dec 14 2000 fup*
-rwxr-xr-x 1 joseph users 4154 May 23 10:51 kdebuild*
-rwxr-xr-x 1 joseph users 2083 Jun 27 17:33 mount-all-images*
-rwxr-xr-x 1 joseph users 2461 Feb 16 17:14 padd*
-rwxr-xr-x 1 joseph users 1423 Feb 15 17:33 pls*
-rwxr-xr-x 1 joseph users 3871 Oct 25 2000 prm*
-rwxr-xr-x 1 joseph users 2472 Mar 19 13:37 pup*
-rwxr-xr-x 1 joseph users 2164 May 10 13:07 unmount-all-images*

a RL install will place /opt/redmondlinux/bin into your path. symlink
these files into /opt/redmondlinux/bin so that they are accessible:

sanfrancisco:/opt/redmondlinux/builds$ cd ../bin
sanfrancisco:/opt/redmondlinux/bin$ ln -s ../builds/current/rl/build-bin/* .

[even though the build is in the "1" dir, use "current" instead to refer
to the current build. you'll see why later].

once you have done all this, you have completed BuildDir task 1! assuming
everything went well, let's try to build a CD. change to the
/opt/redmondlinux dir and execute "dothefunkycdimage":

sanfrancisco:/opt/redmondlinux/bin$ cd ..
sanfrancisco:/opt/redmondlinux$ dothefunkycdimage
[lots of output ...]
total 910M
-rw-r--r-- 1 joseph users 138M Jun 29 23:18 cd3_devtools.iso
-rw-r--r-- 1 joseph users 269M Jun 29 23:17 cd2_source.iso
-rw-r--r-- 1 joseph users 503M Jun 29 23:15 cd1_binary.iso

dothefunkycdimage is a script that calls mkisofs to create the CD ISO
images from the source directory. i believe both this script [due to
laziness on the programmers part 8-)] needs to be executed from the
/opt/redmondlinux dir. but i could be wrong. go ahead and take a look at
it, it's a simple script.

once this script completes, you will have 910M more on your hard drive!
see why you need all that space? and we haven't even changed anything
yet! 8-)

if you got this far, congratulations! you have built your [possibly very
first] own Linux distribution! we haven't gotten to personalizing it yet,
but we will in the next step. now for the real test: burn cd1_binary.iso
to a cd and install it [on your test partition, if you have one. don't
use any of the partitions you are using now!]. did it install correctly?
great!

once you've gotten this far and feel comfortable with the process, we can
go on to the next task: modify some packages.

let me know, on the list, when you all want the next installment.
 

_______________________________________________
http://linux-sxs.org -- Linux-users@linux-sxs.org
Archives, Subscribe, Unsubscribe, Digest, Etc ->http://linux-sxs.org/mailman/listinfo/linux-users