318 lines
14 KiB
Plaintext
318 lines
14 KiB
Plaintext
|
README for slink_cd v 1.13, released Mar 31 1999
|
||
|
(c) Steve McIntyre <stevem@chiark.greenend.org.uk>
|
||
|
|
||
|
What this program does
|
||
|
======================
|
||
|
It will create CDs of Debian from a local set of files. You will
|
||
|
probably need to mirror most of the Debian site; check out the Debian
|
||
|
mirror package for an example of how to this. A full mirror will take
|
||
|
about 7GB at the time of writing.
|
||
|
|
||
|
What this program doesn't do
|
||
|
============================
|
||
|
It does not fix world hunger or bring peace on earth. And it's not
|
||
|
guaranteed to work at all, in fact. But if you have any problems,
|
||
|
please contact me and tell me about them. I'll be glad to help and to
|
||
|
fix any bugs that you might find.
|
||
|
|
||
|
What it needs
|
||
|
=============
|
||
|
You will almost definitely need a Linux box to run the scripts here,
|
||
|
preferably a Debian one. I haven't had the chance to test on other
|
||
|
machines, but I'm fairly certain there are bits that won't run.
|
||
|
|
||
|
To make the full set of images you will need a lot of disk space -
|
||
|
each CD image will take up ~600MB. And of course you'll need the
|
||
|
mirror itself for the files. But this no longer has to be local - see
|
||
|
"Making a symlink-farm" below.
|
||
|
|
||
|
In terms of other software, you'll need
|
||
|
|
||
|
perl
|
||
|
bash
|
||
|
sed
|
||
|
awk (any awk should do)
|
||
|
|
||
|
These _should_ be standard on any Linux system. You'll also need:
|
||
|
|
||
|
mkisofs/mkhybrid (a recent version - the standard one in Debian slink
|
||
|
should do)
|
||
|
|
||
|
a PATCHED mkhybrid (if you want to use the symlink-farm method - see below)
|
||
|
|
||
|
slice (to create the slink1.needed file from master)
|
||
|
|
||
|
dpkg-multicd (VERY Debian-specific. Maybe it will work on other systems,
|
||
|
but I don't know and you'll probably have to play with it)
|
||
|
|
||
|
cdwrite/cdrecord (to write the images once you've created them. They will
|
||
|
be standard ISO images, so even most *spit* Windoze CD
|
||
|
creation programs should be able to write them at a
|
||
|
push.)
|
||
|
sysutils
|
||
|
pkg-order
|
||
|
dpkg-perl
|
||
|
unzip (for i386 bootable CDs)
|
||
|
lha (for m68k CDs)
|
||
|
silo (if you want to create sparc disks - this may be problematic
|
||
|
on non-sparc machines)
|
||
|
isomarkboot (for alpha CDs - source is in the aboot package, binaries
|
||
|
for i386 and alpha are contained in this tar file)
|
||
|
m68k-cd-misc.tar.gz (from the same place you got this package,
|
||
|
for m68k CDs. Copy it to $BASEDIR before you start.)
|
||
|
hfsutils (for Mac stuff on m68k CDs)
|
||
|
|
||
|
There may be other things too, but for now these are all I can think of.
|
||
|
|
||
|
How do I use it?
|
||
|
================
|
||
|
To be reading this, you must have extracted the tar file. Good
|
||
|
start. Next what you need to do is:
|
||
|
|
||
|
customise the file lists (slink<n>.{needed,useful,list}) if necessary
|
||
|
edit slink<n>.info (dselect multicd disk info)
|
||
|
list any extras in slink<n>.extras
|
||
|
edit slink<n>.volid (ISO VOLID)
|
||
|
edit mkisofsrc (other ISO headers)
|
||
|
list any packages to be excluded in exclude-$ARCH if necessary
|
||
|
set up parameters in slink_cd or in the environment
|
||
|
run slink_cd with appropriate parameters
|
||
|
|
||
|
Huh?
|
||
|
====
|
||
|
Customise the file lists if you want to. The lists distributed with
|
||
|
this program should work for most people, and will be the basis of the
|
||
|
official Debian slink CD images when they are made.
|
||
|
|
||
|
The (Debian) contents of discs 1 and 2 are calculated at run-time to
|
||
|
match as closely as possible the list of files needed by the Debian
|
||
|
install programs, and then the rest of the packages are split
|
||
|
(hopefully) sensibly. If you wish to produce a single standalone disc
|
||
|
of the key parts of Debian, this is easy - see "Single Debian discs"
|
||
|
below. If you want to create more complete sets, this is also easy.
|
||
|
|
||
|
The file "master" lists the packages that are REQUIRED for all the
|
||
|
standard suggested systems to work at first install. These packages
|
||
|
come to about 300MB in total. The file "slink1.useful" contains a list
|
||
|
of further packages that I and others thought should also go on the
|
||
|
first disc and these take about 220MB more. This second list can
|
||
|
easily be modified if you so desire, but if you do please be careful
|
||
|
that the dependencies are met, as I did. The package "pkg-order" is
|
||
|
very useful here. When the lists for disc 1 is created, these packages
|
||
|
plus any others of "important", "standard" or "required" priority will
|
||
|
be marked to go on disc 1. The rest of the binary packages from the
|
||
|
main section will go onto disc 2, taking about 325 MB.
|
||
|
|
||
|
And, finally, list the packages you want to _completely_ exclude from
|
||
|
the CDs in exclude-$ARCH. Reasons for doing this may include unmet
|
||
|
dependencies, broken packages, broken Packages files etc.
|
||
|
|
||
|
Beyond this list of packages, the rest of the specification is quite
|
||
|
easy. For each disc, a file slink<n>.list should contain a list of
|
||
|
files to go onto that disc. These can list directories or files,
|
||
|
either will work. The standard layout will look something like:
|
||
|
|
||
|
1: main binary-ARCH section 1
|
||
|
docs
|
||
|
install stuff
|
||
|
boot disks
|
||
|
2: main binary-ARCH section 2
|
||
|
contrib (binary-ARCH and source)
|
||
|
(OPTIONAL) non-US (binary-ARCH and source)
|
||
|
project
|
||
|
3: main source section 1
|
||
|
4: main source section 2
|
||
|
5: (OPTIONAL) non-free (binary-ARCH and source)
|
||
|
|
||
|
* ARCH is a special keyword - see below for more info.
|
||
|
|
||
|
=============================================================================
|
||
|
NOTE: The non-free section is not part of Debian and the programs contained
|
||
|
within are not endorsed by Debian, but they have been packaged as a
|
||
|
service to our users who may still need them until free alternatives
|
||
|
have been made available.
|
||
|
=============================================================================
|
||
|
|
||
|
The non-US section is slightly complicated by the fact that in most
|
||
|
cases it will have to be mirrored separately, as the main Debian
|
||
|
servers in the USA cannot legally export this software. <sigh> More on
|
||
|
the non-US configuration later.
|
||
|
|
||
|
To generate the 5th (non-free) CD you will need to specify "non-free"
|
||
|
as a command-line option when running slink_cd. To add the non-US
|
||
|
section on disk 2 you will need to specify "non-US" as an option.
|
||
|
|
||
|
Other things to be configured:
|
||
|
|
||
|
The dselect (installation) multi-cd install method uses the contents
|
||
|
of a file .disk/info on each CD when determining the contents of a
|
||
|
disc and in deciding which discs are needed. The .info file for each
|
||
|
disc will be created using slink<n>.info. Edit these accordingly, and
|
||
|
the date will automatically be added by the script when used.
|
||
|
|
||
|
Extra files may be added to each disc if you desire. Many OEM
|
||
|
producers of Debian CDs may want to use this - it allows you to
|
||
|
customise the contents of your CDs, for example if you wish to add
|
||
|
extra software of your own or other local content. Simply list them in
|
||
|
slink<n>.extras.
|
||
|
|
||
|
The CD Volume ID for each disk will be created from the contents of
|
||
|
slink<n>.volid.
|
||
|
|
||
|
If you wish to configure other options in the CD ISO headers, edit
|
||
|
mkisofsrc. See the mkhybrid/mkisofs documentation for more details.
|
||
|
|
||
|
=============================================================================
|
||
|
Working examples for all of these files are given.
|
||
|
=============================================================================
|
||
|
|
||
|
* In ALL of these files, the keyword "ARCH" is magic and will be
|
||
|
replaced by the appropriate architecture (i386,m68k,powerpc,sparc,alpha)
|
||
|
when you run the scripts here. This makes it easier to produce images for
|
||
|
several platforms in one run.
|
||
|
|
||
|
e.g. in slink1.list:
|
||
|
|
||
|
dists/slink/main/binary-ARCH/Release
|
||
|
|
||
|
will become
|
||
|
|
||
|
dists/slink/main/binary-i386/Release
|
||
|
|
||
|
when run to produce i386 disks.
|
||
|
|
||
|
The other things to configure are found in the main slink_cd script itself:
|
||
|
|
||
|
ARCH - the target architecture
|
||
|
MIRROR - the location of your Debian mirror
|
||
|
NONUS - the location of the non-US part of your Debian mirror,
|
||
|
if applicable
|
||
|
MKISOFS - the location of your mkisofs/mkhybrid program
|
||
|
MKISOFS_OPTS - the options to use with your mkisofs/mkhybrid program
|
||
|
TDIR - the location of the temporary directory to use. This must be
|
||
|
on the same partition as your mirror, unless you use the
|
||
|
"genlinks" option to create a sym-link farm (below)
|
||
|
OUT - the directory in which we should write the completed images
|
||
|
BOOTDIR - (sparc specific) - where do we find silo?
|
||
|
|
||
|
All of these can be changed by using environment variables, which is
|
||
|
especially useful when making CDs for multiple architecture in one
|
||
|
run. See the "arch" script for an example of this.
|
||
|
|
||
|
Making a sym-link farm
|
||
|
======================
|
||
|
When slink_cd is run, temporary trees/files will be made under
|
||
|
$TDIR. This no longer MUST be on the same partition as the mirror,
|
||
|
for the hard-links hack to work. There is now a new option,
|
||
|
"genlinks", which will create a tree of sym-links for you from a
|
||
|
mirror elsewhere, be it scattered across several mount points (small
|
||
|
disks) or mounted readonly via NFS from another machine. The CD images
|
||
|
can then be created from the sym-link farm. There are a couple of
|
||
|
limitations to this method, so the original hard-links method will
|
||
|
still be preferred and is the default. These limitations are:
|
||
|
|
||
|
speed: the sym-links method is much slower, for a variety of reasons
|
||
|
reliability: the final "du" output of the script is no use with sym-links,
|
||
|
so you will probably have to create the CD images to make sure
|
||
|
all is well in testing.
|
||
|
compatibility: the hard-links method will work with any recent version of
|
||
|
mkhybrid/mkisofs, but to use the sym-links method you need a
|
||
|
specially patched version of mkhybrid.
|
||
|
|
||
|
There is a patch for mkhybrid 1.12a4.7 included with this
|
||
|
program. Grab the original source from
|
||
|
http://www.ps.ucl.ac.uk/~jcpearso/mkhybrid.html or
|
||
|
http://www.chiark.greenend.org.uk/~stevem/DebianCD/ . There is also a
|
||
|
statically-linked i386 binary at the latter site. You will also need
|
||
|
to add the "-F" option to the mkhybrid command line for this sym-links
|
||
|
hack to work.
|
||
|
|
||
|
Non-US
|
||
|
======
|
||
|
To make Debian CDs with the non-US section you will need to specify
|
||
|
the location of your non-US mirror, and also add "non-US" to the
|
||
|
slink_cd command line. The default place for the non-US stuff is on
|
||
|
disc 2, but this can be changed.
|
||
|
|
||
|
Non-free
|
||
|
========
|
||
|
To make a set of Debian CDs with the non-free section you will need to
|
||
|
add "non-free" to the slink_cd command line. This will create a tree
|
||
|
etc. for the fifth disc, containing non-free. Attempting to create the
|
||
|
fifth disc without specifying "non-free" will fail. See the earlier
|
||
|
disclaimer about the non-free section. CD producers should definitely
|
||
|
read the copyrights of non-free packages to check they can sell them on
|
||
|
CD before doing so. Debian packages contain copyright information in
|
||
|
/usr/doc/<package-name>/copyright.
|
||
|
|
||
|
Single Debian discs
|
||
|
===================
|
||
|
Some producers may want to make single Debian CDs that will work on
|
||
|
their own without mentioning packages that would be on the other
|
||
|
CDs. The "single_disk" option should work for these people. And check
|
||
|
the extras lists above if you want to add more of your own
|
||
|
software/data to this single disc - the layout has been specifically
|
||
|
optimised so you have ~100MB of space there for you. Of course, this
|
||
|
layout will mean that many of the Debian binary packages will not be
|
||
|
packaged up and also there will be no source. Check the GPL and other
|
||
|
licenses to see what this means to you...
|
||
|
|
||
|
Complete options list
|
||
|
=====================
|
||
|
You can specify any combination of steps to do on the command-line:
|
||
|
|
||
|
clean removes old link trees
|
||
|
genlist creates a list of files optimised to make disc#1 as standalone
|
||
|
as possible, with ~100MB spare for local customisations
|
||
|
(see "extras"). Check the contents of "slink1.useful" -
|
||
|
this lists the Priority: optional main binary-$ARCH packages
|
||
|
that will be moved to CD#1. Also checks that the Packages file
|
||
|
is up-to-date (maybe not on a borken mirror) and creates a new
|
||
|
one if not.
|
||
|
genlinks creates a sym-link farm in $TDIR/tmp-mirror to work from
|
||
|
tree creates new link trees
|
||
|
single_disk makes a single disc (#1) which will stand alone (SEE BELOW)
|
||
|
flatten goes through the trees removing sym-links outside of the
|
||
|
selected dist
|
||
|
md5check checks the md5sums of all the packages and boot disks
|
||
|
in the trees
|
||
|
packages creates Packages.cd files to go on each CD, and then checks them
|
||
|
for consistency of dependencies
|
||
|
boot adds the bootable CD and install tools as appropriate
|
||
|
extras adds specified extras to the CDs (see below)
|
||
|
md5list creates a complete md5sum of each CD tree to go on the disk
|
||
|
images actually create all the ISO images. Make sure all the necessary
|
||
|
steps above have been run first, or these images may be
|
||
|
complete garbage
|
||
|
image<x> Create image number x, where x is 1-4 or can also be 5 if
|
||
|
non-free is built.
|
||
|
imagesums Once the images are made, make md5sums of them into "MD5SUMS"
|
||
|
i386 targets binary-i386
|
||
|
m68k targets binary-m68k
|
||
|
alpha targets binary-alpha
|
||
|
sparc targets binary-sparc
|
||
|
powerpc targets binary-powerpc
|
||
|
non-free adds the stuff for CD #5 (non-free)
|
||
|
non-US adds the non-US stuff for CD #2.
|
||
|
-v increments the debug level. Default level is 0, maximum is 3
|
||
|
force_deps continue on even if the pkg-order check fails in "packages"
|
||
|
above. Use with care!
|
||
|
|
||
|
N.B. "single_disk" should now be obsoleted due to changes in the
|
||
|
layouts, but should still work.
|
||
|
|
||
|
If you specify no command-line options then the standard set of
|
||
|
commands (see below) will be done in order. THIS WILL NOT MAKE ANY
|
||
|
IMAGES.
|
||
|
|
||
|
Some options will not work together. Some options depend on others
|
||
|
Some of these combinations are obvious, but in particular:
|
||
|
|
||
|
"tree" needs "genlist"
|
||
|
"flatten" will not work with "genlinks"
|
||
|
"image5" needs "non-free"
|
||
|
"single_disk" will not work with "non-free" or "non-US"
|
||
|
"imagesums" needs at least one "image[12345x]"
|
||
|
|
||
|
END.
|