Commit Graph

35 Commits

Author SHA1 Message Date
fvdl a4ca20e23e Start cleaning up geometry code by storing the disk geometry in a structure
with proper names, not an integer array with is numerically indexed.
1999-03-14 14:19:05 +00:00
he ff15f486fc Move extern declaration of do_system() from run.c to defs.h, used by i386/md.c 1999-02-01 14:08:35 +00:00
garbled 865c31ac7b This change includes the following:
Scripting and logging functionality for sysinst.
Child programs are run in a "display window" so you can actually see what
	they did before the screen flashes back and you loose it all.
Lots of curses fixups.  Removed nasty endwins that mangled the tty upon
	rentry.
Change the yes/no box to accept Y or N, and not require cursor motion to
	decide one or the other.
Perform curses redraws when doing things that could cause the kernel to
	spew printfs onto your screen.
1999-01-21 08:02:17 +00:00
phil be6397e767 Implement a config file (-f file) option that overrides compiled in
defaults for things like rel (release number), ftp host, ftp prefix,
cdrom device, cdrom directory and others.
1998-10-25 19:15:04 +00:00
mark 0402c9b7d8 Add T_FILECORE to the DTYPE enum.
Add filecore to the fstype array.
1998-10-06 01:37:17 +00:00
mrg 58e5e70a16 remove bogus unnecessary "NetBSD-X.Y" directory from cdrom path; it will not exist for future cdroms 1998-06-22 12:18:52 +00:00
fvdl f998547470 Add MD cleanup function to do some thingd once the install is done.
Only implemented for the i386; behaviour for other ports is
unchanged. For the i386, make this function remove some extraneous
files in /, and frob rc.conf to have rc_configured=YES. The defaults
are reasonable, and it saves the user having to set TERM and mount
filesystems by hand in order to be able to edit /etc/rc.conf

(XXX not very clean, but it's a workaround to be more user-friendly
 for 1.3.2)

Also adapt a few messages slightly so they apply to both situations.
1998-05-15 15:12:29 +00:00
jonathan 98b0f2b8ad * Prune default CD path from "/Release/NetBSD/NetBSD-" back to "/NetBSD-".
* Add cp_to_target() to  copy a file from current root, to an absolute
  path relative to target root.

* Clean up alpha, arm32, i386, pmax MD code: use cp_to_target()
  NB: Alpha uses target_expand() when calling installboot.
* Add tests for target == current root. Intended to support
  `upgrade/reinstall' to current root, either for testing or easier
  minor-release upgrades. Only tested on pmax.
1998-02-20 02:33:51 +00:00
fvdl 9630119c6d * mount NFS directory to get the sets from read-only,
same for floppies (from Christoph Badura)
* allow user to run 'Configure network' multiple times, to correct errors
  for example.
* deal with network interfaces that need explicit media type selection
  (i.e. ask for it when it is needed, also store it in the generated
  /etc/ifconfig.blah file on the destination disk)
1997-12-26 01:58:44 +00:00
phil ead95231ed pc532 partitions and md stuff. 1997-12-10 04:36:19 +00:00
jonathan d7afdff3d0 * Add main menu option to reinstall sets or install additional sets.
(like upgrade but without trying to save etc.

* Add option to setls0urce menu to look in an already-mounted (local)
  directory.  Change `local fs' option to say umounted local fs.

* Change extract_file() to check that a tarball actually exists
  and give an explicit non-curses warning if it doesn't. (see above.)

* GNU tar returns a successful status if its gunzip child dies.
  Add short sleep() after tar commands in case of undetected errors.

* Change set-source selection code (except FTP, floppy) to check
  that the mandatory set files (base.tgz, etc.tgz) exist
  in the selected directory.  If they don't, warn the user and
  prompt the user to  change the selected directory.
  Give the user the option to explicitly continue even if
  base.tgz or etc.tgz not found, just in case.

* Change extract_file() to keep count of set unpacks that succeeded
  or failed. (Unreliable, given the broken return status of gnu tar.)
  Warn the user if there are errors and abort the installation/upgrade
  if we find any.  Does at least catch Ctrl-C interrupts of unpacking.

* Make unwind_mounts() signal-safe.

* Sense of target_verify_* is broken. Replace with predicates that
  return 1 iff the file or directory exists.

* Fix upgrade tests for existing etc.old (see above) before saving
  target /etc as /etc.old.

