1/*	$NetBSD: install.c,v 1.45 2011/04/04 08:30:12 mbalmer Exp $	*/
2
3/*
4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved.
6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3. The name of Piermont Information Systems Inc. may not be used to endorse
18 *    or promote products derived from this software without specific prior
19 *    written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS''
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 *
33 */
34
35/* install.c -- system installation. */
36
37#include <stdio.h>
38#include <curses.h>
39#include "defs.h"
40#include "msg_defs.h"
41#include "menu_defs.h"
42
43/* Do the system install. */
44
45void
46do_install(void)
47{
48
49	msg_display(MSG_installusure);
50	process_menu(MENU_noyes, NULL);
51	if (!yesno)
52		return;
53
54	get_ramsize();
55
56	if (find_disks(msg_string(MSG_install)) < 0)
57		return;
58	clear();
59	refresh();
60
61	if (check_swap(diskdev, 0) > 0) {
62		msg_display(MSG_swapactive);
63		process_menu(MENU_ok, NULL);
64		if (check_swap(diskdev, 1) < 0) {
65			msg_display(MSG_swapdelfailed);
66			process_menu(MENU_ok, NULL);
67			if (!debug)
68				return;
69		}
70	}
71
72	process_menu(MENU_distset, NULL);
73
74	if (!md_get_info()) {
75		msg_display(MSG_abort);
76		process_menu(MENU_ok, NULL);
77		return;
78	}
79
80	if (md_make_bsd_partitions() == 0) {
81		msg_display(MSG_abort);
82		process_menu(MENU_ok, NULL);
83		return;
84	}
85
86	/* Last chance ... do you really want to do this? */
87	clear();
88	refresh();
89	msg_display(MSG_lastchance, diskdev);
90	process_menu(MENU_noyes, NULL);
91	if (!yesno)
92		return;
93
94	if (md_pre_disklabel() != 0)
95		return;
96
97	if (write_disklabel() != 0)
98		return;
99
100	if (md_post_disklabel() != 0)
101		return;
102
103	if (make_filesystems())
104		return;
105
106	if (make_fstab() != 0)
107		return;
108
109	if (md_post_newfs() != 0)
110		return;
111
112	/* Unpack the distribution. */
113	if (get_and_unpack_sets(0, MSG_disksetupdone,
114	    MSG_extractcomplete, MSG_abortinst) != 0)
115		return;
116
117	if (md_post_extract() != 0)
118		return;
119
120	do_configmenu();
121
122	sanity_check();
123
124	md_cleanup_install();
125
126	msg_display(MSG_instcomplete);
127	process_menu(MENU_ok, NULL);
128}
129