summaryrefslogtreecommitdiffstats
path: root/isolinux
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /isolinux
downloadcurrent-5a12e7c134274dba706667107d10d231517d3e05.tar.gz
current-5a12e7c134274dba706667107d10d231517d3e05.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'isolinux')
-rw-r--r--isolinux/README.TXT132
-rw-r--r--isolinux/README_SPLIT.TXT21
-rw-r--r--isolinux/f2.txt16
-rw-r--r--isolinux/iso.sort3
-rw-r--r--isolinux/isolinux.bootbin0 -> 2048 bytes
-rw-r--r--isolinux/isolinux.cfg12
-rw-r--r--isolinux/message.txt16
-rw-r--r--isolinux/sbootmgr/RAWRITE12.DOC86
-rw-r--r--isolinux/sbootmgr/RAWRITENT.DOC176
-rw-r--r--isolinux/sbootmgr/README.TXT29
-rw-r--r--isolinux/setpkg48
11 files changed, 539 insertions, 0 deletions
diff --git a/isolinux/README.TXT b/isolinux/README.TXT
new file mode 100644
index 000000000..94f84489d
--- /dev/null
+++ b/isolinux/README.TXT
@@ -0,0 +1,132 @@
+
+HOW TO MAKE A BOOTABLE SLACKWARE DVD ISO IMAGE
+
+To make a bootable Slackware install DVD, get into the top level Slackware
+directory (The one with ChangeLog.txt in it) and issue a command like this
+to build the ISO image in /tmp:
+
+mkisofs -o /tmp/slackware-dvd.iso \
+ -R -J -A "Slackware Install" \
+ -hide-rr-moved \
+ -v -d -N \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -sort isolinux/iso.sort \
+ -b isolinux/isolinux.bin \
+ -c isolinux/isolinux.boot \
+ -V "SlackDVD" .
+
+On my system, here's the command I'd use to burn the resulting DVD ISO:
+
+growisofs -speed=2 -dvd-compat -Z /dev/dvd=slackware-dvd.iso
+
+If your burner is not /dev/dvd, replace the device with the one your
+system uses.
+
+I find discs burned at 2x are more reliable than ones burned at higher
+speeds, but you may see completely different results depending on media
+and burner type. The -dvd-compat option is also used so that a complete
+lead-out is written to the media for maximum compatibility.
+
+Or, you can burn directly from the Slackware tree to a DVD(-/+)R(W):
+
+growisofs \
+ -Z /dev/dvd \
+ -R -J -A "Slackware Install" \
+ -hide-rr-moved \
+ -v -d -N \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -sort isolinux/iso.sort \
+ -b isolinux/isolinux.bin \
+ -c isolinux/isolinux.boot \
+ -dvd-compat \
+ -V "SlackDVD" .
+
+
+HOW TO MAKE A SET OF BOOTABLE / INSTALLABLE CDROMS
+
+This is a little bit more tricky. Step one will be to split the tree into
+portions that will fit on the media that you plan to burn to. The first
+disc must contain these directories:
+
+/isolinux/
+/kernels/
+/slackware/
+
+You'll need to make other /slackware/ directories on discs 2, 3, and maybe
+more, moving some of the disc series from disc 1 to other discs to make
+things fit. It is also possible to split a series to make more efficient
+use of the CD media. See the README_SPLIT.TXT example and instructional
+file in this directory for details about how to set that up.
+
+The rest of the splitting up of discs is left as an exercise for the reader.
+
+To make the first (bootable) ISO, a command like this is used within the
+directory where the disc tree is. Let's say the directory is 'd1' and you
+wish to output the ISO image in /tmp:
+
+cd d1
+mkisofs -o /tmp/slackware-install-1.iso \
+ -R -J -A "Slackware Install 1" \
+ -hide-rr-moved \
+ -v -d -N \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -sort isolinux/iso.sort \
+ -b isolinux/isolinux.bin \
+ -c isolinux/isolinux.boot \
+ -V "SlackCD1" .
+
+Making a non-bootable disc is similar. Just omit a few options:
+
+cd d2
+mkisofs -o /tmp/slackware-install-2.iso \
+ -R -J -A "Slackware Install 2" \
+ -hide-rr-moved \
+ -v -d -N \
+ -V "SlackCD2" .
+
+To burn an ISO image to CD-R(W), the cdrecord command is used. For complete
+instructions, see the man page ('man cdrecord'). On my own machine where
+the burner is /dev/cdrw, disc one would be burned with the following command:
+
+cat /tmp/slackware-install-1.iso | cdrecord -v dev=/dev/cdrw speed=10 fs=8m -tao -eject -data -
+
+As before, it's possible to burn from the disc trees without the intermediate
+step of creating iso images by omitting the -o option to mkisofs and piping
+the output directly to cdrecord:
+
+cd d1
+mkisofs \
+ -R -J -A "Slackware Install 1" \
+ -hide-rr-moved \
+ -v -d -N \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -sort isolinux/iso.sort \
+ -b isolinux/isolinux.bin \
+ -c isolinux/isolinux.boot \
+ -V "SlackCD1" . | cdrecord -v dev=/dev/cdrw speed=10 fs=8m -tao -eject -data -
+
+-----
+
+NOTES:
+ The isolinux/isolinux.boot file will be created on the disc; it's not
+ supposed to be in the source tree. I mention this only because so many
+ people report the "missing" isolinux/isolinux.boot file as a bug.
+
+ The "-boot-load-size 4" is actually not large enough to hold the isolinux
+ boot loader, but many BIOS implementations are broken and will *only*
+ accept "4". Evidently many newer, more correct BIOS implementations
+ expect this and will continue to load the boot loader file until the
+ EOF is reached. Anyway, previous uses of larger values were correct, but
+ led to the Slackware ISO not booting on some machines which contained
+ broken BIOS implementations. It is my hope that by using the incorrect
+ value of 4 sectors that the ISO will boot on most (if not all) machines
+ that are supposed to be able to boot from an ISO image.
+
+ I don't know how to create a bootable Slackware ISO on operating systems
+ other than Linux, but it should be easy to burn the Linux-created ISO with
+ most CD burning software on any operating system.
+
+Enjoy!
+
+ -P.
+
diff --git a/isolinux/README_SPLIT.TXT b/isolinux/README_SPLIT.TXT
new file mode 100644
index 000000000..3216957d6
--- /dev/null
+++ b/isolinux/README_SPLIT.TXT
@@ -0,0 +1,21 @@
+
+Hello,
+
+Thanks for noticing this README-encrypted file. :-)
+
+When found on a disc-media based Slackware distribution, this file indicates
+an incomplete software series that continues on the next disc.
+
+The installer will ask for the next disc and look for the rest of the
+packages there. If you are installing packages from the command line, look
+at the next disc to make certain that you install all the packages you need.
+
+For example, to split /slackware/kde across two discs, both discs will need
+to have /slackware/kde directories. The first one should contain a copy of
+this file. The second one should have the install.end file, the additional
+packages not in the first directory, and an extra copy of the tagfile file.
+
+Have fun!
+
+ -- The Management
+
diff --git a/isolinux/f2.txt b/isolinux/f2.txt
new file mode 100644
index 000000000..1b79d8eef
--- /dev/null
+++ b/isolinux/f2.txt
@@ -0,0 +1,16 @@
+
+ -+ Kernel Selection Help +-
+
+You'll need one kernel to get Linux started on your system so that you can
+install it. The default kernel is huge.s, which requires at least a
+Pentium Pro processor. There is also a "speakup.s" kernel, which supports
+various speech synthesizers.
+
+***************************************************************************
+* Tip: If you have no idea which kernel to use, go with huge.s! *
+***************************************************************************
+
+To boot the chosen kernel put the name of the kernel and press enter.
+
+boot: huge.s "For example, boot the 'huge.s' kernel!"
+
diff --git a/isolinux/iso.sort b/isolinux/iso.sort
new file mode 100644
index 000000000..ade31e705
--- /dev/null
+++ b/isolinux/iso.sort
@@ -0,0 +1,3 @@
+isolinux 100
+isolinux/isolinux.bin 200
+kernels 50
diff --git a/isolinux/isolinux.boot b/isolinux/isolinux.boot
new file mode 100644
index 000000000..97f9401ec
--- /dev/null
+++ b/isolinux/isolinux.boot
Binary files differ
diff --git a/isolinux/isolinux.cfg b/isolinux/isolinux.cfg
new file mode 100644
index 000000000..ccca60d79
--- /dev/null
+++ b/isolinux/isolinux.cfg
@@ -0,0 +1,12 @@
+default huge.s
+prompt 1
+timeout 1200
+display message.txt
+F1 message.txt
+F2 f2.txt
+label huge.s
+ kernel /kernels/huge.s/bzImage
+ append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw SLACK_KERNEL=huge.s
+label speakup.s
+ kernel /kernels/speakup.s/bzImage
+ append initrd=initrd.img load_ramdisk=1 prompt_ramdisk=0 rw SLACK_KERNEL=speakup.s
diff --git a/isolinux/message.txt b/isolinux/message.txt
new file mode 100644
index 000000000..a28cd3a23
--- /dev/null
+++ b/isolinux/message.txt
@@ -0,0 +1,16 @@
+
+Welcome to 09Slackware6407 version 13.0 (Linux kernel 2.6.29.6)!
+
+If you need to pass extra parameters to the kernel, enter them at the prompt
+below after the name of the kernel to boot (huge.s etc).
+
+In a pinch, you can boot your system from here with a command like:
+
+boot: huge.s root=/dev/hda1 rdinit= ro
+
+In the example above, /dev/hda1 is the / Linux partition.
+
+This prompt is just for entering extra parameters. If you don't need to enter
+any parameters, hit ENTER to boot the default kernel "huge.s" or press [F2]
+for a listing of more kernel choices.
+
diff --git a/isolinux/sbootmgr/RAWRITE12.DOC b/isolinux/sbootmgr/RAWRITE12.DOC
new file mode 100644
index 000000000..f4871d1f8
--- /dev/null
+++ b/isolinux/sbootmgr/RAWRITE12.DOC
@@ -0,0 +1,86 @@
+RaWrite 1.2
+-----------
+
+Purpose
+-------
+
+Write a disk image file to a 360K floppy disk.
+
+
+Equipment/Software Requirements
+-------------------------------
+
+PC/XT/AT with a floppy disk drive capable of reading and writing a 360K
+diskette.
+
+This program uses generic low-level BIOS diskette read/write functions. It
+should be portable to nearly every PC in existance. PS/2's should be able
+to run RawWrite but this has not been tested.
+
+
+CAVEAT
+------
+
+This program will write ANY disk file to a floppy, overwriting any previous
+information that may have been present. If you wish to re-use a diskette
+under MS-DOS thats been written to by RawWrite then the disk will need to be
+reformatted; all MS-DOS specific information will have been erased.
+
+
+How to Compile
+--------------
+
+TCC rawrite.c
+
+The source code is specific to Borland International's Turbo C 2.01 and has
+been tested in all memory models.
+
+
+Usage
+-----
+
+C> RAWRITE
+
+And follow the prompts. All arguments are case-insensitive.
+
+A sample run is shown below. The disk file being written, in this example,
+is named DEMODISK and the destination - where the image is being written -
+is the B: drive.
+
+This program may be aborted at any time by typing ^C.
+
+
+Sample Run
+----------
+
+C> RAWRITE
+RaWrite 1.2 - Write disk file to raw floppy diskette
+
+Enter source file name: DEMODISK
+Enter destination drive: B
+Please insert a formatted 360K diskette into drive B: and press -ENTER- :
+Writing image to drive B:
+
+
+Errors
+------
+
+RaWrite attempts to determine if the diskette is a 360K, 720K, 1.2M, or
+1.44M diskette by reading specific sectors. If the inserted diskette is not
+one of the mentioned types, then RaWrite will abort with a short error
+message.
+
+Errors such as write protect, door open, bad disk, bad sector, etc. cause a
+program abort with a short error message.
+
+
+History
+-------
+
+ 1.0 - Initial release
+ 1.1 - Beta test (fixing bugs) 4/5/91
+ Some BIOS's don't like full-track writes.
+ 1.101 - Last beta release. 4/8/91
+ Fixed BIOS full-track write by only only
+ writing 3 sectors at a time.
+ 1.2 - Final code and documentation clean-ups. 4/9/91
diff --git a/isolinux/sbootmgr/RAWRITENT.DOC b/isolinux/sbootmgr/RAWRITENT.DOC
new file mode 100644
index 000000000..6b8dcb380
--- /dev/null
+++ b/isolinux/sbootmgr/RAWRITENT.DOC
@@ -0,0 +1,176 @@
+{ This Program is released unter the terms of the GNU Public License (GPL).
+ In short words this means anybody can do anything with it except incorporating it
+ in whole or part into a new application that is sold and/or marketed commercially,
+ without disclosing the sources to the public.
+ For further details, refer to www.gnu.org.
+
+ This program has been written by Benedikt Hochstrasser (bhoc@pentagroup.ch or
+ tictactux@swissonline.ch. Its purpose is to transfer raw images to diskette, just
+ like the rawrite program supplied with Slackware Linux. The difference is: this is
+ a native Windows NT application.
+ Syntax: RaWriteNT <source image file> <target drive>
+
+ Use at your own risk. Although that piece of software has been thouroughly tested I
+ am not responsible for any damage resulting in the use of this software. This software
+ will overwrite stuff stored on a direct-access storage device such as a diskette,
+ hard disk, zip drive, LS-120 drive or similar medium. You have been warned.
+
+ Zurich, Late August 2000. (c) 2000 bhoc@pentagroup.ch
+}
+
+program RaWriteNT;
+
+{$APPTYPE CONSOLE}
+{$D-,L-,Y-,C-}
+
+uses windows;
+
+{$R *.RES}
+
+const IOCTL_DISK_GET_DRIVE_GEOMETRY: Cardinal = $70000;
+
+type TDiskGeometry = record
+ Cylinders : Int64;
+ Media_Type : LongInt;
+ TracksPerCylinder : Cardinal;
+ SectorsPerTrack : Cardinal;
+ BytesPerSector : Cardinal;
+ end;
+
+var InFileName, OutFileName: String;
+ Drive: Char;
+ HIn, HOut, BufBytes, FileSize, MediaSize, BlkSize, BlkNum, i: Cardinal;
+ Buf: Array[0..65535] of Byte;
+ DriveGeometry: TDiskGeometry;
+
+function ExtractFileName(FullName: String): String;
+ { cf SysUtils.ExtractFileName - mimicked here for size purposes }
+ var i, n: integer;
+ begin
+ n := Length(FullName);
+ Result := FullName;
+ for i := n downto 1 do if FullName[i] = '\' then break;
+ if i > 1 then Result := Copy(FullName, i+1, n-i);
+ end;
+
+function IsWinNT: Boolean;
+ { that should be obvious }
+ var osinfo: TOSVersionInfo;
+ begin
+ Result := False;
+ osinfo.dwOSVersionInfoSize := SizeOf(osinfo);
+ if GetVersionEx(osinfo) then
+ Result := (osinfo.dwPlatformId = VER_PLATFORM_WIN32_NT);
+ end;
+
+procedure ReReadDrive;
+ { just invoke a dummy 'get free disk space' to re-initialize the drive after
+ the write }
+ var BytesPerSect, FreeCl, TotCl, SecPerCl: Cardinal;
+ begin
+ GetDiskFreeSpace(PChar(Drive + ':\'), SecPerCl, BytesPerSect, FreeCl, TotCl);
+ end;
+
+begin { finally. dah main program. }
+
+ Writeln;
+
+ { do the copyright messages }
+ Writeln('RaWriteNT 1.0 by Ben Hochstrasser (bhoc@pentagroup.ch)');
+
+ { discourage Win9x users }
+ If Not IsWinNT then begin
+ Writeln(ParamStr(0), ' has been tested under Windows NT only. Sorry...');
+ halt(255);
+ end;
+
+ { get parameters }
+ InFileName := '';
+ OutFileName := '';
+ if ParamCount > 0 then InFileName := ParamStr(1);
+ if ParamCount > 1 then OutFileName := ParamStr(2);
+ if InFileName = '' then begin
+ Write('Source Image File name: ');
+ Readln(InFileName);
+ if InFileName = '' then halt(255);
+ end;
+ if OutFileName = '' then begin
+ Write('Target Drive [A]: ');
+ Readln(OutFileName);
+ end;
+
+ { check target }
+ if OutFileName = '' then
+ Drive := 'A'
+ else
+ Drive := UpCase(Char(OutFileName[1]));
+ if GetDriveType(PChar(Drive + ':\')) in [DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM] then begin
+ Writeln('Drive ' + Drive + ': does not appear to be a removable (and writable) drive.');
+ Writeln('Hard Disks, Network Drives and CD-ROM Drives cannot be Targets. Sorry.');
+ Halt(255);
+ end;
+ { prepend the NT incantation stuff }
+ OutFileName := '\\.\' + Drive + ':';
+
+ { try to open devices }
+ HIn := CreateFile(PChar(InFileName), GENERIC_READ, 0, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, 0);
+ if HIn = 0 then begin
+ Writeln('Fatal Error: Cannot open ' + InFileName + ' for read.');
+ Halt(1);
+ end;
+ HOut := CreateFile(PChar(OutFileName), GENERIC_WRITE, 0, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+ if HOut = 0 then begin
+ Writeln('Fatal Error: Cannot open ' + OutFileName + ' for write.');
+ CloseHandle(HIn);
+ Halt(2);
+ end;
+
+ { overwrite 1st sector with 0 };
+ FillChar(Buf, 512, 0);
+ WriteFile(HOut, Buf, 512, BufBytes, NIL);
+ { get target geometry }
+ DeviceIoControl(HOut, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @DriveGeometry, SizeOf(DriveGeometry), BufBytes, NIL);
+ { determine sizes }
+ MediaSize := DriveGeometry.BytesPerSector * DriveGeometry.SectorsPerTrack * DriveGeometry.TracksPerCylinder * DriveGeometry.Cylinders;
+ FileSize := GetFileSize(HIn, Nil);
+ if FileSize > MediaSize then begin
+ Writeln('Oops - That file is too big for this medium (', FileSize, ' vs. ', MediaSize, ' Bytes).');
+ Halt(3);
+ end;
+ { block size is 1 track }
+ BlkSize := DriveGeometry.SectorsPerTrack * DriveGeometry.BytesPerSector;
+ { round up # of blocks if necessary }
+ BlkNum := (FileSize + BlkSize - 1) DIV BlkSize;
+ Writeln('Transferring ', FileSize, ' Bytes (',
+ (FileSize + DriveGeometry.BytesPerSector - 1) div DriveGeometry.BytesPerSector,
+ ' Sectors) from Image ', ExtractFileName(InFileName), ' to Drive ', Drive, ':');
+ { move file pointers to beginning }
+ SetFilePointer(hIn, 0, NIL, FILE_BEGIN);
+ SetFilePointer(hOut, 0, NIL, FILE_BEGIN);
+ { loop through all blocks }
+ for i := 1 to BlkNum do begin
+ if not ReadFile(HIn, Buf, BlkSize, BufBytes, NIL) then begin
+ writeln('Error ', GetLastError, ' on File Read');
+ break;
+ end;
+ if not WriteFile(HOut, Buf, BlkSize, BufBytes, NIL) then begin
+ writeln('Error ', GetLastError, ' on File Write');
+ break;
+ end;
+ write((100 * i) div BlkNum, '% completed.', #13);
+ end;
+ writeln;
+ { close files }
+ CloseHandle(HIn);
+ CloseHandle(HOut);
+
+ { re-read target medium information }
+ ReReadDrive;
+
+ If ParamCount = 0 then begin
+ Writeln;
+ Writeln('(Press any Key) ');
+ Readln;
+ end;
+end.
+
diff --git a/isolinux/sbootmgr/README.TXT b/isolinux/sbootmgr/README.TXT
new file mode 100644
index 000000000..204d5d82b
--- /dev/null
+++ b/isolinux/sbootmgr/README.TXT
@@ -0,0 +1,29 @@
+sbootmgr.dsk This nifty little tool allows selecting various devices to boot
+ from a menu, and even allows booting a CD-ROM in machines where
+ the BIOS doesn't support it (or it's supposed to support it, but
+ it just doesn't work). If you have trouble booting the
+ Slackware CD-ROM, you might try writing this image to a floppy,
+ booting it, and then selecting your CD-ROM drive as the boot
+ device.
+
+ The SBM installer is available as a Slackware package (called
+ "btmgr") in the extra/ packages collection.
+
+----------------------------
+Generic floppy image creation info:
+
+To create a floppy disk from one of these images, use the RAWRITE command on
+DOS or Windows. For example, to make the first rootdisk image (install.1),
+you'd put a formatted 1.44MB floppy in your floppy drive, and then run this
+command:
+
+C:\> RAWRITE INSTALL.1 A:
+
+There are several versions of RAWRITE provided to handle most versions of DOS
+and Windows. If one version doesn't seem to work, try another.
+
+To make the floppy images under Linux, use the "cat" command to send them to
+the floppy device. This command will make the first install disk:
+
+cat install.1 > /dev/fd0
+
diff --git a/isolinux/setpkg b/isolinux/setpkg
new file mode 100644
index 000000000..134e82f3b
--- /dev/null
+++ b/isolinux/setpkg
@@ -0,0 +1,48 @@
+#!/bin/sh
+# This script is used within the Slackware installer to present
+# a package series selection menu. If not present, a default list
+# built into the installer is used.
+
+# Protected tmp directory:
+TMP=/var/log/setup/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+
+rm -f $TMP/SeTSERIES
+dialog --title "PACKAGE SERIES SELECTION" --item-help --checklist \
+"Now it's time to select which general categories of software to install \
+on your system. Use the spacebar to select or unselect the software you \
+wish to install. You can use the up and down arrows to see all the \
+possible choices. Recommended choices have been preselected. Press the \
+ENTER key when you are finished." \
+20 75 9 \
+"A" "Base Linux system" on "The A (base) series contains the kernel and main system utilities." \
+"AP" "Various Applications that do not need X" on "The AP series is a collection of useful applications." \
+"D" "Program Development (C, C++, Lisp, Perl, etc.)" on "The D series contains compilers, debuggers, and other programming tools." \
+"E" "GNU Emacs" on "The E series contains the GNU Emacs advanced real-time display editor." \
+"F" "FAQ lists, HOWTO documentation" on "The F series contains essential documentation for Linux system administrators." \
+"K" "Linux kernel source" on "The K series contains the source code for the Linux kernel." \
+"KDE" "Qt and the K Desktop Environment for X" on "The KDE series contains the K Desktop Environment and related libraries." \
+"KDEI" "International language support for KDE" off "The KDEI series provides support for languages other than US English in KDE." \
+"L" "System Libraries (needed by KDE, GNOME, X, and more)" on "The L series contains important libraries needed by the rest of the system." \
+"N" "Networking (TCP/IP, UUCP, Mail, News)" on "The N series contains network related clients and servers." \
+"T" "TeX typesetting software" on "TeX is a typesetting system often used for mathematics and technical papers." \
+"TCL" "Tcl/Tk script languages" on "The TCL series contains the Tcl/Tk/TclX languages and programs that use them." \
+"X" "X Window System" on "This series contains X, the window system (or GUI) used by Linux." \
+"XAP" "X Applications" on "The XAP series is a collection of applications for X." \
+"Y" "Games" on "The Y series contains a collection of classic text-based games." \
+2> $TMP/SeTSERIES
+if [ ! $? = 0 ]; then
+ rm -f $TMP/SeTSERIES
+ exit
+fi
+# Save this "just in case":
+#"GNOME" "The GNOME desktop for X" on "The GNOME series contains the GNOME desktop environment and related libraries."
+#
+# Rewrite the list into a single # delimited line:
+INSTSETS="`cat $TMP/SeTSERIES | tr -d " "`"
+INSTSETS="`echo $INSTSETS | tr "\042" "#" `"
+INSTSETS="`echo $INSTSETS | tr "," "#" `"
+# Store the selection list:
+echo "$INSTSETS" > $TMP/SeTSERIES