* Other detail fixes.
1997-12-05 14:00:59 +00:00
jonathan 7bd6655894 Add check for overlapping partitions:
* Add `partinfo' type, for description of a single partition,
   so we can pass labels by reference..
 * Add label.c with label initialization, naive overlap-check code,
   and a UI entrypoint edit_and_check_label() which iterates through
   checking a label for overlaps, and if any, giving the user the choice of
   fixing them or punting back to the main menu.
 * Change return type of md_make_bsd_partitions from void to int.
   Return 0 if the partition has problems (or the user gave up on it)
   and 1 if the partition is completed and looks OK.
 * Change install() to check return value of md_make_bsd_partitions().
   If it returns zero,  print an `abort' message and return to main menu.
 * Add label.c to all ports' Makefile.

MD code tested on pmax and cut-and-pasted to other ports.
1997-12-04 11:27:56 +00:00
jonathan fc3fa7cd7f Implement TODO item to unwind target mounts on completion:
* Add mount_with_unwind() that adds mountpoint to a LIFO queue
    of  mountpoints to undo on error.   Use in target_mount().
  * Add unwind_mounts() which traverses the LIFO queue and unmounts
    filesystems, silently ignoring errors.
  * create toplevel() function which displays banner message and
    calls unwind_mounts().
  * change toplevel menu to call toplevel() instead of inline banner.

