[comp.sys.att] Format of 386 Unix boot diskette

pim@cti-software.nl (Pim Zandbergen) (02/01/90)

wolfe@cygnus.nm.paradyne.com (Mike Wolfe) writes:

>How did you make the disk bootable.  There is no entry in /etc/partitions
>for the floppy device and the only way I could see to make a disk bootable
>was with mkpart.

I don't know about AT&T UNIX 386, but with ISC's, you can make a
bootable floppy by making a filesystem on /dev/dsk/f0q15d (no 't' here),
copying the necessary files on it, and dd'ing /etc/fboot
onto /dev/rdsk/f0q15dt (that's with a 't' on the end)
-- 
Pim Zandbergen                           domain : pim@cti-software.nl
CTI Software BV                          uucp   : uunet!mcsun!hp4nl!ctisbv!pim
Laan Copes van Cattenburch 70            phone  : +31 70 3542302
2585 GD The Hague, The Netherlands       fax    : +31 70 3512837

clewis@eci386.uucp (Chris Lewis) (02/03/90)

In article <1990Jan29.220409.3932@banzai.PCC.COM> john@banzai.PCC.COM (John Canning) writes:
> In article <323@ohsuhcx.ohsu.edu> bj@ohsuhcx.ohsu.edu (Bill Jackson) writes:

> >Does anyone have information on the format (layout of disk, cpio/dd/tar etc) of
> >the boot diskette used to load AT&T Unix V 3.2.2 on the 386 WGS machines?

> The initial disk is a mountable file system.  

Correct...

> I do not know how to make a floppy disk bootable.

The simplest approach is to simply put the boot diskette into the drive,
and dd the whole disk into a file somewhere.  Put a new diskette in,
(physical format if neccessary) and dd it back out.  On our machine the
appropriate device is /dev/dsk/f0q15dt, John uses /dev/dsk/f0.  Use big block 
sizes to make it go fast.

Then, if you want to modify the new copy, mount it, as in

	/etc/mount <whichever device works for you> /mnt

And diddle.  But I would strongly recommend not removing anything from
it, even though you'll probably not have much space on it, unless you
know *exactly* how the boot process works.  /etc/init, inittab etc. etc.
are all neccessary for the boot.  Makeing it do a from-tape
installation shouldn't be too hard - our boot floppy has all of the
questions/stubs for it *except* the tape driver in the kernel....
-- 
Chris Lewis, Elegant Communications Inc, {uunet!attcan,utzoo}!lsuc!eci386!clewis
Ferret mailing list: eci386!ferret-list, psroff mailing list: eci386!psroff-list

pcg@rupert.cs.aber.ac.uk (Piercarlo Grandi) (02/04/90)

In article <7311@pdn.paradyne.com> wolfe@cygnus.nm.paradyne.com (Mike Wolfe) writes:

   How did you make the disk bootable.  There is no entry in /etc/partitions
   for the floppy device and the only way I could see to make a disk bootable
   was with mkpart.

   I tried an image copy and what I ended up with was a diskette that was not
   bootable.  Sys V will only read 79 tracks from the floppy
   drives I assume this
   is the problem.  So I went to my SUN 3/80 and did the image copy and
   everything was fine.  However I still don't know how to make a boot floppy
   from scratch.

The usual answer is RTFM. A bootable floppy, be it any density,
size, whatever, has the first track that contains the bootstrap
(finding the file in /etc that contains the floppy bootstrap is
left as an exercise to the reader), and the remaining tracks
contain a filesystem, into which you can put what you want, but
usually a miniscule root.

The device files /dev/*dsk/f*t (i.e. those ending in 't') will
give access to the entire floppy, first track inclusive, the
other will only let you access from the second track onwards.

If you want to duplicate a bootable floppy, just use the device file
that ends in 't' (/dev/rdsk/f0t will work almost always).

If you want to create a bootable floppy, just copy the boostrap file
onto the device file that maps the entire floppy, and then mkfs and
fill the rest. For example:

	cp /etc/flboot /dev/dsk/f0t
	mkfs /dev/rdsk/f0 <size>:<inodes> <gap> <cylsize>
	labelit/dev/rdsk/f0 install flop
	mount /dev/dsk/f0 /install
	find <miniroot> -depth -print | cpio -pdlmuav /install

OK? OK? Enough. :->

A proposal: There should be a monthly posting with frequently asked
questions. The ones that seem to surface every now and then are:

	What is the format of a package floppy?

 		Read the f* manual. Installable drivers
		are complicated, think it over carefully.

	How do I create a bootable floppy for floppy type X?

		First track is boostrap, rest is filesystem.

	How do I get the cartridge tape to stream?

		Use pax or GNU tar and 'ddd' or 'team', (best is
		GNU tar with team, or may be pax 2 with team)
		or, if you don't have any, 'cpio' with the
		undocumented block factor options (-C xxxx).

	How do I get the -z option of ld to work?

		Don't even use -z; just a little ld script will do.
		Make your memory begin at 0x1000 (or at any other
		multiple of 0x1000, -z would have it begin at 0x20000),
		and make the text begin in the executable file at 0x1000
		(not higher, otherwise you waste executable file space).
		Remember to define a few segments of memory, 4 meg long,
		at high addresses, for the shared libraries.

		Alternatively use -z and a shell script that makes your
		exeutable text relocate at 0x20000, and begin at 0x1000
		boundary in the file.

		If you use gcc or g++, it is easy to modify the
		link phase spec to use the ld script if option -z is
		specified, or even better, by default.

	Where is alloca()?

		In -lPW.

	How do I get GNU <xxxx> to compile?

		Disable automatic optimizer inlining with -W2,-y0
		after -O on all files that use alloca().

		If you are using GCC, remember to run fixincludes or
		make it use the System V cpp, or manually copy and
		edit the files that do non-ANSI cpp things.

	How do I get GNU C++ to work?

		Check that NO_UNDERSCORES, USE_COLLECT, and COFF are
		defined, and that NO_DOLLAR_IN_LABEL is as well.

		cplus-parse.y has a name too long for RCS, like
		a few others. If you want to apply patches under
		RCS to such files, you should rename them. Me thinks
		that a prefix of 'c++-' instead of 'cplus-' is fine.

		You can compile G++ with the AT&T cc (but for two obvious
		fixes). It is much less hassle than installing
		GCC first. On the other hand, install GDB 3.4; it's
		easy, and is vastly less buggy than sdb, and understands
		G++ name mangling. If you use the CLED history line
		discipline, or similar tricks, you may want to excise
		the history and command line editing code from GDB.
		Clean patches to do this will be posted (soon :->).

		You may want to rework a little	the rule for the
		'collect' stage in gcc.c.

		Alternatively, lobby MDT to make the .ctor/.dtor section
		trick the default under System V, instead of collect.

		Don't use encapsulated a.out format unless you know
		what you are doing.

		Be sure you have the setvbuf patch for i386 in the
		cplus-lex.c file.

		You probably want the link phase spec to use -z, the
		shell script alluded above, and -lc_s by default.

		Making LIBG++ into a shared library is not easy, and
		not worth doing for most of it. Wait for SysV.4...

		For most programs you may wantto use the little streams
		library posted a while ago. Or wait for it to be reposted
		(soon).

	How do I get GNU Emacs to work?

		Easy enough... You can really figure that out yourself,
		and under ESIX you can even have (modulo a few fixes)
		process buffers with BSD ptys; or else use stream
		ptys (look at sysdep.c and imitate the IRIS pty handling).

	My high speed telecomm utility loses under VP/IX or DOSmerge!

		Inevitable. They are running on a semi-simulated
		device under a multitasking OS.

	Serial lines chew up CPU time and lose.

		If you only need a few, just get a dumb card and use
		16550As with a driver that enables the FIFO (e.g. fas2).

	Won't install on a drive whose geometry is not in the BIOS!

		Write manually an /etc/partitions file instead of
		letting the disksetup program write it (interrupt the
		INSTALL script and continue manually). Then set the BIOS
		drive type to an entry that has the right number of heads,
		to make sure the hard disc will boot.

	How do I get fast IO?

		Get ESDI or RLL discs, at least two of them, possibly
		with two controllers, or get a fast SCSI controller, like
		the 1542, with at least two fast (e.g. Micropolis, Imprimis,
		Quantum, or Maxtor discs). Access times under 25 msec.

		If you are not running a fast file system of some sort,
		unfragment the partitions regularly (dump/restore), e.g.
		every few weeks (2-4) for an active filesystem.


		Put the swap on a disc/controller different from the
		root and user filesystems, and the /tmp and spool filesystems
		on one different from those where you keep user home dirs.

		Don't create many small filesystems.
--
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

randy@chinet.chi.il.us (Randy Suess) (02/09/90)

	I have a 386 klone running AT&T UNIX 3.2.1.  The media
	is 5.25.  For various reasons, I need to go to a single
	3.5 1.44 meg floppy.  I have been able to transfer all
	the 5.25 disks to 3.5 except for the boot floppy.
	I tried dd'ing (track 1 seperate from the rest), and
	making a fs on the 3.5, transfering the filesystem
	of the 5.25 to it (it now mounts fine, and is identical
	to the 5.25), but cannot get it to boot.  I tried dd'ing
	/etc/fboot to track 1, but no go.  Is /etc/fboot specific
	to 5.25??
	Thanks for any info.

-randy
-- 
Randy Suess
randy@chinet.chi.il.us