Where to do unwinds needs more thought.  Perhaps we should only unwind
if an upgrade or install appears unsuccessful, so after a successful
install, the target is mounted (e.g., for upgrading /etc/rc.conf).
1997-12-04 09:05:35 +00:00
thorpej 75dd009b1d Update for the lay-of-the-land as described in release(7). As such, move
all pathname-on-server related definitions to MI code, since they are now
defined to be consistent across all platforms.  Also, nuke the "rels" global,
since release numbers are now always specified in "long form", i.e. 1.3A
vs. 13A.
1997-11-25 06:53:07 +00:00
phil 4ec8d82726 Clear up confusion of extract_dist() extract directory source. New var
ext_dir that is absolute directory name of where files are located to
extract.  All setup routines must set that directory name correctly.
Make target.c compile if DEBUG is set.
1997-11-11 00:43:31 +00:00
jonathan b3da2a1b88 Fix target prefixing to handle both root-in-swap (traditional miniroot)
and current-root-is-target-root (pmax diskimage.

 * Add code to check disk names (e.g., "sd0") against the current
   kern.root_device  sysctl (whic  does *not* include a partition).

 * Add new function must_mount_root():
   check to see if it's the same device as the root.  If not,
   the current and target root partitions cannot overlap.
   If they do, do statfs() on "/", and return 1 iff we get back
   "root_device" as the mounted-on filesystem, otherwise zero.

* Call must_mount_root() right after the user specifies a disk as
  install/upgrade target, and  if it returns 1, print a message asking
  them to mount root, and abort.

*  Use statfs("/")  mounted_from string to check if a disk partition
    (e.g., "sd0a") matches the current root.
1997-11-09 12:47:06 +00:00
mhitch 174cd0f5ef Add an option to install or upgrade from a local disk filesystem. Upgrade
still needs an option to specify the distribution sets from a filesystem
present in fstab.
Add "ados" to the list file recognized filesystems.
Increase label information table size to 16 to allow for 16 partitions.
1997-11-05 22:45:53 +00:00
jonathan 77221dcc6a * Add code to run `test(1)' on target-root pathnames.
* Change find_disks: after mouting target root, check for
  /etc/fstab in target, and abort upgrade if not found.

* Change upgrade to check if the target root has /etc.old
  before renaming the target /etc -> /etc.old.  If found, abort.
  (may indicates a failed upgrade.)

*  Add save_etc(). saves target /etc as /etc.old, then copies back
   config files we might want during upgrade, in case target is current root.

* Fix logic that fscks and mounts disks. Use subroutines to
  fsck with a warning message and ok() on continue.  Same for doing mounts.

* Fix bug in extract_dist(). Do NOT do target prefixing on the dist_dir,
  since we didn't do target prefixing when mounting it.
  (At least, NFS does't.)

* Add function to  sanity-check target root.
   Call after upgrade/install  is done.

* Change MSG_realdir to print the strerror() of any errors.
  Change target_chdir() to check if chdir() returns -1 and return errno.

* Make sure /dev exists before cd'ing there and running MAKEDEV.

* Use target_fopen() and fprintf() to write network state to disk,
  to avoid inadvertent shell escapes.

* Fix silly typo in append_to_target_file. (maybe add shell quotes?)
1997-11-05 07:28:20 +00:00
phil 443efc08d3 Complete -r flag addition, info was static, now path names are runtime
constructed so -r flag makes a diffference in the distribution directory.
1997-11-05 01:23:06 +00:00
phil 9e973cbe0a - extract_dist now uses dist_list to know which to extract
- Added -r rel flag to change the release tag on the tar files.
- Added Usage
- Fixed a menu bug (missing exit)
- Made target_expand available to all functions to produce correct
	file names.
1997-11-04 01:39:03 +00:00
jonathan 3e74d705e2 * Clean up target.c to use a single consistent path-prefixing subroutine.
* Correct arg typo in mv_within_target_or_die().
* Add new path-prefixing entrypoints to fopen(), collect(), and do mounts.
* Use the above.  MI code is now clean of explicit references to /mnt.
* Lint: add `const' to collect()'s pathname arg.
  include <stdio.h> in factor.c, now that defs.h uses FILE*.
1997-11-03 02:38:41 +00:00
jonathan 17aa1054d7 Add more target_wrapper functions, to do
* renames of files from one pathname within the  target to another
    (e.g., mv_within_target_or_die("/etc", "/etc.old");
  *  check to see  if a partition name like "sd0a" is the current root
  *  Duplicate a file from the current root into the target root
     (for copying /netbsd from RAMdisk into the  target).
     A no-op if the root is the install target).
Start using these where appropriate.

Change net.c to avoid losing any information when updating network
config files: where possible, do appends to files that might have more
info than we got from the user (e.g., /etc/hosts.)

Where possible, add comment saying file was created/modified by sysinst.
1997-11-02 23:43:11 +00:00
jonathan 326ca1c813 Snip out common code that fetches and unpack setss in both upgrade()
and install().  Put it into a new function ``get_and_unpack_sets()''.
Fixes a typo (/sbin/umoount) in the upgrade() version.
1997-11-02 09:41:57 +00:00
jonathan 2d01e4dc90 * Change sysinst MI code to use new install-target-filesystem access functions.
Add  target.c to Makefiles.

* Minor fixes:
  * Fix buglet in disks.c: make sure the target /etc exists before
    touching the target's /etc/fstab. (Could be even cleaner.)

   * If the target root is on /, don't copy our temporary /etc/resolv.conf
     to the target /etc/resolv.conf. (Could be even cleaner.)
   * Don't write the DNS hostname into /etc/defaultdomain.
     DNS  search paths are often not the same as YP group names.
1997-11-02 08:20:40 +00:00
jonathan 8315a3dff0 Add two variants of run_prog() for errors that aren't otherwise handled:
run_prog_or_die() -- aborts  if  system() returns an error.
   run_prog_or_continue() -- prints a  warning that installation may
	have failed but lets the user continue.  Suitable for running mkdir.
1997-11-02 03:45:27 +00:00
phil 2cb88494a3 Tweeks to editing file system partitions, fix for PR4405, adding a method
to reselect the allocation multiplier while editing a disklabel.
1997-10-31 23:00:32 +00:00
phil d626993ee4 Sync with current state. Includes selection of distribution sets, tweeks
to disk detection, and floppy load.
1997-10-29 01:06:42 +00:00
phil 345ae6924d Recover more bits lost in my earlier blunder. Get update working.
Other minor tweeks.
1997-10-22 15:28:33 +00:00
phil 39725806db Floppy and cdrom distribution load. Other tweeks to improve installation
and upgrade.
1997-10-20 06:13:25 +00:00
phil fd205c739f Try to recover from a mistake of mine where I lost bits. 1997-10-17 22:17:05 +00:00
phil 15274f8880 Update to current state. Install and upgrade nearly finished. Disk
discovery and geometry no longer use /kern/msgbuf.
1997-10-15 04:35:17 +00:00
phil 9f2b3143db Update to current state. 1997-10-07 04:01:29 +00:00
phil 7f55972efc Sync with current state. Fixes PR 4193. factor.c -- replce prime table with
code to generate needed primes.  Change copyright because prime table was only
code under previous copyright.
1997-10-01 05:04:24 +00:00
phil 35e522db38 Sync to current state. (detect ftp error, clean up directories ...) 1997-09-27 00:09:22 +00:00
phil af1d23bed3 Import of sysinst. Not quite ready, but other ports want access for
parallel development.  i386 version about 90% complete.  pc532 version
just started, other architectures later in coordination with portmasters.

This is a curses based, menu driven installation program.

Better error checking is needed.
1997-09-26 23:02:53 +00:00