Sun Jun 3 13:16:30 2018 UTC ()
Add an option to install onto a pre-configured wedge.
Greatly simmplifies (U)EFI setups (but does not fully automate them yet).


(martin)
diff -r1.3 -r1.4 src/usr.sbin/sysinst/bsddisklabel.c
diff -r1.10 -r1.11 src/usr.sbin/sysinst/defs.h
diff -r1.10 -r1.11 src/usr.sbin/sysinst/msg.mi.en
diff -r1.14 -r1.15 src/usr.sbin/sysinst/disks.c
diff -r1.5 -r1.6 src/usr.sbin/sysinst/mbr.c
diff -r1.6 -r1.7 src/usr.sbin/sysinst/msg.mi.de
diff -r1.6 -r1.7 src/usr.sbin/sysinst/msg.mi.es
diff -r1.9 -r1.10 src/usr.sbin/sysinst/msg.mi.fr
diff -r1.8 -r1.9 src/usr.sbin/sysinst/msg.mi.pl
diff -r1.8 -r1.9 src/usr.sbin/sysinst/arch/i386/md.c

cvs diff -r1.3 -r1.4 src/usr.sbin/sysinst/bsddisklabel.c (switch to unified diff)

--- src/usr.sbin/sysinst/bsddisklabel.c 2018/05/18 12:23:22 1.3
+++ src/usr.sbin/sysinst/bsddisklabel.c 2018/06/03 13:16:30 1.4
@@ -1,817 +1,820 @@ @@ -1,817 +1,820 @@
1/* $NetBSD: bsddisklabel.c,v 1.3 2018/05/18 12:23:22 joerg Exp $ */ 1/* $NetBSD: bsddisklabel.c,v 1.4 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Based on code written by Philip A. Nelson for Piermont Information 7 * Based on code written by Philip A. Nelson for Piermont Information
8 * Systems Inc. 8 * Systems Inc.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the 16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution. 17 * documentation and/or other materials provided with the distribution.
18 * 3. The name of Piermont Information Systems Inc. may not be used to endorse 18 * 3. The name of Piermont Information Systems Inc. may not be used to endorse
19 * or promote products derived from this software without specific prior 19 * or promote products derived from this software without specific prior
20 * written permission. 20 * written permission.
21 * 21 *
22 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 22 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS''
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 25 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE. 32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */ 33 */
34 34
35/* bsddisklabel.c -- generate standard BSD disklabel */ 35/* bsddisklabel.c -- generate standard BSD disklabel */
36/* Included by appropriate arch/XXXX/md.c */ 36/* Included by appropriate arch/XXXX/md.c */
37 37
38#include <sys/param.h> 38#include <sys/param.h>
39#include <sys/sysctl.h> 39#include <sys/sysctl.h>
40#include <sys/exec.h> 40#include <sys/exec.h>
41#include <sys/utsname.h> 41#include <sys/utsname.h>
42#include <sys/types.h> 42#include <sys/types.h>
43#include <sys/stat.h> 43#include <sys/stat.h>
44#include <machine/cpu.h> 44#include <machine/cpu.h>
45#include <stdio.h> 45#include <stdio.h>
46#include <stddef.h> 46#include <stddef.h>
47#include <util.h> 47#include <util.h>
48#include <dirent.h> 48#include <dirent.h>
49#include "defs.h" 49#include "defs.h"
50#include "md.h" 50#include "md.h"
51#include "endian.h" 51#include "endian.h"
52#include "msg_defs.h" 52#include "msg_defs.h"
53#include "menu_defs.h" 53#include "menu_defs.h"
54 54
55/* For the current state of this file blame abs@NetBSD.org */ 55/* For the current state of this file blame abs@NetBSD.org */
56/* Even though he wasn't the last to hack it, but he did admit doing so :-) */ 56/* Even though he wasn't the last to hack it, but he did admit doing so :-) */
57 57
58#define PART_ANY -1 58#define PART_ANY -1
59#define PART_EXTRA -2 59#define PART_EXTRA -2
60#define PART_TMP_RAMDISK -3 60#define PART_TMP_RAMDISK -3
61 61
62/* Defaults for things that might be defined in md.h */ 62/* Defaults for things that might be defined in md.h */
63#ifndef PART_ROOT 63#ifndef PART_ROOT
64#define PART_ROOT PART_A 64#define PART_ROOT PART_A
65#endif 65#endif
66#ifndef PART_SWAP 66#ifndef PART_SWAP
67#define PART_SWAP PART_B 67#define PART_SWAP PART_B
68#endif 68#endif
69#ifndef PART_USR 69#ifndef PART_USR
70#define PART_USR PART_ANY 70#define PART_USR PART_ANY
71#endif 71#endif
72 72
73#ifndef DEFVARSIZE 73#ifndef DEFVARSIZE
74#define DEFVARSIZE 32 74#define DEFVARSIZE 32
75#endif 75#endif
76#ifndef DEFROOTSIZE 76#ifndef DEFROOTSIZE
77#define DEFROOTSIZE 32 77#define DEFROOTSIZE 32
78#endif 78#endif
79#ifndef DEFUSRSIZE 79#ifndef DEFUSRSIZE
80#define DEFUSRSIZE 128 80#define DEFUSRSIZE 128
81#endif 81#endif
82#ifndef DEFSWAPSIZE 82#ifndef DEFSWAPSIZE
83#define DEFSWAPSIZE 128 83#define DEFSWAPSIZE 128
84#endif 84#endif
85 85
86int 86int
87save_ptn(int ptn, daddr_t start, daddr_t size, int fstype, const char *mountpt) 87save_ptn(int ptn, daddr_t start, daddr_t size, int fstype, const char *mountpt)
88{ 88{
89 static int maxptn; 89 static int maxptn;
90 partinfo *p; 90 partinfo *p;
91 int pp; 91 int pp;
92 char *buf; 92 char *buf;
93 93
94 if (maxptn == 0) 94 if (maxptn == 0)
95 maxptn = getmaxpartitions(); 95 maxptn = getmaxpartitions();
96 96
97 if (ptn < 0 || pm->bsdlabel[ptn].pi_fstype != FS_UNUSED) { 97 if (ptn < 0 || pm->bsdlabel[ptn].pi_fstype != FS_UNUSED) {
98 ptn = getrawpartition() + 1; 98 ptn = getrawpartition() + 1;
99#ifdef PART_FIRST_FREE 99#ifdef PART_FIRST_FREE
100 if (ptn < PART_FIRST_FREE) 100 if (ptn < PART_FIRST_FREE)
101 ptn = PART_FIRST_FREE; 101 ptn = PART_FIRST_FREE;
102#endif 102#endif
103 for (;; ptn++) { 103 for (;; ptn++) {
104 if (ptn >= maxptn) 104 if (ptn >= maxptn)
105 return -1; 105 return -1;
106 if (ptn == PART_USR) 106 if (ptn == PART_USR)
107 continue; 107 continue;
108 if (pm->bsdlabel[ptn].pi_fstype == FS_UNUSED) 108 if (pm->bsdlabel[ptn].pi_fstype == FS_UNUSED)
109 break; 109 break;
110 } 110 }
111 } 111 }
112 112
113 if (fstype == FS_UNUSED) 113 if (fstype == FS_UNUSED)
114 return ptn; 114 return ptn;
115 115
116 p = pm->bsdlabel + ptn; 116 p = pm->bsdlabel + ptn;
117 p->pi_offset = start; 117 p->pi_offset = start;
118 p->pi_size = size; 118 p->pi_size = size;
119 set_ptype(p, fstype, mountpt ? PIF_NEWFS : 0); 119 set_ptype(p, fstype, mountpt ? PIF_NEWFS : 0);
120 120
121 /* Hack because we does not have something like FS_LVMPV */ 121 /* Hack because we does not have something like FS_LVMPV */
122 p->lvmpv = 0; 122 p->lvmpv = 0;
123 if (mountpt != NULL && strcmp(mountpt, "lvm") == 0) 123 if (mountpt != NULL && strcmp(mountpt, "lvm") == 0)
124 p->lvmpv = 1; 124 p->lvmpv = 1;
125 else if (mountpt != NULL) { 125 else if (mountpt != NULL) {
126 for (pp = 0; pp < maxptn; pp++) { 126 for (pp = 0; pp < maxptn; pp++) {
127 if (strcmp(pm->bsdlabel[pp].pi_mount, mountpt) == 0) 127 if (strcmp(pm->bsdlabel[pp].pi_mount, mountpt) == 0)
128 pm->bsdlabel[pp].pi_flags &= ~PIF_MOUNT; 128 pm->bsdlabel[pp].pi_flags &= ~PIF_MOUNT;
129 } 129 }
130 if (mountpt[0] != '/') 130 if (mountpt[0] != '/')
131 asprintf(&buf, "/%s", mountpt); 131 asprintf(&buf, "/%s", mountpt);
132 else 132 else
133 asprintf(&buf, "%s", mountpt); 133 asprintf(&buf, "%s", mountpt);
134 strlcpy(p->pi_mount, buf, sizeof p->pi_mount); 134 strlcpy(p->pi_mount, buf, sizeof p->pi_mount);
135 p->pi_flags |= PIF_MOUNT; 135 p->pi_flags |= PIF_MOUNT;
136 /* Default to UFS2. */ 136 /* Default to UFS2. */
137 if (p->pi_fstype == FS_BSDFFS) { 137 if (p->pi_fstype == FS_BSDFFS) {
138#ifdef DEFAULT_UFS2 138#ifdef DEFAULT_UFS2
139#ifndef HAVE_UFS2_BOOT 139#ifndef HAVE_UFS2_BOOT
140 if (strcmp(mountpt, "/") != 0) 140 if (strcmp(mountpt, "/") != 0)
141#endif 141#endif
142 p->pi_flags |= PIF_FFSv2; 142 p->pi_flags |= PIF_FFSv2;
143#endif 143#endif
144 } 144 }
145 free(buf); 145 free(buf);
146 } 146 }
147 147
148 return ptn; 148 return ptn;
149} 149}
150 150
151void 151void
152set_ptn_titles(menudesc *m, int opt, void *arg) 152set_ptn_titles(menudesc *m, int opt, void *arg)
153{ 153{
154 struct ptn_info *pi = arg; 154 struct ptn_info *pi = arg;
155 struct ptn_size *p; 155 struct ptn_size *p;
156 int sm = MEG / pm->sectorsize; 156 int sm = MEG / pm->sectorsize;
157 daddr_t size; 157 daddr_t size;
158 char inc_free[12]; 158 char inc_free[12];
159 159
160 p = &pi->ptn_sizes[opt]; 160 p = &pi->ptn_sizes[opt];
161 if (p->mount[0] == 0) { 161 if (p->mount[0] == 0) {
162 wprintw(m->mw, "%s", msg_string(MSG_add_another_ptn)); 162 wprintw(m->mw, "%s", msg_string(MSG_add_another_ptn));
163 return; 163 return;
164 } 164 }
165 size = p->size; 165 size = p->size;
166 if (p == pi->pool_part) 166 if (p == pi->pool_part)
167 snprintf(inc_free, sizeof inc_free, "(%" PRIi64 ")", 167 snprintf(inc_free, sizeof inc_free, "(%" PRIi64 ")",
168 (size + pi->free_space) / sm); 168 (size + pi->free_space) / sm);
169 else 169 else
170 inc_free[0] = 0; 170 inc_free[0] = 0;
171 wprintw(m->mw, "%6" PRIi64 "%8s%10" PRIi64 "%10" PRIi64 " %c %s", 171 wprintw(m->mw, "%6" PRIi64 "%8s%10" PRIi64 "%10" PRIi64 " %c %s",
172 size / sm, inc_free, size / pm->dlcylsize, size, 172 size / sm, inc_free, size / pm->dlcylsize, size,
173 p == pi->pool_part ? '+' : ' ', p->mount); 173 p == pi->pool_part ? '+' : ' ', p->mount);
174} 174}
175 175
176void 176void
177set_ptn_menu(struct ptn_info *pi) 177set_ptn_menu(struct ptn_info *pi)
178{ 178{
179 struct ptn_size *p; 179 struct ptn_size *p;
180 menu_ent *m; 180 menu_ent *m;
181 181
182 for (m = pi->ptn_menus, p = pi->ptn_sizes;; m++, p++) { 182 for (m = pi->ptn_menus, p = pi->ptn_sizes;; m++, p++) {
183 m->opt_name = NULL; 183 m->opt_name = NULL;
184 m->opt_menu = OPT_NOMENU; 184 m->opt_menu = OPT_NOMENU;
185 m->opt_flags = 0; 185 m->opt_flags = 0;
186 m->opt_action = set_ptn_size; 186 m->opt_action = set_ptn_size;
187 if (p->mount[0] == 0) 187 if (p->mount[0] == 0)
188 break; 188 break;
189 } 189 }
190 if (pi->free_parts != 0) 190 if (pi->free_parts != 0)
191 m++; 191 m++;
192 m->opt_name = MSG_askunits; 192 m->opt_name = MSG_askunits;
193 m->opt_menu = MENU_sizechoice; 193 m->opt_menu = MENU_sizechoice;
194 m->opt_flags = OPT_SUB; 194 m->opt_flags = OPT_SUB;
195 m->opt_action = NULL; 195 m->opt_action = NULL;
196 m++; 196 m++;
197 197
198 if (pi->free_space >= 0) 198 if (pi->free_space >= 0)
199 snprintf(pi->exit_msg, sizeof pi->exit_msg, 199 snprintf(pi->exit_msg, sizeof pi->exit_msg,
200 msg_string(MSG_fssizesok), 200 msg_string(MSG_fssizesok),
201 (int)(pi->free_space / sizemult), multname, pi->free_parts); 201 (int)(pi->free_space / sizemult), multname, pi->free_parts);
202 else 202 else
203 snprintf(pi->exit_msg, sizeof pi->exit_msg, 203 snprintf(pi->exit_msg, sizeof pi->exit_msg,
204 msg_string(MSG_fssizesbad), 204 msg_string(MSG_fssizesbad),
205 (int)(-pi->free_space / sizemult), multname, (uint) -pi->free_space); 205 (int)(-pi->free_space / sizemult), multname, (uint) -pi->free_space);
206 206
207 set_menu_numopts(pi->menu_no, m - pi->ptn_menus); 207 set_menu_numopts(pi->menu_no, m - pi->ptn_menus);
208} 208}
209 209
210int 210int
211set_ptn_size(menudesc *m, void *arg) 211set_ptn_size(menudesc *m, void *arg)
212{ 212{
213 struct ptn_info *pi = arg; 213 struct ptn_info *pi = arg;
214 struct ptn_size *p; 214 struct ptn_size *p;
215 char answer[10]; 215 char answer[10];
216 char dflt[10]; 216 char dflt[10];
217 char *cp; 217 char *cp;
218 daddr_t size, old_size; 218 daddr_t size, old_size;
219 int mult; 219 int mult;
220 220
221 p = pi->ptn_sizes + m->cursel; 221 p = pi->ptn_sizes + m->cursel;
222 222
223 if (pi->free_parts == 0 && p->size == 0) 223 if (pi->free_parts == 0 && p->size == 0)
224 /* Don't allow 'free_parts' to go negative */ 224 /* Don't allow 'free_parts' to go negative */
225 return 0; 225 return 0;
226 226
227 if (p->mount[0] == 0) { 227 if (p->mount[0] == 0) {
228 msg_prompt_win(partman_go?MSG_askfsmountadv:MSG_askfsmount, 228 msg_prompt_win(partman_go?MSG_askfsmountadv:MSG_askfsmount,
229 -1, 18, 0, 0, NULL, p->mount, sizeof p->mount); 229 -1, 18, 0, 0, NULL, p->mount, sizeof p->mount);
230 if (p->mount[0] == 0) 230 if (p->mount[0] == 0)
231 return 0; 231 return 0;
232 } 232 }
233 233
234 size = p->size; 234 size = p->size;
235 old_size = size; 235 old_size = size;
236 if (size == 0) 236 if (size == 0)
237 size = p->dflt_size; 237 size = p->dflt_size;
238 size /= sizemult; 238 size /= sizemult;
239 snprintf(dflt, sizeof dflt, "%" PRIi64 "%s", 239 snprintf(dflt, sizeof dflt, "%" PRIi64 "%s",
240 size, p == pi->pool_part ? "+" : ""); 240 size, p == pi->pool_part ? "+" : "");
241 241
242 for (;;) { 242 for (;;) {
243 mult = sizemult; 243 mult = sizemult;
244 msg_prompt_win(MSG_askfssize, -1, 18, 0, 0, 244 msg_prompt_win(MSG_askfssize, -1, 18, 0, 0,
245 dflt, answer, sizeof answer, 245 dflt, answer, sizeof answer,
246 p->mount, multname); 246 p->mount, multname);
247 /* Some special cases when /usr is first given a size */ 247 /* Some special cases when /usr is first given a size */
248 if (old_size == 0 && !strcmp(p->mount, "/usr")) { 248 if (old_size == 0 && !strcmp(p->mount, "/usr")) {
249 /* Remove space for /usr from / */ 249 /* Remove space for /usr from / */
250 if (!pi->ptn_sizes[0].changed) { 250 if (!pi->ptn_sizes[0].changed) {
251 pi->ptn_sizes[0].size -= p->dflt_size; 251 pi->ptn_sizes[0].size -= p->dflt_size;
252 pi->free_space += p->dflt_size; 252 pi->free_space += p->dflt_size;
253 pi->ptn_sizes[0].changed = 1; 253 pi->ptn_sizes[0].changed = 1;
254 } 254 }
255 /* hack to add free space to default sized /usr */ 255 /* hack to add free space to default sized /usr */
256 if (!strcmp(answer, dflt)) { 256 if (!strcmp(answer, dflt)) {
257 size = p->dflt_size; 257 size = p->dflt_size;
258 pi->pool_part = p; 258 pi->pool_part = p;
259 goto adjust_free; 259 goto adjust_free;
260 } 260 }
261 } 261 }
262 size = strtoul(answer, &cp, 0); 262 size = strtoul(answer, &cp, 0);
263 switch (*cp++) { 263 switch (*cp++) {
264 default: 264 default:
265 continue; 265 continue;
266 case 's': 266 case 's':
267 mult = 1; 267 mult = 1;
268 break; 268 break;
269 case 'c': 269 case 'c':
270 mult = pm->dlcylsize; 270 mult = pm->dlcylsize;
271 break; 271 break;
272 case 'm': 272 case 'm':
273 case 'M': 273 case 'M':
274 mult = MEG / pm->sectorsize; 274 mult = MEG / pm->sectorsize;
275 break; 275 break;
276 case 'g': 276 case 'g':
277 case 'G': 277 case 'G':
278 mult = 1024 * MEG / pm->sectorsize; 278 mult = 1024 * MEG / pm->sectorsize;
279 break; 279 break;
280 case '+': 280 case '+':
281 cp--; 281 cp--;
282 if (cp != answer) 282 if (cp != answer)
283 break; 283 break;
284 mult = 1; 284 mult = 1;
285 size = old_size; 285 size = old_size;
286 break; 286 break;
287 case 0: 287 case 0:
288 cp--; 288 cp--;
289 break; 289 break;
290 } 290 }
291 if (*cp == 0 || *cp == '+') 291 if (*cp == 0 || *cp == '+')
292 break; 292 break;
293 } 293 }
294 294
295 size = NUMSEC(size, mult, pm->dlcylsize); 295 size = NUMSEC(size, mult, pm->dlcylsize);
296 if (p->ptn_id == PART_TMP_RAMDISK) { 296 if (p->ptn_id == PART_TMP_RAMDISK) {
297 p->size = size; 297 p->size = size;
298 return 0; 298 return 0;
299 } 299 }
300 if (p == pi->pool_part) 300 if (p == pi->pool_part)
301 pi->pool_part = NULL; 301 pi->pool_part = NULL;
302 if (*cp == '+' && p->limit == 0) { 302 if (*cp == '+' && p->limit == 0) {
303 pi->pool_part = p; 303 pi->pool_part = p;
304 if (size == 0) 304 if (size == 0)
305 size = pm->dlcylsize; 305 size = pm->dlcylsize;
306 } 306 }
307 if (p->limit != 0 && size > p->limit) 307 if (p->limit != 0 && size > p->limit)
308 size = p->limit; 308 size = p->limit;
309 adjust_free: 309 adjust_free:
310 if (size != old_size) 310 if (size != old_size)
311 p->changed = 1; 311 p->changed = 1;
312 pi->free_space += old_size - size; 312 pi->free_space += old_size - size;
313 p->size = size; 313 p->size = size;
314 if (size == 0) { 314 if (size == 0) {
315 if (old_size != 0) 315 if (old_size != 0)
316 pi->free_parts++; 316 pi->free_parts++;
317 if (p->ptn_id == PART_EXTRA) 317 if (p->ptn_id == PART_EXTRA)
318 memmove(p, p + 1, 318 memmove(p, p + 1,
319 (char *)&pi->ptn_sizes[MAXPARTITIONS] 319 (char *)&pi->ptn_sizes[MAXPARTITIONS]
320 - (char *)p); 320 - (char *)p);
321 } else { 321 } else {
322 int f = pi->free_space; 322 int f = pi->free_space;
323 if (old_size == 0) 323 if (old_size == 0)
324 pi->free_parts--; 324 pi->free_parts--;
325 if (f < mult && -f < mult) { 325 if (f < mult && -f < mult) {
326 /* 326 /*
327 * Round size to end of available space, 327 * Round size to end of available space,
328 * but keep cylinder alignment 328 * but keep cylinder alignment
329 */ 329 */
330 if (f < 0) 330 if (f < 0)
331 f = -roundup(-f, pm->dlcylsize); 331 f = -roundup(-f, pm->dlcylsize);
332 else 332 else
333 f = rounddown(f, pm->dlcylsize); 333 f = rounddown(f, pm->dlcylsize);
334 size += f; 334 size += f;
335 if (size != 0) { 335 if (size != 0) {
336 pi->free_space -= f; 336 pi->free_space -= f;
337 p->size += f; 337 p->size += f;
338 } 338 }
339 } 339 }
340 } 340 }
341 341
342 set_ptn_menu(pi); 342 set_ptn_menu(pi);
343 343
344 return 0; 344 return 0;
345} 345}
346 346
347/* Menu to change sizes of /, /usr, /home and etc. partitions */ 347/* Menu to change sizes of /, /usr, /home and etc. partitions */
348void 348void
349get_ptn_sizes(daddr_t part_start, daddr_t sectors, int no_swap) 349get_ptn_sizes(daddr_t part_start, daddr_t sectors, int no_swap)
350{ 350{
351 int i; 351 int i;
352 int maxpart = getmaxpartitions(); 352 int maxpart = getmaxpartitions();
353 int sm; /* sectors in 1MB */ 353 int sm; /* sectors in 1MB */
354 struct ptn_size *p; 354 struct ptn_size *p;
355 daddr_t size; 355 daddr_t size;
356 static int swap_created = 0, root_created = 0; 356 static int swap_created = 0, root_created = 0;
357 357
358 if (pm->pi.menu_no < 0) 358 if (pm->pi.menu_no < 0)
359 pm->pi = (struct ptn_info) { -1, { 359 pm->pi = (struct ptn_info) { -1, {
360#define PI_ROOT 0 360#define PI_ROOT 0
361 { PART_ROOT, { '/', '\0' }, 361 { PART_ROOT, { '/', '\0' },
362 DEFROOTSIZE, DEFROOTSIZE , 0, 0}, 362 DEFROOTSIZE, DEFROOTSIZE , 0, 0},
363#define PI_SWAP 1 363#define PI_SWAP 1
364 { PART_SWAP, { 's', 'w', 'a', 'p', '\0' }, 364 { PART_SWAP, { 's', 'w', 'a', 'p', '\0' },
365 DEFSWAPSIZE, DEFSWAPSIZE, 0, 0 }, 365 DEFSWAPSIZE, DEFSWAPSIZE, 0, 0 },
366 { PART_TMP_RAMDISK, 366 { PART_TMP_RAMDISK,
367#ifdef HAVE_TMPFS 367#ifdef HAVE_TMPFS
368 { '/', 't', 'm', 'p', ' ', '(', 't', 'm', 'p', 'f', 's', ')', '\0' }, 368 { '/', 't', 'm', 'p', ' ', '(', 't', 'm', 'p', 'f', 's', ')', '\0' },
369#else 369#else
370 { '/', 't', 'm', 'p', ' ', '(', 'm', 'f', 's', ')', '\0' }, 370 { '/', 't', 'm', 'p', ' ', '(', 'm', 'f', 's', ')', '\0' },
371#endif 371#endif
372 64, 0, 0, 0 }, 372 64, 0, 0, 0 },
373#define PI_USR 3 373#define PI_USR 3
374 { PART_USR, { '/', 'u', 's', 'r', '\0' }, DEFUSRSIZE, 374 { PART_USR, { '/', 'u', 's', 'r', '\0' }, DEFUSRSIZE,
375 0, 0, 0 }, 375 0, 0, 0 },
376 { PART_ANY, { '/', 'v', 'a', 'r', '\0' }, DEFVARSIZE, 376 { PART_ANY, { '/', 'v', 'a', 'r', '\0' }, DEFVARSIZE,
377 0, 0, 0 }, 377 0, 0, 0 },
378 { PART_ANY, { '/', 'h', 'o', 'm', 'e', '\0' }, 0, 378 { PART_ANY, { '/', 'h', 'o', 'm', 'e', '\0' }, 0,
379 0, 0, 0 }, 379 0, 0, 0 },
380 }, { 380 }, {
381 { NULL, OPT_NOMENU, 0, set_ptn_size }, 381 { NULL, OPT_NOMENU, 0, set_ptn_size },
382 { MSG_askunits, MENU_sizechoice, OPT_SUB, NULL }, 382 { MSG_askunits, MENU_sizechoice, OPT_SUB, NULL },
383 }, 0, 0, NULL, { 0 } }; 383 }, 0, 0, NULL, { 0 } };
384 384
385 if (maxpart > MAXPARTITIONS) 385 if (maxpart > MAXPARTITIONS)
386 maxpart = MAXPARTITIONS; /* sanity */ 386 maxpart = MAXPARTITIONS; /* sanity */
387 387
388 msg_display(MSG_ptnsizes); 388 msg_display(MSG_ptnsizes);
389 msg_table_add(MSG_ptnheaders); 389 msg_table_add(MSG_ptnheaders);
390 390
391 if (pm->pi.menu_no < 0) { 391 if (pm->pi.menu_no < 0) {
392 /* If there is a swap partition elsewhere, don't add one here.*/ 392 /* If there is a swap partition elsewhere, don't add one here.*/
393 if (no_swap || (swap_created && partman_go)) { 393 if (no_swap || (swap_created && partman_go)) {
394 pm->pi.ptn_sizes[PI_SWAP].size = 0; 394 pm->pi.ptn_sizes[PI_SWAP].size = 0;
395 } else { 395 } else {
396#if DEFSWAPSIZE == -1 396#if DEFSWAPSIZE == -1
397 /* Dynamic swap size. */ 397 /* Dynamic swap size. */
398 pm->pi.ptn_sizes[PI_SWAP].dflt_size = get_ramsize(); 398 pm->pi.ptn_sizes[PI_SWAP].dflt_size = get_ramsize();
399 pm->pi.ptn_sizes[PI_SWAP].size = 399 pm->pi.ptn_sizes[PI_SWAP].size =
400 pm->pi.ptn_sizes[PI_SWAP].dflt_size; 400 pm->pi.ptn_sizes[PI_SWAP].dflt_size;
401#endif 401#endif
402 } 402 }
403 403
404 /* If installing X increase default size of /usr */ 404 /* If installing X increase default size of /usr */
405 if (set_X11_selected()) 405 if (set_X11_selected())
406 pm->pi.ptn_sizes[PI_USR].dflt_size += XNEEDMB; 406 pm->pi.ptn_sizes[PI_USR].dflt_size += XNEEDMB;
407 407
408 /* Start of planning to give free space to / */ 408 /* Start of planning to give free space to / */
409 pm->pi.pool_part = &pm->pi.ptn_sizes[PI_ROOT]; 409 pm->pi.pool_part = &pm->pi.ptn_sizes[PI_ROOT];
410 /* Make size of root include default size of /usr */ 410 /* Make size of root include default size of /usr */
411 pm->pi.ptn_sizes[PI_ROOT].size += pm->pi.ptn_sizes[PI_USR].dflt_size; 411 pm->pi.ptn_sizes[PI_ROOT].size += pm->pi.ptn_sizes[PI_USR].dflt_size;
412 412
413 sm = MEG / pm->sectorsize; 413 sm = MEG / pm->sectorsize;
414 414
415 if (root_limit != 0) { 415 if (root_limit != 0) {
416 /* Bah - bios can not read all the disk, limit root */ 416 /* Bah - bios can not read all the disk, limit root */
417 pm->pi.ptn_sizes[PI_ROOT].limit = root_limit - part_start; 417 pm->pi.ptn_sizes[PI_ROOT].limit = root_limit - part_start;
418 /* Allocate a /usr partition if bios can't read 418 /* Allocate a /usr partition if bios can't read
419 * everything except swap. 419 * everything except swap.
420 */ 420 */
421 if (pm->pi.ptn_sizes[PI_ROOT].limit 421 if (pm->pi.ptn_sizes[PI_ROOT].limit
422 < sectors - pm->pi.ptn_sizes[PI_SWAP].size * sm) { 422 < sectors - pm->pi.ptn_sizes[PI_SWAP].size * sm) {
423 /* Root won't be able to access all the space */ 423 /* Root won't be able to access all the space */
424 /* Claw back space for /usr */ 424 /* Claw back space for /usr */
425 pm->pi.ptn_sizes[PI_USR].size = 425 pm->pi.ptn_sizes[PI_USR].size =
426 pm->pi.ptn_sizes[PI_USR].dflt_size; 426 pm->pi.ptn_sizes[PI_USR].dflt_size;
427 pm->pi.ptn_sizes[PI_ROOT].size -= 427 pm->pi.ptn_sizes[PI_ROOT].size -=
428 pm->pi.ptn_sizes[PI_USR].dflt_size; 428 pm->pi.ptn_sizes[PI_USR].dflt_size;
429 pm->pi.ptn_sizes[PI_ROOT].changed = 1; 429 pm->pi.ptn_sizes[PI_ROOT].changed = 1;
430 /* Give free space to /usr */ 430 /* Give free space to /usr */
431 pm->pi.pool_part = &pm->pi.ptn_sizes[PI_USR]; 431 pm->pi.pool_part = &pm->pi.ptn_sizes[PI_USR];
432 } 432 }
433 } 433 }
434 434
435 /* Change preset sizes from MB to sectors */ 435 /* Change preset sizes from MB to sectors */
436 pm->pi.free_space = sectors; 436 pm->pi.free_space = sectors;
437 for (p = pm->pi.ptn_sizes; p->mount[0]; p++) { 437 for (p = pm->pi.ptn_sizes; p->mount[0]; p++) {
438 p->size = NUMSEC(p->size, sm, pm->dlcylsize); 438 p->size = NUMSEC(p->size, sm, pm->dlcylsize);
439 p->dflt_size = NUMSEC(p->dflt_size, sm, pm->dlcylsize); 439 p->dflt_size = NUMSEC(p->dflt_size, sm, pm->dlcylsize);
440 pm->pi.free_space -= p->size; 440 pm->pi.free_space -= p->size;
441 } 441 }
442 442
443 /* Steal space from swap to make things fit.. */ 443 /* Steal space from swap to make things fit.. */
444 if (pm->pi.free_space < 0) { 444 if (pm->pi.free_space < 0) {
445 i = roundup(-pm->pi.free_space, pm->dlcylsize); 445 i = roundup(-pm->pi.free_space, pm->dlcylsize);
446 if (i > pm->pi.ptn_sizes[PI_SWAP].size) 446 if (i > pm->pi.ptn_sizes[PI_SWAP].size)
447 i = pm->pi.ptn_sizes[PI_SWAP].size; 447 i = pm->pi.ptn_sizes[PI_SWAP].size;
448 pm->pi.ptn_sizes[PI_SWAP].size -= i; 448 pm->pi.ptn_sizes[PI_SWAP].size -= i;
449 pm->pi.free_space += i; 449 pm->pi.free_space += i;
450 } 450 }
451 451
452 /* Add space for 2 system dumps to / (traditional) */ 452 /* Add space for 2 system dumps to / (traditional) */
453 i = get_ramsize() * sm; 453 i = get_ramsize() * sm;
454 i = roundup(i, pm->dlcylsize); 454 i = roundup(i, pm->dlcylsize);
455 if (pm->pi.free_space > i * 2) 455 if (pm->pi.free_space > i * 2)
456 i *= 2; 456 i *= 2;
457 if (pm->pi.free_space > i) { 457 if (pm->pi.free_space > i) {
458 pm->pi.ptn_sizes[PI_ROOT].size += i; 458 pm->pi.ptn_sizes[PI_ROOT].size += i;
459 pm->pi.free_space -= i; 459 pm->pi.free_space -= i;
460 } 460 }
461 461
462 if (root_created && partman_go) { 462 if (root_created && partman_go) {
463 pm->pi.ptn_sizes[PI_ROOT].size = 0; 463 pm->pi.ptn_sizes[PI_ROOT].size = 0;
464 pm->pi.pool_part = 0; 464 pm->pi.pool_part = 0;
465 } 465 }
466 466
467 /* Ensure all of / is readable by the system boot code */ 467 /* Ensure all of / is readable by the system boot code */
468 i = pm->pi.ptn_sizes[PI_ROOT].limit; 468 i = pm->pi.ptn_sizes[PI_ROOT].limit;
469 if (i != 0 && (i -= pm->pi.ptn_sizes[PI_ROOT].size) < 0) { 469 if (i != 0 && (i -= pm->pi.ptn_sizes[PI_ROOT].size) < 0) {
470 pm->pi.ptn_sizes[PI_ROOT].size += i; 470 pm->pi.ptn_sizes[PI_ROOT].size += i;
471 pm->pi.free_space -= i; 471 pm->pi.free_space -= i;
472 } 472 }
473 473
474 /* Count free partition slots */ 474 /* Count free partition slots */
475 pm->pi.free_parts = 0; 475 pm->pi.free_parts = 0;
476 for (i = 0; i < maxpart; i++) { 476 for (i = 0; i < maxpart; i++) {
477 if (pm->bsdlabel[i].pi_size == 0) 477 if (pm->bsdlabel[i].pi_size == 0)
478 pm->pi.free_parts++; 478 pm->pi.free_parts++;
479 } 479 }
480 for (i = 0; i < MAXPARTITIONS; i++) { 480 for (i = 0; i < MAXPARTITIONS; i++) {
481 p = &pm->pi.ptn_sizes[i]; 481 p = &pm->pi.ptn_sizes[i];
482 if (i != 0 && p->ptn_id == 0) 482 if (i != 0 && p->ptn_id == 0)
483 p->ptn_id = PART_EXTRA; 483 p->ptn_id = PART_EXTRA;
484 if (p->size != 0) 484 if (p->size != 0)
485 pm->pi.free_parts--; 485 pm->pi.free_parts--;
486 } 486 }
487 487
488 pm->pi.menu_no = new_menu(0, pm->pi.ptn_menus, nelem(pm->pi.ptn_menus), 488 pm->pi.menu_no = new_menu(0, pm->pi.ptn_menus, nelem(pm->pi.ptn_menus),
489 3, -1, 12, 70, 489 3, -1, 12, 70,
490 MC_ALWAYS_SCROLL | MC_NOBOX | MC_NOCLEAR, 490 MC_ALWAYS_SCROLL | MC_NOBOX | MC_NOCLEAR,
491 NULL, set_ptn_titles, NULL, 491 NULL, set_ptn_titles, NULL,
492 "help", pm->pi.exit_msg); 492 "help", pm->pi.exit_msg);
493 493
494 if (pm->pi.menu_no < 0) 494 if (pm->pi.menu_no < 0)
495 return; 495 return;
496 } 496 }
497 497
498 do { 498 do {
499 set_ptn_menu(&pm->pi); 499 set_ptn_menu(&pm->pi);
500 pm->current_cylsize = pm->dlcylsize; 500 pm->current_cylsize = pm->dlcylsize;
501 process_menu(pm->pi.menu_no, &pm->pi); 501 process_menu(pm->pi.menu_no, &pm->pi);
502 } while (pm->pi.free_space < 0 || pm->pi.free_parts < 0); 502 } while (pm->pi.free_space < 0 || pm->pi.free_parts < 0);
503 503
504 /* Give any cylinder fragment to last partition */ 504 /* Give any cylinder fragment to last partition */
505 if (pm->pi.pool_part != NULL || pm->pi.free_space < pm->dlcylsize) { 505 if (pm->pi.pool_part != NULL || pm->pi.free_space < pm->dlcylsize) {
506 for (p = pm->pi.ptn_sizes + nelem(pm->pi.ptn_sizes) - 1; ;p--) { 506 for (p = pm->pi.ptn_sizes + nelem(pm->pi.ptn_sizes) - 1; ;p--) {
507 if (p->size == 0) { 507 if (p->size == 0) {
508 if (p == pm->pi.ptn_sizes) 508 if (p == pm->pi.ptn_sizes)
509 break; 509 break;
510 continue; 510 continue;
511 } 511 }
512 if (p->ptn_id == PART_TMP_RAMDISK) 512 if (p->ptn_id == PART_TMP_RAMDISK)
513 continue; 513 continue;
514 p->size += pm->pi.free_space % pm->dlcylsize; 514 p->size += pm->pi.free_space % pm->dlcylsize;
515 pm->pi.free_space -= pm->pi.free_space % pm->dlcylsize; 515 pm->pi.free_space -= pm->pi.free_space % pm->dlcylsize;
516 break; 516 break;
517 } 517 }
518 } 518 }
519 519
520 for (p = pm->pi.ptn_sizes; p->mount[0]; p++, part_start += size) { 520 for (p = pm->pi.ptn_sizes; p->mount[0]; p++, part_start += size) {
521 size = p->size; 521 size = p->size;
522 if (p == pm->pi.pool_part) { 522 if (p == pm->pi.pool_part) {
523 size += rounddown(pm->pi.free_space, pm->dlcylsize); 523 size += rounddown(pm->pi.free_space, pm->dlcylsize);
524 if (p->limit != 0 && size > p->limit) 524 if (p->limit != 0 && size > p->limit)
525 size = p->limit; 525 size = p->limit;
526 } 526 }
527 i = p->ptn_id; 527 i = p->ptn_id;
528 if (i == PART_TMP_RAMDISK) { 528 if (i == PART_TMP_RAMDISK) {
529 tmp_ramdisk_size = size; 529 tmp_ramdisk_size = size;
530 size = 0; 530 size = 0;
531 continue; 531 continue;
532 } 532 }
533 if (size == 0) 533 if (size == 0)
534 continue; 534 continue;
535 if (i == PART_ROOT && size > 0) 535 if (i == PART_ROOT && size > 0)
536 root_created = 1; 536 root_created = 1;
537 if (i == PART_SWAP) { 537 if (i == PART_SWAP) {
538 if (size > 0) 538 if (size > 0)
539 swap_created = 1; 539 swap_created = 1;
540 save_ptn(i, part_start, size, FS_SWAP, NULL); 540 save_ptn(i, part_start, size, FS_SWAP, NULL);
541 continue; 541 continue;
542 } 542 }
543 if (!strcmp(p->mount, "raid")) { 543 if (!strcmp(p->mount, "raid")) {
544 save_ptn(i, part_start, size, FS_RAID, NULL); 544 save_ptn(i, part_start, size, FS_RAID, NULL);
545 continue;  545 continue;
546 } else if (!strcmp(p->mount, "cgd")) { 546 } else if (!strcmp(p->mount, "cgd")) {
547 save_ptn(i, part_start, size, FS_CGD, NULL); 547 save_ptn(i, part_start, size, FS_CGD, NULL);
548 continue; 548 continue;
549 } 549 }
550 save_ptn(i, part_start, size, FS_BSDFFS, p->mount); 550 save_ptn(i, part_start, size, FS_BSDFFS, p->mount);
551 } 551 }
552} 552}
553 553
554/* 554/*
555 * md back-end code for menu-driven BSD disklabel editor. 555 * md back-end code for menu-driven BSD disklabel editor.
556 */ 556 */
557int 557int
558make_bsd_partitions(void) 558make_bsd_partitions(void)
559{ 559{
560 int i; 560 int i;
561 int part; 561 int part;
562 int maxpart = getmaxpartitions(); 562 int maxpart = getmaxpartitions();
563 daddr_t partstart; 563 daddr_t partstart;
564 int part_raw, part_bsd; 564 int part_raw, part_bsd;
565 daddr_t ptend; 565 daddr_t ptend;
566 int no_swap = 0, valid_part = -1; 566 int no_swap = 0, valid_part = -1;
567 partinfo *p, savedlabel[MAXPARTITIONS]; 567 partinfo *p, savedlabel[MAXPARTITIONS];
568 568
 569 if (pm && pm->no_part)
 570 return 1;
 571
569 memcpy(&savedlabel, &pm->bsdlabel, sizeof savedlabel); 572 memcpy(&savedlabel, &pm->bsdlabel, sizeof savedlabel);
570 573
571 /* 574 /*
572 * Initialize global variables that track space used on this disk. 575 * Initialize global variables that track space used on this disk.
573 * Standard 4.4BSD 8-partition labels always cover whole disk. 576 * Standard 4.4BSD 8-partition labels always cover whole disk.
574 */ 577 */
575 if (pm->ptsize == 0) 578 if (pm->ptsize == 0)
576 pm->ptsize = pm->dlsize - pm->ptstart; 579 pm->ptsize = pm->dlsize - pm->ptstart;
577 if (pm->dlsize == 0) 580 if (pm->dlsize == 0)
578 pm->dlsize = pm->ptstart + pm->ptsize; 581 pm->dlsize = pm->ptstart + pm->ptsize;
579 if (logfp) fprintf(logfp, "dlsize=%" PRId64 " ptsize=%" PRId64 582 if (logfp) fprintf(logfp, "dlsize=%" PRId64 " ptsize=%" PRId64
580 " ptstart=%" PRId64 "\n", 583 " ptstart=%" PRId64 "\n",
581 pm->dlsize, pm->ptsize, pm->ptstart); 584 pm->dlsize, pm->ptsize, pm->ptstart);
582 585
583 partstart = pm->ptstart; 586 partstart = pm->ptstart;
584 ptend = pm->ptstart + pm->ptsize; 587 ptend = pm->ptstart + pm->ptsize;
585 588
586 /* Ask for layout type -- standard or special */ 589 /* Ask for layout type -- standard or special */
587 if (partman_go == 0) { 590 if (partman_go == 0) {
588 msg_display(MSG_layout, 591 msg_display(MSG_layout,
589 (int) (pm->ptsize / (MEG / pm->sectorsize)), 592 (int) (pm->ptsize / (MEG / pm->sectorsize)),
590 DEFROOTSIZE + DEFSWAPSIZE + DEFUSRSIZE, 593 DEFROOTSIZE + DEFSWAPSIZE + DEFUSRSIZE,
591 DEFROOTSIZE + DEFSWAPSIZE + DEFUSRSIZE + XNEEDMB); 594 DEFROOTSIZE + DEFSWAPSIZE + DEFUSRSIZE + XNEEDMB);
592 process_menu(MENU_layout, NULL); 595 process_menu(MENU_layout, NULL);
593 } 596 }
594 597
595 /* Set so we use the 'real' geometry for rounding, input in MB */ 598 /* Set so we use the 'real' geometry for rounding, input in MB */
596 pm->current_cylsize = pm->dlcylsize; 599 pm->current_cylsize = pm->dlcylsize;
597 set_sizemultname_meg(); 600 set_sizemultname_meg();
598 601
599 /* Build standard partitions */ 602 /* Build standard partitions */
600 memset(&pm->bsdlabel, 0, sizeof pm->bsdlabel); 603 memset(&pm->bsdlabel, 0, sizeof pm->bsdlabel);
601 604
602 /* Set initial partition types to unused */ 605 /* Set initial partition types to unused */
603 for (part = 0 ; part < maxpart ; ++part) 606 for (part = 0 ; part < maxpart ; ++part)
604 pm->bsdlabel[part].pi_fstype = FS_UNUSED; 607 pm->bsdlabel[part].pi_fstype = FS_UNUSED;
605 608
606 /* Whole disk partition */ 609 /* Whole disk partition */
607 part_raw = getrawpartition(); 610 part_raw = getrawpartition();
608 if (part_raw == -1) 611 if (part_raw == -1)
609 part_raw = PART_C; /* for sanity... */ 612 part_raw = PART_C; /* for sanity... */
610 pm->bsdlabel[part_raw].pi_offset = 0; 613 pm->bsdlabel[part_raw].pi_offset = 0;
611 pm->bsdlabel[part_raw].pi_size = pm->dlsize; 614 pm->bsdlabel[part_raw].pi_size = pm->dlsize;
612 615
613 if (part_raw == PART_D) { 616 if (part_raw == PART_D) {
614 /* Probably a system that expects an i386 style mbr */ 617 /* Probably a system that expects an i386 style mbr */
615 part_bsd = PART_C; 618 part_bsd = PART_C;
616 pm->bsdlabel[PART_C].pi_offset = pm->ptstart; 619 pm->bsdlabel[PART_C].pi_offset = pm->ptstart;
617 pm->bsdlabel[PART_C].pi_size = pm->ptsize; 620 pm->bsdlabel[PART_C].pi_size = pm->ptsize;
618 } else { 621 } else {
619 part_bsd = part_raw; 622 part_bsd = part_raw;
620 } 623 }
621 624
622#if defined(PART_BOOT) && defined(BOOT_SIZE) 625#if defined(PART_BOOT) && defined(BOOT_SIZE)
623 i = BOOT_SIZE; 626 i = BOOT_SIZE;
624 if (i >= 1024) { 627 if (i >= 1024) {
625 /* Treat big numbers as a byte count */ 628 /* Treat big numbers as a byte count */
626 i = (i + pm->dlcylsize * pm->sectorsize - 1) / (pm->dlcylsize * pm->sectorsize); 629 i = (i + pm->dlcylsize * pm->sectorsize - 1) / (pm->dlcylsize * pm->sectorsize);
627 i *= pm->dlcylsize; 630 i *= pm->dlcylsize;
628 } 631 }
629#if defined(PART_BOOT_FFS) 632#if defined(PART_BOOT_FFS)
630 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BSDFFS; 633 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BSDFFS;
631 pm->bsdlabel[PART_BOOT].pi_flags = PIF_NEWFS; 634 pm->bsdlabel[PART_BOOT].pi_flags = PIF_NEWFS;
632#else 635#else
633 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BOOT; 636 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BOOT;
634#endif 637#endif
635 pm->bsdlabel[PART_BOOT].pi_size = i; 638 pm->bsdlabel[PART_BOOT].pi_size = i;
636#ifdef BOOT_HIGH 639#ifdef BOOT_HIGH
637 pm->bsdlabel[PART_BOOT].pi_offset = ptend - i; 640 pm->bsdlabel[PART_BOOT].pi_offset = ptend - i;
638 ptend -= i; 641 ptend -= i;
639#else 642#else
640 pm->bsdlabel[PART_BOOT].pi_offset = pm->ptstart; 643 pm->bsdlabel[PART_BOOT].pi_offset = pm->ptstart;
641 partstart += i; 644 partstart += i;
642#endif 645#endif
643#elif defined(PART_BOOT) 646#elif defined(PART_BOOT)
644 if (pm->bootsize != 0) { 647 if (pm->bootsize != 0) {
645#if defined(PART_BOOT_MSDOS) 648#if defined(PART_BOOT_MSDOS)
646 pm->bsdlabel[PART_BOOT].pi_fstype = FS_MSDOS; 649 pm->bsdlabel[PART_BOOT].pi_fstype = FS_MSDOS;
647#else 650#else
648 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BOOT; 651 pm->bsdlabel[PART_BOOT].pi_fstype = FS_BOOT;
649#endif 652#endif
650 pm->bsdlabel[PART_BOOT].pi_size = pm->bootsize; 653 pm->bsdlabel[PART_BOOT].pi_size = pm->bootsize;
651 pm->bsdlabel[PART_BOOT].pi_offset = pm->bootstart; 654 pm->bsdlabel[PART_BOOT].pi_offset = pm->bootstart;
652#if defined(PART_BOOT_PI_FLAGS) 655#if defined(PART_BOOT_PI_FLAGS)
653 pm->bsdlabel[PART_BOOT].pi_flags |= PART_BOOT_PI_FLAGS; 656 pm->bsdlabel[PART_BOOT].pi_flags |= PART_BOOT_PI_FLAGS;
654#endif 657#endif
655#if defined(PART_BOOT_PI_MOUNT) 658#if defined(PART_BOOT_PI_MOUNT)
656 strlcpy(pm->bsdlabel[PART_BOOT].pi_mount, PART_BOOT_PI_MOUNT, 659 strlcpy(pm->bsdlabel[PART_BOOT].pi_mount, PART_BOOT_PI_MOUNT,
657 sizeof pm->bsdlabel[PART_BOOT].pi_mount); 660 sizeof pm->bsdlabel[PART_BOOT].pi_mount);
658#endif 661#endif
659 } 662 }
660#endif /* PART_BOOT w/o BOOT_SIZE */ 663#endif /* PART_BOOT w/o BOOT_SIZE */
661 664
662#if defined(PART_SYSVBFS) && defined(SYSVBFS_SIZE) 665#if defined(PART_SYSVBFS) && defined(SYSVBFS_SIZE)
663 pm->bsdlabel[PART_SYSVBFS].pi_offset = partstart; 666 pm->bsdlabel[PART_SYSVBFS].pi_offset = partstart;
664 pm->bsdlabel[PART_SYSVBFS].pi_fstype = FS_SYSVBFS; 667 pm->bsdlabel[PART_SYSVBFS].pi_fstype = FS_SYSVBFS;
665 pm->bsdlabel[PART_SYSVBFS].pi_size = SYSVBFS_SIZE; 668 pm->bsdlabel[PART_SYSVBFS].pi_size = SYSVBFS_SIZE;
666 pm->bsdlabel[PART_SYSVBFS].pi_flags |= PIF_NEWFS | PIF_MOUNT; 669 pm->bsdlabel[PART_SYSVBFS].pi_flags |= PIF_NEWFS | PIF_MOUNT;
667 strlcpy(pm->bsdlabel[PART_SYSVBFS].pi_mount, "/stand", 670 strlcpy(pm->bsdlabel[PART_SYSVBFS].pi_mount, "/stand",
668 sizeof pm->bsdlabel[PART_SYSVBFS].pi_mount); 671 sizeof pm->bsdlabel[PART_SYSVBFS].pi_mount);
669 partstart += SYSVBFS_SIZE; 672 partstart += SYSVBFS_SIZE;
670#endif 673#endif
671 674
672#ifdef PART_REST 675#ifdef PART_REST
673 pm->bsdlabel[PART_REST].pi_offset = 0; 676 pm->bsdlabel[PART_REST].pi_offset = 0;
674 pm->bsdlabel[PART_REST].pi_size = pm->ptstart; 677 pm->bsdlabel[PART_REST].pi_size = pm->ptstart;
675#endif 678#endif
676 679
677 if (layoutkind == LY_USEEXIST) { 680 if (layoutkind == LY_USEEXIST) {
678 /* 681 /*
679 * If 'pm->oldlabel' is a default label created by the kernel it 682 * If 'pm->oldlabel' is a default label created by the kernel it
680 * will have exactly one valid partition besides raw_part 683 * will have exactly one valid partition besides raw_part
681 * which covers the whole disk - but might lie outside the 684 * which covers the whole disk - but might lie outside the
682 * mbr partition we (by now) have offset by a few sectors. 685 * mbr partition we (by now) have offset by a few sectors.
683 * Check for this and and fix ut up. 686 * Check for this and and fix ut up.
684 */ 687 */
685 valid_part = -1; 688 valid_part = -1;
686 for (i = 0; i < maxpart; i++) { 689 for (i = 0; i < maxpart; i++) {
687 if (i == part_raw) 690 if (i == part_raw)
688 continue; 691 continue;
689 if (pm->oldlabel[i].pi_size > 0 && PI_ISBSDFS(&pm->oldlabel[i])) { 692 if (pm->oldlabel[i].pi_size > 0 && PI_ISBSDFS(&pm->oldlabel[i])) {
690 if (valid_part >= 0) { 693 if (valid_part >= 0) {
691 /* nope, not the default case */ 694 /* nope, not the default case */
692 valid_part = -1; 695 valid_part = -1;
693 break; 696 break;
694 } 697 }
695 valid_part = i; 698 valid_part = i;
696 } 699 }
697 } 700 }
698 if (valid_part >= 0 && pm->oldlabel[valid_part].pi_offset < pm->ptstart) { 701 if (valid_part >= 0 && pm->oldlabel[valid_part].pi_offset < pm->ptstart) {
699 pm->oldlabel[valid_part].pi_offset = pm->ptstart; 702 pm->oldlabel[valid_part].pi_offset = pm->ptstart;
700 pm->oldlabel[valid_part].pi_size -= pm->ptstart; 703 pm->oldlabel[valid_part].pi_size -= pm->ptstart;
701 } 704 }
702 } 705 }
703 706
704 /* 707 /*
705 * Save any partitions that are outside the area we are 708 * Save any partitions that are outside the area we are
706 * going to use. 709 * going to use.
707 * In particular this saves details of the other MBR 710 * In particular this saves details of the other MBR
708 * partitions on a multiboot i386 system. 711 * partitions on a multiboot i386 system.
709 */ 712 */
710 for (i = maxpart; i--;) { 713 for (i = maxpart; i--;) {
711 if (pm->bsdlabel[i].pi_size != 0) 714 if (pm->bsdlabel[i].pi_size != 0)
712 /* Don't overwrite special partitions */ 715 /* Don't overwrite special partitions */
713 continue; 716 continue;
714 p = &pm->oldlabel[i]; 717 p = &pm->oldlabel[i];
715 if (p->pi_fstype == FS_UNUSED || p->pi_size == 0) 718 if (p->pi_fstype == FS_UNUSED || p->pi_size == 0)
716 continue; 719 continue;
717 if (layoutkind == LY_USEEXIST) { 720 if (layoutkind == LY_USEEXIST) {
718 if (PI_ISBSDFS(p)) { 721 if (PI_ISBSDFS(p)) {
719 p->pi_flags |= PIF_MOUNT; 722 p->pi_flags |= PIF_MOUNT;
720 if (layoutkind == LY_USEEXIST && i == valid_part) { 723 if (layoutkind == LY_USEEXIST && i == valid_part) {
721 int fstype = p->pi_fstype; 724 int fstype = p->pi_fstype;
722 p->pi_fstype = 0; 725 p->pi_fstype = 0;
723 strcpy(p->pi_mount, "/"); 726 strcpy(p->pi_mount, "/");
724 set_ptype(p, fstype, PIF_NEWFS); 727 set_ptype(p, fstype, PIF_NEWFS);
725 } 728 }
726 } 729 }
727 } else { 730 } else {
728 if (p->pi_offset < pm->ptstart + pm->ptsize && 731 if (p->pi_offset < pm->ptstart + pm->ptsize &&
729 p->pi_offset + p->pi_size > pm->ptstart) 732 p->pi_offset + p->pi_size > pm->ptstart)
730 /* Not outside area we are allocating */ 733 /* Not outside area we are allocating */
731 continue; 734 continue;
732 if (p->pi_fstype == FS_SWAP) 735 if (p->pi_fstype == FS_SWAP)
733 no_swap = 1; 736 no_swap = 1;
734 } 737 }
735 pm->bsdlabel[i] = pm->oldlabel[i]; 738 pm->bsdlabel[i] = pm->oldlabel[i];
736 } 739 }
737 740
738 if (layoutkind == LY_SETNEW) 741 if (layoutkind == LY_SETNEW)
739 get_ptn_sizes(partstart, ptend - partstart, no_swap); 742 get_ptn_sizes(partstart, ptend - partstart, no_swap);
740  743
741 else if (layoutkind == LY_NEWRAID) { 744 else if (layoutkind == LY_NEWRAID) {
742 set_ptype(&(pm->bsdlabel[PART_E]), FS_RAID, 0); 745 set_ptype(&(pm->bsdlabel[PART_E]), FS_RAID, 0);
743 pm->bsdlabel[PART_E].pi_size = pm->ptsize; 746 pm->bsdlabel[PART_E].pi_size = pm->ptsize;
744 } 747 }
745 else if (layoutkind == LY_NEWCGD) { 748 else if (layoutkind == LY_NEWCGD) {
746 set_ptype(&(pm->bsdlabel[PART_E]), FS_CGD, 0); 749 set_ptype(&(pm->bsdlabel[PART_E]), FS_CGD, 0);
747 pm->bsdlabel[PART_E].pi_size = pm->ptsize; 750 pm->bsdlabel[PART_E].pi_size = pm->ptsize;
748 } 751 }
749 else if (layoutkind == LY_NEWLVM) { 752 else if (layoutkind == LY_NEWLVM) {
750 set_ptype(&(pm->bsdlabel[PART_E]), FS_BSDFFS, 0); 753 set_ptype(&(pm->bsdlabel[PART_E]), FS_BSDFFS, 0);
751 pm->bsdlabel[PART_E].pi_size = pm->ptsize; 754 pm->bsdlabel[PART_E].pi_size = pm->ptsize;
752 pm->bsdlabel[PART_E].lvmpv = 1; 755 pm->bsdlabel[PART_E].lvmpv = 1;
753 } 756 }
754 757
755 /* 758 /*
756 * OK, we have a partition table. Give the user the chance to 759 * OK, we have a partition table. Give the user the chance to
757 * edit it and verify it's OK, or abort altogether. 760 * edit it and verify it's OK, or abort altogether.
758 */ 761 */
759 do { 762 do {
760 if (edit_and_check_label(pm->bsdlabel, maxpart, part_raw, part_bsd) == 0) { 763 if (edit_and_check_label(pm->bsdlabel, maxpart, part_raw, part_bsd) == 0) {
761 msg_display(MSG_abort); 764 msg_display(MSG_abort);
762 memcpy(&pm->bsdlabel, &savedlabel, sizeof pm->bsdlabel); 765 memcpy(&pm->bsdlabel, &savedlabel, sizeof pm->bsdlabel);
763 return 0; 766 return 0;
764 } 767 }
765 } while (partman_go == 0 && check_partitions() == 0); 768 } while (partman_go == 0 && check_partitions() == 0);
766 769
767 /* Disk name */ 770 /* Disk name */
768 if (!partman_go) 771 if (!partman_go)
769 msg_prompt(MSG_packname, pm->bsddiskname, pm->bsddiskname, 772 msg_prompt(MSG_packname, pm->bsddiskname, pm->bsddiskname,
770 sizeof pm->bsddiskname); 773 sizeof pm->bsddiskname);
771 774
772 /* save label to disk for MI code to update. */ 775 /* save label to disk for MI code to update. */
773 if (! partman_go) 776 if (! partman_go)
774 (void) savenewlabel(pm->bsdlabel, maxpart); 777 (void) savenewlabel(pm->bsdlabel, maxpart);
775 778
776 /* Everything looks OK. */ 779 /* Everything looks OK. */
777 return (1); 780 return (1);
778} 781}
779 782
780/* 783/*
781 * check that there is at least a / somewhere. 784 * check that there is at least a / somewhere.
782 */ 785 */
783int 786int
784check_partitions(void) 787check_partitions(void)
785{ 788{
786#ifdef HAVE_BOOTXX_xFS 789#ifdef HAVE_BOOTXX_xFS
787 int rv = 1; 790 int rv = 1;
788 char *bootxx; 791 char *bootxx;
789#endif 792#endif
790#ifndef HAVE_UFS2_BOOT 793#ifndef HAVE_UFS2_BOOT
791 int fstype; 794 int fstype;
792#endif 795#endif
793 796
794#ifdef HAVE_BOOTXX_xFS 797#ifdef HAVE_BOOTXX_xFS
795 /* check if we have boot code for the root partition type */ 798 /* check if we have boot code for the root partition type */
796 bootxx = bootxx_name(); 799 bootxx = bootxx_name();
797 if (bootxx != NULL) { 800 if (bootxx != NULL) {
798 rv = access(bootxx, R_OK); 801 rv = access(bootxx, R_OK);
799 free(bootxx); 802 free(bootxx);
800 } else 803 } else
801 rv = -1; 804 rv = -1;
802 if (rv != 0) { 805 if (rv != 0) {
803 process_menu(MENU_ok, __UNCONST(MSG_No_Bootcode)); 806 process_menu(MENU_ok, __UNCONST(MSG_No_Bootcode));
804 return 0; 807 return 0;
805 } 808 }
806#endif 809#endif
807#ifndef HAVE_UFS2_BOOT 810#ifndef HAVE_UFS2_BOOT
808 fstype = pm->bsdlabel[pm->rootpart].pi_fstype; 811 fstype = pm->bsdlabel[pm->rootpart].pi_fstype;
809 if (fstype == FS_BSDFFS && 812 if (fstype == FS_BSDFFS &&
810 (pm->bsdlabel[pm->rootpart].pi_flags & PIF_FFSv2) != 0) { 813 (pm->bsdlabel[pm->rootpart].pi_flags & PIF_FFSv2) != 0) {
811 process_menu(MENU_ok, __UNCONST(MSG_cannot_ufs2_root)); 814 process_menu(MENU_ok, __UNCONST(MSG_cannot_ufs2_root));
812 return 0; 815 return 0;
813 } 816 }
814#endif 817#endif
815 818
816 return md_check_partitions(); 819 return md_check_partitions();
817} 820}

cvs diff -r1.10 -r1.11 src/usr.sbin/sysinst/defs.h (switch to unified diff)

--- src/usr.sbin/sysinst/defs.h 2018/05/18 12:23:22 1.10
+++ src/usr.sbin/sysinst/defs.h 2018/06/03 13:16:30 1.11
@@ -1,639 +1,640 @@ @@ -1,639 +1,640 @@
1/* $NetBSD: defs.h,v 1.10 2018/05/18 12:23:22 joerg Exp $ */ 1/* $NetBSD: defs.h,v 1.11 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35#ifndef _DEFS_H_ 35#ifndef _DEFS_H_
36#define _DEFS_H_ 36#define _DEFS_H_
37 37
38/* defs.h -- definitions for use in the sysinst program. */ 38/* defs.h -- definitions for use in the sysinst program. */
39 39
40/* System includes needed for this. */ 40/* System includes needed for this. */
41#include <sys/queue.h> 41#include <sys/queue.h>
42#include <sys/types.h> 42#include <sys/types.h>
43#include <sys/disklabel.h> 43#include <sys/disklabel.h>
44#include <sys/disk.h> 44#include <sys/disk.h>
45 45
46const char *getfslabelname(uint8_t); 46const char *getfslabelname(uint8_t);
47 47
48#include "msg_defs.h" 48#include "msg_defs.h"
49#include "menu_defs.h" 49#include "menu_defs.h"
50 50
51#define min(a,b) ((a) < (b) ? (a) : (b)) 51#define min(a,b) ((a) < (b) ? (a) : (b))
52#define max(a,b) ((a) > (b) ? (a) : (b)) 52#define max(a,b) ((a) > (b) ? (a) : (b))
53 53
54/* constants */ 54/* constants */
55#define MEG (1024 * 1024) 55#define MEG (1024 * 1024)
56#define STRSIZE 255 56#define STRSIZE 255
57#define SSTRSIZE 30 57#define SSTRSIZE 30
58 58
59/* For run.c: collect() */ 59/* For run.c: collect() */
60#define T_FILE 0 60#define T_FILE 0
61#define T_OUTPUT 1 61#define T_OUTPUT 1
62 62
63/* Some install status/response values */ 63/* Some install status/response values */
64#define SET_OK 0 /* Set extracted */ 64#define SET_OK 0 /* Set extracted */
65#define SET_RETRY 1 /* Retry */ 65#define SET_RETRY 1 /* Retry */
66#define SET_SKIP 2 /* Skip this set */ 66#define SET_SKIP 2 /* Skip this set */
67#define SET_SKIP_GROUP 3 /* Skip this set and rest of group */ 67#define SET_SKIP_GROUP 3 /* Skip this set and rest of group */
68#define SET_ABANDON 4 /* Abandon installation */ 68#define SET_ABANDON 4 /* Abandon installation */
69#define SET_CONTINUE 5 /* Continue (copy from floppy loop) */ 69#define SET_CONTINUE 5 /* Continue (copy from floppy loop) */
70 70
71/* run_prog flags */ 71/* run_prog flags */
72#define RUN_DISPLAY 0x0001 /* Display program output */ 72#define RUN_DISPLAY 0x0001 /* Display program output */
73#define RUN_FATAL 0x0002 /* errors are fatal */ 73#define RUN_FATAL 0x0002 /* errors are fatal */
74#define RUN_CHROOT 0x0004 /* chroot to target disk */ 74#define RUN_CHROOT 0x0004 /* chroot to target disk */
75#define RUN_FULLSCREEN 0x0008 /* fullscreen (use with RUN_DISPLAY) */ 75#define RUN_FULLSCREEN 0x0008 /* fullscreen (use with RUN_DISPLAY) */
76#define RUN_SILENT 0x0010 /* Do not show output */ 76#define RUN_SILENT 0x0010 /* Do not show output */
77#define RUN_ERROR_OK 0x0040 /* Don't wait for error confirmation */ 77#define RUN_ERROR_OK 0x0040 /* Don't wait for error confirmation */
78#define RUN_PROGRESS 0x0080 /* Output is just progess test */ 78#define RUN_PROGRESS 0x0080 /* Output is just progess test */
79#define RUN_NO_CLEAR 0x0100 /* Leave program output after error */ 79#define RUN_NO_CLEAR 0x0100 /* Leave program output after error */
80#define RUN_XFER_DIR 0x0200 /* cd to xfer_dir in child */ 80#define RUN_XFER_DIR 0x0200 /* cd to xfer_dir in child */
81 81
82/* for bsddisklabel.c */ 82/* for bsddisklabel.c */
83enum { LY_SETNEW, LY_NEWRAID, LY_NEWCGD, LY_NEWLVM, LY_USEEXIST }; 83enum { LY_SETNEW, LY_NEWRAID, LY_NEWCGD, LY_NEWLVM, LY_USEEXIST };
84 84
85/* Installation sets */ 85/* Installation sets */
86enum { 86enum {
87 SET_NONE, 87 SET_NONE,
88 SET_KERNEL_FIRST, 88 SET_KERNEL_FIRST,
89 SET_KERNEL_1, /* Usually GENERIC */ 89 SET_KERNEL_1, /* Usually GENERIC */
90 SET_KERNEL_2, /* MD kernel... */ 90 SET_KERNEL_2, /* MD kernel... */
91 SET_KERNEL_3, /* MD kernel... */ 91 SET_KERNEL_3, /* MD kernel... */
92 SET_KERNEL_4, /* MD kernel... */ 92 SET_KERNEL_4, /* MD kernel... */
93 SET_KERNEL_5, /* MD kernel... */ 93 SET_KERNEL_5, /* MD kernel... */
94 SET_KERNEL_6, /* MD kernel... */ 94 SET_KERNEL_6, /* MD kernel... */
95 SET_KERNEL_7, /* MD kernel... */ 95 SET_KERNEL_7, /* MD kernel... */
96 SET_KERNEL_8, /* MD kernel... */ 96 SET_KERNEL_8, /* MD kernel... */
97 SET_KERNEL_9, /* MD kernel... */ 97 SET_KERNEL_9, /* MD kernel... */
98 SET_KERNEL_LAST, /* allow 9 kernels */ 98 SET_KERNEL_LAST, /* allow 9 kernels */
99 99
100 /* System sets */ 100 /* System sets */
101 SET_BASE, /* base */ 101 SET_BASE, /* base */
102 SET_ETC, /* /etc */ 102 SET_ETC, /* /etc */
103 SET_COMPILER, /* compiler tools */ 103 SET_COMPILER, /* compiler tools */
104 SET_GAMES, /* text games */ 104 SET_GAMES, /* text games */
105 SET_MAN_PAGES, /* online manual pages */ 105 SET_MAN_PAGES, /* online manual pages */
106 SET_MISC, /* miscellaneuous */ 106 SET_MISC, /* miscellaneuous */
107 SET_MODULES, /* kernel modules */ 107 SET_MODULES, /* kernel modules */
108 SET_TESTS, /* tests */ 108 SET_TESTS, /* tests */
109 SET_TEXT_TOOLS, /* text processing tools */ 109 SET_TEXT_TOOLS, /* text processing tools */
110 110
111 /* X11 sets */ 111 /* X11 sets */
112 SET_X11_FIRST, 112 SET_X11_FIRST,
113 SET_X11_BASE, /* X11 base and clients */ 113 SET_X11_BASE, /* X11 base and clients */
114 SET_X11_FONTS, /* X11 fonts */ 114 SET_X11_FONTS, /* X11 fonts */
115 SET_X11_SERVERS, /* X11 servers */ 115 SET_X11_SERVERS, /* X11 servers */
116 SET_X11_PROG, /* X11 programming */ 116 SET_X11_PROG, /* X11 programming */
117 SET_X11_ETC, /* X11 config */ 117 SET_X11_ETC, /* X11 config */
118 SET_X11_LAST, 118 SET_X11_LAST,
119 119
120 /* Machine dependent sets */ 120 /* Machine dependent sets */
121 SET_MD_1, /* Machine dependent set */ 121 SET_MD_1, /* Machine dependent set */
122 SET_MD_2, /* Machine dependent set */ 122 SET_MD_2, /* Machine dependent set */
123 SET_MD_3, /* Machine dependent set */ 123 SET_MD_3, /* Machine dependent set */
124 SET_MD_4, /* Machine dependent set */ 124 SET_MD_4, /* Machine dependent set */
125  125
126 /* Source sets */ 126 /* Source sets */
127 SET_SYSSRC, 127 SET_SYSSRC,
128 SET_SRC, 128 SET_SRC,
129 SET_SHARESRC, 129 SET_SHARESRC,
130 SET_GNUSRC, 130 SET_GNUSRC,
131 SET_XSRC, 131 SET_XSRC,
132 132
133 /* Debug sets */ 133 /* Debug sets */
134 SET_DEBUG, 134 SET_DEBUG,
135 SET_X11_DEBUG, 135 SET_X11_DEBUG,
136 136
137 SET_LAST, 137 SET_LAST,
138 SET_GROUP, /* Start of submenu */ 138 SET_GROUP, /* Start of submenu */
139 SET_GROUP_END, /* End of submenu */ 139 SET_GROUP_END, /* End of submenu */
140 SET_PKGSRC, /* pkgsrc, not counted as regular set */ 140 SET_PKGSRC, /* pkgsrc, not counted as regular set */
141}; 141};
142 142
143/* Initialisers to select sets */ 143/* Initialisers to select sets */
144/* All kernels */ 144/* All kernels */
145#define SET_KERNEL SET_KERNEL_1, SET_KERNEL_2, SET_KERNEL_3, SET_KERNEL_4, \ 145#define SET_KERNEL SET_KERNEL_1, SET_KERNEL_2, SET_KERNEL_3, SET_KERNEL_4, \
146 SET_KERNEL_5, SET_KERNEL_6, SET_KERNEL_7, SET_KERNEL_8 146 SET_KERNEL_5, SET_KERNEL_6, SET_KERNEL_7, SET_KERNEL_8
147/* Core system sets */ 147/* Core system sets */
148#define SET_CORE SET_MODULES, SET_BASE, SET_ETC 148#define SET_CORE SET_MODULES, SET_BASE, SET_ETC
149/* All system sets */ 149/* All system sets */
150#define SET_SYSTEM SET_CORE, SET_COMPILER, SET_GAMES, \ 150#define SET_SYSTEM SET_CORE, SET_COMPILER, SET_GAMES, \
151 SET_MAN_PAGES, SET_MISC, SET_TESTS, SET_TEXT_TOOLS 151 SET_MAN_PAGES, SET_MISC, SET_TESTS, SET_TEXT_TOOLS
152/* All X11 sets */ 152/* All X11 sets */
153#define SET_X11_NOSERVERS SET_X11_BASE, SET_X11_FONTS, SET_X11_PROG, SET_X11_ETC 153#define SET_X11_NOSERVERS SET_X11_BASE, SET_X11_FONTS, SET_X11_PROG, SET_X11_ETC
154#define SET_X11 SET_X11_NOSERVERS, SET_X11_SERVERS 154#define SET_X11 SET_X11_NOSERVERS, SET_X11_SERVERS
155 155
156/* All machine dependent sets */ 156/* All machine dependent sets */
157#define SET_MD SET_MD_1, SET_MD_2, SET_MD_3, SET_MD_4 157#define SET_MD SET_MD_1, SET_MD_2, SET_MD_3, SET_MD_4
158 158
159/* All source sets */ 159/* All source sets */
160#define SET_SOURCE SET_SYSSRC, SET_SRC, SET_SHARESRC, SET_GNUSRC, SET_XSRC 160#define SET_SOURCE SET_SYSSRC, SET_SRC, SET_SHARESRC, SET_GNUSRC, SET_XSRC
161 161
162/* All debug sets */ 162/* All debug sets */
163#define SET_DEBUGGING SET_DEBUG, SET_X11_DEBUG 163#define SET_DEBUGGING SET_DEBUG, SET_X11_DEBUG
164 164
165/* Set list flags */ 165/* Set list flags */
166#define SFLAG_MINIMAL 1 166#define SFLAG_MINIMAL 1
167#define SFLAG_NOX 2 167#define SFLAG_NOX 2
168 168
169/* Macros */ 169/* Macros */
170#define nelem(x) (sizeof (x) / sizeof *(x)) 170#define nelem(x) (sizeof (x) / sizeof *(x))
171 171
172/* Round up to the next full cylinder size */ 172/* Round up to the next full cylinder size */
173#define NUMSEC(size, sizemult, cylsize) \ 173#define NUMSEC(size, sizemult, cylsize) \
174 ((size) == ~0u ? ~0u : (sizemult) == 1 ? (size) : \ 174 ((size) == ~0u ? ~0u : (sizemult) == 1 ? (size) : \
175 roundup((size) * (sizemult), (cylsize))) 175 roundup((size) * (sizemult), (cylsize)))
176 176
177/* What FS type? */ 177/* What FS type? */
178#define PI_ISBSDFS(p) ((p)->pi_fstype == FS_BSDLFS || \ 178#define PI_ISBSDFS(p) ((p)->pi_fstype == FS_BSDLFS || \
179 (p)->pi_fstype == FS_BSDFFS) 179 (p)->pi_fstype == FS_BSDFFS)
180 180
181/* standard cd0 device */ 181/* standard cd0 device */
182#define CD_NAMES "cd0a" 182#define CD_NAMES "cd0a"
183 183
184/* Types */ 184/* Types */
185 185
186/* pass a void* argument into a menu and also provide a int return value */ 186/* pass a void* argument into a menu and also provide a int return value */
187typedef struct arg_rv { 187typedef struct arg_rv {
188 void *arg; 188 void *arg;
189 int rv; 189 int rv;
190} arg_rv; 190} arg_rv;
191 191
192typedef struct distinfo { 192typedef struct distinfo {
193 const char *name; 193 const char *name;
194 uint set; 194 uint set;
195 const char *desc; 195 const char *desc;
196 const char *marker_file; /* set assumed installed if exists */ 196 const char *marker_file; /* set assumed installed if exists */
197} distinfo; 197} distinfo;
198 198
199#define MOUNTLEN 20 199#define MOUNTLEN 20
200typedef struct _partinfo { 200typedef struct _partinfo {
201 struct partition pi_partition; 201 struct partition pi_partition;
202#define pi_size pi_partition.p_size 202#define pi_size pi_partition.p_size
203#define pi_offset pi_partition.p_offset 203#define pi_offset pi_partition.p_offset
204#define pi_fsize pi_partition.p_fsize 204#define pi_fsize pi_partition.p_fsize
205#define pi_fstype pi_partition.p_fstype 205#define pi_fstype pi_partition.p_fstype
206#define pi_frag pi_partition.p_frag 206#define pi_frag pi_partition.p_frag
207#define pi_cpg pi_partition.p_cpg 207#define pi_cpg pi_partition.p_cpg
208 char pi_mount[MOUNTLEN]; 208 char pi_mount[MOUNTLEN];
209 uint pi_isize; /* bytes per inode (for # inodes) */ 209 uint pi_isize; /* bytes per inode (for # inodes) */
210 uint pi_flags; 210 uint pi_flags;
211#define PIF_NEWFS 0x0001 /* need to 'newfs' partition */ 211#define PIF_NEWFS 0x0001 /* need to 'newfs' partition */
212#define PIF_FFSv2 0x0002 /* newfs with FFSv2, not FFSv1 */ 212#define PIF_FFSv2 0x0002 /* newfs with FFSv2, not FFSv1 */
213#define PIF_MOUNT 0x0004 /* need to mount partition */ 213#define PIF_MOUNT 0x0004 /* need to mount partition */
214#define PIF_ASYNC 0x0010 /* mount -o async */ 214#define PIF_ASYNC 0x0010 /* mount -o async */
215#define PIF_NOATIME 0x0020 /* mount -o noatime */ 215#define PIF_NOATIME 0x0020 /* mount -o noatime */
216#define PIF_NODEV 0x0040 /* mount -o nodev */ 216#define PIF_NODEV 0x0040 /* mount -o nodev */
217#define PIF_NODEVMTIME 0x0080 /* mount -o nodevmtime */ 217#define PIF_NODEVMTIME 0x0080 /* mount -o nodevmtime */
218#define PIF_NOEXEC 0x0100 /* mount -o noexec */ 218#define PIF_NOEXEC 0x0100 /* mount -o noexec */
219#define PIF_NOSUID 0x0200 /* mount -o nosuid */ 219#define PIF_NOSUID 0x0200 /* mount -o nosuid */
220#define PIF__UNUSED 0x0400 /* unused */ 220#define PIF__UNUSED 0x0400 /* unused */
221#define PIF_LOG 0x0800 /* mount -o log */ 221#define PIF_LOG 0x0800 /* mount -o log */
222#define PIF_MOUNT_OPTS 0x0ff0 /* all above mount flags */ 222#define PIF_MOUNT_OPTS 0x0ff0 /* all above mount flags */
223#define PIF_RESET 0x1000 /* internal - restore previous values */ 223#define PIF_RESET 0x1000 /* internal - restore previous values */
224 const char *mnt_opts; 224 const char *mnt_opts;
225 const char *fsname; 225 const char *fsname;
226 char mounted[MOUNTLEN]; 226 char mounted[MOUNTLEN];
227 int lvmpv; /* should we use partition as LVM PV? */ 227 int lvmpv; /* should we use partition as LVM PV? */
228} partinfo; /* Single partition from a disklabel */ 228} partinfo; /* Single partition from a disklabel */
229 229
230struct ptn_info { 230struct ptn_info {
231 int menu_no; 231 int menu_no;
232 struct ptn_size { 232 struct ptn_size {
233 int ptn_id; 233 int ptn_id;
234 char mount[MOUNTLEN]; 234 char mount[MOUNTLEN];
235 daddr_t dflt_size; 235 daddr_t dflt_size;
236 daddr_t size; 236 daddr_t size;
237 int limit; 237 int limit;
238 int changed; 238 int changed;
239 } ptn_sizes[MAXPARTITIONS + 1]; /* +1 for delete code */ 239 } ptn_sizes[MAXPARTITIONS + 1]; /* +1 for delete code */
240 menu_ent ptn_menus[MAXPARTITIONS + 1]; /* +1 for unit chg */ 240 menu_ent ptn_menus[MAXPARTITIONS + 1]; /* +1 for unit chg */
241 int free_parts; 241 int free_parts;
242 daddr_t free_space; 242 daddr_t free_space;
243 struct ptn_size *pool_part; 243 struct ptn_size *pool_part;
244 char exit_msg[70]; 244 char exit_msg[70];
245}; 245};
246 246
247/* variables */ 247/* variables */
248 248
249int debug; /* set by -D option */ 249int debug; /* set by -D option */
250 250
251char rel[SSTRSIZE]; 251char rel[SSTRSIZE];
252char machine[SSTRSIZE]; 252char machine[SSTRSIZE];
253 253
254int ignorerror; 254int ignorerror;
255int ttysig_ignore; 255int ttysig_ignore;
256pid_t ttysig_forward; 256pid_t ttysig_forward;
257int layoutkind; 257int layoutkind;
258int sizemult; 258int sizemult;
259const char *multname; 259const char *multname;
260int partman_go; /* run extended partition manager */ 260int partman_go; /* run extended partition manager */
261 261
262/* logging variables */ 262/* logging variables */
263 263
264FILE *logfp; 264FILE *logfp;
265FILE *script; 265FILE *script;
266 266
267/* Information for the NetBSD disklabel */ 267/* Information for the NetBSD disklabel */
268 268
269enum DLTR { PART_A, PART_B, PART_C, PART_D, PART_E, PART_F, PART_G, PART_H, 269enum DLTR { PART_A, PART_B, PART_C, PART_D, PART_E, PART_F, PART_G, PART_H,
270 PART_I, PART_J, PART_K, PART_L, PART_M, PART_N, PART_O, PART_P}; 270 PART_I, PART_J, PART_K, PART_L, PART_M, PART_N, PART_O, PART_P};
271#define partition_name(x) ('a' + (x)) 271#define partition_name(x) ('a' + (x))
272daddr_t tmp_ramdisk_size; 272daddr_t tmp_ramdisk_size;
273#define MAX_DISKS 15 273#define MAX_DISKS 15
274 274
275unsigned int root_limit; /* BIOS (etc) read limit */ 275unsigned int root_limit; /* BIOS (etc) read limit */
276 276
277enum SHRED_T { SHRED_NONE=0, SHRED_ZEROS, SHRED_RANDOM, SHRED_CRYPTO }; 277enum SHRED_T { SHRED_NONE=0, SHRED_ZEROS, SHRED_RANDOM, SHRED_CRYPTO };
278 278
279/* All information that is unique for each drive */ 279/* All information that is unique for each drive */
280SLIST_HEAD(pm_head_t, pm_devs_t) pm_head; 280SLIST_HEAD(pm_head_t, pm_devs_t) pm_head;
281 281
282typedef struct pm_devs_t { 282typedef struct pm_devs_t {
283 int unsaved; /* Flag indicating to partman that device need saving */ 283 int unsaved; /* Flag indicating to partman that device need saving */
284 int found; /* Flag to delete unplugged and unconfigured devices */ 284 int found; /* Flag to delete unplugged and unconfigured devices */
285 int blocked; /* Device is busy and cannot be changed */ 285 int blocked; /* Device is busy and cannot be changed */
286 void *refdev; /* If device is blocked thats is a pointers to a parent dev */ 286 void *refdev; /* If device is blocked thats is a pointers to a parent dev */
287 int isspecial; /* LVM LV or DK device that doesnot accept disklabel */ 287 int isspecial; /* LVM LV or DK device that doesnot accept disklabel */
288 char diskdev[SSTRSIZE]; /* Actual name of the disk. */ 288 char diskdev[SSTRSIZE]; /* Actual name of the disk. */
289 char diskdev_descr[STRSIZE]; 289 char diskdev_descr[STRSIZE];
290 int bootable; 290 int bootable;
291#define DISKNAME_SIZE 16 291#define DISKNAME_SIZE 16
292 char bsddiskname[DISKNAME_SIZE]; 292 char bsddiskname[DISKNAME_SIZE];
293 partinfo oldlabel[MAXPARTITIONS]; /* What we found on the disk */ 293 partinfo oldlabel[MAXPARTITIONS]; /* What we found on the disk */
294 partinfo bsdlabel[MAXPARTITIONS]; /* What we want it to look like */ 294 partinfo bsdlabel[MAXPARTITIONS]; /* What we want it to look like */
295 int gpt; 295 int gpt;
296 int no_mbr; /* set for raid (etc) */ 296 int no_mbr; /* set for raid (etc) */
 297 int no_part; /* can not be partitioned, e.g. dk0 */
297 int rootpart; /* partition we install into */ 298 int rootpart; /* partition we install into */
298 const char *disktype; /* ST506, SCSI, ... */ 299 const char *disktype; /* ST506, SCSI, ... */
299 const char *doessf; 300 const char *doessf;
300 /* Actual values for current disk - set by find_disks() or md_get_info() */ 301 /* Actual values for current disk - set by find_disks() or md_get_info() */
301 int sectorsize, dlcyl, dlhead, dlsec, dlcylsize, current_cylsize; 302 int sectorsize, dlcyl, dlhead, dlsec, dlcylsize, current_cylsize;
302 daddr_t dlsize; 303 daddr_t dlsize;
303 /* Area of disk we can allocate, start and size in disk sectors. */ 304 /* Area of disk we can allocate, start and size in disk sectors. */
304 daddr_t ptstart, ptsize; 305 daddr_t ptstart, ptsize;
305 /* If we have an MBR boot partition, start and size in sectors */ 306 /* If we have an MBR boot partition, start and size in sectors */
306 int bootstart, bootsize; 307 int bootstart, bootsize;
307 struct ptn_info pi; 308 struct ptn_info pi;
308 SLIST_ENTRY(pm_devs_t) l; 309 SLIST_ENTRY(pm_devs_t) l;
309} pm_devs_t; 310} pm_devs_t;
310pm_devs_t *pm; /* Pointer to currend device with which we work */ 311pm_devs_t *pm; /* Pointer to currend device with which we work */
311pm_devs_t *pm_new; /* Pointer for next allocating device in find_disks() */ 312pm_devs_t *pm_new; /* Pointer for next allocating device in find_disks() */
312 313
313#define MAX_WEDGES 16 /* num of dk* devices */ 314#define MAX_WEDGES 16 /* num of dk* devices */
314typedef struct pm_wedge_t { 315typedef struct pm_wedge_t {
315 int allocated; 316 int allocated;
316 int todel; 317 int todel;
317 pm_devs_t *pm; 318 pm_devs_t *pm;
318 int ptn; 319 int ptn;
319} pm_wedge_t; 320} pm_wedge_t;
320pm_wedge_t wedges[MAX_WEDGES]; 321pm_wedge_t wedges[MAX_WEDGES];
321 322
322/* Generic structure for partman */ 323/* Generic structure for partman */
323typedef struct { 324typedef struct {
324 int retvalue; 325 int retvalue;
325 int dev_num; 326 int dev_num;
326 int wedge_num; 327 int wedge_num;
327 void *dev_ptr; 328 void *dev_ptr;
328 int dev_ptr_delta; 329 int dev_ptr_delta;
329 char fullname[SSTRSIZE]; 330 char fullname[SSTRSIZE];
330 enum {PM_DISK_T=1, PM_PART_T, PM_WEDGE_T, PM_SPEC_T, PM_RAID_T, PM_CGD_T, 331 enum {PM_DISK_T=1, PM_PART_T, PM_WEDGE_T, PM_SPEC_T, PM_RAID_T, PM_CGD_T,
331 PM_VND_T, PM_LVM_T, PM_LVMLV_T} type; 332 PM_VND_T, PM_LVM_T, PM_LVMLV_T} type;
332} part_entry_t; 333} part_entry_t;
333 334
334/* Relative file name for storing a distribution. */ 335/* Relative file name for storing a distribution. */
335char xfer_dir[STRSIZE]; 336char xfer_dir[STRSIZE];
336int clean_xfer_dir; 337int clean_xfer_dir;
337 338
338#if !defined(SYSINST_FTP_HOST) 339#if !defined(SYSINST_FTP_HOST)
339#define SYSINST_FTP_HOST "ftp.NetBSD.org" 340#define SYSINST_FTP_HOST "ftp.NetBSD.org"
340#endif 341#endif
341 342
342#if !defined(SYSINST_FTP_DIR) 343#if !defined(SYSINST_FTP_DIR)
343#define SYSINST_FTP_DIR "pub/NetBSD/NetBSD-" REL 344#define SYSINST_FTP_DIR "pub/NetBSD/NetBSD-" REL
344#endif 345#endif
345 346
346#if !defined(SYSINST_PKG_HOST) 347#if !defined(SYSINST_PKG_HOST)
347#define SYSINST_PKG_HOST SYSINST_FTP_HOST 348#define SYSINST_PKG_HOST SYSINST_FTP_HOST
348#endif 349#endif
349 350
350#if !defined(SYSINST_PKG_DIR) 351#if !defined(SYSINST_PKG_DIR)
351#define SYSINST_PKG_DIR "pub/pkgsrc/packages/NetBSD" 352#define SYSINST_PKG_DIR "pub/pkgsrc/packages/NetBSD"
352#endif 353#endif
353 354
354#if !defined(SYSINST_PKGSRC_HOST) 355#if !defined(SYSINST_PKGSRC_HOST)
355#define SYSINST_PKGSRC_HOST SYSINST_PKG_HOST 356#define SYSINST_PKGSRC_HOST SYSINST_PKG_HOST
356#endif 357#endif
357 358
358/* Abs. path we extract binary sets from */ 359/* Abs. path we extract binary sets from */
359char ext_dir_bin[STRSIZE]; 360char ext_dir_bin[STRSIZE];
360 361
361/* Abs. path we extract source sets from */ 362/* Abs. path we extract source sets from */
362char ext_dir_src[STRSIZE]; 363char ext_dir_src[STRSIZE];
363 364
364/* Abs. path we extract pkgsrc from */ 365/* Abs. path we extract pkgsrc from */
365char ext_dir_pkgsrc[STRSIZE]; 366char ext_dir_pkgsrc[STRSIZE];
366 367
367/* Place we look for binary sets in all fs types */ 368/* Place we look for binary sets in all fs types */
368char set_dir_bin[STRSIZE]; 369char set_dir_bin[STRSIZE];
369 370
370/* Place we look for source sets in all fs types */ 371/* Place we look for source sets in all fs types */
371char set_dir_src[STRSIZE]; 372char set_dir_src[STRSIZE];
372 373
373/* Place we look for pkgs in all fs types */ 374/* Place we look for pkgs in all fs types */
374char pkg_dir[STRSIZE]; 375char pkg_dir[STRSIZE];
375 376
376/* Place we look for pkgsrc in all fs types */ 377/* Place we look for pkgsrc in all fs types */
377char pkgsrc_dir[STRSIZE]; 378char pkgsrc_dir[STRSIZE];
378 379
379/* User shell */ 380/* User shell */
380const char *ushell; 381const char *ushell;
381 382
382struct ftpinfo { 383struct ftpinfo {
383 char host[STRSIZE]; 384 char host[STRSIZE];
384 char dir[STRSIZE] ; 385 char dir[STRSIZE] ;
385 char user[SSTRSIZE]; 386 char user[SSTRSIZE];
386 char pass[STRSIZE]; 387 char pass[STRSIZE];
387 char proxy[STRSIZE]; 388 char proxy[STRSIZE];
388 const char *xfer_type; /* "ftp" or "http" */ 389 const char *xfer_type; /* "ftp" or "http" */
389}; 390};
390 391
391/* use the same struct for sets ftp and to build pkgpath */ 392/* use the same struct for sets ftp and to build pkgpath */
392struct ftpinfo ftp, pkg, pkgsrc; 393struct ftpinfo ftp, pkg, pkgsrc;
393 394
394int (*fetch_fn)(const char *); 395int (*fetch_fn)(const char *);
395char nfs_host[STRSIZE]; 396char nfs_host[STRSIZE];
396char nfs_dir[STRSIZE]; 397char nfs_dir[STRSIZE];
397 398
398char cdrom_dev[SSTRSIZE]; /* Typically "cd0a" */ 399char cdrom_dev[SSTRSIZE]; /* Typically "cd0a" */
399char fd_dev[SSTRSIZE]; /* Typically "/dev/fd0a" */ 400char fd_dev[SSTRSIZE]; /* Typically "/dev/fd0a" */
400const char *fd_type; /* "msdos", "ffs" or maybe "ados" */ 401const char *fd_type; /* "msdos", "ffs" or maybe "ados" */
401 402
402char localfs_dev[SSTRSIZE]; 403char localfs_dev[SSTRSIZE];
403char localfs_fs[SSTRSIZE]; 404char localfs_fs[SSTRSIZE];
404char localfs_dir[STRSIZE]; 405char localfs_dir[STRSIZE];
405 406
406char targetroot_mnt[SSTRSIZE]; 407char targetroot_mnt[SSTRSIZE];
407 408
408int mnt2_mounted; 409int mnt2_mounted;
409 410
410char dist_postfix[SSTRSIZE]; 411char dist_postfix[SSTRSIZE];
411 412
412/* needed prototypes */ 413/* needed prototypes */
413void set_menu_numopts(int, int); 414void set_menu_numopts(int, int);
414void remove_color_options(void); 415void remove_color_options(void);
415void remove_raid_options(void); 416void remove_raid_options(void);
416void remove_lvm_options(void); 417void remove_lvm_options(void);
417void remove_cgd_options(void); 418void remove_cgd_options(void);
418void remove_gpt_options(void); 419void remove_gpt_options(void);
419 420
420/* Machine dependent functions .... */ 421/* Machine dependent functions .... */
421void md_init(void); 422void md_init(void);
422void md_prelim_menu(void); 423void md_prelim_menu(void);
423void md_init_set_status(int); /* SFLAG_foo */ 424void md_init_set_status(int); /* SFLAG_foo */
424 425
425 /* MD functions if user selects install - in order called */ 426 /* MD functions if user selects install - in order called */
426int md_get_info(void); 427int md_get_info(void);
427int md_make_bsd_partitions(void); 428int md_make_bsd_partitions(void);
428int md_check_partitions(void); 429int md_check_partitions(void);
429int md_pre_disklabel(void); 430int md_pre_disklabel(void);
430int md_post_disklabel(void); 431int md_post_disklabel(void);
431int md_pre_mount(void); 432int md_pre_mount(void);
432int md_post_newfs(void); 433int md_post_newfs(void);
433int md_post_extract(void); 434int md_post_extract(void);
434void md_cleanup_install(void); 435void md_cleanup_install(void);
435 436
436 /* MD functions if user selects upgrade - in order called */ 437 /* MD functions if user selects upgrade - in order called */
437int md_pre_update(void); 438int md_pre_update(void);
438int md_update(void); 439int md_update(void);
439/* Also calls md_post_extract() */ 440/* Also calls md_post_extract() */
440 441
441/* from main.c */ 442/* from main.c */
442void toplevel(void); 443void toplevel(void);
443 444
444/* from disks.c */ 445/* from disks.c */
445const char *get_default_cdrom(void); 446const char *get_default_cdrom(void);
446int find_disks(const char *); 447int find_disks(const char *);
447struct menudesc; 448struct menudesc;
448void fmt_fspart(struct menudesc *, int, void *); 449void fmt_fspart(struct menudesc *, int, void *);
449void disp_cur_fspart(int, int); 450void disp_cur_fspart(int, int);
450int write_disklabel(void); 451int write_disklabel(void);
451int make_filesystems(void); 452int make_filesystems(void);
452int make_fstab(void); 453int make_fstab(void);
453int mount_disks(void); 454int mount_disks(void);
454int set_swap_if_low_ram(const char *, partinfo *); 455int set_swap_if_low_ram(const char *, partinfo *);
455int set_swap(const char *, partinfo *); 456int set_swap(const char *, partinfo *);
456int check_swap(const char *, int); 457int check_swap(const char *, int);
457char *bootxx_name(void); 458char *bootxx_name(void);
458void label_read(void); 459void label_read(void);
459int get_dkwedges(struct dkwedge_info **, const char *); 460int get_dkwedges(struct dkwedge_info **, const char *);
460const char *get_gptfs_by_id(int); 461const char *get_gptfs_by_id(int);
461 462
462 463
463/* from disks_lfs.c */ 464/* from disks_lfs.c */
464int fs_is_lfs(void *); 465int fs_is_lfs(void *);
465 466
466/* from label.c */ 467/* from label.c */
467const char *get_last_mounted(int, int, partinfo *); 468const char *get_last_mounted(int, int, partinfo *);
468int savenewlabel(partinfo *, int); 469int savenewlabel(partinfo *, int);
469int incorelabel(const char *, partinfo *); 470int incorelabel(const char *, partinfo *);
470int edit_and_check_label(partinfo *, int, int, int); 471int edit_and_check_label(partinfo *, int, int, int);
471void set_bsize(partinfo *, int); 472void set_bsize(partinfo *, int);
472void set_fsize(partinfo *, int); 473void set_fsize(partinfo *, int);
473void set_ptype(partinfo *, int, int); 474void set_ptype(partinfo *, int, int);
474int edit_ptn(menudesc *, void *); 475int edit_ptn(menudesc *, void *);
475int checkoverlap(partinfo *, int, int, int); 476int checkoverlap(partinfo *, int, int, int);
476 477
477/* from install.c */ 478/* from install.c */
478void do_install(void); 479void do_install(void);
479 480
480/* from factor.c */ 481/* from factor.c */
481void factor(long, long *, int, int *); 482void factor(long, long *, int, int *);
482 483
483/* from fdisk.c */ 484/* from fdisk.c */
484void get_disk_info(char *); 485void get_disk_info(char *);
485void set_disk_info(char *); 486void set_disk_info(char *);
486 487
487/* from geom.c */ 488/* from geom.c */
488int get_geom(const char *, struct disklabel *); 489int get_geom(const char *, struct disklabel *);
489int get_real_geom(const char *, struct disklabel *); 490int get_real_geom(const char *, struct disklabel *);
490 491
491/* from net.c */ 492/* from net.c */
492extern int network_up; 493extern int network_up;
493extern char net_namesvr[STRSIZE]; 494extern char net_namesvr[STRSIZE];
494int get_via_ftp(const char *); 495int get_via_ftp(const char *);
495int get_via_nfs(void); 496int get_via_nfs(void);
496int config_network(void); 497int config_network(void);
497void mnt_net_config(void); 498void mnt_net_config(void);
498void make_url(char *, struct ftpinfo *, const char *); 499void make_url(char *, struct ftpinfo *, const char *);
499int get_pkgsrc(void); 500int get_pkgsrc(void);
500 501
501/* From run.c */ 502/* From run.c */
502int collect(int, char **, const char *, ...) __printflike(3, 4); 503int collect(int, char **, const char *, ...) __printflike(3, 4);
503int run_program(int, const char *, ...) __printflike(2, 3); 504int run_program(int, const char *, ...) __printflike(2, 3);
504void do_logging(void); 505void do_logging(void);
505int do_system(const char *); 506int do_system(const char *);
506 507
507/* from upgrade.c */ 508/* from upgrade.c */
508void do_upgrade(void); 509void do_upgrade(void);
509void do_reinstall_sets(void); 510void do_reinstall_sets(void);
510void restore_etc(void); 511void restore_etc(void);
511 512
512/* from util.c */ 513/* from util.c */
513int ask_yesno(const char *); 514int ask_yesno(const char *);
514int ask_noyes(const char *); 515int ask_noyes(const char *);
515int dir_exists_p(const char *); 516int dir_exists_p(const char *);
516int file_exists_p(const char *); 517int file_exists_p(const char *);
517int file_mode_match(const char *, unsigned int); 518int file_mode_match(const char *, unsigned int);
518uint get_ramsize(void); 519uint get_ramsize(void);
519void ask_sizemult(int); 520void ask_sizemult(int);
520void run_makedev(void); 521void run_makedev(void);
521int boot_media_still_needed(void); 522int boot_media_still_needed(void);
522int get_via_floppy(void); 523int get_via_floppy(void);
523int get_via_cdrom(void); 524int get_via_cdrom(void);
524int get_via_localfs(void); 525int get_via_localfs(void);
525int get_via_localdir(void); 526int get_via_localdir(void);
526void show_cur_distsets(void); 527void show_cur_distsets(void);
527void make_ramdisk_dir(const char *); 528void make_ramdisk_dir(const char *);
528void set_kernel_set(unsigned int); 529void set_kernel_set(unsigned int);
529unsigned int get_kernel_set(void); 530unsigned int get_kernel_set(void);
530unsigned int set_X11_selected(void); 531unsigned int set_X11_selected(void);
531int get_and_unpack_sets(int, msg, msg, msg); 532int get_and_unpack_sets(int, msg, msg, msg);
532int sanity_check(void); 533int sanity_check(void);
533int set_timezone(void); 534int set_timezone(void);
534void scripting_fprintf(FILE *, const char *, ...) __printflike(2, 3); 535void scripting_fprintf(FILE *, const char *, ...) __printflike(2, 3);
535void scripting_vfprintf(FILE *, const char *, va_list) __printflike(2, 0); 536void scripting_vfprintf(FILE *, const char *, va_list) __printflike(2, 0);
536void add_rc_conf(const char *, ...); 537void add_rc_conf(const char *, ...);
537int del_rc_conf(const char *); 538int del_rc_conf(const char *);
538void add_sysctl_conf(const char *, ...) __printflike(1, 2); 539void add_sysctl_conf(const char *, ...) __printflike(1, 2);
539void enable_rc_conf(void); 540void enable_rc_conf(void);
540void set_sizemultname_cyl(void); 541void set_sizemultname_cyl(void);
541void set_sizemultname_meg(void); 542void set_sizemultname_meg(void);
542int binary_available(const char *); 543int binary_available(const char *);
543int check_lfs_progs(void); 544int check_lfs_progs(void);
544void init_set_status(int); 545void init_set_status(int);
545void customise_sets(void); 546void customise_sets(void);
546void umount_mnt2(void); 547void umount_mnt2(void);
547int set_is_source(const char *); 548int set_is_source(const char *);
548const char *set_dir_for_set(const char *); 549const char *set_dir_for_set(const char *);
549const char *ext_dir_for_set(const char *); 550const char *ext_dir_for_set(const char *);
550void replace(const char *, const char *, ...); 551void replace(const char *, const char *, ...);
551void get_tz_default(void); 552void get_tz_default(void);
552int extract_file(distinfo *, int); 553int extract_file(distinfo *, int);
553void do_coloring (unsigned int, unsigned int); 554void do_coloring (unsigned int, unsigned int);
554int set_menu_select(menudesc *, void *); 555int set_menu_select(menudesc *, void *);
555const char *safectime(time_t *); 556const char *safectime(time_t *);
556 557
557/* from target.c */ 558/* from target.c */
558#if defined(DEBUG) || defined(DEBUG_ROOT) 559#if defined(DEBUG) || defined(DEBUG_ROOT)
559void backtowin(void); 560void backtowin(void);
560#endif 561#endif
561const char *concat_paths(const char *, const char *); 562const char *concat_paths(const char *, const char *);
562const char *target_expand(const char *); 563const char *target_expand(const char *);
563void make_target_dir(const char *); 564void make_target_dir(const char *);
564void append_to_target_file(const char *, const char *); 565void append_to_target_file(const char *, const char *);
565void echo_to_target_file(const char *, const char *); 566void echo_to_target_file(const char *, const char *);
566void sprintf_to_target_file(const char *, const char *, ...) 567void sprintf_to_target_file(const char *, const char *, ...)
567 __printflike(2, 3); 568 __printflike(2, 3);
568void trunc_target_file(const char *); 569void trunc_target_file(const char *);
569const char *target_prefix(void); 570const char *target_prefix(void);
570int target_chdir(const char *); 571int target_chdir(const char *);
571void target_chdir_or_die(const char *); 572void target_chdir_or_die(const char *);
572int target_already_root(void); 573int target_already_root(void);
573FILE *target_fopen(const char *, const char *); 574FILE *target_fopen(const char *, const char *);
574int target_collect_file(int, char **, const char *); 575int target_collect_file(int, char **, const char *);
575int is_active_rootpart(const char *, int); 576int is_active_rootpart(const char *, int);
576int cp_to_target(const char *, const char *); 577int cp_to_target(const char *, const char *);
577void dup_file_into_target(const char *); 578void dup_file_into_target(const char *);
578void mv_within_target_or_die(const char *, const char *); 579void mv_within_target_or_die(const char *, const char *);
579int cp_within_target(const char *, const char *, int); 580int cp_within_target(const char *, const char *, int);
580int target_mount(const char *, const char *, int, const char *); 581int target_mount(const char *, const char *, int, const char *);
581int target_mount_do(const char *, const char *, const char *); 582int target_mount_do(const char *, const char *, const char *);
582int target_test(unsigned int, const char *); 583int target_test(unsigned int, const char *);
583int target_dir_exists_p(const char *); 584int target_dir_exists_p(const char *);
584int target_file_exists_p(const char *); 585int target_file_exists_p(const char *);
585int target_symlink_exists_p(const char *); 586int target_symlink_exists_p(const char *);
586void unwind_mounts(void); 587void unwind_mounts(void);
587int target_mounted(void); 588int target_mounted(void);
588 589
589/* from partman.c */ 590/* from partman.c */
590int partman(void); 591int partman(void);
591int pm_partusage(pm_devs_t *, int, int); 592int pm_partusage(pm_devs_t *, int, int);
592int pm_getrefdev(pm_devs_t *); 593int pm_getrefdev(pm_devs_t *);
593void pm_setfstype(pm_devs_t *, int, int); 594void pm_setfstype(pm_devs_t *, int, int);
594int pm_editpart(int); 595int pm_editpart(int);
595void pm_rename(pm_devs_t *); 596void pm_rename(pm_devs_t *);
596int pm_shred(pm_devs_t *, int, int); 597int pm_shred(pm_devs_t *, int, int);
597void pm_umount(pm_devs_t *, int); 598void pm_umount(pm_devs_t *, int);
598int pm_unconfigure(pm_devs_t *); 599int pm_unconfigure(pm_devs_t *);
599int pm_cgd_edit(void *, part_entry_t *); 600int pm_cgd_edit(void *, part_entry_t *);
600int pm_gpt_convert(pm_devs_t *); 601int pm_gpt_convert(pm_devs_t *);
601void pm_wedges_fill(pm_devs_t *); 602void pm_wedges_fill(pm_devs_t *);
602void pm_make_bsd_partitions(pm_devs_t *); 603void pm_make_bsd_partitions(pm_devs_t *);
603void update_wedges(const char *); 604void update_wedges(const char *);
604 605
605/* flags whether to offer the respective options (depending on helper 606/* flags whether to offer the respective options (depending on helper
606 programs available on install media */ 607 programs available on install media */
607int have_raid, have_vnd, have_cgd, have_lvm, have_gpt, have_dk; 608int have_raid, have_vnd, have_cgd, have_lvm, have_gpt, have_dk;
608/* initialize above variables */ 609/* initialize above variables */
609void check_available_binaries(void); 610void check_available_binaries(void);
610 611
611/* from bsddisklabel.c */ 612/* from bsddisklabel.c */
612int make_bsd_partitions(void); 613int make_bsd_partitions(void);
613int save_ptn(int, daddr_t, daddr_t, int, const char *); 614int save_ptn(int, daddr_t, daddr_t, int, const char *);
614void set_ptn_titles(menudesc *, int, void *); 615void set_ptn_titles(menudesc *, int, void *);
615void set_ptn_menu(struct ptn_info *); 616void set_ptn_menu(struct ptn_info *);
616int set_ptn_size(menudesc *, void *); 617int set_ptn_size(menudesc *, void *);
617void get_ptn_sizes(daddr_t, daddr_t, int); 618void get_ptn_sizes(daddr_t, daddr_t, int);
618int check_partitions(void); 619int check_partitions(void);
619 620
620/* from aout2elf.c */ 621/* from aout2elf.c */
621int move_aout_libs(void); 622int move_aout_libs(void);
622 623
623#ifdef WSKBD 624#ifdef WSKBD
624void get_kb_encoding(void); 625void get_kb_encoding(void);
625void save_kb_encoding(void); 626void save_kb_encoding(void);
626#else 627#else
627#define get_kb_encoding() 628#define get_kb_encoding()
628#define save_kb_encoding() 629#define save_kb_encoding()
629#endif 630#endif
630 631
631/* from configmenu.c */ 632/* from configmenu.c */
632void do_configmenu(void); 633void do_configmenu(void);
633 634
634/* from checkrc.c */ 635/* from checkrc.c */
635int check_rcvar(const char *); 636int check_rcvar(const char *);
636int check_rcdefault(const char *); 637int check_rcdefault(const char *);
637 WINDOW *mainwin; 638 WINDOW *mainwin;
638 639
639#endif /* _DEFS_H_ */ 640#endif /* _DEFS_H_ */

cvs diff -r1.10 -r1.11 src/usr.sbin/sysinst/msg.mi.en (switch to unified diff)

--- src/usr.sbin/sysinst/msg.mi.en 2015/05/17 10:13:24 1.10
+++ src/usr.sbin/sysinst/msg.mi.en 2018/06/03 13:16:30 1.11
@@ -1,1191 +1,1199 @@ @@ -1,1191 +1,1199 @@
1/* $NetBSD: msg.mi.en,v 1.10 2015/05/17 10:13:24 martin Exp $ */ 1/* $NetBSD: msg.mi.en,v 1.11 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* MI Message catalog -- english, machine independent */ 35/* MI Message catalog -- english, machine independent */
36 36
37message usage 37message usage
38{usage: sysinst [-D] [-f definition_file] [-r release] [-C bg:fg] 38{usage: sysinst [-D] [-f definition_file] [-r release] [-C bg:fg]
39} 39}
40 40
41message sysinst_message_language 41message sysinst_message_language
42{Installation messages in English} 42{Installation messages in English}
43 43
44message sysinst_message_locale 44message sysinst_message_locale
45{en_US.ISO8859-1} 45{en_US.ISO8859-1}
46 46
47message Yes {Yes} 47message Yes {Yes}
48message No {No} 48message No {No}
49message All {All} 49message All {All}
50message Some {Some} 50message Some {Some}
51message None {None} 51message None {None}
52message none {none} 52message none {none}
53message OK {OK} 53message OK {OK}
54message ok {ok} 54message ok {ok}
55message On {On} 55message On {On}
56message Off {Off} 56message Off {Off}
57message unchanged {unchanged} 57message unchanged {unchanged}
58message Delete {Delete?} 58message Delete {Delete?}
59 59
60message install 60message install
61{install} 61{install}
62 62
63message reinstall 63message reinstall
64{reinstall sets for} 64{reinstall sets for}
65 65
66message upgrade 66message upgrade
67{upgrade} 67{upgrade}
68 68
69message hello 69message hello
70{NetBSD/@@MACHINE@@ @@VERSION@@ 70{NetBSD/@@MACHINE@@ @@VERSION@@
71 71
72This menu-driven tool is designed to help you install NetBSD to a hard 72This menu-driven tool is designed to help you install NetBSD to a hard
73disk, or upgrade an existing NetBSD system, with a minimum of work.  73disk, or upgrade an existing NetBSD system, with a minimum of work.
74In the following menus type the reference letter (a, b, c, ...) to 74In the following menus type the reference letter (a, b, c, ...) to
75select an item, or type CTRL+N/CTRL+P to select the next/previous item.  75select an item, or type CTRL+N/CTRL+P to select the next/previous item.
76The arrow keys and Page-up/Page-down may also work.  76The arrow keys and Page-up/Page-down may also work.
77Activate the current selection from the menu by typing the enter key. 77Activate the current selection from the menu by typing the enter key.
78} 78}
79 79
80message thanks 80message thanks
81{Thank you for using NetBSD! 81{Thank you for using NetBSD!
82} 82}
83 83
84message installusure 84message installusure
85{You have chosen to install NetBSD on your hard disk. This will change 85{You have chosen to install NetBSD on your hard disk. This will change
86information on your hard disk. You should have made a full backup 86information on your hard disk. You should have made a full backup
87before this procedure! This procedure will do the following things: 87before this procedure! This procedure will do the following things:
88 a) Partition your disk 88 a) Partition your disk
89 b) Create new BSD file systems 89 b) Create new BSD file systems
90 c) Load and install distribution sets 90 c) Load and install distribution sets
91 d) Some initial system configuration 91 d) Some initial system configuration
92 92
93(After you enter the partition information but before your disk is 93(After you enter the partition information but before your disk is
94changed, you will have the opportunity to quit this procedure.) 94changed, you will have the opportunity to quit this procedure.)
95 95
96Shall we continue? 96Shall we continue?
97} 97}
98 98
99message upgradeusure 99message upgradeusure
100{Ok, let's upgrade NetBSD on your hard disk. As always, this will 100{Ok, let's upgrade NetBSD on your hard disk. As always, this will
101change information on your hard disk. You should have made a full backup 101change information on your hard disk. You should have made a full backup
102before this procedure! Do you really want to upgrade NetBSD? 102before this procedure! Do you really want to upgrade NetBSD?
103(This is your last warning before this procedure starts modifying your 103(This is your last warning before this procedure starts modifying your
104disks.) 104disks.)
105} 105}
106 106
107message reinstallusure 107message reinstallusure
108{Ok, let's unpack the NetBSD distribution sets to a bootable hard disk. 108{Ok, let's unpack the NetBSD distribution sets to a bootable hard disk.
109This procedure just fetches and unpacks sets onto a pre-partitioned 109This procedure just fetches and unpacks sets onto a pre-partitioned
110bootable disk. It does not label disks, upgrade bootblocks, or save 110bootable disk. It does not label disks, upgrade bootblocks, or save
111any existing configuration info. (Quit and choose `install' or 111any existing configuration info. (Quit and choose `install' or
112`upgrade' if you want those options.) You should have already done an 112`upgrade' if you want those options.) You should have already done an
113`install' or `upgrade' before starting this procedure! 113`install' or `upgrade' before starting this procedure!
114 114
115Do you really want to reinstall NetBSD distribution sets? 115Do you really want to reinstall NetBSD distribution sets?
116(This is your last warning before this procedure starts modifying your 116(This is your last warning before this procedure starts modifying your
117disks.) 117disks.)
118} 118}
119 119
120message mount_failed 120message mount_failed
121{Mounting %s failed. Continue? 121{Mounting %s failed. Continue?
122} 122}
123 123
124message nodisk 124message nodisk
125{I can not find any hard disks for use by NetBSD. You will be 125{I can not find any hard disks for use by NetBSD. You will be
126returned to the original menu. 126returned to the original menu.
127} 127}
128 128
129message onedisk 129message onedisk
130{I found only one disk, %s.  130{I found only one disk, %s.
131Therefore I assume you want to %s NetBSD on it. 131Therefore I assume you want to %s NetBSD on it.
132} 132}
133 133
134message ask_disk 134message ask_disk
135{On which disk do you want to %s NetBSD? } 135{On which disk do you want to %s NetBSD? }
136 136
137message Available_disks 137message Available_disks
138{Available disks} 138{Available disks}
139 139
140message heads 140message heads
141{heads} 141{heads}
142 142
143message sectors 143message sectors
144{sectors} 144{sectors}
145 145
146message fs_isize 146message fs_isize
147{average file size (bytes)} 147{average file size (bytes)}
148 148
149message mountpoint 149message mountpoint
150{mount point (or 'none')} 150{mount point (or 'none')}
151 151
152message cylname 152message cylname
153{cyl} 153{cyl}
154 154
155message secname 155message secname
156{sec} 156{sec}
157 157
158message megname 158message megname
159{MB} 159{MB}
160 160
161message layout 161message layout
162{NetBSD uses a BSD disklabel to carve up the NetBSD portion of the disk 162{NetBSD uses a BSD disklabel to carve up the NetBSD portion of the disk
163into multiple BSD partitions. You must now set up your BSD disklabel. 163into multiple BSD partitions. You must now set up your BSD disklabel.
164 164
165You can use a simple editor to set the sizes of the NetBSD partitions, 165You can use a simple editor to set the sizes of the NetBSD partitions,
166or keep the existing partition sizes and contents. 166or keep the existing partition sizes and contents.
167 167
168You will then be given the opportunity to change any of the disklabel 168You will then be given the opportunity to change any of the disklabel
169fields. 169fields.
170 170
171The NetBSD part of your disk is %d Megabytes. 171The NetBSD part of your disk is %d Megabytes.
172A full installation requires at least %d Megabytes without X and 172A full installation requires at least %d Megabytes without X and
173at least %d Megabytes if the X sets are included. 173at least %d Megabytes if the X sets are included.
174} 174}
175 175
176message Choose_your_size_specifier 176message Choose_your_size_specifier
177{Choosing megabytes will give partition sizes close to your choice, 177{Choosing megabytes will give partition sizes close to your choice,
178but aligned to cylinder boundaries. Choosing sectors will allow you 178but aligned to cylinder boundaries. Choosing sectors will allow you
179to more accurately specify the sizes. On most disks, there is little 179to more accurately specify the sizes. On most disks, there is little
180to gain from cylinder alignment. On very old disks, it is most efficient 180to gain from cylinder alignment. On very old disks, it is most efficient
181to choose partition sizes that are exact multiples of your actual 181to choose partition sizes that are exact multiples of your actual
182cylinder size. 182cylinder size.
183 183
184Choose your size specifier} 184Choose your size specifier}
185 185
186message ptnsizes 186message ptnsizes
187{You can now change the sizes for the system partitions. The default is 187{You can now change the sizes for the system partitions. The default is
188to allocate all the space to the root file system. However, you may wish 188to allocate all the space to the root file system. However, you may wish
189to have separate /usr (additional system files), /var (log files etc) 189to have separate /usr (additional system files), /var (log files etc)
190or /home (users' home directories) file systems. 190or /home (users' home directories) file systems.
191 191
192Free space will be added to the partition marked with a '+'. 192Free space will be added to the partition marked with a '+'.
193} 193}
194 194
195message ptnheaders 195message ptnheaders
196{ 196{
197 MB Cylinders Sectors Filesystem 197 MB Cylinders Sectors Filesystem
198} 198}
199 199
200message askfsmount 200message askfsmount
201{Mount point?} 201{Mount point?}
202 202
203message askfssize 203message askfssize
204{Size for %s in %s?} 204{Size for %s in %s?}
205 205
206message askunits 206message askunits
207{Change input units (sectors/cylinders/MB)} 207{Change input units (sectors/cylinders/MB)}
208 208
209message NetBSD_partition_cant_change 209message NetBSD_partition_cant_change
210{NetBSD partition} 210{NetBSD partition}
211 211
212message Whole_disk_cant_change 212message Whole_disk_cant_change
213{Whole disk} 213{Whole disk}
214 214
215message Boot_partition_cant_change 215message Boot_partition_cant_change
216{Boot partition} 216{Boot partition}
217 217
218message add_another_ptn 218message add_another_ptn
219{Add a user defined partition} 219{Add a user defined partition}
220 220
221message fssizesok 221message fssizesok
222{Accept partition sizes. Free space %d %s, %d free partitions.} 222{Accept partition sizes. Free space %d %s, %d free partitions.}
223 223
224message fssizesbad 224message fssizesbad
225{Reduce partition sizes by %d %s (%u sectors).} 225{Reduce partition sizes by %d %s (%u sectors).}
226 226
227message startoutsidedisk 227message startoutsidedisk
228{The start value you specified is beyond the end of the disk. 228{The start value you specified is beyond the end of the disk.
229} 229}
230 230
231message endoutsidedisk 231message endoutsidedisk
232{With this value, the partition end is beyond the end of the disk. 232{With this value, the partition end is beyond the end of the disk.
233Your partition size has been truncated to %d %s. 233Your partition size has been truncated to %d %s.
234 234
235Type enter to continue 235Type enter to continue
236} 236}
237 237
238message toobigdisklabel 238message toobigdisklabel
239{ 239{
240This disk is too large for a disklabel partition table to be used 240This disk is too large for a disklabel partition table to be used
241and hence cannot be used as a bootable disk or to hold the root 241and hence cannot be used as a bootable disk or to hold the root
242partition. 242partition.
243} 243}
244 244
245message fspart 245message fspart
246{We now have your BSD disklabel partitions as:  246{We now have your BSD disklabel partitions as:
247This is your last chance to change them. 247This is your last chance to change them.
248 248
249} 249}
250 250
251message fspart_header 251message fspart_header
252{ Start %3s End %3s Size %3s FS type Newfs Mount Mount point 252{ Start %3s End %3s Size %3s FS type Newfs Mount Mount point
253 --------- --------- --------- ---------- ----- ----- ----------- 253 --------- --------- --------- ---------- ----- ----- -----------
254} 254}
255 255
256message fspart_row 256message fspart_row
257{%9lu %9lu %9lu %-10s %-5s %-5s %s} 257{%9lu %9lu %9lu %-10s %-5s %-5s %s}
258 258
259message show_all_unused_partitions 259message show_all_unused_partitions
260{Show all unused partitions} 260{Show all unused partitions}
261 261
262message partition_sizes_ok 262message partition_sizes_ok
263{Partition sizes ok} 263{Partition sizes ok}
264 264
265message edfspart 265message edfspart
266{The current values for partition `%c' are,  266{The current values for partition `%c' are,
267Select the field you wish to change: 267Select the field you wish to change:
268 268
269 MB cylinders sectors 269 MB cylinders sectors
270 ------- --------- --------- 270 ------- --------- ---------
271} 271}
272 272
273message fstype_fmt 273message fstype_fmt
274{ FStype: %9s} 274{ FStype: %9s}
275 275
276message start_fmt 276message start_fmt
277{ start: %9u %8u%c %9u} 277{ start: %9u %8u%c %9u}
278 278
279message size_fmt 279message size_fmt
280{ size: %9u %8u%c %9u} 280{ size: %9u %8u%c %9u}
281 281
282message end_fmt 282message end_fmt
283{ end: %9u %8u%c %9u} 283{ end: %9u %8u%c %9u}
284 284
285message bsize_fmt 285message bsize_fmt
286{ block size: %9d bytes} 286{ block size: %9d bytes}
287 287
288message fsize_fmt 288message fsize_fmt
289{ fragment size: %9d bytes} 289{ fragment size: %9d bytes}
290 290
291message isize_fmt 291message isize_fmt
292{ avg file size: %9d bytes (for number of inodes)} 292{ avg file size: %9d bytes (for number of inodes)}
293message isize_fmt_dflt 293message isize_fmt_dflt
294{ avg file size: 4 fragments} 294{ avg file size: 4 fragments}
295 295
296message newfs_fmt 296message newfs_fmt
297{ newfs: %9s} 297{ newfs: %9s}
298 298
299message mount_fmt 299message mount_fmt
300{ mount: %9s} 300{ mount: %9s}
301 301
302message mount_options_fmt 302message mount_options_fmt
303{ mount options: } 303{ mount options: }
304 304
305message mountpt_fmt 305message mountpt_fmt
306{ mount point: %9s} 306{ mount point: %9s}
307 307
308message toggle 308message toggle
309{Toggle} 309{Toggle}
310 310
311message restore 311message restore
312{Restore original values} 312{Restore original values}
313 313
314message Select_the_type 314message Select_the_type
315{Select the type} 315{Select the type}
316 316
317message other_types 317message other_types
318{other types} 318{other types}
319 319
320message label_size 320message label_size
321{%s 321{%s
322Special values that can be entered for the size value: 322Special values that can be entered for the size value:
323 -1: use until the end of the NetBSD part of the disk 323 -1: use until the end of the NetBSD part of the disk
324 a-%c: end this partition where partition X starts 324 a-%c: end this partition where partition X starts
325 325
326size (%s)} 326size (%s)}
327 327
328message label_offset 328message label_offset
329{%s 329{%s
330Special values that can be entered for the offset value: 330Special values that can be entered for the offset value:
331 -1: start at the beginning of the NetBSD part of the disk 331 -1: start at the beginning of the NetBSD part of the disk
332 a-%c: start at the end of previous partition (a, b, ..., %c) 332 a-%c: start at the end of previous partition (a, b, ..., %c)
333 333
334start (%s)} 334start (%s)}
335 335
336message invalid_sector_number 336message invalid_sector_number
337{Badly formed sector number 337{Badly formed sector number
338} 338}
339 339
340message Select_file_system_block_size 340message Select_file_system_block_size
341{Select file system block size} 341{Select file system block size}
342 342
343message Select_file_system_fragment_size 343message Select_file_system_fragment_size
344{Select file system fragment size} 344{Select file system fragment size}
345 345
346message packname 346message packname
347{Please enter a name for your NetBSD disk} 347{Please enter a name for your NetBSD disk}
348 348
349message lastchance 349message lastchance
350{Ok, we are now ready to install NetBSD on your hard disk (%s). Nothing has been 350{Ok, we are now ready to install NetBSD on your hard disk (%s). Nothing has been
351written yet. This is your last chance to quit this process before anything 351written yet. This is your last chance to quit this process before anything
352gets changed. 352gets changed.
353 353
354Shall we continue? 354Shall we continue?
355} 355}
356 356
357message disksetupdone 357message disksetupdone
358{Ok, the first part of the procedure is finished. Sysinst has 358{Ok, the first part of the procedure is finished. Sysinst has
359written a disklabel to the target disk, and newfs'ed and fsck'ed 359written a disklabel to the target disk, and newfs'ed and fsck'ed
360the new partitions you specified for the target disk. 360the new partitions you specified for the target disk.
361} 361}
362 362
363message disksetupdoneupdate 363message disksetupdoneupdate
364{Ok, the first part of the procedure is finished. Sysinst has 364{Ok, the first part of the procedure is finished. Sysinst has
365written a disklabel to the target disk, and fsck'ed the new 365written a disklabel to the target disk, and fsck'ed the new
366partitions you specified for the target disk. 366partitions you specified for the target disk.
367} 367}
368 368
369message openfail 369message openfail
370{Could not open %s, error message was: %s. 370{Could not open %s, error message was: %s.
371} 371}
372 372
373message mountfail 373message mountfail
374{mount of device /dev/%s%c on %s failed. 374{mount of device /dev/%s%c on %s failed.
375} 375}
376 376
377message extractcomplete 377message extractcomplete
378{The extraction of the selected sets for NetBSD-@@VERSION@@ is complete. 378{The extraction of the selected sets for NetBSD-@@VERSION@@ is complete.
379The system is now able to boot from the selected hard disk. To complete 379The system is now able to boot from the selected hard disk. To complete
380the installation, sysinst will give you the opportunity to configure 380the installation, sysinst will give you the opportunity to configure
381some essential things first. 381some essential things first.
382} 382}
383 383
384message instcomplete 384message instcomplete
385{The installation of NetBSD-@@VERSION@@ is now complete. The system 385{The installation of NetBSD-@@VERSION@@ is now complete. The system
386should boot from hard disk. Follow the instructions in the INSTALL 386should boot from hard disk. Follow the instructions in the INSTALL
387document about final configuration of your system. We also recommend 387document about final configuration of your system. We also recommend
388reading the afterboot(8) manpage; it contains a list of things to be 388reading the afterboot(8) manpage; it contains a list of things to be
389checked after the first complete boot. 389checked after the first complete boot.
390 390
391At a minimum, you should edit /etc/rc.conf to match your needs. See 391At a minimum, you should edit /etc/rc.conf to match your needs. See
392/etc/defaults/rc.conf for the default values. 392/etc/defaults/rc.conf for the default values.
393} 393}
394 394
395message upgrcomplete 395message upgrcomplete
396{The upgrade to NetBSD-@@VERSION@@ is now complete. You will 396{The upgrade to NetBSD-@@VERSION@@ is now complete. You will
397now need to follow the instructions in the INSTALL document as to 397now need to follow the instructions in the INSTALL document as to
398what you need to do to get your system reconfigured for your situation. 398what you need to do to get your system reconfigured for your situation.
399Remember to (re)read the afterboot(8) manpage as it may contain new 399Remember to (re)read the afterboot(8) manpage as it may contain new
400items since your last upgrade. 400items since your last upgrade.
401} 401}
402 402
403 403
404message unpackcomplete 404message unpackcomplete
405{Unpacking additional release sets of NetBSD-@@VERSION@@ is now complete.  405{Unpacking additional release sets of NetBSD-@@VERSION@@ is now complete.
406You will now need to follow the instructions in the INSTALL document 406You will now need to follow the instructions in the INSTALL document
407to get your system reconfigured for your situation. 407to get your system reconfigured for your situation.
408The afterboot(8) manpage can also be of some help. 408The afterboot(8) manpage can also be of some help.
409 409
410If you unpacked the etc set, you will need to edit /etc/rc.conf to get a 410If you unpacked the etc set, you will need to edit /etc/rc.conf to get a
411multi-user system. At a minimum, you will need to change rc_configured=NO 411multi-user system. At a minimum, you will need to change rc_configured=NO
412to rc_configured=YES. 412to rc_configured=YES.
413} 413}
414 414
415message distmedium 415message distmedium
416{Your disk is now ready for installing the kernel and the distribution 416{Your disk is now ready for installing the kernel and the distribution
417sets. As noted in your INSTALL notes, you have several options. For 417sets. As noted in your INSTALL notes, you have several options. For
418ftp or nfs, you must be connected to a network with access to the proper 418ftp or nfs, you must be connected to a network with access to the proper
419machines. 419machines.
420 420
421Sets selected %d, processed %d, Next set %s. 421Sets selected %d, processed %d, Next set %s.
422 422
423} 423}
424 424
425message distset 425message distset
426{The NetBSD distribution is broken into a collection of distribution 426{The NetBSD distribution is broken into a collection of distribution
427sets. There are some basic sets that are needed by all installations 427sets. There are some basic sets that are needed by all installations
428and there are some other sets that are optional. You may choose to install 428and there are some other sets that are optional. You may choose to install
429a core set (Minimal installation), all of them (Full installation), or a custom 429a core set (Minimal installation), all of them (Full installation), or a custom
430group of sets (Custom installation). 430group of sets (Custom installation).
431} 431}
432 432
433message ftpsource 433message ftpsource
434{The following are the %s site, directory, user, and password that 434{The following are the %s site, directory, user, and password that
435will be used. If "user" is "ftp", then the password is not needed. 435will be used. If "user" is "ftp", then the password is not needed.
436 436
437} 437}
438 438
439message email 439message email
440{e-mail address} 440{e-mail address}
441 441
442message dev 442message dev
443{device} 443{device}
444 444
445message nfssource 445message nfssource
446{Enter the nfs host and server directory where the distribution is located.  446{Enter the nfs host and server directory where the distribution is located.
447Remember, the directory should contain the .tgz files and 447Remember, the directory should contain the .tgz files and
448must be nfs mountable. 448must be nfs mountable.
449 449
450} 450}
451 451
452message floppysource 452message floppysource
453{Enter the floppy device to be used and transfer directory on the target 453{Enter the floppy device to be used and transfer directory on the target
454file system. The set files must be in the root directory of the floppies. 454file system. The set files must be in the root directory of the floppies.
455 455
456} 456}
457 457
458message cdromsource 458message cdromsource
459{Enter the CDROM device to be used and directory on the CDROM where 459{Enter the CDROM device to be used and directory on the CDROM where
460the distribution is located.  460the distribution is located.
461Remember, the directory should contain the .tgz files. 461Remember, the directory should contain the .tgz files.
462 462
463} 463}
464 464
465message Available_cds 465message Available_cds
466{Available CDs } 466{Available CDs }
467 467
468message ask_cd 468message ask_cd
469{Multiple CDs found. Please select the one containing the install CD.} 469{Multiple CDs found. Please select the one containing the install CD.}
470 470
471message cd_path_not_found 471message cd_path_not_found
472{The installation sets have not been found at the default location on this 472{The installation sets have not been found at the default location on this
473CD. Please check the device and path name.} 473CD. Please check the device and path name.}
474 474
475message localfssource 475message localfssource
476{Enter the unmounted local device and directory on that device where 476{Enter the unmounted local device and directory on that device where
477the distribution is located.  477the distribution is located.
478Remember, the directory should contain the .tgz files. 478Remember, the directory should contain the .tgz files.
479 479
480} 480}
481 481
482message localdir 482message localdir
483{Enter the already-mounted local directory where the distribution is located.  483{Enter the already-mounted local directory where the distribution is located.
484Remember, the directory should contain the .tgz files. 484Remember, the directory should contain the .tgz files.
485 485
486} 486}
487 487
488message filesys 488message filesys
489{file system} 489{file system}
490 490
491message nonet 491message nonet
492{I can not find any network interfaces for use by NetBSD. You will be 492{I can not find any network interfaces for use by NetBSD. You will be
493returned to the previous menu. 493returned to the previous menu.
494} 494}
495 495
496message netup 496message netup
497{The following network interfaces are active: %s 497{The following network interfaces are active: %s
498Does one of them connect to the required server?} 498Does one of them connect to the required server?}
499 499
500message asknetdev 500message asknetdev
501{Which network device would you like to use?} 501{Which network device would you like to use?}
502 502
503message netdevs 503message netdevs
504{Available interfaces} 504{Available interfaces}
505 505
506message netinfo 506message netinfo
507{To be able to use the network, we need answers to the following: 507{To be able to use the network, we need answers to the following:
508 508
509} 509}
510 510
511message net_domain 511message net_domain
512{Your DNS domain} 512{Your DNS domain}
513 513
514message net_host 514message net_host
515{Your host name} 515{Your host name}
516 516
517message net_ip 517message net_ip
518{Your IPv4 address} 518{Your IPv4 address}
519 519
520message net_srv_ip 520message net_srv_ip
521{Server IPv4 address} 521{Server IPv4 address}
522 522
523message net_mask 523message net_mask
524{IPv4 Netmask} 524{IPv4 Netmask}
525 525
526message net_namesrv 526message net_namesrv
527{Your name server} 527{Your name server}
528 528
529message net_defroute 529message net_defroute
530{IPv4 gateway} 530{IPv4 gateway}
531 531
532message net_media 532message net_media
533{Network media type} 533{Network media type}
534 534
535message netok 535message netok
536{The following are the values you entered. 536{The following are the values you entered.
537 537
538DNS Domain: %s  538DNS Domain: %s
539Host Name: %s  539Host Name: %s
540Nameserver: %s  540Nameserver: %s
541Primary Interface: %s  541Primary Interface: %s
542Media type: %s  542Media type: %s
543Host IP: %s  543Host IP: %s
544Netmask: %s  544Netmask: %s
545IPv4 Gateway: %s  545IPv4 Gateway: %s
546} 546}
547 547
548message netok_slip 548message netok_slip
549{The following are the values you entered. Are they OK? 549{The following are the values you entered. Are they OK?
550 550
551DNS Domain: %s  551DNS Domain: %s
552Host Name: %s  552Host Name: %s
553Nameserver: %s  553Nameserver: %s
554Primary Interface: %s  554Primary Interface: %s
555Media type: %s  555Media type: %s
556Host IP: %s  556Host IP: %s
557Server IP: %s  557Server IP: %s
558Netmask: %s  558Netmask: %s
559IPv4 Gateway: %s  559IPv4 Gateway: %s
560} 560}
561 561
562message netokv6 562message netokv6
563{IPv6 autoconf: %s  563{IPv6 autoconf: %s
564} 564}
565 565
566message netok_ok 566message netok_ok
567{Are they OK?} 567{Are they OK?}
568 568
569message wait_network 569message wait_network
570{ 570{
571Waiting while network interface comes up. 571Waiting while network interface comes up.
572} 572}
573 573
574message resolv 574message resolv
575{Could not create /etc/resolv.conf. Install aborted. 575{Could not create /etc/resolv.conf. Install aborted.
576} 576}
577 577
578message realdir 578message realdir
579{Could not change to directory %s: %s. Install aborted. 579{Could not change to directory %s: %s. Install aborted.
580} 580}
581 581
582message delete_xfer_file 582message delete_xfer_file
583{Delete after install} 583{Delete after install}
584 584
585message notarfile 585message notarfile
586{Release set %s does not exist.} 586{Release set %s does not exist.}
587 587
588message endtarok 588message endtarok
589{All selected distribution sets unpacked successfully.} 589{All selected distribution sets unpacked successfully.}
590 590
591message endtar 591message endtar
592{There were problems unpacking distribution sets. 592{There were problems unpacking distribution sets.
593Your installation is incomplete. 593Your installation is incomplete.
594 594
595You selected %d distribution sets. %d sets couldn't be found 595You selected %d distribution sets. %d sets couldn't be found
596and %d were skipped after an error occurred. Of the %d 596and %d were skipped after an error occurred. Of the %d
597that were attempted, %d unpacked without errors and %d with errors. 597that were attempted, %d unpacked without errors and %d with errors.
598 598
599Aborting installation. Please recheck your distribution source 599Aborting installation. Please recheck your distribution source
600and consider reinstalling sets from the main menu.} 600and consider reinstalling sets from the main menu.}
601 601
602message abort 602message abort
603{Your choices have made it impossible to install NetBSD. Install aborted. 603{Your choices have made it impossible to install NetBSD. Install aborted.
604} 604}
605 605
606message abortinst 606message abortinst
607{The distribution was not successfully loaded. You will need to proceed 607{The distribution was not successfully loaded. You will need to proceed
608by hand. Installation aborted. 608by hand. Installation aborted.
609} 609}
610 610
611message abortupgr 611message abortupgr
612{The distribution was not successfully loaded. You will need to proceed 612{The distribution was not successfully loaded. You will need to proceed
613by hand. Upgrade aborted. 613by hand. Upgrade aborted.
614} 614}
615 615
616message abortunpack 616message abortunpack
617{Unpacking additional sets was not successful. You will need to 617{Unpacking additional sets was not successful. You will need to
618proceed by hand, or choose a different source for release sets and try 618proceed by hand, or choose a different source for release sets and try
619again. 619again.
620} 620}
621 621
622message createfstab 622message createfstab
623{There is a big problem! Can not create /mnt/etc/fstab. Bailing out! 623{There is a big problem! Can not create /mnt/etc/fstab. Bailing out!
624} 624}
625 625
626 626
627message noetcfstab 627message noetcfstab
628{Help! No /etc/fstab in target disk %s. Aborting upgrade. 628{Help! No /etc/fstab in target disk %s. Aborting upgrade.
629} 629}
630 630
631message badetcfstab 631message badetcfstab
632{Help! Can't parse /etc/fstab in target disk %s. Aborting upgrade. 632{Help! Can't parse /etc/fstab in target disk %s. Aborting upgrade.
633} 633}
634 634
635message X_oldexists 635message X_oldexists
636{I cannot save %s/bin/X as %s/bin/X.old, because the 636{I cannot save %s/bin/X as %s/bin/X.old, because the
637target disk already has an %s/bin/X.old. Please fix this before 637target disk already has an %s/bin/X.old. Please fix this before
638continuing. 638continuing.
639 639
640One way is to start a shell from the Utilities menu, examine the 640One way is to start a shell from the Utilities menu, examine the
641target %s/bin/X and %s/bin/X.old. If 641target %s/bin/X and %s/bin/X.old. If
642%s/bin/X.old is from a completed upgrade, you can rm -f 642%s/bin/X.old is from a completed upgrade, you can rm -f
643%s/bin/X.old and restart. Or if %s/bin/X.old is from 643%s/bin/X.old and restart. Or if %s/bin/X.old is from
644a recent, incomplete upgrade, you can rm -f %s/bin/X and mv 644a recent, incomplete upgrade, you can rm -f %s/bin/X and mv
645%s/bin/X.old to %s/bin/X 645%s/bin/X.old to %s/bin/X
646 646
647Aborting upgrade.} 647Aborting upgrade.}
648 648
649message netnotup 649message netnotup
650{There was a problem in setting up the network. Either your gateway 650{There was a problem in setting up the network. Either your gateway
651or your nameserver was not reachable by a ping. Do you want to 651or your nameserver was not reachable by a ping. Do you want to
652configure your network again? ("No" allows you to continue anyway 652configure your network again? ("No" allows you to continue anyway
653or abort the install process.) 653or abort the install process.)
654} 654}
655 655
656message netnotup_continueanyway 656message netnotup_continueanyway
657{Would you like to continue the install process anyway, and assume 657{Would you like to continue the install process anyway, and assume
658that the network is working? ("No" aborts the install process.) 658that the network is working? ("No" aborts the install process.)
659} 659}
660 660
661message makedev 661message makedev
662{Making device nodes ... 662{Making device nodes ...
663} 663}
664 664
665message badfs 665message badfs
666{It appears that /dev/%s%c is not a BSD file system or the fsck was 666{It appears that /dev/%s%c is not a BSD file system or the fsck was
667not successful. Try mounting it anyway? (Error number %d.) 667not successful. Try mounting it anyway? (Error number %d.)
668} 668}
669 669
670message rootmissing 670message rootmissing
671{ target root is missing %s. 671{ target root is missing %s.
672} 672}
673 673
674message badroot 674message badroot
675{The completed new root file system failed a basic sanity check. 675{The completed new root file system failed a basic sanity check.
676Are you sure you installed all the required sets? 676Are you sure you installed all the required sets?
677} 677}
678 678
679message fd_type 679message fd_type
680{Floppy file system type} 680{Floppy file system type}
681 681
682message fdnotfound 682message fdnotfound
683{Could not find the file on the floppy. 683{Could not find the file on the floppy.
684} 684}
685 685
686message fdremount 686message fdremount
687{The floppy was not mounted successfully.  687{The floppy was not mounted successfully.
688} 688}
689 689
690message fdmount 690message fdmount
691{Please load the floppy containing the file named "%s.%s". 691{Please load the floppy containing the file named "%s.%s".
692 692
693If the set has no more disks, select "Set finished" to install the set. 693If the set has no more disks, select "Set finished" to install the set.
694Select "Abort fetch" to return to the install media selection menu. 694Select "Abort fetch" to return to the install media selection menu.
695} 695}
696 696
697message mntnetconfig 697message mntnetconfig
698{Is the network information you entered accurate for this machine 698{Is the network information you entered accurate for this machine
699in regular operation and do you want it installed in /etc? } 699in regular operation and do you want it installed in /etc? }
700 700
701message cur_distsets 701message cur_distsets
702{The following is the list of distribution sets that will be used. 702{The following is the list of distribution sets that will be used.
703 703
704} 704}
705 705
706message cur_distsets_header 706message cur_distsets_header
707{ Distribution set Selected 707{ Distribution set Selected
708 ------------------------ -------- 708 ------------------------ --------
709} 709}
710 710
711message set_base 711message set_base
712{Base} 712{Base}
713 713
714message set_system 714message set_system
715{Configuration files (/etc)} 715{Configuration files (/etc)}
716 716
717message set_compiler 717message set_compiler
718{Compiler tools} 718{Compiler tools}
719 719
720message set_games 720message set_games
721{Games} 721{Games}
722 722
723message set_man_pages 723message set_man_pages
724{Manual pages} 724{Manual pages}
725 725
726message set_misc 726message set_misc
727{Miscellaneous} 727{Miscellaneous}
728 728
729message set_modules 729message set_modules
730{Kernel modules} 730{Kernel modules}
731 731
732message set_tests 732message set_tests
733{Test programs} 733{Test programs}
734 734
735message set_text_tools 735message set_text_tools
736{Text processing tools} 736{Text processing tools}
737 737
738message set_X11 738message set_X11
739{X11 sets} 739{X11 sets}
740 740
741message set_X11_base 741message set_X11_base
742{X11 base and clients} 742{X11 base and clients}
743 743
744message set_X11_etc 744message set_X11_etc
745{X11 configuration} 745{X11 configuration}
746 746
747message set_X11_fonts 747message set_X11_fonts
748{X11 fonts} 748{X11 fonts}
749 749
750message set_X11_servers 750message set_X11_servers
751{X11 servers} 751{X11 servers}
752 752
753message set_X11_prog 753message set_X11_prog
754{X11 programming} 754{X11 programming}
755 755
756message set_source 756message set_source
757{Source and debug sets} 757{Source and debug sets}
758 758
759message set_syssrc 759message set_syssrc
760{Kernel sources} 760{Kernel sources}
761 761
762message set_src 762message set_src
763{Base sources} 763{Base sources}
764 764
765message set_sharesrc 765message set_sharesrc
766{Share sources} 766{Share sources}
767 767
768message set_gnusrc 768message set_gnusrc
769{GNU sources} 769{GNU sources}
770 770
771message set_xsrc 771message set_xsrc
772{X11 sources} 772{X11 sources}
773 773
774message set_debug 774message set_debug
775{Debug symbols} 775{Debug symbols}
776 776
777message set_xdebug 777message set_xdebug
778{X11 debug symbols} 778{X11 debug symbols}
779 779
780message cur_distsets_row 780message cur_distsets_row
781{%-27s %3s} 781{%-27s %3s}
782 782
783message select_all 783message select_all
784{Select all the above sets} 784{Select all the above sets}
785 785
786message select_none 786message select_none
787{Deselect all the above sets} 787{Deselect all the above sets}
788 788
789message install_selected_sets 789message install_selected_sets
790{Install selected sets} 790{Install selected sets}
791 791
792message tarerror 792message tarerror
793{There was an error in extracting the file %s. That means 793{There was an error in extracting the file %s. That means
794some files were not extracted correctly and your system will not be 794some files were not extracted correctly and your system will not be
795complete. 795complete.
796 796
797Continue extracting sets?} 797Continue extracting sets?}
798 798
799message must_be_one_root 799message must_be_one_root
800{There must be a single partition marked to be mounted on '/'.} 800{There must be a single partition marked to be mounted on '/'.}
801 801
802message partitions_overlap 802message partitions_overlap
803{partitions %c and %c overlap.} 803{partitions %c and %c overlap.}
804 804
805message No_Bootcode 805message No_Bootcode
806{No bootcode for specified FS type of root partition} 806{No bootcode for specified FS type of root partition}
807 807
808message cannot_ufs2_root 808message cannot_ufs2_root
809{Sorry, the root file system can't be FFSv2 due to lack of bootloader support 809{Sorry, the root file system can't be FFSv2 due to lack of bootloader support
810on this port.} 810on this port.}
811 811
812message edit_partitions_again 812message edit_partitions_again
813{ 813{
814 814
815You can either edit the partition table by hand, or give up and return 815You can either edit the partition table by hand, or give up and return
816to the main menu. 816to the main menu.
817 817
818Edit the partition table again?} 818Edit the partition table again?}
819 819
820message config_open_error 820message config_open_error
821{Could not open config file %s\n} 821{Could not open config file %s\n}
822 822
823message choose_timezone 823message choose_timezone
824{Please choose the timezone that fits you best from the list below.  824{Please choose the timezone that fits you best from the list below.
825Press RETURN to select an entry.  825Press RETURN to select an entry.
826Press 'x' followed by RETURN to quit the timezone selection.  826Press 'x' followed by RETURN to quit the timezone selection.
827 827
828 Default: %s  828 Default: %s
829 Selected: %s  829 Selected: %s
830 Local time: %s %s  830 Local time: %s %s
831} 831}
832 832
833message tz_back 833message tz_back
834{ Back to main timezone list} 834{ Back to main timezone list}
835 835
836message swapactive 836message swapactive
837{The disk that you selected has a swap partition that may currently be 837{The disk that you selected has a swap partition that may currently be
838in use if your system is low on memory. Because you are going to 838in use if your system is low on memory. Because you are going to
839repartition this disk, this swap partition will be disabled now. Please 839repartition this disk, this swap partition will be disabled now. Please
840beware that this might lead to out of swap errors. Should you get such 840beware that this might lead to out of swap errors. Should you get such
841an error, please restart the system and try again.} 841an error, please restart the system and try again.}
842 842
843message swapdelfailed 843message swapdelfailed
844{Sysinst failed to deactivate the swap partition on the disk that you 844{Sysinst failed to deactivate the swap partition on the disk that you
845chose for installation. Please reboot and try again.} 845chose for installation. Please reboot and try again.}
846 846
847message rootpw 847message rootpw
848{The root password of the newly installed system has not yet been initialized, 848{The root password of the newly installed system has not yet been initialized,
849and is thus empty. Do you want to set a root password for the system now?} 849and is thus empty. Do you want to set a root password for the system now?}
850 850
851message rootsh 851message rootsh
852{You can now select which shell to use for the root user. The default is 852{You can now select which shell to use for the root user. The default is
853/bin/sh, but you may prefer another one.} 853/bin/sh, but you may prefer another one.}
854 854
855message no_root_fs 855message no_root_fs
856{ 856{
857There is no defined root file system. You need to define at least 857There is no defined root file system. You need to define at least
858one mount point with "/". 858one mount point with "/".
859 859
860Press <return> to continue. 860Press <return> to continue.
861} 861}
862 862
863message slattach { 863message slattach {
864Enter slattach flags 864Enter slattach flags
865} 865}
866 866
867message Pick_an_option {Pick an option to turn on or off.} 867message Pick_an_option {Pick an option to turn on or off.}
868message Scripting {Scripting} 868message Scripting {Scripting}
869message Logging {Logging} 869message Logging {Logging}
870 870
871message Status { Status: } 871message Status { Status: }
872message Command {Command: } 872message Command {Command: }
873message Running {Running} 873message Running {Running}
874message Finished {Finished} 874message Finished {Finished}
875message Command_failed {Command failed} 875message Command_failed {Command failed}
876message Command_ended_on_signal {Command ended on signal} 876message Command_ended_on_signal {Command ended on signal}
877 877
878message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Install System} 878message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Install System}
879message Exit_Install_System {Exit Install System} 879message Exit_Install_System {Exit Install System}
880message Install_NetBSD_to_hard_disk {Install NetBSD to hard disk} 880message Install_NetBSD_to_hard_disk {Install NetBSD to hard disk}
881message Upgrade_NetBSD_on_a_hard_disk {Upgrade NetBSD on a hard disk} 881message Upgrade_NetBSD_on_a_hard_disk {Upgrade NetBSD on a hard disk}
882message Re_install_sets_or_install_additional_sets {Re-install sets or install additional sets} 882message Re_install_sets_or_install_additional_sets {Re-install sets or install additional sets}
883message Reboot_the_computer {Reboot the computer} 883message Reboot_the_computer {Reboot the computer}
884message Utility_menu {Utility menu} 884message Utility_menu {Utility menu}
885message Config_menu {Config menu} 885message Config_menu {Config menu}
886message exit_utility_menu {Back to main menu} 886message exit_utility_menu {Back to main menu}
887message exit_menu_generic {Exit} 887message exit_menu_generic {Exit}
888message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Utilities} 888message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Utilities}
889message Run_bin_sh {Run /bin/sh} 889message Run_bin_sh {Run /bin/sh}
890message Set_timezone {Set timezone} 890message Set_timezone {Set timezone}
891message Configure_network {Configure network} 891message Configure_network {Configure network}
892message Partition_a_disk {Partition a disk} 892message Partition_a_disk {Partition a disk}
893message Logging_functions {Logging functions} 893message Logging_functions {Logging functions}
894message Halt_the_system {Halt the system} 894message Halt_the_system {Halt the system}
895message yes_or_no {yes or no?} 895message yes_or_no {yes or no?}
896message Hit_enter_to_continue {Hit enter to continue} 896message Hit_enter_to_continue {Hit enter to continue}
897message Choose_your_installation {Choose your installation} 897message Choose_your_installation {Choose your installation}
898message Set_Sizes {Set sizes of NetBSD partitions} 898message Set_Sizes {Set sizes of NetBSD partitions}
899message Use_Existing {Use existing partition sizes} 899message Use_Existing {Use existing partition sizes}
900message Megabytes {Megabytes} 900message Megabytes {Megabytes}
901message Cylinders {Cylinders} 901message Cylinders {Cylinders}
902message Sectors {Sectors} 902message Sectors {Sectors}
903message Select_medium {Install from} 903message Select_medium {Install from}
904message ftp {FTP} 904message ftp {FTP}
905message http {HTTP} 905message http {HTTP}
906message nfs {NFS} 906message nfs {NFS}
907.if HAVE_INSTALL_IMAGE 907.if HAVE_INSTALL_IMAGE
908message cdrom {CD-ROM / DVD / install image media} 908message cdrom {CD-ROM / DVD / install image media}
909.else 909.else
910message cdrom {CD-ROM / DVD} 910message cdrom {CD-ROM / DVD}
911.endif 911.endif
912message floppy {Floppy} 912message floppy {Floppy}
913message local_fs {Unmounted fs} 913message local_fs {Unmounted fs}
914message local_dir {Local directory} 914message local_dir {Local directory}
915message Select_your_distribution {Select your distribution} 915message Select_your_distribution {Select your distribution}
916message Full_installation {Full installation} 916message Full_installation {Full installation}
917message Full_installation_nox {Installation without X11} 917message Full_installation_nox {Installation without X11}
918message Minimal_installation {Minimal installation} 918message Minimal_installation {Minimal installation}
919message Custom_installation {Custom installation} 919message Custom_installation {Custom installation}
920message hidden {** hidden **} 920message hidden {** hidden **}
921message Host {Host} 921message Host {Host}
922message Base_dir {Base directory} 922message Base_dir {Base directory}
923message Set_dir_bin {Binary set directory} 923message Set_dir_bin {Binary set directory}
924message Set_dir_src {Source set directory} 924message Set_dir_src {Source set directory}
925message Xfer_dir {Transfer directory} 925message Xfer_dir {Transfer directory}
926message User {User} 926message User {User}
927message Password {Password} 927message Password {Password}
928message Proxy {Proxy} 928message Proxy {Proxy}
929message Get_Distribution {Get Distribution} 929message Get_Distribution {Get Distribution}
930message Continue {Continue} 930message Continue {Continue}
931message What_do_you_want_to_do {What do you want to do?} 931message What_do_you_want_to_do {What do you want to do?}
932message Try_again {Try again} 932message Try_again {Try again}
933message Set_finished {Set finished} 933message Set_finished {Set finished}
934message Skip_set {Skip set} 934message Skip_set {Skip set}
935message Skip_group {Skip set group} 935message Skip_group {Skip set group}
936message Abandon {Abandon installation} 936message Abandon {Abandon installation}
937message Abort_fetch {Abort fetch} 937message Abort_fetch {Abort fetch}
938message Device {Device} 938message Device {Device}
939message File_system {File system} 939message File_system {File system}
940message Select_DNS_server { Select DNS server} 940message Select_DNS_server { Select DNS server}
941message other {other } 941message other {other }
942message Perform_autoconfiguration {Perform autoconfiguration?} 942message Perform_autoconfiguration {Perform autoconfiguration?}
943message Root_shell {Root shell} 943message Root_shell {Root shell}
944message User_shell {User shell} 944message User_shell {User shell}
945message Color_scheme {Color scheme} 945message Color_scheme {Color scheme}
946message White_on_black {White on black} 946message White_on_black {White on black}
947message Black_on_white {Black on white} 947message Black_on_white {Black on white}
948message White_on_blue {White on blue} 948message White_on_blue {White on blue}
949message Green_on_black {Green on black} 949message Green_on_black {Green on black}
950 950
951.if AOUT2ELF 951.if AOUT2ELF
952message aoutfail 952message aoutfail
953{The directory where the old a.out shared libraries should be moved to could 953{The directory where the old a.out shared libraries should be moved to could
954not be created. Please try the upgrade procedure again and make sure you 954not be created. Please try the upgrade procedure again and make sure you
955have mounted all file systems.} 955have mounted all file systems.}
956 956
957message emulbackup 957message emulbackup
958{Either the /emul/aout or /emul directory on your system was a symbolic link 958{Either the /emul/aout or /emul directory on your system was a symbolic link
959pointing to an unmounted file system. It has been given a '.old' extension. 959pointing to an unmounted file system. It has been given a '.old' extension.
960Once you bring your upgraded system back up, you may need to take care 960Once you bring your upgraded system back up, you may need to take care
961of merging the newly created /emul/aout directory with the old one. 961of merging the newly created /emul/aout directory with the old one.
962} 962}
963.endif 963.endif
964 964
965message oldsendmail 965message oldsendmail
966{Sendmail is no longer in this release of NetBSD, default MTA is 966{Sendmail is no longer in this release of NetBSD, default MTA is
967postfix. The file /etc/mailer.conf still chooses the removed 967postfix. The file /etc/mailer.conf still chooses the removed
968sendmail. Do you want to upgrade /etc/mailer.conf automatically for 968sendmail. Do you want to upgrade /etc/mailer.conf automatically for
969postfix? If you choose "No" you will have to update /etc/mailer.conf 969postfix? If you choose "No" you will have to update /etc/mailer.conf
970yourself to ensure proper email delivery.} 970yourself to ensure proper email delivery.}
971 971
972message license 972message license
973{To use the network interface %s, you must agree to the license in 973{To use the network interface %s, you must agree to the license in
974file %s. To view this file now, you can type ^Z, look at the contents of 974file %s. To view this file now, you can type ^Z, look at the contents of
975the file and then type "fg" to resume.} 975the file and then type "fg" to resume.}
976 976
977message binpkg 977message binpkg
978{To configure the binary package system, please choose the network location 978{To configure the binary package system, please choose the network location
979to fetch packages from. Once your system comes up, you can use 'pkgin' 979to fetch packages from. Once your system comes up, you can use 'pkgin'
980to install additional packages, or remove packages.} 980to install additional packages, or remove packages.}
981 981
982message pkgpath 982message pkgpath
983{Enabling binary packages with pkgin requires setting up the repository. 983{Enabling binary packages with pkgin requires setting up the repository.
984The following are the host, directory, user, and password that 984The following are the host, directory, user, and password that
985will be used. If "user" is "ftp", then the password is not needed. 985will be used. If "user" is "ftp", then the password is not needed.
986 986
987} 987}
988message rcconf_backup_failed {Making backup of rc.conf failed. Continue?} 988message rcconf_backup_failed {Making backup of rc.conf failed. Continue?}
989message rcconf_backup_succeeded {rc.conf backup saved to %s.} 989message rcconf_backup_succeeded {rc.conf backup saved to %s.}
990message rcconf_restore_failed {Restoring backup rc.conf failed.} 990message rcconf_restore_failed {Restoring backup rc.conf failed.}
991message rcconf_delete_failed {Deleting old %s entry failed.} 991message rcconf_delete_failed {Deleting old %s entry failed.}
992message Pkg_dir {Package directory} 992message Pkg_dir {Package directory}
993message configure_prior {configure a prior installation of} 993message configure_prior {configure a prior installation of}
994message configure {configure} 994message configure {configure}
995message change {change} 995message change {change}
996message password_set {password set} 996message password_set {password set}
997message YES {YES} 997message YES {YES}
998message NO {NO} 998message NO {NO}
999message DONE {DONE} 999message DONE {DONE}
1000message abandoned {Abandoned} 1000message abandoned {Abandoned}
1001message empty {***EMPTY***} 1001message empty {***EMPTY***}
1002message timezone {Timezone} 1002message timezone {Timezone}
1003message change_rootpw {Change root password} 1003message change_rootpw {Change root password}
1004message enable_binpkg {Enable installation of binary packages} 1004message enable_binpkg {Enable installation of binary packages}
1005message enable_sshd {Enable sshd} 1005message enable_sshd {Enable sshd}
1006message enable_ntpd {Enable ntpd} 1006message enable_ntpd {Enable ntpd}
1007message run_ntpdate {Run ntpdate at boot} 1007message run_ntpdate {Run ntpdate at boot}
1008message enable_mdnsd {Enable mdnsd} 1008message enable_mdnsd {Enable mdnsd}
1009message enable_xdm {Enable xdm} 1009message enable_xdm {Enable xdm}
1010message enable_cgd {Enable cgd} 1010message enable_cgd {Enable cgd}
1011message enable_lvm {Enable lvm} 1011message enable_lvm {Enable lvm}
1012message enable_raid {Enable raidframe} 1012message enable_raid {Enable raidframe}
1013message add_a_user {Add a user} 1013message add_a_user {Add a user}
1014message configmenu {Configure the additional items as needed.} 1014message configmenu {Configure the additional items as needed.}
1015message doneconfig {Finished configuring} 1015message doneconfig {Finished configuring}
1016message Install_pkgin {Install pkgin and update package summary} 1016message Install_pkgin {Install pkgin and update package summary}
1017message binpkg_installed 1017message binpkg_installed
1018{Your system is now configured to use pkgin to install binary packages. To 1018{Your system is now configured to use pkgin to install binary packages. To
1019install a package, run: 1019install a package, run:
1020 1020
1021pkgin install <packagename> 1021pkgin install <packagename>
1022 1022
1023from a root shell. Read the pkgin(1) manual page for further information.} 1023from a root shell. Read the pkgin(1) manual page for further information.}
1024message Install_pkgsrc {Fetch and unpack pkgsrc} 1024message Install_pkgsrc {Fetch and unpack pkgsrc}
1025message pkgsrc 1025message pkgsrc
1026{Installing pkgsrc requires unpacking an archive retrieved over the network. 1026{Installing pkgsrc requires unpacking an archive retrieved over the network.
1027The following are the host, directory, user, and password that 1027The following are the host, directory, user, and password that
1028will be used. If "user" is "ftp", then the password is not needed. 1028will be used. If "user" is "ftp", then the password is not needed.
1029 1029
1030} 1030}
1031message Pkgsrc_dir {pkgsrc directory} 1031message Pkgsrc_dir {pkgsrc directory}
1032message get_pkgsrc {Fetch and unpack pkgsrc for building from source} 1032message get_pkgsrc {Fetch and unpack pkgsrc for building from source}
1033message retry_pkgsrc_network {Network configuration failed. Retry?} 1033message retry_pkgsrc_network {Network configuration failed. Retry?}
1034message quit_pkgsrc {Quit without installing pkgsrc} 1034message quit_pkgsrc {Quit without installing pkgsrc}
1035message quit_pkgs_install {Quit installing binary pkgs} 1035message quit_pkgs_install {Quit installing binary pkgs}
1036message pkgin_failed 1036message pkgin_failed
1037{Installation of pkgin failed, possibly because no binary packages 1037{Installation of pkgin failed, possibly because no binary packages
1038exist. Please check the package path and try again.} 1038exist. Please check the package path and try again.}
1039message failed {Failed} 1039message failed {Failed}
1040 1040
1041message notsupported {Operation not supported!} 1041message notsupported {Operation not supported!}
1042message askfsmountadv {Mountpoint (or 'raid', 'cgd', 'lvm')?} 1042message askfsmountadv {Mountpoint (or 'raid', 'cgd', 'lvm')?}
1043message partman {Extended partitioning} 1043message partman {Extended partitioning}
1044message editbsdpart {Edit BSD partitions} 1044message editbsdpart {Edit BSD partitions}
1045message editmbr {Edit and save MBR} 1045message editmbr {Edit and save MBR}
1046message switchgpt {Switch to GPT} 1046message switchgpt {Switch to GPT}
1047message switchmbr {Switch to MBR} 1047message switchmbr {Switch to MBR}
1048message renamedisk {Set disk name} 1048message renamedisk {Set disk name}
1049message fmtasraid {Format as RAID} 1049message fmtasraid {Format as RAID}
1050message fmtaslvm {Format as LVM PV} 1050message fmtaslvm {Format as LVM PV}
1051message encrypt {Encrypt} 1051message encrypt {Encrypt}
1052message setbootable {Bootable flag} 1052message setbootable {Bootable flag}
1053message erase {Safe erase} 1053message erase {Safe erase}
1054message undo {Undo changes} 1054message undo {Undo changes}
1055message unconfig {Unconfigure} 1055message unconfig {Unconfigure}
1056message edit {Edit} 1056message edit {Edit}
1057message doumount {Force umount} 1057message doumount {Force umount}
1058message fillzeros {Fill with zeros} 1058message fillzeros {Fill with zeros}
1059message fillrandom {Fill with random data} 1059message fillrandom {Fill with random data}
1060message fillcrypto {Fill with crypto data} 1060message fillcrypto {Fill with crypto data}
1061message raid0 {0 - No parity, simple striping.} 1061message raid0 {0 - No parity, simple striping.}
1062message raid1 {1 - Mirroring. The parity is the mirror.} 1062message raid1 {1 - Mirroring. The parity is the mirror.}
1063message raid4 {4 - Striping with parity stored on the last component.} 1063message raid4 {4 - Striping with parity stored on the last component.}
1064message raid5 {5 - Striping with distributed parity.} 1064message raid5 {5 - Striping with distributed parity.}
1065 1065
1066message fremove {REMOVE} 1066message fremove {REMOVE}
1067message remove {Remove} 1067message remove {Remove}
1068message add {Add} 1068message add {Add}
1069message auto {auto} 1069message auto {auto}
1070 1070
1071message removepartswarn {This removes all partitions on the disk. Do you want to continue?} 1071message removepartswarn {This removes all partitions on the disk. Do you want to continue?}
1072message saveprompt {Save changes before finishing?} 1072message saveprompt {Save changes before finishing?}
1073message cantsave {Changes cannot be saved.} 1073message cantsave {Changes cannot be saved.}
1074message noroot {No root partition defined. Cannot continue\n} 1074message noroot {No root partition defined. Cannot continue\n}
1075message wannaunblock { 1075message wannaunblock {
1076Device is blocked. Editing it may cause problems. 1076Device is blocked. Editing it may cause problems.
1077Do you want to force unblock it and continue?} 1077Do you want to force unblock it and continue?}
1078message wannatry {Do you want to try?} 1078message wannatry {Do you want to try?}
1079message create_cgd {Create cryptographic volume (CGD)} 1079message create_cgd {Create cryptographic volume (CGD)}
1080message create_cnd {Create virtual disk image (VND)} 1080message create_cnd {Create virtual disk image (VND)}
1081message create_vg {Create volume group (LVM VG)} 1081message create_vg {Create volume group (LVM VG)}
1082message create_lv { Create logical volume} 1082message create_lv { Create logical volume}
1083message create_raid {Create software RAID} 1083message create_raid {Create software RAID}
1084message updpmlist {Update device list} 1084message updpmlist {Update device list}
1085message savepm {Save changes} 1085message savepm {Save changes}
1086message pmblocked {BLOCKED} 1086message pmblocked {BLOCKED}
1087message pmunchanged {UNCHANGED} 1087message pmunchanged {UNCHANGED}
1088message pmsetboot {BOOT} 1088message pmsetboot {BOOT}
1089message pmused {USED} 1089message pmused {USED}
1090message pmmounted {(mounted)} 1090message pmmounted {(mounted)}
1091message pmunused {(unused)} 1091message pmunused {(unused)}
1092message pmgptdisk {GPT-labeled disk} 1092message pmgptdisk {GPT-labeled disk}
1093 1093
1094message finishpm {Finish partitioning} 1094message finishpm {Finish partitioning}
1095message limitcount {Limit for the device count was reached!} 1095message limitcount {Limit for the device count was reached!}
1096message invaliddev {Invalid device!} 1096message invaliddev {Invalid device!}
1097message avdisks {Available disks:} 1097message avdisks {Available disks:}
1098message nofreedev {Cannot allocate device node!} 1098message nofreedev {Cannot allocate device node!}
1099message partman_header 1099message partman_header
1100{This is the extended partition manager. All disks, partitions, etc. are 1100{This is the extended partition manager. All disks, partitions, etc. are
1101listed below. MBR partitions, if desired, must be created before editing 1101listed below. MBR partitions, if desired, must be created before editing
1102the disklabel. To use RAID, LVM, or CGD: 1) Create BSD partitions with the 1102the disklabel. To use RAID, LVM, or CGD: 1) Create BSD partitions with the
1103appropriate type; 2) Create RAID/LVM VG/CGD using these partitions; 3) Save 1103appropriate type; 2) Create RAID/LVM VG/CGD using these partitions; 3) Save
1104changes; 4) Create partitions for RAID/CGD or Logical Volumes for LVM.} 1104changes; 4) Create partitions for RAID/CGD or Logical Volumes for LVM.}
1105 1105
1106message raid_menufmt { raid%d (level %1d) on %-34s %11uM} 1106message raid_menufmt { raid%d (level %1d) on %-34s %11uM}
1107message raid_err_menufmt { EMPTY RAID!} 1107message raid_err_menufmt { EMPTY RAID!}
1108message raid_disks_fmt {Disks: %33s} 1108message raid_disks_fmt {Disks: %33s}
1109message raid_spares_fmt {Spares: %32s} 1109message raid_spares_fmt {Spares: %32s}
1110message raid_level_fmt {RAID level: %22d} 1110message raid_level_fmt {RAID level: %22d}
1111message raid_numrow_fmt {numRow: %22d} 1111message raid_numrow_fmt {numRow: %22d}
1112message raid_numcol_fmt {numCol: %22d} 1112message raid_numcol_fmt {numCol: %22d}
1113message raid_numspare_fmt {numSpare: %22d} 1113message raid_numspare_fmt {numSpare: %22d}
1114message raid_sectpersu_fmt {sectPerSU: %22d} 1114message raid_sectpersu_fmt {sectPerSU: %22d}
1115message raid_superpar_fmt {SUsPerParityUnit: %22d} 1115message raid_superpar_fmt {SUsPerParityUnit: %22d}
1116message raid_superrec_fmt {SUsPerReconUnit: %22d} 1116message raid_superrec_fmt {SUsPerReconUnit: %22d}
1117message raid_nomultidim {Multi-dimensional arrays are NOT supported!} 1117message raid_nomultidim {Multi-dimensional arrays are NOT supported!}
1118message raid_numrow_ask {numRow?} 1118message raid_numrow_ask {numRow?}
1119message raid_numcol_ask {numCol?} 1119message raid_numcol_ask {numCol?}
1120message raid_numspare_ask {numSpare?} 1120message raid_numspare_ask {numSpare?}
1121message raid_sectpersu_ask {sectPerSU?} 1121message raid_sectpersu_ask {sectPerSU?}
1122message raid_superpar_ask {SUsPerParityUnit?} 1122message raid_superpar_ask {SUsPerParityUnit?}
1123message raid_superrec_ask {SUsPerReconUnit?} 1123message raid_superrec_ask {SUsPerReconUnit?}
1124message raid_disks {Disks in RAID:} 1124message raid_disks {Disks in RAID:}
1125message vnd_err_menufmt { PATH NOT DEFINED!} 1125message vnd_err_menufmt { PATH NOT DEFINED!}
1126message vnd_assgn_menufmt { vnd%1d on %-51s ASSIGN} 1126message vnd_assgn_menufmt { vnd%1d on %-51s ASSIGN}
1127message vnd_menufmt { vnd%1d on %-45s %11uM} 1127message vnd_menufmt { vnd%1d on %-45s %11uM}
1128message vnd_path_fmt {File path: %29s} 1128message vnd_path_fmt {File path: %29s}
1129message vnd_assgn_fmt {Create new image: %20s} 1129message vnd_assgn_fmt {Create new image: %20s}
1130message vnd_size_fmt {Size: %22sM} 1130message vnd_size_fmt {Size: %22sM}
1131message vnd_ro_fmt {Read-only: %22s} 1131message vnd_ro_fmt {Read-only: %22s}
1132message vnd_geom_fmt {Set geometry by hand: %18s} 1132message vnd_geom_fmt {Set geometry by hand: %18s}
1133message vnd_bps_fmt {Bytes per Sector: %18s} 1133message vnd_bps_fmt {Bytes per Sector: %18s}
1134message vnd_spt_fmt {Sectors per Track: %18s} 1134message vnd_spt_fmt {Sectors per Track: %18s}
1135message vnd_tpc_fmt {Tracks per Cylinder: %18s} 1135message vnd_tpc_fmt {Tracks per Cylinder: %18s}
1136message vnd_cyl_fmt {Cylinders: %22s} 1136message vnd_cyl_fmt {Cylinders: %22s}
1137message vnd_path_ask {File path?} 1137message vnd_path_ask {File path?}
1138message vnd_size_ask {Size (MB)?} 1138message vnd_size_ask {Size (MB)?}
1139message vnd_bps_ask {Bytes per Sector?} 1139message vnd_bps_ask {Bytes per Sector?}
1140message vnd_spt_ask {Sectors per Track?} 1140message vnd_spt_ask {Sectors per Track?}
1141message vnd_tpc_ask {Tracks per Cylinder?} 1141message vnd_tpc_ask {Tracks per Cylinder?}
1142message vnd_cyl_ask {Cylinders?} 1142message vnd_cyl_ask {Cylinders?}
1143message cgd_err_menufmt { DISK NOT DEFINED!} 1143message cgd_err_menufmt { DISK NOT DEFINED!}
1144message cgd_menufmt { cgd%1d %-48s %11uM} 1144message cgd_menufmt { cgd%1d %-48s %11uM}
1145message cgd_dev_fmt {Base device: %24s} 1145message cgd_dev_fmt {Base device: %24s}
1146message cgd_enc_fmt {Encryption: %24s} 1146message cgd_enc_fmt {Encryption: %24s}
1147message cgd_key_fmt {Key size: %24d} 1147message cgd_key_fmt {Key size: %24d}
1148message cgd_iv_fmt {IV algorithm: %24s} 1148message cgd_iv_fmt {IV algorithm: %24s}
1149message cgd_keygen_fmt {Key generation: %24s} 1149message cgd_keygen_fmt {Key generation: %24s}
1150message cgd_verif_fmt {Verification method: %17s} 1150message cgd_verif_fmt {Verification method: %17s}
1151message lvm_disks {Disks in VG:} 1151message lvm_disks {Disks in VG:}
1152message lvm_menufmt { %-44s %20sM} 1152message lvm_menufmt { %-44s %20sM}
1153message lvm_err_menufmt { EMPTY VG!} 1153message lvm_err_menufmt { EMPTY VG!}
1154message lvm_disks_fmt {PV's: %34s} 1154message lvm_disks_fmt {PV's: %34s}
1155message lvm_name_fmt {Name: %34s} 1155message lvm_name_fmt {Name: %34s}
1156message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} 1156message lvm_maxlv_fmt {MaxLogicalVolumes: %20s}
1157message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} 1157message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s}
1158message lvm_extsiz_fmt {PhysicalExtentSize: %20s} 1158message lvm_extsiz_fmt {PhysicalExtentSize: %20s}
1159message lvm_name_ask {Name?} 1159message lvm_name_ask {Name?}
1160message lvm_maxlv_ask {MaxLogicalVolumes?} 1160message lvm_maxlv_ask {MaxLogicalVolumes?}
1161message lvm_maxpv_ask {MaxPhysicalVolumes?} 1161message lvm_maxpv_ask {MaxPhysicalVolumes?}
1162message lvm_extsiz_ask {PhysicalExtentSize (MB)?} 1162message lvm_extsiz_ask {PhysicalExtentSize (MB)?}
1163message lvmlv_menufmt { Logical volume %-35s %11uM} 1163message lvmlv_menufmt { Logical volume %-35s %11uM}
1164message lvmlv_name_fmt {Name: %34s} 1164message lvmlv_name_fmt {Name: %34s}
1165message lvmlv_size_fmt {Size: %33dM} 1165message lvmlv_size_fmt {Size: %33dM}
1166message lvmlv_ro_fmt {Read-only: %27s} 1166message lvmlv_ro_fmt {Read-only: %27s}
1167message lvmlv_cont_fmt {Contiguous: %27s} 1167message lvmlv_cont_fmt {Contiguous: %27s}
1168message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} 1168message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s}
1169message lvmlv_minor_fmt {Minor number: %26s} 1169message lvmlv_minor_fmt {Minor number: %26s}
1170message lvmlv_mirrors_fmt {Mirrors: %27d} 1170message lvmlv_mirrors_fmt {Mirrors: %27d}
1171message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} 1171message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s}
1172message lvmlv_pers_fmt {Persistent minor number: %14s} 1172message lvmlv_pers_fmt {Persistent minor number: %14s}
1173message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} 1173message lvmlv_readahsect_fmt {ReadAheadSectors: %18s}
1174message lvmlv_stripes_fmt {Stripes: %27s} 1174message lvmlv_stripes_fmt {Stripes: %27s}
1175message lvmlv_stripesiz_fmt {StripeSize: %27s} 1175message lvmlv_stripesiz_fmt {StripeSize: %27s}
1176message lvmlv_zero_fmt {Zeroing of the first KB: %13s} 1176message lvmlv_zero_fmt {Zeroing of the first KB: %13s}
1177message lvmlv_name_ask {Name?} 1177message lvmlv_name_ask {Name?}
1178message lvmlv_size_ask {Size (MB)?} 1178message lvmlv_size_ask {Size (MB)?}
1179message lvmlv_extnum_ask {LogicalExtentsNumber?} 1179message lvmlv_extnum_ask {LogicalExtentsNumber?}
1180message lvmlv_minor_ask {Minor number?} 1180message lvmlv_minor_ask {Minor number?}
1181message lvmlv_mirrors_ask {Mirrors?} 1181message lvmlv_mirrors_ask {Mirrors?}
1182message lvmlv_regsiz_ask {MirrorLogRegionSize?} 1182message lvmlv_regsiz_ask {MirrorLogRegionSize?}
1183message lvmlv_readahsect_ask {ReadAheadSectors?} 1183message lvmlv_readahsect_ask {ReadAheadSectors?}
1184message lvmlv_stripes_ask {Stripes?} 1184message lvmlv_stripes_ask {Stripes?}
1185 1185
1186message addusername {8 character username to add} 1186message addusername {8 character username to add}
1187message addusertowheel {Do you wish to add this user to group wheel?} 1187message addusertowheel {Do you wish to add this user to group wheel?}
1188 1188
1189message Delete_partition 1189message Delete_partition
1190{Delete partition} 1190{Delete partition}
1191 1191
 1192message No_filesystem_newfs
 1193{The selected partition does not seem to have a valid file system.
 1194Do you want to newfs (format) it?}
 1195
 1196message Auto_add_swap_part
 1197{A swap partition (named %s) seems to exist on %s.
 1198Do you want to use that?}
 1199

cvs diff -r1.14 -r1.15 src/usr.sbin/sysinst/disks.c (switch to unified diff)

--- src/usr.sbin/sysinst/disks.c 2018/05/01 09:01:45 1.14
+++ src/usr.sbin/sysinst/disks.c 2018/06/03 13:16:30 1.15
@@ -1,1491 +1,1693 @@ @@ -1,1491 +1,1693 @@
1/* $NetBSD: disks.c,v 1.14 2018/05/01 09:01:45 martin Exp $ */ 1/* $NetBSD: disks.c,v 1.15 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* disks.c -- routines to deal with finding disks and labeling disks. */ 35/* disks.c -- routines to deal with finding disks and labeling disks. */
36 36
37 37
38#include <errno.h> 38#include <errno.h>
39#include <stdio.h> 39#include <stdio.h>
40#include <stdlib.h> 40#include <stdlib.h>
41#include <unistd.h> 41#include <unistd.h>
42#include <fcntl.h> 42#include <fcntl.h>
43#include <util.h> 43#include <util.h>
44#include <uuid.h> 44#include <uuid.h>
45 45
46#include <sys/param.h> 46#include <sys/param.h>
47#include <sys/sysctl.h> 47#include <sys/sysctl.h>
48#include <sys/swap.h> 48#include <sys/swap.h>
49#include <ufs/ufs/dinode.h> 49#include <ufs/ufs/dinode.h>
50#include <ufs/ffs/fs.h> 50#include <ufs/ffs/fs.h>
51#define FSTYPENAMES 51#define FSTYPENAMES
52#include <sys/disklabel.h> 52#include <sys/disklabel.h>
53#include <sys/disklabel_gpt.h> 53#include <sys/disklabel_gpt.h>
54 54
55#include <dev/scsipi/scsipi_all.h> 55#include <dev/scsipi/scsipi_all.h>
56#include <sys/scsiio.h> 56#include <sys/scsiio.h>
57 57
58#include <dev/ata/atareg.h> 58#include <dev/ata/atareg.h>
59#include <sys/ataio.h> 59#include <sys/ataio.h>
60 60
61#include "defs.h" 61#include "defs.h"
62#include "md.h" 62#include "md.h"
63#include "msg_defs.h" 63#include "msg_defs.h"
64#include "menu_defs.h" 64#include "menu_defs.h"
65#include "txtwalk.h" 65#include "txtwalk.h"
66 66
67/* Disk descriptions */ 67/* Disk descriptions */
68struct disk_desc { 68struct disk_desc {
69 char dd_name[SSTRSIZE]; 69 char dd_name[SSTRSIZE];
70 char dd_descr[70]; 70 char dd_descr[70];
71 uint dd_no_mbr; 71 bool dd_no_mbr, dd_no_part;
72 uint dd_cyl; 72 uint dd_cyl;
73 uint dd_head; 73 uint dd_head;
74 uint dd_sec; 74 uint dd_sec;
75 uint dd_secsize; 75 uint dd_secsize;
76 uint dd_totsec; 76 uint dd_totsec;
77}; 77};
78 78
79/* gpt(8) use different filesystem names. 79/* gpt(8) use different filesystem names.
80 So, we cant use ./common/lib/libutil/getfstypename.c */ 80 So, we cant use ./common/lib/libutil/getfstypename.c */
81struct gptfs_t { 81struct gptfs_t {
82 const char *name; 82 const char *name;
83 int id; 83 int id;
84 uuid_t uuid; 84 uuid_t uuid;
85}; 85};
86static const struct gptfs_t gpt_filesystems[] = { 86static const struct gptfs_t gpt_filesystems[] = {
87 { "swap", FS_SWAP, GPT_ENT_TYPE_NETBSD_SWAP, }, 87 { "swap", FS_SWAP, GPT_ENT_TYPE_NETBSD_SWAP, },
88 { "ffs", FS_BSDFFS, GPT_ENT_TYPE_NETBSD_FFS, }, 88 { "ffs", FS_BSDFFS, GPT_ENT_TYPE_NETBSD_FFS, },
89 { "lfs", FS_BSDLFS, GPT_ENT_TYPE_NETBSD_LFS, }, 89 { "lfs", FS_BSDLFS, GPT_ENT_TYPE_NETBSD_LFS, },
90 { "linux", FS_EX2FS, GPT_ENT_TYPE_LINUX_DATA, }, 90 { "linux", FS_EX2FS, GPT_ENT_TYPE_LINUX_DATA, },
91 { "windows,", FS_MSDOS, GPT_ENT_TYPE_MS_BASIC_DATA, }, 91 { "windows,", FS_MSDOS, GPT_ENT_TYPE_MS_BASIC_DATA, },
92 { "hfs", FS_HFS, GPT_ENT_TYPE_APPLE_HFS, }, 92 { "hfs", FS_HFS, GPT_ENT_TYPE_APPLE_HFS, },
93 { "ufs", FS_OTHER, GPT_ENT_TYPE_APPLE_UFS, }, 93 { "ufs", FS_OTHER, GPT_ENT_TYPE_APPLE_UFS, },
94 { "ccd", FS_CCD, GPT_ENT_TYPE_NETBSD_CCD, }, 94 { "ccd", FS_CCD, GPT_ENT_TYPE_NETBSD_CCD, },
95 { "raid", FS_RAID, GPT_ENT_TYPE_NETBSD_RAIDFRAME, }, 95 { "raid", FS_RAID, GPT_ENT_TYPE_NETBSD_RAIDFRAME, },
96 { "cgd", FS_CGD, GPT_ENT_TYPE_NETBSD_CGD, }, 96 { "cgd", FS_CGD, GPT_ENT_TYPE_NETBSD_CGD, },
97 { "efi", FS_OTHER, GPT_ENT_TYPE_EFI, }, 97 { "efi", FS_OTHER, GPT_ENT_TYPE_EFI, },
98 { "bios", FS_OTHER, GPT_ENT_TYPE_BIOS, }, 98 { "bios", FS_OTHER, GPT_ENT_TYPE_BIOS, },
99 { NULL, -1, GPT_ENT_TYPE_UNUSED, }, 99 { NULL, -1, GPT_ENT_TYPE_UNUSED, },
100}; 100};
101 101
102/* Local prototypes */ 102/* Local prototypes */
103static int foundffs(struct data *, size_t); 103static int foundffs(struct data *, size_t);
104#ifdef USE_SYSVBFS 104#ifdef USE_SYSVBFS
105static int foundsysvbfs(struct data *, size_t); 105static int foundsysvbfs(struct data *, size_t);
106#endif 106#endif
107static int fsck_preen(const char *, int, const char *); 107static int fsck_preen(const char *, int, const char *, bool silent);
108static void fixsb(const char *, const char *, char); 108static void fixsb(const char *, const char *, char);
109static bool is_gpt(const char *); 109static bool is_gpt(const char *);
110static int incoregpt(pm_devs_t *, partinfo *); 110static int incoregpt(pm_devs_t *, partinfo *);
111 111
112#ifndef DISK_NAMES 112#ifndef DISK_NAMES
113#define DISK_NAMES "wd", "sd", "ld", "raid" 113#define DISK_NAMES "wd", "sd", "ld", "raid"
114#endif 114#endif
115 115
116static const char *disk_names[] = { DISK_NAMES, "vnd", "cgd", NULL }; 116static const char *disk_names[] = { DISK_NAMES,
 117 "vnd", "cgd", "dk:no_part", NULL };
117 118
118static bool tmpfs_on_var_shm(void); 119static bool tmpfs_on_var_shm(void);
119 120
120const char * 121const char *
121getfslabelname(uint8_t f) 122getfslabelname(uint8_t f)
122{ 123{
123 if (f >= __arraycount(fstypenames) || fstypenames[f] == NULL) 124 if (f >= __arraycount(fstypenames) || fstypenames[f] == NULL)
124 return "invalid"; 125 return "invalid";
125 return fstypenames[f]; 126 return fstypenames[f];
126} 127}
127 128
128/* 129/*
129 * Decide wether we want to mount a tmpfs on /var/shm: we do this always 130 * Decide wether we want to mount a tmpfs on /var/shm: we do this always
130 * when the machine has more than 16 MB of user memory. On smaller machines, 131 * when the machine has more than 16 MB of user memory. On smaller machines,
131 * shm_open() and friends will not perform well anyway. 132 * shm_open() and friends will not perform well anyway.
132 */ 133 */
133static bool 134static bool
134tmpfs_on_var_shm() 135tmpfs_on_var_shm()
135{ 136{
136 uint64_t ram; 137 uint64_t ram;
137 size_t len; 138 size_t len;
138 139
139 len = sizeof(ram); 140 len = sizeof(ram);
140 if (sysctlbyname("hw.usermem64", &ram, &len, NULL, 0)) 141 if (sysctlbyname("hw.usermem64", &ram, &len, NULL, 0))
141 return false; 142 return false;
142 143
143 return ram > 16UL*1024UL*1024UL; 144 return ram > 16UL*1024UL*1024UL;
144} 145}
145 146
146/* from src/sbin/atactl/atactl.c 147/* from src/sbin/atactl/atactl.c
147 * extract_string: copy a block of bytes out of ataparams and make 148 * extract_string: copy a block of bytes out of ataparams and make
148 * a proper string out of it, truncating trailing spaces and preserving 149 * a proper string out of it, truncating trailing spaces and preserving
149 * strict typing. And also, not doing unaligned accesses. 150 * strict typing. And also, not doing unaligned accesses.
150 */ 151 */
151static void 152static void
152ata_extract_string(char *buf, size_t bufmax, 153ata_extract_string(char *buf, size_t bufmax,
153 uint8_t *bytes, unsigned numbytes, 154 uint8_t *bytes, unsigned numbytes,
154 int needswap) 155 int needswap)
155{ 156{
156 unsigned i; 157 unsigned i;
157 size_t j; 158 size_t j;
158 unsigned char ch1, ch2; 159 unsigned char ch1, ch2;
159 160
160 for (i = 0, j = 0; i < numbytes; i += 2) { 161 for (i = 0, j = 0; i < numbytes; i += 2) {
161 ch1 = bytes[i]; 162 ch1 = bytes[i];
162 ch2 = bytes[i+1]; 163 ch2 = bytes[i+1];
163 if (needswap && j < bufmax-1) { 164 if (needswap && j < bufmax-1) {
164 buf[j++] = ch2; 165 buf[j++] = ch2;
165 } 166 }
166 if (j < bufmax-1) { 167 if (j < bufmax-1) {
167 buf[j++] = ch1; 168 buf[j++] = ch1;
168 } 169 }
169 if (!needswap && j < bufmax-1) { 170 if (!needswap && j < bufmax-1) {
170 buf[j++] = ch2; 171 buf[j++] = ch2;
171 } 172 }
172 } 173 }
173 while (j > 0 && buf[j-1] == ' ') { 174 while (j > 0 && buf[j-1] == ' ') {
174 j--; 175 j--;
175 } 176 }
176 buf[j] = '\0'; 177 buf[j] = '\0';
177} 178}
178 179
179/* 180/*
180 * from src/sbin/scsictl/scsi_subr.c 181 * from src/sbin/scsictl/scsi_subr.c
181 */ 182 */
182#define STRVIS_ISWHITE(x) ((x) == ' ' || (x) == '\0' || (x) == (u_char)'\377') 183#define STRVIS_ISWHITE(x) ((x) == ' ' || (x) == '\0' || (x) == (u_char)'\377')
183 184
184static void 185static void
185scsi_strvis(char *sdst, size_t dlen, const char *ssrc, size_t slen) 186scsi_strvis(char *sdst, size_t dlen, const char *ssrc, size_t slen)
186{ 187{
187 u_char *dst = (u_char *)sdst; 188 u_char *dst = (u_char *)sdst;
188 const u_char *src = (const u_char *)ssrc; 189 const u_char *src = (const u_char *)ssrc;
189 190
190 /* Trim leading and trailing blanks and NULs. */ 191 /* Trim leading and trailing blanks and NULs. */
191 while (slen > 0 && STRVIS_ISWHITE(src[0])) 192 while (slen > 0 && STRVIS_ISWHITE(src[0]))
192 ++src, --slen; 193 ++src, --slen;
193 while (slen > 0 && STRVIS_ISWHITE(src[slen - 1])) 194 while (slen > 0 && STRVIS_ISWHITE(src[slen - 1]))
194 --slen; 195 --slen;
195 196
196 while (slen > 0) { 197 while (slen > 0) {
197 if (*src < 0x20 || *src >= 0x80) { 198 if (*src < 0x20 || *src >= 0x80) {
198 /* non-printable characters */ 199 /* non-printable characters */
199 dlen -= 4; 200 dlen -= 4;
200 if (dlen < 1) 201 if (dlen < 1)
201 break; 202 break;
202 *dst++ = '\\'; 203 *dst++ = '\\';
203 *dst++ = ((*src & 0300) >> 6) + '0'; 204 *dst++ = ((*src & 0300) >> 6) + '0';
204 *dst++ = ((*src & 0070) >> 3) + '0'; 205 *dst++ = ((*src & 0070) >> 3) + '0';
205 *dst++ = ((*src & 0007) >> 0) + '0'; 206 *dst++ = ((*src & 0007) >> 0) + '0';
206 } else if (*src == '\\') { 207 } else if (*src == '\\') {
207 /* quote characters */ 208 /* quote characters */
208 dlen -= 2; 209 dlen -= 2;
209 if (dlen < 1) 210 if (dlen < 1)
210 break; 211 break;
211 *dst++ = '\\'; 212 *dst++ = '\\';
212 *dst++ = '\\'; 213 *dst++ = '\\';
213 } else { 214 } else {
214 /* normal characters */ 215 /* normal characters */
215 if (--dlen < 1) 216 if (--dlen < 1)
216 break; 217 break;
217 *dst++ = *src; 218 *dst++ = *src;
218 } 219 }
219 ++src, --slen; 220 ++src, --slen;
220 } 221 }
221 222
222 *dst++ = 0; 223 *dst++ = 0;
223} 224}
224 225
225 226
226static int 227static int
227get_descr_scsi(struct disk_desc *dd, int fd) 228get_descr_scsi(struct disk_desc *dd, int fd)
228{ 229{
229 struct scsipi_inquiry_data inqbuf; 230 struct scsipi_inquiry_data inqbuf;
230 struct scsipi_inquiry cmd; 231 struct scsipi_inquiry cmd;
231 scsireq_t req; 232 scsireq_t req;
232 /* x4 in case every character is escaped, +1 for NUL. */ 233 /* x4 in case every character is escaped, +1 for NUL. */
233 char vendor[(sizeof(inqbuf.vendor) * 4) + 1], 234 char vendor[(sizeof(inqbuf.vendor) * 4) + 1],
234 product[(sizeof(inqbuf.product) * 4) + 1], 235 product[(sizeof(inqbuf.product) * 4) + 1],
235 revision[(sizeof(inqbuf.revision) * 4) + 1]; 236 revision[(sizeof(inqbuf.revision) * 4) + 1];
236 char size[5]; 237 char size[5];
237 int error; 238 int error;
238 239
239 memset(&inqbuf, 0, sizeof(inqbuf)); 240 memset(&inqbuf, 0, sizeof(inqbuf));
240 memset(&cmd, 0, sizeof(cmd)); 241 memset(&cmd, 0, sizeof(cmd));
241 memset(&req, 0, sizeof(req)); 242 memset(&req, 0, sizeof(req));
242 243
243 cmd.opcode = INQUIRY; 244 cmd.opcode = INQUIRY;
244 cmd.length = sizeof(inqbuf); 245 cmd.length = sizeof(inqbuf);
245 memcpy(req.cmd, &cmd, sizeof(cmd)); 246 memcpy(req.cmd, &cmd, sizeof(cmd));
246 req.cmdlen = sizeof(cmd); 247 req.cmdlen = sizeof(cmd);
247 req.databuf = &inqbuf; 248 req.databuf = &inqbuf;
248 req.datalen = sizeof(inqbuf); 249 req.datalen = sizeof(inqbuf);
249 req.timeout = 10000; 250 req.timeout = 10000;
250 req.flags = SCCMD_READ; 251 req.flags = SCCMD_READ;
251 req.senselen = SENSEBUFLEN; 252 req.senselen = SENSEBUFLEN;
252 253
253 error = ioctl(fd, SCIOCCOMMAND, &req); 254 error = ioctl(fd, SCIOCCOMMAND, &req);
254 if (error == -1 || req.retsts != SCCMD_OK) 255 if (error == -1 || req.retsts != SCCMD_OK)
255 return 0; 256 return 0;
256 257
257 scsi_strvis(vendor, sizeof(vendor), inqbuf.vendor, 258 scsi_strvis(vendor, sizeof(vendor), inqbuf.vendor,
258 sizeof(inqbuf.vendor)); 259 sizeof(inqbuf.vendor));
259 scsi_strvis(product, sizeof(product), inqbuf.product, 260 scsi_strvis(product, sizeof(product), inqbuf.product,
260 sizeof(inqbuf.product)); 261 sizeof(inqbuf.product));
261 scsi_strvis(revision, sizeof(revision), inqbuf.revision, 262 scsi_strvis(revision, sizeof(revision), inqbuf.revision,
262 sizeof(inqbuf.revision)); 263 sizeof(inqbuf.revision));
263 264
264 humanize_number(size, sizeof(size), 265 humanize_number(size, sizeof(size),
265 (uint64_t)dd->dd_secsize * (uint64_t)dd->dd_totsec, 266 (uint64_t)dd->dd_secsize * (uint64_t)dd->dd_totsec,
266 "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); 267 "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
267 268
268 snprintf(dd->dd_descr, sizeof(dd->dd_descr), 269 snprintf(dd->dd_descr, sizeof(dd->dd_descr),
269 "%s (%s, %s %s)", 270 "%s (%s, %s %s)",
270 dd->dd_name, size, vendor, product); 271 dd->dd_name, size, vendor, product);
271 272
272 return 1; 273 return 1;
273} 274}
274 275
275static int 276static int
276get_descr_ata(struct disk_desc *dd, int fd) 277get_descr_ata(struct disk_desc *dd, int fd)
277{ 278{
278 struct atareq req; 279 struct atareq req;
279 static union { 280 static union {
280 unsigned char inbuf[DEV_BSIZE]; 281 unsigned char inbuf[DEV_BSIZE];
281 struct ataparams inqbuf; 282 struct ataparams inqbuf;
282 } inbuf; 283 } inbuf;
283 struct ataparams *inqbuf = &inbuf.inqbuf; 284 struct ataparams *inqbuf = &inbuf.inqbuf;
284 char model[sizeof(inqbuf->atap_model)+1]; 285 char model[sizeof(inqbuf->atap_model)+1];
285 char size[5]; 286 char size[5];
286 int error, needswap = 0; 287 int error, needswap = 0;
287 288
288 memset(&inbuf, 0, sizeof(inbuf)); 289 memset(&inbuf, 0, sizeof(inbuf));
289 memset(&req, 0, sizeof(req)); 290 memset(&req, 0, sizeof(req));
290 291
291 req.flags = ATACMD_READ; 292 req.flags = ATACMD_READ;
292 req.command = WDCC_IDENTIFY; 293 req.command = WDCC_IDENTIFY;
293 req.databuf = (void *)&inbuf; 294 req.databuf = (void *)&inbuf;
294 req.datalen = sizeof(inbuf); 295 req.datalen = sizeof(inbuf);
295 req.timeout = 1000; 296 req.timeout = 1000;
296 297
297 error = ioctl(fd, ATAIOCCOMMAND, &req); 298 error = ioctl(fd, ATAIOCCOMMAND, &req);
298 if (error == -1 || req.retsts != ATACMD_OK) 299 if (error == -1 || req.retsts != ATACMD_OK)
299 return 0; 300 return 0;
300 301
301#if BYTE_ORDER == LITTLE_ENDIAN 302#if BYTE_ORDER == LITTLE_ENDIAN
302 /* 303 /*
303 * On little endian machines, we need to shuffle the string 304 * On little endian machines, we need to shuffle the string
304 * byte order. However, we don't have to do this for NEC or 305 * byte order. However, we don't have to do this for NEC or
305 * Mitsumi ATAPI devices 306 * Mitsumi ATAPI devices
306 */ 307 */
307 308
308 if (!(inqbuf->atap_config != WDC_CFG_CFA_MAGIC && 309 if (!(inqbuf->atap_config != WDC_CFG_CFA_MAGIC &&
309 (inqbuf->atap_config & WDC_CFG_ATAPI) && 310 (inqbuf->atap_config & WDC_CFG_ATAPI) &&
310 ((inqbuf->atap_model[0] == 'N' && 311 ((inqbuf->atap_model[0] == 'N' &&
311 inqbuf->atap_model[1] == 'E') || 312 inqbuf->atap_model[1] == 'E') ||
312 (inqbuf->atap_model[0] == 'F' && 313 (inqbuf->atap_model[0] == 'F' &&
313 inqbuf->atap_model[1] == 'X')))) { 314 inqbuf->atap_model[1] == 'X')))) {
314 needswap = 1; 315 needswap = 1;
315 } 316 }
316#endif 317#endif
317 318
318 ata_extract_string(model, sizeof(model), 319 ata_extract_string(model, sizeof(model),
319 inqbuf->atap_model, sizeof(inqbuf->atap_model), needswap); 320 inqbuf->atap_model, sizeof(inqbuf->atap_model), needswap);
320 humanize_number(size, sizeof(size), 321 humanize_number(size, sizeof(size),
321 (uint64_t)dd->dd_secsize * (uint64_t)dd->dd_totsec, 322 (uint64_t)dd->dd_secsize * (uint64_t)dd->dd_totsec,
322 "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); 323 "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
323 324
324 snprintf(dd->dd_descr, sizeof(dd->dd_descr), "%s (%s, %s)", 325 snprintf(dd->dd_descr, sizeof(dd->dd_descr), "%s (%s, %s)",
325 dd->dd_name, size, model); 326 dd->dd_name, size, model);
326 327
327 return 1; 328 return 1;
328} 329}
329 330
330static void 331static void
331get_descr(struct disk_desc *dd) 332get_descr(struct disk_desc *dd)
332{ 333{
333 char diskpath[MAXPATHLEN]; 334 char diskpath[MAXPATHLEN];
334 int fd = -1; 335 int fd = -1;
335 336
336 fd = opendisk(dd->dd_name, O_RDONLY, diskpath, sizeof(diskpath), 0); 337 fd = opendisk(dd->dd_name, O_RDONLY, diskpath, sizeof(diskpath), 0);
337 if (fd < 0) 338 if (fd < 0)
338 goto done; 339 goto done;
339 340
340 dd->dd_descr[0] = '\0'; 341 dd->dd_descr[0] = '\0';
341 342
342 /* try ATA */ 343 /* try ATA */
343 if (get_descr_ata(dd, fd)) 344 if (get_descr_ata(dd, fd))
344 goto done; 345 goto done;
345 /* try SCSI */ 346 /* try SCSI */
346 if (get_descr_scsi(dd, fd)) 347 if (get_descr_scsi(dd, fd))
347 goto done; 348 goto done;
348 /* XXX: get description from raid, cgd, vnd... */ 349 /* XXX: get description from raid, cgd, vnd... */
349 350
350done: 351done:
351 if (fd >= 0) 352 if (fd >= 0)
352 close(fd); 353 close(fd);
353 if (strlen(dd->dd_descr) == 0) 354 if (strlen(dd->dd_descr) == 0)
354 strcpy(dd->dd_descr, dd->dd_name); 355 strcpy(dd->dd_descr, dd->dd_name);
355} 356}
356 357
357/* disknames - contains device names without partition letters 358/* disknames - contains device names without partition letters
358 * cdrom_devices - contains devices including partition letters 359 * cdrom_devices - contains devices including partition letters
359 * returns the first entry in hw.disknames matching a cdrom_device, or 360 * returns the first entry in hw.disknames matching a cdrom_device, or
360 * first entry on error or no match 361 * first entry on error or no match
361 */ 362 */
362const char * 363const char *
363get_default_cdrom(void) 364get_default_cdrom(void)
364{ 365{
365 static const char *cdrom_devices[] = { CD_NAMES, 0}; 366 static const char *cdrom_devices[] = { CD_NAMES, 0};
366 static const char mib_name[] = "hw.disknames"; 367 static const char mib_name[] = "hw.disknames";
367 size_t len; 368 size_t len;
368 char *disknames; 369 char *disknames;
369 char *last; 370 char *last;
370 char *name; 371 char *name;
371 const char **arg; 372 const char **arg;
372 const char *cd_dev; 373 const char *cd_dev;
373 374
374 /* On error just use first entry in cdrom_devices */ 375 /* On error just use first entry in cdrom_devices */
375 if (sysctlbyname(mib_name, NULL, &len, NULL, 0) == -1) 376 if (sysctlbyname(mib_name, NULL, &len, NULL, 0) == -1)
376 return cdrom_devices[0]; 377 return cdrom_devices[0];
377 if ((disknames = malloc(len + 2)) == 0) /* skip on malloc fail */ 378 if ((disknames = malloc(len + 2)) == 0) /* skip on malloc fail */
378 return cdrom_devices[0]; 379 return cdrom_devices[0];
379 380
380 (void)sysctlbyname(mib_name, disknames, &len, NULL, 0); 381 (void)sysctlbyname(mib_name, disknames, &len, NULL, 0);
381 for ((name = strtok_r(disknames, " ", &last)); name; 382 for ((name = strtok_r(disknames, " ", &last)); name;
382 (name = strtok_r(NULL, " ", &last))) { 383 (name = strtok_r(NULL, " ", &last))) {
383 for (arg = cdrom_devices; *arg; ++arg) { 384 for (arg = cdrom_devices; *arg; ++arg) {
384 cd_dev = *arg; 385 cd_dev = *arg;
385 /* skip unit and partition */ 386 /* skip unit and partition */
386 if (strncmp(cd_dev, name, strlen(cd_dev) - 2) != 0) 387 if (strncmp(cd_dev, name, strlen(cd_dev) - 2) != 0)
387 continue; 388 continue;
388 if (name != disknames) 389 if (name != disknames)
389 strcpy(disknames, name); 390 strcpy(disknames, name);
390 strcat(disknames, "a"); 391 strcat(disknames, "a");
391 /* XXX: leaks, but so what? */ 392 /* XXX: leaks, but so what? */
392 return disknames; 393 return disknames;
393 } 394 }
394 } 395 }
395 free(disknames); 396 free(disknames);
396 return cdrom_devices[0]; 397 return cdrom_devices[0];
397} 398}
398 399
 400static void
 401get_wedge_descr(struct disk_desc *dd)
 402{
 403 struct dkwedge_info dkw;
 404 char buf[MAXPATHLEN];
 405 int fd;
 406
 407 fd = opendisk(dd->dd_name, O_RDONLY, buf, sizeof(buf), 0);
 408 if (fd == -1)
 409 return;
 410
 411 if (ioctl(fd, DIOCGWEDGEINFO, &dkw) == 0) {
 412 fprintf(stderr, "device %s\n", dd->dd_name);
 413 sprintf(dd->dd_descr, "%s (%s@%s)",
 414 dkw.dkw_wname, dkw.dkw_devname, dkw.dkw_parent);
 415 }
 416 close(fd);
 417}
 418
 419static bool
 420get_name_and_parent(const char *dev, char *name, char *parent)
 421{
 422 struct dkwedge_info dkw;
 423 char buf[MAXPATHLEN];
 424 int fd;
 425 bool res = false;
 426
 427 fd = opendisk(dev, O_RDONLY, buf, sizeof(buf), 0);
 428 if (fd == -1)
 429 return false;
 430
 431 if (ioctl(fd, DIOCGWEDGEINFO, &dkw) == 0) {
 432 strcpy(name, (const char *)dkw.dkw_wname);
 433 strcpy(parent, dkw.dkw_parent);
 434 res = true;
 435 }
 436 close(fd);
 437 return res;
 438}
 439
 440static bool
 441find_swap_part_on(const char *dev, char *swap_name)
 442{
 443 struct dkwedge_info *dkw;
 444 struct dkwedge_list dkwl;
 445 char buf[MAXPATHLEN];
 446 size_t bufsize;
 447 int fd;
 448 u_int i;
 449 bool res = false;
 450
 451 dkw = NULL;
 452 dkwl.dkwl_buf = dkw;
 453 dkwl.dkwl_bufsize = 0;
 454
 455 fd = opendisk(dev, O_RDONLY, buf, sizeof(buf), 0);
 456 if (fd == -1)
 457 return false;
 458
 459 for (;;) {
 460 if (ioctl(fd, DIOCLWEDGES, &dkwl) == -1) {
 461 dkwl.dkwl_ncopied = 0;
 462 break;
 463 }
 464 if (dkwl.dkwl_nwedges == dkwl.dkwl_ncopied)
 465 break;
 466 bufsize = dkwl.dkwl_nwedges * sizeof(*dkw);
 467 if (dkwl.dkwl_bufsize < bufsize) {
 468 dkw = realloc(dkwl.dkwl_buf, bufsize);
 469 if (dkw == NULL)
 470 break;
 471 dkwl.dkwl_buf = dkw;
 472 dkwl.dkwl_bufsize = bufsize;
 473 }
 474 }
 475
 476 for (i = 0; i < dkwl.dkwl_nwedges; i++) {
 477 res = strcmp(dkw[i].dkw_ptype, DKW_PTYPE_SWAP) == 0;
 478 if (res) {
 479 strcpy(swap_name, (const char*)dkw[i].dkw_wname);
 480 break;
 481 }
 482 }
 483
 484 close(fd);
 485
 486 return res;
 487}
 488
 489static bool
 490is_ffs_wedge(const char *dev)
 491{
 492 struct dkwedge_info dkw;
 493 char buf[MAXPATHLEN];
 494 int fd;
 495 bool res;
 496
 497 fd = opendisk(dev, O_RDONLY, buf, sizeof(buf), 0);
 498 if (fd == -1)
 499 return false;
 500
 501 if (ioctl(fd, DIOCGWEDGEINFO, &dkw) == -1)
 502 return false;
 503
 504 res = strcmp(dkw.dkw_ptype, DKW_PTYPE_FFS) == 0;
 505 close(fd);
 506
 507 return res;
 508}
 509
399static int 510static int
400get_disks(struct disk_desc *dd) 511get_disks(struct disk_desc *dd, bool with_non_partitionable)
401{ 512{
402 const char **xd; 513 const char **xd;
403 char *cp; 514 char *cp;
404 struct disklabel l; 515 struct disklabel l;
405 int i; 516 int i;
406 int numdisks; 517 int numdisks;
407 518
408 /* initialize */ 519 /* initialize */
409 numdisks = 0; 520 numdisks = 0;
410 521
411 for (xd = disk_names; *xd != NULL; xd++) { 522 for (xd = disk_names; *xd != NULL; xd++) {
412 for (i = 0; i < MAX_DISKS; i++) { 523 for (i = 0; i < MAX_DISKS; i++) {
413 strlcpy(dd->dd_name, *xd, sizeof dd->dd_name - 2); 524 strlcpy(dd->dd_name, *xd, sizeof dd->dd_name - 2);
414 cp = strchr(dd->dd_name, ':'); 525 cp = strchr(dd->dd_name, ':');
415 if (cp != NULL) 526 if (cp != NULL) {
416 dd->dd_no_mbr = !strcmp(cp, ":no_mbr"); 527 dd->dd_no_mbr = !strcmp(cp, ":no_mbr");
417 else { 528 dd->dd_no_part = !strcmp(cp, ":no_part");
418 dd->dd_no_mbr = 0; 529 } else {
 530 dd->dd_no_mbr = false;
 531 dd->dd_no_part = false;
419 cp = strchr(dd->dd_name, 0); 532 cp = strchr(dd->dd_name, 0);
420 } 533 }
 534 if (dd->dd_no_part && !with_non_partitionable)
 535 continue;
421 536
422 snprintf(cp, 2 + 1, "%d", i); 537 snprintf(cp, 2 + 1, "%d", i);
423 if (!get_geom(dd->dd_name, &l)) { 538 if (!get_geom(dd->dd_name, &l)) {
424 if (errno == ENOENT) 539 if (errno == ENOENT)
425 break; 540 break;
426 continue; 541 if (errno != ENOTTY || !dd->dd_no_part)
 542 /*
 543 * Allow plain partitions,
 544 * like already existing wedges
 545 * (like dk0) if marked as
 546 * non-partitioning device.
 547 * For all other cases, continue
 548 * with the next disk.
 549 */
 550 continue;
 551 if (!is_ffs_wedge(dd->dd_name))
 552 continue;
427 } 553 }
428 554
429 /* 555 /*
430 * Exclude a disk mounted as root partition, 556 * Exclude a disk mounted as root partition,
431 * in case of install-image on a USB memstick. 557 * in case of install-image on a USB memstick.
432 */ 558 */
433 if (is_active_rootpart(dd->dd_name, 0)) 559 if (is_active_rootpart(dd->dd_name, 0))
434 continue; 560 continue;
435 561
436 dd->dd_cyl = l.d_ncylinders; 562 if (!dd->dd_no_part) {
437 dd->dd_head = l.d_ntracks; 563 dd->dd_cyl = l.d_ncylinders;
438 dd->dd_sec = l.d_nsectors; 564 dd->dd_head = l.d_ntracks;
439 dd->dd_secsize = l.d_secsize; 565 dd->dd_sec = l.d_nsectors;
440 dd->dd_totsec = l.d_secperunit; 566 dd->dd_secsize = l.d_secsize;
441 get_descr(dd); 567 dd->dd_totsec = l.d_secperunit;
 568 }
 569 if (dd->dd_no_part)
 570 get_wedge_descr(dd);
 571 else
 572 get_descr(dd);
442 dd++; 573 dd++;
443 numdisks++; 574 numdisks++;
444 if (numdisks >= MAX_DISKS) 575 if (numdisks >= MAX_DISKS)
445 return numdisks; 576 return numdisks;
446 } 577 }
447 } 578 }
448 return numdisks; 579 return numdisks;
449} 580}
450 581
451int 582int
452find_disks(const char *doingwhat) 583find_disks(const char *doingwhat)
453{ 584{
454 struct disk_desc disks[MAX_DISKS]; 585 struct disk_desc disks[MAX_DISKS];
455 menu_ent dsk_menu[nelem(disks) + 1]; // + 1 for extended partitioning entry 586 menu_ent dsk_menu[nelem(disks) + 1]; // + 1 for extended partitioning entry
456 struct disk_desc *disk; 587 struct disk_desc *disk;
457 int i, already_found; 588 int i = 0, skipped = 0;
458 int numdisks, selected_disk = -1; 589 int already_found, numdisks, selected_disk = -1;
459 int menu_no; 590 int menu_no;
460 pm_devs_t *pm_i, *pm_last = NULL; 591 pm_devs_t *pm_i, *pm_last = NULL;
461 592
462 /* Find disks. */ 593 /* Find disks. */
463 numdisks = get_disks(disks); 594 numdisks = get_disks(disks, partman_go <= 0);
464 595
465 /* need a redraw here, kernel messages hose everything */ 596 /* need a redraw here, kernel messages hose everything */
466 touchwin(stdscr); 597 touchwin(stdscr);
467 refresh(); 598 refresh();
468 /* Kill typeahead, it won't be what the user had in mind */ 599 /* Kill typeahead, it won't be what the user had in mind */
469 fpurge(stdin); 600 fpurge(stdin);
470 601
471 /* 602 /*
472 * partman_go: <0 - we want to see menu with extended partitioning 603 * partman_go: <0 - we want to see menu with extended partitioning
473 * ==0 - we want to see simple select disk menu 604 * ==0 - we want to see simple select disk menu
474 * >0 - we do not want to see any menus, just detect 605 * >0 - we do not want to see any menus, just detect
475 * all disks 606 * all disks
476 */ 607 */
477 if (partman_go <= 0) { 608 if (partman_go <= 0) {
478 if (numdisks == 0) { 609 if (numdisks == 0) {
479 /* No disks found! */ 610 /* No disks found! */
480 msg_display(MSG_nodisk); 611 msg_display(MSG_nodisk);
481 process_menu(MENU_ok, NULL); 612 process_menu(MENU_ok, NULL);
482 /*endwin();*/ 613 /*endwin();*/
483 return -1; 614 return -1;
484 } else { 615 } else {
485 /* One or more disks found! */ 616 /* One or more disks found! */
486 for (i = 0; i < numdisks; i++) { 617 for (i = 0; i < numdisks; i++) {
487 dsk_menu[i].opt_name = disks[i].dd_descr; 618 dsk_menu[i].opt_name =
 619 disks[i].dd_descr;
488 dsk_menu[i].opt_menu = OPT_NOMENU; 620 dsk_menu[i].opt_menu = OPT_NOMENU;
489 dsk_menu[i].opt_flags = OPT_EXIT; 621 dsk_menu[i].opt_flags = OPT_EXIT;
490 dsk_menu[i].opt_action = set_menu_select; 622 dsk_menu[i].opt_action = set_menu_select;
491 } 623 }
492 if (partman_go < 0) { 624 if (partman_go < 0) {
493 dsk_menu[i].opt_name = MSG_partman; 625 dsk_menu[i].opt_name = MSG_partman;
494 dsk_menu[i].opt_menu = OPT_NOMENU; 626 dsk_menu[i].opt_menu = OPT_NOMENU;
495 dsk_menu[i].opt_flags = OPT_EXIT; 627 dsk_menu[i].opt_flags = OPT_EXIT;
496 dsk_menu[i].opt_action = set_menu_select; 628 dsk_menu[i].opt_action = set_menu_select;
497 } 629 }
498 menu_no = new_menu(MSG_Available_disks, 630 menu_no = new_menu(MSG_Available_disks,
499 dsk_menu, numdisks + ((partman_go<0)?1:0), -1, 4, 0, 0, MC_SCROLL, 631 dsk_menu, numdisks
 632 + ((partman_go<0)?1:0), -1,
 633 4, 0, 0, MC_SCROLL,
500 NULL, NULL, NULL, NULL, NULL); 634 NULL, NULL, NULL, NULL, NULL);
501 if (menu_no == -1) 635 if (menu_no == -1)
502 return -1; 636 return -1;
503 msg_display(MSG_ask_disk, doingwhat); 637 msg_display(MSG_ask_disk, doingwhat);
504 process_menu(menu_no, &selected_disk); 638 process_menu(menu_no, &selected_disk);
505 free_menu(menu_no); 639 free_menu(menu_no);
506 } 640 }
507 if (partman_go < 0 && selected_disk == numdisks) { 641 if (partman_go < 0 && selected_disk == numdisks) {
508 partman_go = 1; 642 partman_go = 1;
509 return -2; 643 return -2;
510 } else 644 } else
511 partman_go = 0; 645 partman_go = 0;
512 if (selected_disk < 0 || selected_disk >= numdisks) 646 if (selected_disk < 0 || selected_disk >= numdisks)
513 return -1; 647 return -1;
514 } 648 }
515 649
516 /* Fill pm struct with device(s) info */ 650 /* Fill pm struct with device(s) info */
517 for (i = 0; i < numdisks; i++) { 651 for (i = 0; i < numdisks; i++) {
518 if (! partman_go) 652 if (! partman_go)
519 disk = disks + selected_disk; 653 disk = disks + selected_disk;
520 else { 654 else {
521 disk = disks + i; 655 disk = disks + i;
522 already_found = 0; 656 already_found = 0;
523 SLIST_FOREACH(pm_i, &pm_head, l) { 657 SLIST_FOREACH(pm_i, &pm_head, l) {
524 pm_last = pm_i; 658 pm_last = pm_i;
525 if (!already_found && 659 if (!already_found &&
526 strcmp(pm_i->diskdev, disk->dd_name) == 0) { 660 strcmp(pm_i->diskdev, disk->dd_name) == 0) {
527 pm_i->found = 1; 661 pm_i->found = 1;
528 break; 662 break;
529 } 663 }
530 } 664 }
531 if (pm_i != NULL && pm_i->found) 665 if (pm_i != NULL && pm_i->found)
532 /* We already added this device, skipping */ 666 /* We already added this device, skipping */
533 continue; 667 continue;
534 } 668 }
535 pm = pm_new; 669 pm = pm_new;
536 pm->found = 1; 670 pm->found = 1;
537 pm->bootable = 0; 671 pm->bootable = 0;
538 pm->pi.menu_no = -1; 672 pm->pi.menu_no = -1;
539 pm->disktype = "unknown"; 673 pm->disktype = "unknown";
540 pm->doessf = ""; 674 pm->doessf = "";
541 strlcpy(pm->diskdev, disk->dd_name, sizeof pm->diskdev); 675 strlcpy(pm->diskdev, disk->dd_name, sizeof pm->diskdev);
542 strlcpy(pm->diskdev_descr, disk->dd_descr, sizeof pm->diskdev_descr); 676 strlcpy(pm->diskdev_descr, disk->dd_descr, sizeof pm->diskdev_descr);
543 /* Use as a default disk if the user has the sets on a local disk */ 677 /* Use as a default disk if the user has the sets on a local disk */
544 strlcpy(localfs_dev, disk->dd_name, sizeof localfs_dev); 678 strlcpy(localfs_dev, disk->dd_name, sizeof localfs_dev);
545 679
546 pm->gpt = is_gpt(pm->diskdev); 680 pm->gpt = is_gpt(pm->diskdev);
547 pm->no_mbr = disk->dd_no_mbr || pm->gpt; 681 pm->no_mbr = disk->dd_no_mbr || pm->gpt;
548 pm->sectorsize = disk->dd_secsize; 682 pm->no_part = disk->dd_no_part;
549 pm->dlcyl = disk->dd_cyl; 683 if (!pm->no_part) {
550 pm->dlhead = disk->dd_head; 684 pm->sectorsize = disk->dd_secsize;
551 pm->dlsec = disk->dd_sec; 685 pm->dlcyl = disk->dd_cyl;
552 pm->dlsize = disk->dd_totsec; 686 pm->dlhead = disk->dd_head;
553 if (pm->dlsize == 0) 687 pm->dlsec = disk->dd_sec;
554 pm->dlsize = disk->dd_cyl * disk->dd_head * disk->dd_sec; 688 pm->dlsize = disk->dd_totsec;
555 if (pm->dlsize > UINT32_MAX && ! partman_go) { 689 if (pm->dlsize == 0)
556 if (logfp) 690 pm->dlsize = disk->dd_cyl * disk->dd_head * disk->dd_sec;
557 fprintf(logfp, "Cannot process disk %s: too big size (%d)\n", 691 if (pm->dlsize > UINT32_MAX && ! partman_go) {
558 pm->diskdev, (int)pm->dlsize); 692 if (logfp)
559 msg_display(MSG_toobigdisklabel); 693 fprintf(logfp, "Cannot process disk %s: too big size (%d)\n",
560 process_menu(MENU_ok, NULL); 694 pm->diskdev, (int)pm->dlsize);
561 return -1; 695 msg_display(MSG_toobigdisklabel);
 696 process_menu(MENU_ok, NULL);
 697 return -1;
 698 }
 699 } else {
 700 pm->sectorsize = 0;
 701 pm->dlcyl = 0;
 702 pm->dlhead = 0;
 703 pm->dlsec = 0;
 704 pm->dlsize = 0;
 705 pm->rootpart = -1;
 706 pm->no_mbr = 1;
 707 memset(&pm->bsdlabel, 0, sizeof(pm->bsdlabel));
562 } 708 }
563 pm->dlcylsize = pm->dlhead * pm->dlsec; 709 pm->dlcylsize = pm->dlhead * pm->dlsec;
564 710
565 label_read(); 711 label_read();
566 if (partman_go) { 712 if (partman_go) {
567 pm_getrefdev(pm_new); 713 pm_getrefdev(pm_new);
568 if (SLIST_EMPTY(&pm_head) || pm_last == NULL) 714 if (SLIST_EMPTY(&pm_head) || pm_last == NULL)
569 SLIST_INSERT_HEAD(&pm_head, pm_new, l); 715 SLIST_INSERT_HEAD(&pm_head, pm_new, l);
570 else 716 else
571 SLIST_INSERT_AFTER(pm_last, pm_new, l); 717 SLIST_INSERT_AFTER(pm_last, pm_new, l);
572 pm_new = malloc(sizeof (pm_devs_t)); 718 pm_new = malloc(sizeof (pm_devs_t));
573 memset(pm_new, 0, sizeof *pm_new); 719 memset(pm_new, 0, sizeof *pm_new);
574 } else 720 } else
575 /* We is not in partman and do not want to process all devices, exit */ 721 /* We is not in partman and do not want to process all devices, exit */
576 break; 722 break;
577 } 723 }
578 724
579 return numdisks; 725 return numdisks-skipped;
580} 726}
581 727
582 728
583void 729void
584label_read(void) 730label_read(void)
585{ 731{
 732
 733 if (pm->no_part)
 734 return;
 735
586 check_available_binaries(); 736 check_available_binaries();
587 737
588 /* Get existing/default label */ 738 /* Get existing/default label */
589 memset(&pm->oldlabel, 0, sizeof pm->oldlabel); 739 memset(&pm->oldlabel, 0, sizeof pm->oldlabel);
590 if (!have_gpt || !pm->gpt) 740 if (!have_gpt || !pm->gpt)
591 incorelabel(pm->diskdev, pm->oldlabel); 741 incorelabel(pm->diskdev, pm->oldlabel);
592 else 742 else
593 incoregpt(pm, pm->oldlabel); 743 incoregpt(pm, pm->oldlabel);
594 /* Set 'target' label to current label in case we don't change it */ 744 /* Set 'target' label to current label in case we don't change it */
595 memcpy(&pm->bsdlabel, &pm->oldlabel, sizeof pm->bsdlabel); 745 memcpy(&pm->bsdlabel, &pm->oldlabel, sizeof pm->bsdlabel);
596#ifndef NO_DISKLABEL 746#ifndef NO_DISKLABEL
597 if (! pm->gpt) 747 if (! pm->gpt)
598 savenewlabel(pm->oldlabel, getmaxpartitions()); 748 savenewlabel(pm->oldlabel, getmaxpartitions());
599#endif 749#endif
600} 750}
601 751
602void 752void
603fmt_fspart(menudesc *m, int ptn, void *arg) 753fmt_fspart(menudesc *m, int ptn, void *arg)
604{ 754{
605 unsigned int poffset, psize, pend; 755 unsigned int poffset, psize, pend;
606 const char *desc; 756 const char *desc;
607 static const char *Yes; 757 static const char *Yes;
608 partinfo *p = pm->bsdlabel + ptn; 758 partinfo *p = pm->bsdlabel + ptn;
609 759
610 if (Yes == NULL) 760 if (Yes == NULL)
611 Yes = msg_string(MSG_Yes); 761 Yes = msg_string(MSG_Yes);
612 762
613 poffset = p->pi_offset / sizemult; 763 poffset = p->pi_offset / sizemult;
614 psize = p->pi_size / sizemult; 764 psize = p->pi_size / sizemult;
615 if (psize == 0) 765 if (psize == 0)
616 pend = 0; 766 pend = 0;
617 else 767 else
618 pend = (p->pi_offset + p->pi_size) / sizemult - 1; 768 pend = (p->pi_offset + p->pi_size) / sizemult - 1;
619 769
620 if (p->pi_fstype == FS_BSDFFS) 770 if (p->pi_fstype == FS_BSDFFS)
621 if (p->pi_flags & PIF_FFSv2) 771 if (p->pi_flags & PIF_FFSv2)
622 desc = "FFSv2"; 772 desc = "FFSv2";
623 else 773 else
624 desc = "FFSv1"; 774 desc = "FFSv1";
625 else 775 else
626 desc = getfslabelname(p->pi_fstype); 776 desc = getfslabelname(p->pi_fstype);
627 777
628#ifdef PART_BOOT 778#ifdef PART_BOOT
629 if (ptn == PART_BOOT) 779 if (ptn == PART_BOOT)
630 desc = msg_string(MSG_Boot_partition_cant_change); 780 desc = msg_string(MSG_Boot_partition_cant_change);
631#endif 781#endif
632 if (ptn == getrawpartition()) 782 if (ptn == getrawpartition())
633 desc = msg_string(MSG_Whole_disk_cant_change); 783 desc = msg_string(MSG_Whole_disk_cant_change);
634 else { 784 else {
635 if (ptn == PART_C) 785 if (ptn == PART_C)
636 desc = msg_string(MSG_NetBSD_partition_cant_change); 786 desc = msg_string(MSG_NetBSD_partition_cant_change);
637 } 787 }
638 788
639 wprintw(m->mw, msg_string(MSG_fspart_row), 789 wprintw(m->mw, msg_string(MSG_fspart_row),
640 poffset, pend, psize, desc, 790 poffset, pend, psize, desc,
641 p->pi_flags & PIF_NEWFS ? Yes : "", 791 p->pi_flags & PIF_NEWFS ? Yes : "",
642 p->pi_flags & PIF_MOUNT ? Yes : "", 792 p->pi_flags & PIF_MOUNT ? Yes : "",
643 p->pi_mount); 793 p->pi_mount);
644} 794}
645 795
646/* 796/*
647 * Label a disk using an MD-specific string DISKLABEL_CMD for 797 * Label a disk using an MD-specific string DISKLABEL_CMD for
648 * to invoke disklabel. 798 * to invoke disklabel.
649 * if MD code does not define DISKLABEL_CMD, this is a no-op. 799 * if MD code does not define DISKLABEL_CMD, this is a no-op.
650 * 800 *
651 * i386 port uses "/sbin/disklabel -w -r", just like i386 801 * i386 port uses "/sbin/disklabel -w -r", just like i386
652 * miniroot scripts, though this may leave a bogus incore label. 802 * miniroot scripts, though this may leave a bogus incore label.
653 * 803 *
654 * Sun ports should use DISKLABEL_CMD "/sbin/disklabel -w" 804 * Sun ports should use DISKLABEL_CMD "/sbin/disklabel -w"
655 * to get incore to ondisk inode translation for the Sun proms. 805 * to get incore to ondisk inode translation for the Sun proms.
656 */ 806 */
657int 807int
658write_disklabel (void) 808write_disklabel (void)
659{ 809{
660 int rv = 0; 810 int rv = 0;
661 811
 812 if (pm && pm->no_part)
 813 return 0;
 814
662#ifdef DISKLABEL_CMD 815#ifdef DISKLABEL_CMD
663 /* disklabel the disk */ 816 /* disklabel the disk */
664 rv = run_program(RUN_DISPLAY, "%s -f /tmp/disktab %s '%s'", 817 rv = run_program(RUN_DISPLAY, "%s -f /tmp/disktab %s '%s'",
665 DISKLABEL_CMD, pm->diskdev, pm->bsddiskname); 818 DISKLABEL_CMD, pm->diskdev, pm->bsddiskname);
666 if (rv == 0) 819 if (rv == 0)
667 update_wedges(pm->diskdev); 820 update_wedges(pm->diskdev);
668#endif 821#endif
669 return rv; 822 return rv;
670} 823}
671 824
672 825
673static int 826static int
674ptn_sort(const void *a, const void *b) 827ptn_sort(const void *a, const void *b)
675{ 828{
676 return strcmp(pm->bsdlabel[*(const int *)a].pi_mount, 829 return strcmp(pm->bsdlabel[*(const int *)a].pi_mount,
677 pm->bsdlabel[*(const int *)b].pi_mount); 830 pm->bsdlabel[*(const int *)b].pi_mount);
678} 831}
679 832
680int 833int
681make_filesystems(void) 834make_filesystems(void)
682{ 835{
683 unsigned int i; 836 unsigned int i;
684 int ptn; 837 int ptn;
685 int ptn_order[nelem(pm->bsdlabel)]; 838 int ptn_order[nelem(pm->bsdlabel)];
686 int error = 0; 839 int error = 0;
687 unsigned int maxpart = getmaxpartitions(); 840 unsigned int maxpart = getmaxpartitions();
688 char *newfs = NULL, *dev = NULL, *devdev = NULL; 841 char *newfs = NULL, *dev = NULL, *devdev = NULL;
689 partinfo *lbl; 842 partinfo *lbl;
690 843
 844 if (pm->no_part) {
 845 /* check if this target device already has a ffs */
 846 error = fsck_preen(pm->diskdev, -1, "ffs", true);
 847 if (error) {
 848 if (!ask_noyes(MSG_No_filesystem_newfs))
 849 return EINVAL;
 850 error = run_program(RUN_DISPLAY | RUN_PROGRESS,
 851 "/sbin/newfs -V2 -O2 /dev/r%s", pm->diskdev);
 852 }
 853
 854 md_pre_mount();
 855
 856 make_target_dir("/");
 857 asprintf(&devdev, "/dev/%s", pm->diskdev);
 858 if (devdev == NULL)
 859 return (ENOMEM);
 860 error = target_mount_do("-o async", devdev, "/");
 861 if (error) {
 862 msg_display(MSG_mountfail, devdev, ' ',
 863 "/");
 864 process_menu(MENU_ok, NULL);
 865 }
 866 free(devdev);
 867 return error;
 868 }
 869
691 if (maxpart > nelem(pm->bsdlabel)) 870 if (maxpart > nelem(pm->bsdlabel))
692 maxpart = nelem(pm->bsdlabel); 871 maxpart = nelem(pm->bsdlabel);
693 872
694 /* Making new file systems and mounting them */ 873 /* Making new file systems and mounting them */
695 874
696 /* sort to ensure /usr/local is mounted after /usr (etc) */ 875 /* sort to ensure /usr/local is mounted after /usr (etc) */
697 for (i = 0; i < maxpart; i++) 876 for (i = 0; i < maxpart; i++)
698 ptn_order[i] = i; 877 ptn_order[i] = i;
699 qsort(ptn_order, maxpart, sizeof ptn_order[0], ptn_sort); 878 qsort(ptn_order, maxpart, sizeof ptn_order[0], ptn_sort);
700 879
701 for (i = 0; i < maxpart; i++) { 880 for (i = 0; i < maxpart; i++) {
702 /* 881 /*
703 * newfs and mount. For now, process only BSD filesystems. 882 * newfs and mount. For now, process only BSD filesystems.
704 * but if this is the mounted-on root, has no mount 883 * but if this is the mounted-on root, has no mount
705 * point defined, or is marked preserve, don't touch it! 884 * point defined, or is marked preserve, don't touch it!
706 */ 885 */
707 ptn = ptn_order[i]; 886 ptn = ptn_order[i];
708 lbl = pm->bsdlabel + ptn; 887 lbl = pm->bsdlabel + ptn;
709 888
710 if (is_active_rootpart(pm->diskdev, ptn)) 889 if (is_active_rootpart(pm->diskdev, ptn))
711 continue; 890 continue;
712 891
713 if (*lbl->pi_mount == 0) 892 if (*lbl->pi_mount == 0)
714 /* No mount point */ 893 /* No mount point */
715 continue; 894 continue;
716 895
717 if (pm->isspecial) { 896 if (pm->isspecial) {
718 asprintf(&dev, "%s", pm->diskdev); 897 asprintf(&dev, "%s", pm->diskdev);
719 ptn = 0 - 'a'; 898 ptn = 0 - 'a';
720 } else { 899 } else {
721 asprintf(&dev, "%s%c", pm->diskdev, 'a' + ptn); 900 asprintf(&dev, "%s%c", pm->diskdev, 'a' + ptn);
722 } 901 }
723 if (dev == NULL) 902 if (dev == NULL)
724 return (ENOMEM); 903 return (ENOMEM);
725 asprintf(&devdev, "/dev/%s", dev); 904 asprintf(&devdev, "/dev/%s", dev);
726 if (devdev == NULL) 905 if (devdev == NULL)
727 return (ENOMEM); 906 return (ENOMEM);
728 907
729 newfs = NULL; 908 newfs = NULL;
730 lbl->mnt_opts = NULL; 909 lbl->mnt_opts = NULL;
731 lbl->fsname = NULL; 910 lbl->fsname = NULL;
732 switch (lbl->pi_fstype) { 911 switch (lbl->pi_fstype) {
733 case FS_APPLEUFS: 912 case FS_APPLEUFS:
734 asprintf(&newfs, "/sbin/newfs %s%.0d", 913 asprintf(&newfs, "/sbin/newfs %s%.0d",
735 lbl->pi_isize != 0 ? "-i" : "", lbl->pi_isize); 914 lbl->pi_isize != 0 ? "-i" : "", lbl->pi_isize);
736 lbl->mnt_opts = "-tffs -o async"; 915 lbl->mnt_opts = "-tffs -o async";
737 lbl->fsname = "ffs"; 916 lbl->fsname = "ffs";
738 break; 917 break;
739 case FS_BSDFFS: 918 case FS_BSDFFS:
740 asprintf(&newfs, 919 asprintf(&newfs,
741 "/sbin/newfs -V2 -O %d -b %d -f %d%s%.0d", 920 "/sbin/newfs -V2 -O %d -b %d -f %d%s%.0d",
742 lbl->pi_flags & PIF_FFSv2 ? 2 : 1, 921 lbl->pi_flags & PIF_FFSv2 ? 2 : 1,
743 lbl->pi_fsize * lbl->pi_frag, lbl->pi_fsize, 922 lbl->pi_fsize * lbl->pi_frag, lbl->pi_fsize,
744 lbl->pi_isize != 0 ? " -i " : "", lbl->pi_isize); 923 lbl->pi_isize != 0 ? " -i " : "", lbl->pi_isize);
745 if (lbl->pi_flags & PIF_LOG) 924 if (lbl->pi_flags & PIF_LOG)
746 lbl->mnt_opts = "-tffs -o log"; 925 lbl->mnt_opts = "-tffs -o log";
747 else 926 else
748 lbl->mnt_opts = "-tffs -o async"; 927 lbl->mnt_opts = "-tffs -o async";
749 lbl->fsname = "ffs"; 928 lbl->fsname = "ffs";
750 break; 929 break;
751 case FS_BSDLFS: 930 case FS_BSDLFS:
752 asprintf(&newfs, "/sbin/newfs_lfs -b %d", 931 asprintf(&newfs, "/sbin/newfs_lfs -b %d",
753 lbl->pi_fsize * lbl->pi_frag); 932 lbl->pi_fsize * lbl->pi_frag);
754 lbl->mnt_opts = "-tlfs"; 933 lbl->mnt_opts = "-tlfs";
755 lbl->fsname = "lfs"; 934 lbl->fsname = "lfs";
756 break; 935 break;
757 case FS_MSDOS: 936 case FS_MSDOS:
758#ifdef USE_NEWFS_MSDOS 937#ifdef USE_NEWFS_MSDOS
759 asprintf(&newfs, "/sbin/newfs_msdos"); 938 asprintf(&newfs, "/sbin/newfs_msdos");
760#endif 939#endif
761 lbl->mnt_opts = "-tmsdos"; 940 lbl->mnt_opts = "-tmsdos";
762 lbl->fsname = "msdos"; 941 lbl->fsname = "msdos";
763 break; 942 break;
764#ifdef USE_SYSVBFS 943#ifdef USE_SYSVBFS
765 case FS_SYSVBFS: 944 case FS_SYSVBFS:
766 asprintf(&newfs, "/sbin/newfs_sysvbfs"); 945 asprintf(&newfs, "/sbin/newfs_sysvbfs");
767 lbl->mnt_opts = "-tsysvbfs"; 946 lbl->mnt_opts = "-tsysvbfs";
768 lbl->fsname = "sysvbfs"; 947 lbl->fsname = "sysvbfs";
769 break; 948 break;
770#endif 949#endif
771#ifdef USE_EXT2FS 950#ifdef USE_EXT2FS
772 case FS_EX2FS: 951 case FS_EX2FS:
773 asprintf(&newfs, "/sbin/newfs_ext2fs"); 952 asprintf(&newfs, "/sbin/newfs_ext2fs");
774 lbl->mnt_opts = "-text2fs"; 953 lbl->mnt_opts = "-text2fs";
775 lbl->fsname = "ext2fs"; 954 lbl->fsname = "ext2fs";
776 break; 955 break;
777#endif 956#endif
778 } 957 }
779 if (lbl->pi_flags & PIF_NEWFS && newfs != NULL) { 958 if (lbl->pi_flags & PIF_NEWFS && newfs != NULL) {
780#ifdef USE_NEWFS_MSDOS 959#ifdef USE_NEWFS_MSDOS
781 if (lbl->pi_fstype == FS_MSDOS) { 960 if (lbl->pi_fstype == FS_MSDOS) {
782 /* newfs only if mount fails */ 961 /* newfs only if mount fails */
783 if (run_program(RUN_SILENT | RUN_ERROR_OK, 962 if (run_program(RUN_SILENT | RUN_ERROR_OK,
784 "mount -rt msdos /dev/%s /mnt2", dev) != 0) 963 "mount -rt msdos /dev/%s /mnt2", dev) != 0)
785 error = run_program( 964 error = run_program(
786 RUN_DISPLAY | RUN_PROGRESS, 965 RUN_DISPLAY | RUN_PROGRESS,
787 "%s /dev/r%s", 966 "%s /dev/r%s",
788 newfs, dev); 967 newfs, dev);
789 else { 968 else {
790 run_program(RUN_SILENT | RUN_ERROR_OK, 969 run_program(RUN_SILENT | RUN_ERROR_OK,
791 "umount /mnt2"); 970 "umount /mnt2");
792 error = 0; 971 error = 0;
793 } 972 }
794 } else 973 } else
795#endif 974#endif
796 error = run_program(RUN_DISPLAY | RUN_PROGRESS, 975 error = run_program(RUN_DISPLAY | RUN_PROGRESS,
797 "%s /dev/r%s", newfs, dev); 976 "%s /dev/r%s", newfs, dev);
798 } else { 977 } else {
799 /* We'd better check it isn't dirty */ 978 /* We'd better check it isn't dirty */
800 error = fsck_preen(pm->diskdev, ptn, lbl->fsname); 979 error = fsck_preen(pm->diskdev, ptn, lbl->fsname, false);
801 } 980 }
802 free(newfs); 981 free(newfs);
803 if (error != 0) { 982 if (error != 0) {
804 free(devdev); 983 free(devdev);
805 free(dev); 984 free(dev);
806 return error; 985 return error;
807 } 986 }
808 987
809 lbl->pi_flags ^= PIF_NEWFS; 988 lbl->pi_flags ^= PIF_NEWFS;
810 md_pre_mount(); 989 md_pre_mount();
811 990
812 if (partman_go == 0 && lbl->pi_flags & PIF_MOUNT && 991 if (partman_go == 0 && lbl->pi_flags & PIF_MOUNT &&
813 lbl->mnt_opts != NULL) { 992 lbl->mnt_opts != NULL) {
814 make_target_dir(lbl->pi_mount); 993 make_target_dir(lbl->pi_mount);
815 error = target_mount_do(lbl->mnt_opts, devdev, lbl->pi_mount); 994 error = target_mount_do(lbl->mnt_opts, devdev, lbl->pi_mount);
816 if (error) { 995 if (error) {
817 msg_display(MSG_mountfail, dev, ' ', lbl->pi_mount); 996 msg_display(MSG_mountfail, dev, ' ', lbl->pi_mount);
818 process_menu(MENU_ok, NULL); 997 process_menu(MENU_ok, NULL);
819 free(devdev); 998 free(devdev);
820 free(dev); 999 free(dev);
821 return error; 1000 return error;
822 } 1001 }
823 } 1002 }
824 free(devdev); 1003 free(devdev);
825 free(dev); 1004 free(dev);
826 } 1005 }
827 return 0; 1006 return 0;
828} 1007}
829 1008
830int 1009int
831make_fstab(void) 1010make_fstab(void)
832{ 1011{
833 FILE *f; 1012 FILE *f;
834 int i, swap_dev = -1; 1013 int i, swap_dev = -1;
835 const char *dump_dev; 1014 const char *dump_dev;
836 char *dev = NULL; 1015 char *dev = NULL;
837 pm_devs_t *pm_i; 1016 pm_devs_t *pm_i;
838#ifndef HAVE_TMPFS 1017#ifndef HAVE_TMPFS
839 pm_devs_t *pm_with_swap = NULL; 1018 pm_devs_t *pm_with_swap = NULL;
840#endif 1019#endif
841 1020
842 /* Create the fstab. */ 1021 /* Create the fstab. */
843 make_target_dir("/etc"); 1022 make_target_dir("/etc");
844 f = target_fopen("/etc/fstab", "w"); 1023 f = target_fopen("/etc/fstab", "w");
845 scripting_fprintf(NULL, "cat <<EOF >%s/etc/fstab\n", target_prefix()); 1024 scripting_fprintf(NULL, "cat <<EOF >%s/etc/fstab\n", target_prefix());
846 1025
847 if (logfp) 1026 if (logfp)
848 (void)fprintf(logfp, 1027 (void)fprintf(logfp,
849 "Making %s/etc/fstab (%s).\n", target_prefix(), pm->diskdev); 1028 "Making %s/etc/fstab (%s).\n", target_prefix(), pm->diskdev);
850 1029
851 if (f == NULL) { 1030 if (f == NULL) {
852 msg_display(MSG_createfstab); 1031 msg_display(MSG_createfstab);
853 if (logfp) 1032 if (logfp)
854 (void)fprintf(logfp, "Failed to make /etc/fstab!\n"); 1033 (void)fprintf(logfp, "Failed to make /etc/fstab!\n");
855 process_menu(MENU_ok, NULL); 1034 process_menu(MENU_ok, NULL);
856#ifndef DEBUG 1035#ifndef DEBUG
857 return 1; 1036 return 1;
858#else 1037#else
859 f = stdout; 1038 f = stdout;
860#endif 1039#endif
861 } 1040 }
862 1041
863 scripting_fprintf(f, "# NetBSD %s/etc/fstab\n# See /usr/share/examples/" 1042 scripting_fprintf(f, "# NetBSD %s/etc/fstab\n# See /usr/share/examples/"
864 "fstab/ for more examples.\n", target_prefix()); 1043 "fstab/ for more examples.\n", target_prefix());
 1044
 1045 if (pm->no_part) {
 1046 /* single dk? target */
 1047 char buf[200], parent[200], swap[200], *prompt;
 1048 int res;
 1049
 1050 if (!get_name_and_parent(pm->diskdev, buf, parent))
 1051 goto done_with_disks;
 1052 scripting_fprintf(f, "NAME=%s\t/\tffs\trw\t\t1 1\n",
 1053 buf);
 1054 if (!find_swap_part_on(parent, swap))
 1055 goto done_with_disks;
 1056 asprintf(&prompt, msg_string(MSG_Auto_add_swap_part),
 1057 swap, parent);
 1058 res = ask_yesno(prompt);
 1059 free(prompt);
 1060 if (res)
 1061 scripting_fprintf(f, "NAME=%s\tnone"
 1062 "\tswap\tsw,dp\t\t0 0\n", swap);
 1063 goto done_with_disks;
 1064 }
 1065
865 if (! partman_go) { 1066 if (! partman_go) {
866 /* We want to process only one disk... */ 1067 /* We want to process only one disk... */
867 pm_i = pm; 1068 pm_i = pm;
868 goto onlyonediskinfstab; 1069 goto onlyonediskinfstab;
869 } 1070 }
870 SLIST_FOREACH(pm_i, &pm_head, l) { 1071 SLIST_FOREACH(pm_i, &pm_head, l) {
871 onlyonediskinfstab: 1072 onlyonediskinfstab:
872 for (i = 0; i < getmaxpartitions(); i++) { 1073 for (i = 0; i < getmaxpartitions(); i++) {
873 const char *s = ""; 1074 const char *s = "";
874 const char *mp = pm_i->bsdlabel[i].pi_mount; 1075 const char *mp = pm_i->bsdlabel[i].pi_mount;
875 const char *fstype = "ffs"; 1076 const char *fstype = "ffs";
876 int fsck_pass = 0, dump_freq = 0; 1077 int fsck_pass = 0, dump_freq = 0;
877 1078
878 if (dev != NULL) 1079 if (dev != NULL)
879 free(dev); 1080 free(dev);
880 if (pm_i->isspecial) 1081 if (pm_i->isspecial)
881 asprintf(&dev, "%s", pm_i->diskdev); 1082 asprintf(&dev, "%s", pm_i->diskdev);
882 else 1083 else
883 asprintf(&dev, "%s%c", pm_i->diskdev, 'a' + i); 1084 asprintf(&dev, "%s%c", pm_i->diskdev, 'a' + i);
884 if (dev == NULL) 1085 if (dev == NULL)
885 return (ENOMEM); 1086 return (ENOMEM);
886 1087
887 if (!*mp) { 1088 if (!*mp) {
888 /* 1089 /*
889 * No mount point specified, comment out line and 1090 * No mount point specified, comment out line and
890 * use /mnt as a placeholder for the mount point. 1091 * use /mnt as a placeholder for the mount point.
891 */ 1092 */
892 s = "# "; 1093 s = "# ";
893 mp = "/mnt"; 1094 mp = "/mnt";
894 } 1095 }
895 1096
896 switch (pm_i->bsdlabel[i].pi_fstype) { 1097 switch (pm_i->bsdlabel[i].pi_fstype) {
897 case FS_UNUSED: 1098 case FS_UNUSED:
898 continue; 1099 continue;
899 case FS_BSDLFS: 1100 case FS_BSDLFS:
900 /* If there is no LFS, just comment it out. */ 1101 /* If there is no LFS, just comment it out. */
901 if (!check_lfs_progs()) 1102 if (!check_lfs_progs())
902 s = "# "; 1103 s = "# ";
903 fstype = "lfs"; 1104 fstype = "lfs";
904 /* FALLTHROUGH */ 1105 /* FALLTHROUGH */
905 case FS_BSDFFS: 1106 case FS_BSDFFS:
906 fsck_pass = (strcmp(mp, "/") == 0) ? 1 : 2; 1107 fsck_pass = (strcmp(mp, "/") == 0) ? 1 : 2;
907 dump_freq = 1; 1108 dump_freq = 1;
908 break; 1109 break;
909 case FS_MSDOS: 1110 case FS_MSDOS:
910 fstype = "msdos"; 1111 fstype = "msdos";
911 break; 1112 break;
912 case FS_SWAP: 1113 case FS_SWAP:
913 if (pm_i->isspecial) 1114 if (pm_i->isspecial)
914 continue; 1115 continue;
915 if (swap_dev == -1) { 1116 if (swap_dev == -1) {
916 swap_dev = i; 1117 swap_dev = i;
917 dump_dev = ",dp"; 1118 dump_dev = ",dp";
918#ifndef HAVE_TMPFS 1119#ifndef HAVE_TMPFS
919 pm_with_swap = pm_i; 1120 pm_with_swap = pm_i;
920#endif 1121#endif
921 } else { 1122 } else {
922 dump_dev = ""; 1123 dump_dev = "";
923 } 1124 }
924 scripting_fprintf(f, "/dev/%s\t\tnone\tswap\tsw%s\t\t 0 0\n", 1125 scripting_fprintf(f, "/dev/%s\t\tnone\tswap\tsw%s\t\t 0 0\n",
925 dev, dump_dev); 1126 dev, dump_dev);
926 continue; 1127 continue;
927#ifdef USE_SYSVBFS 1128#ifdef USE_SYSVBFS
928 case FS_SYSVBFS: 1129 case FS_SYSVBFS:
929 fstype = "sysvbfs"; 1130 fstype = "sysvbfs";
930 make_target_dir("/stand"); 1131 make_target_dir("/stand");
931 break; 1132 break;
932#endif 1133#endif
933 default: 1134 default:
934 fstype = "???"; 1135 fstype = "???";
935 s = "# "; 1136 s = "# ";
936 break; 1137 break;
937 } 1138 }
938 /* The code that remounts root rw doesn't check the partition */ 1139 /* The code that remounts root rw doesn't check the partition */
939 if (strcmp(mp, "/") == 0 && !(pm_i->bsdlabel[i].pi_flags & PIF_MOUNT)) 1140 if (strcmp(mp, "/") == 0 && !(pm_i->bsdlabel[i].pi_flags & PIF_MOUNT))
940 s = "# "; 1141 s = "# ";
941 1142
942 scripting_fprintf(f, 1143 scripting_fprintf(f,
943 "%s/dev/%s\t\t%s\t%s\trw%s%s%s%s%s%s%s%s\t\t %d %d\n", 1144 "%s/dev/%s\t\t%s\t%s\trw%s%s%s%s%s%s%s%s\t\t %d %d\n",
944 s, dev, mp, fstype, 1145 s, dev, mp, fstype,
945 pm_i->bsdlabel[i].pi_flags & PIF_LOG ? ",log" : "", 1146 pm_i->bsdlabel[i].pi_flags & PIF_LOG ? ",log" : "",
946 pm_i->bsdlabel[i].pi_flags & PIF_MOUNT ? "" : ",noauto", 1147 pm_i->bsdlabel[i].pi_flags & PIF_MOUNT ? "" : ",noauto",
947 pm_i->bsdlabel[i].pi_flags & PIF_ASYNC ? ",async" : "", 1148 pm_i->bsdlabel[i].pi_flags & PIF_ASYNC ? ",async" : "",
948 pm_i->bsdlabel[i].pi_flags & PIF_NOATIME ? ",noatime" : "", 1149 pm_i->bsdlabel[i].pi_flags & PIF_NOATIME ? ",noatime" : "",
949 pm_i->bsdlabel[i].pi_flags & PIF_NODEV ? ",nodev" : "", 1150 pm_i->bsdlabel[i].pi_flags & PIF_NODEV ? ",nodev" : "",
950 pm_i->bsdlabel[i].pi_flags & PIF_NODEVMTIME ? ",nodevmtime" : "", 1151 pm_i->bsdlabel[i].pi_flags & PIF_NODEVMTIME ? ",nodevmtime" : "",
951 pm_i->bsdlabel[i].pi_flags & PIF_NOEXEC ? ",noexec" : "", 1152 pm_i->bsdlabel[i].pi_flags & PIF_NOEXEC ? ",noexec" : "",
952 pm_i->bsdlabel[i].pi_flags & PIF_NOSUID ? ",nosuid" : "", 1153 pm_i->bsdlabel[i].pi_flags & PIF_NOSUID ? ",nosuid" : "",
953 dump_freq, fsck_pass); 1154 dump_freq, fsck_pass);
954 if (pm_i->isspecial) 1155 if (pm_i->isspecial)
955 /* Special device (such as dk*) have only one partition */ 1156 /* Special device (such as dk*) have only one partition */
956 break; 1157 break;
957 } 1158 }
958 /* Simple install, only one disk */ 1159 /* Simple install, only one disk */
959 if (!partman_go) 1160 if (!partman_go)
960 break; 1161 break;
961 } 1162 }
 1163done_with_disks:
962 if (tmp_ramdisk_size != 0) { 1164 if (tmp_ramdisk_size != 0) {
963#ifdef HAVE_TMPFS 1165#ifdef HAVE_TMPFS
964 scripting_fprintf(f, "tmpfs\t\t/tmp\ttmpfs\trw,-m=1777,-s=%" 1166 scripting_fprintf(f, "tmpfs\t\t/tmp\ttmpfs\trw,-m=1777,-s=%"
965 PRIi64 "\n", 1167 PRIi64 "\n",
966 tmp_ramdisk_size * 512); 1168 tmp_ramdisk_size * 512);
967#else 1169#else
968 if (swap_dev != -1 && pm_with_swap != NULL) 1170 if (swap_dev != -1 && pm_with_swap != NULL)
969 scripting_fprintf(f, "/dev/%s%c\t\t/tmp\tmfs\trw,-s=%" 1171 scripting_fprintf(f, "/dev/%s%c\t\t/tmp\tmfs\trw,-s=%"
970 PRIi64 "\n", 1172 PRIi64 "\n",
971 pm_with_swap->diskdev, 'a' + swap_dev, tmp_ramdisk_size); 1173 pm_with_swap->diskdev, 'a' + swap_dev, tmp_ramdisk_size);
972 else 1174 else
973 scripting_fprintf(f, "swap\t\t/tmp\tmfs\trw,-s=%" 1175 scripting_fprintf(f, "swap\t\t/tmp\tmfs\trw,-s=%"
974 PRIi64 "\n", 1176 PRIi64 "\n",
975 tmp_ramdisk_size); 1177 tmp_ramdisk_size);
976#endif 1178#endif
977 } 1179 }
978 1180
979 /* Add /kern, /proc and /dev/pts to fstab and make mountpoint. */ 1181 /* Add /kern, /proc and /dev/pts to fstab and make mountpoint. */
980 scripting_fprintf(f, "kernfs\t\t/kern\tkernfs\trw\n"); 1182 scripting_fprintf(f, "kernfs\t\t/kern\tkernfs\trw\n");
981 scripting_fprintf(f, "ptyfs\t\t/dev/pts\tptyfs\trw\n"); 1183 scripting_fprintf(f, "ptyfs\t\t/dev/pts\tptyfs\trw\n");
982 scripting_fprintf(f, "procfs\t\t/proc\tprocfs\trw\n"); 1184 scripting_fprintf(f, "procfs\t\t/proc\tprocfs\trw\n");
983 scripting_fprintf(f, "/dev/%s\t\t/cdrom\tcd9660\tro,noauto\n", 1185 scripting_fprintf(f, "/dev/%s\t\t/cdrom\tcd9660\tro,noauto\n",
984 get_default_cdrom()); 1186 get_default_cdrom());
985 scripting_fprintf(f, "%stmpfs\t\t/var/shm\ttmpfs\trw,-m1777,-sram%%25\n", 1187 scripting_fprintf(f, "%stmpfs\t\t/var/shm\ttmpfs\trw,-m1777,-sram%%25\n",
986 tmpfs_on_var_shm() ? "" : "#"); 1188 tmpfs_on_var_shm() ? "" : "#");
987 make_target_dir("/kern"); 1189 make_target_dir("/kern");
988 make_target_dir("/proc"); 1190 make_target_dir("/proc");
989 make_target_dir("/dev/pts"); 1191 make_target_dir("/dev/pts");
990 make_target_dir("/cdrom"); 1192 make_target_dir("/cdrom");
991 make_target_dir("/var/shm"); 1193 make_target_dir("/var/shm");
992 1194
993 scripting_fprintf(NULL, "EOF\n"); 1195 scripting_fprintf(NULL, "EOF\n");
994 1196
995 if (dev != NULL) 1197 if (dev != NULL)
996 free(dev); 1198 free(dev);
997 fclose(f); 1199 fclose(f);
998 fflush(NULL); 1200 fflush(NULL);
999 return 0; 1201 return 0;
1000} 1202}
1001 1203
1002 1204
1003 1205
1004static int 1206static int
1005/*ARGSUSED*/ 1207/*ARGSUSED*/
1006foundffs(struct data *list, size_t num) 1208foundffs(struct data *list, size_t num)
1007{ 1209{
1008 int error; 1210 int error;
1009 1211
1010 if (num < 2 || strcmp(list[1].u.s_val, "/") == 0 || 1212 if (num < 2 || strcmp(list[1].u.s_val, "/") == 0 ||
1011 strstr(list[2].u.s_val, "noauto") != NULL) 1213 strstr(list[2].u.s_val, "noauto") != NULL)
1012 return 0; 1214 return 0;
1013 1215
1014 error = fsck_preen(list[0].u.s_val, ' '-'a', "ffs"); 1216 error = fsck_preen(list[0].u.s_val, ' '-'a', "ffs", false);
1015 if (error != 0) 1217 if (error != 0)
1016 return error; 1218 return error;
1017 1219
1018 error = target_mount("", list[0].u.s_val, ' '-'a', list[1].u.s_val); 1220 error = target_mount("", list[0].u.s_val, ' '-'a', list[1].u.s_val);
1019 if (error != 0) { 1221 if (error != 0) {
1020 msg_display(MSG_mount_failed, list[0].u.s_val); 1222 msg_display(MSG_mount_failed, list[0].u.s_val);
1021 if (!ask_noyes(NULL)) 1223 if (!ask_noyes(NULL))
1022 return error; 1224 return error;
1023 } 1225 }
1024 return 0; 1226 return 0;
1025} 1227}
1026 1228
1027#ifdef USE_SYSVBFS 1229#ifdef USE_SYSVBFS
1028static int 1230static int
1029/*ARGSUSED*/ 1231/*ARGSUSED*/
1030foundsysvbfs(struct data *list, size_t num) 1232foundsysvbfs(struct data *list, size_t num)
1031{ 1233{
1032 int error; 1234 int error;
1033 1235
1034 if (num < 2 || strcmp(list[1].u.s_val, "/") == 0 || 1236 if (num < 2 || strcmp(list[1].u.s_val, "/") == 0 ||
1035 strstr(list[2].u.s_val, "noauto") != NULL) 1237 strstr(list[2].u.s_val, "noauto") != NULL)
1036 return 0; 1238 return 0;
1037 1239
1038 error = target_mount("", list[0].u.s_val, ' '-'a', list[1].u.s_val); 1240 error = target_mount("", list[0].u.s_val, ' '-'a', list[1].u.s_val);
1039 if (error != 0) 1241 if (error != 0)
1040 return error; 1242 return error;
1041 return 0; 1243 return 0;
1042} 1244}
1043#endif 1245#endif
1044 1246
1045/* 1247/*
1046 * Do an fsck. On failure, inform the user by showing a warning 1248 * Do an fsck. On failure, inform the user by showing a warning
1047 * message and doing menu_ok() before proceeding. 1249 * message and doing menu_ok() before proceeding.
1048 * Returns 0 on success, or nonzero return code from fsck() on failure. 1250 * Returns 0 on success, or nonzero return code from fsck() on failure.
1049 */ 1251 */
1050static int 1252static int
1051fsck_preen(const char *disk, int ptn, const char *fsname) 1253fsck_preen(const char *disk, int ptn, const char *fsname, bool silent)
1052{ 1254{
1053 char *prog; 1255 char *prog;
1054 int error; 1256 int error;
1055 1257
1056 ptn = (ptn < 0)? 0 : 'a' + ptn; 1258 ptn = (ptn < 0)? 0 : 'a' + ptn;
1057 if (fsname == NULL) 1259 if (fsname == NULL)
1058 return 0; 1260 return 0;
1059 /* first, check if fsck program exists, if not, assume ok */ 1261 /* first, check if fsck program exists, if not, assume ok */
1060 asprintf(&prog, "/sbin/fsck_%s", fsname); 1262 asprintf(&prog, "/sbin/fsck_%s", fsname);
1061 if (prog == NULL) 1263 if (prog == NULL)
1062 return 0; 1264 return 0;
1063 if (access(prog, X_OK) != 0) { 1265 if (access(prog, X_OK) != 0) {
1064 free(prog); 1266 free(prog);
1065 return 0; 1267 return 0;
1066 } 1268 }
1067 if (!strcmp(fsname,"ffs")) 1269 if (!strcmp(fsname,"ffs"))
1068 fixsb(prog, disk, ptn); 1270 fixsb(prog, disk, ptn);
1069 error = run_program(0, "%s -p -q /dev/r%s%c", prog, disk, ptn); 1271 error = run_program(silent? RUN_SILENT|RUN_ERROR_OK : 0, "%s -p -q /dev/r%s%c", prog, disk, ptn);
1070 free(prog); 1272 free(prog);
1071 if (error != 0) { 1273 if (error != 0 && !silent) {
1072 msg_display(MSG_badfs, disk, ptn, error); 1274 msg_display(MSG_badfs, disk, ptn, error);
1073 if (ask_noyes(NULL)) 1275 if (ask_noyes(NULL))
1074 error = 0; 1276 error = 0;
1075 /* XXX at this point maybe we should run a full fsck? */ 1277 /* XXX at this point maybe we should run a full fsck? */
1076 } 1278 }
1077 return error; 1279 return error;
1078} 1280}
1079 1281
1080/* This performs the same function as the etc/rc.d/fixsb script 1282/* This performs the same function as the etc/rc.d/fixsb script
1081 * which attempts to correct problems with ffs1 filesystems 1283 * which attempts to correct problems with ffs1 filesystems
1082 * which may have been introduced by booting a netbsd-current kernel 1284 * which may have been introduced by booting a netbsd-current kernel
1083 * from between April of 2003 and January 2004. For more information 1285 * from between April of 2003 and January 2004. For more information
1084 * This script was developed as a response to NetBSD pr install/25138 1286 * This script was developed as a response to NetBSD pr install/25138
1085 * Additional prs regarding the original issue include: 1287 * Additional prs regarding the original issue include:
1086 * bin/17910 kern/21283 kern/21404 port-macppc/23925 port-macppc/23926 1288 * bin/17910 kern/21283 kern/21404 port-macppc/23925 port-macppc/23926
1087 */ 1289 */
1088static void 1290static void
1089fixsb(const char *prog, const char *disk, char ptn) 1291fixsb(const char *prog, const char *disk, char ptn)
1090{ 1292{
1091 int fd; 1293 int fd;
1092 int rval; 1294 int rval;
1093 union { 1295 union {
1094 struct fs fs; 1296 struct fs fs;
1095 char buf[SBLOCKSIZE]; 1297 char buf[SBLOCKSIZE];
1096 } sblk; 1298 } sblk;
1097 struct fs *fs = &sblk.fs; 1299 struct fs *fs = &sblk.fs;
1098 1300
1099 snprintf(sblk.buf, sizeof(sblk.buf), "/dev/r%s%c", 1301 snprintf(sblk.buf, sizeof(sblk.buf), "/dev/r%s%c",
1100 disk, ptn == ' ' ? 0 : ptn); 1302 disk, ptn == ' ' ? 0 : ptn);
1101 fd = open(sblk.buf, O_RDONLY); 1303 fd = open(sblk.buf, O_RDONLY);
1102 if (fd == -1) 1304 if (fd == -1)
1103 return; 1305 return;
1104 1306
1105 /* Read ffsv1 main superblock */ 1307 /* Read ffsv1 main superblock */
1106 rval = pread(fd, sblk.buf, sizeof sblk.buf, SBLOCK_UFS1); 1308 rval = pread(fd, sblk.buf, sizeof sblk.buf, SBLOCK_UFS1);
1107 close(fd); 1309 close(fd);
1108 if (rval != sizeof sblk.buf) 1310 if (rval != sizeof sblk.buf)
1109 return; 1311 return;
1110 1312
1111 if (fs->fs_magic != FS_UFS1_MAGIC && 1313 if (fs->fs_magic != FS_UFS1_MAGIC &&
1112 fs->fs_magic != FS_UFS1_MAGIC_SWAPPED) 1314 fs->fs_magic != FS_UFS1_MAGIC_SWAPPED)
1113 /* Not FFSv1 */ 1315 /* Not FFSv1 */
1114 return; 1316 return;
1115 if (fs->fs_old_flags & FS_FLAGS_UPDATED) 1317 if (fs->fs_old_flags & FS_FLAGS_UPDATED)
1116 /* properly updated fslevel 4 */ 1318 /* properly updated fslevel 4 */
1117 return; 1319 return;
1118 if (fs->fs_bsize != fs->fs_maxbsize) 1320 if (fs->fs_bsize != fs->fs_maxbsize)
1119 /* not messed up */ 1321 /* not messed up */
1120 return; 1322 return;
1121 1323
1122 /* 1324 /*
1123 * OK we have a munged fs, first 'upgrade' to fslevel 4, 1325 * OK we have a munged fs, first 'upgrade' to fslevel 4,
1124 * We specify -b16 in order to stop fsck bleating that the 1326 * We specify -b16 in order to stop fsck bleating that the
1125 * sb doesn't match the first alternate. 1327 * sb doesn't match the first alternate.
1126 */ 1328 */
1127 run_program(RUN_DISPLAY | RUN_PROGRESS, 1329 run_program(RUN_DISPLAY | RUN_PROGRESS,
1128 "%s -p -b 16 -c 4 /dev/r%s%c", prog, disk, ptn); 1330 "%s -p -b 16 -c 4 /dev/r%s%c", prog, disk, ptn);
1129 /* Then downgrade to fslevel 3 */ 1331 /* Then downgrade to fslevel 3 */
1130 run_program(RUN_DISPLAY | RUN_PROGRESS, 1332 run_program(RUN_DISPLAY | RUN_PROGRESS,
1131 "%s -p -c 3 /dev/r%s%c", prog, disk, ptn); 1333 "%s -p -c 3 /dev/r%s%c", prog, disk, ptn);
1132} 1334}
1133 1335
1134/* 1336/*
1135 * fsck and mount the root partition. 1337 * fsck and mount the root partition.
1136 */ 1338 */
1137static int 1339static int
1138mount_root(void) 1340mount_root(void)
1139{ 1341{
1140 int error; 1342 int error;
1141 int ptn = (pm->isspecial)? 0 - 'a' : pm->rootpart; 1343 int ptn = (pm->isspecial)? 0 - 'a' : pm->rootpart;
1142 1344
1143 error = fsck_preen(pm->diskdev, ptn, "ffs"); 1345 error = fsck_preen(pm->diskdev, ptn, "ffs", false);
1144 if (error != 0) 1346 if (error != 0)
1145 return error; 1347 return error;
1146 1348
1147 md_pre_mount(); 1349 md_pre_mount();
1148 1350
1149 /* Mount /dev/<diskdev>a on target's "". 1351 /* Mount /dev/<diskdev>a on target's "".
1150 * If we pass "" as mount-on, Prefixing will DTRT. 1352 * If we pass "" as mount-on, Prefixing will DTRT.
1151 * for now, use no options. 1353 * for now, use no options.
1152 * XXX consider -o remount in case target root is 1354 * XXX consider -o remount in case target root is
1153 * current root, still readonly from single-user? 1355 * current root, still readonly from single-user?
1154 */ 1356 */
1155 return target_mount("", pm->diskdev, ptn, ""); 1357 return target_mount("", pm->diskdev, ptn, "");
1156} 1358}
1157 1359
1158/* Get information on the file systems mounted from the root filesystem. 1360/* Get information on the file systems mounted from the root filesystem.
1159 * Offer to convert them into 4.4BSD inodes if they are not 4.4BSD 1361 * Offer to convert them into 4.4BSD inodes if they are not 4.4BSD
1160 * inodes. Fsck them. Mount them. 1362 * inodes. Fsck them. Mount them.
1161 */ 1363 */
1162 1364
1163int 1365int
1164mount_disks(void) 1366mount_disks(void)
1165{ 1367{
1166 char *fstab; 1368 char *fstab;
1167 int fstabsize; 1369 int fstabsize;
1168 int error; 1370 int error;
1169 1371
1170 static struct lookfor fstabbuf[] = { 1372 static struct lookfor fstabbuf[] = {
1171 {"/dev/", "/dev/%s %s ffs %s", "c", NULL, 0, 0, foundffs}, 1373 {"/dev/", "/dev/%s %s ffs %s", "c", NULL, 0, 0, foundffs},
1172 {"/dev/", "/dev/%s %s ufs %s", "c", NULL, 0, 0, foundffs}, 1374 {"/dev/", "/dev/%s %s ufs %s", "c", NULL, 0, 0, foundffs},
1173#ifdef USE_SYSVBFS 1375#ifdef USE_SYSVBFS
1174 {"/dev/", "/dev/%s %s sysvbfs %s", "c", NULL, 0, 0, 1376 {"/dev/", "/dev/%s %s sysvbfs %s", "c", NULL, 0, 0,
1175 foundsysvbfs}, 1377 foundsysvbfs},
1176#endif 1378#endif
1177 }; 1379 };
1178 static size_t numfstabbuf = sizeof(fstabbuf) / sizeof(struct lookfor); 1380 static size_t numfstabbuf = sizeof(fstabbuf) / sizeof(struct lookfor);
1179 1381
1180 /* First the root device. */ 1382 /* First the root device. */
1181 if (target_already_root()) 1383 if (target_already_root())
1182 /* avoid needing to call target_already_root() again */ 1384 /* avoid needing to call target_already_root() again */
1183 targetroot_mnt[0] = 0; 1385 targetroot_mnt[0] = 0;
1184 else { 1386 else {
1185 error = mount_root(); 1387 error = mount_root();
1186 if (error != 0 && error != EBUSY) 1388 if (error != 0 && error != EBUSY)
1187 return -1; 1389 return -1;
1188 } 1390 }
1189 1391
1190 /* Check the target /etc/fstab exists before trying to parse it. */ 1392 /* Check the target /etc/fstab exists before trying to parse it. */
1191 if (target_dir_exists_p("/etc") == 0 || 1393 if (target_dir_exists_p("/etc") == 0 ||
1192 target_file_exists_p("/etc/fstab") == 0) { 1394 target_file_exists_p("/etc/fstab") == 0) {
1193 msg_display(MSG_noetcfstab, pm->diskdev); 1395 msg_display(MSG_noetcfstab, pm->diskdev);
1194 process_menu(MENU_ok, NULL); 1396 process_menu(MENU_ok, NULL);
1195 return -1; 1397 return -1;
1196 } 1398 }
1197 1399
1198 1400
1199 /* Get fstab entries from the target-root /etc/fstab. */ 1401 /* Get fstab entries from the target-root /etc/fstab. */
1200 fstabsize = target_collect_file(T_FILE, &fstab, "/etc/fstab"); 1402 fstabsize = target_collect_file(T_FILE, &fstab, "/etc/fstab");
1201 if (fstabsize < 0) { 1403 if (fstabsize < 0) {
1202 /* error ! */ 1404 /* error ! */
1203 msg_display(MSG_badetcfstab, pm->diskdev); 1405 msg_display(MSG_badetcfstab, pm->diskdev);
1204 process_menu(MENU_ok, NULL); 1406 process_menu(MENU_ok, NULL);
1205 return -2; 1407 return -2;
1206 } 1408 }
1207 error = walk(fstab, (size_t)fstabsize, fstabbuf, numfstabbuf); 1409 error = walk(fstab, (size_t)fstabsize, fstabbuf, numfstabbuf);
1208 free(fstab); 1410 free(fstab);
1209 1411
1210 return error; 1412 return error;
1211} 1413}
1212 1414
1213int 1415int
1214set_swap_if_low_ram(const char *disk, partinfo *pp) 1416set_swap_if_low_ram(const char *disk, partinfo *pp)
1215{ 1417{
1216 if (get_ramsize() <= 32) 1418 if (get_ramsize() <= 32)
1217 return set_swap(disk, pp); 1419 return set_swap(disk, pp);
1218 return 0; 1420 return 0;
1219} 1421}
1220 1422
1221int 1423int
1222set_swap(const char *disk, partinfo *pp) 1424set_swap(const char *disk, partinfo *pp)
1223{ 1425{
1224 int i; 1426 int i;
1225 char *cp; 1427 char *cp;
1226 int rval; 1428 int rval;
1227 1429
1228 if (pp == NULL) 1430 if (pp == NULL)
1229 pp = pm->oldlabel; 1431 pp = pm->oldlabel;
1230 1432
1231 for (i = 0; i < MAXPARTITIONS; i++) { 1433 for (i = 0; i < MAXPARTITIONS; i++) {
1232 if (pp[i].pi_fstype != FS_SWAP) 1434 if (pp[i].pi_fstype != FS_SWAP)
1233 continue; 1435 continue;
1234 asprintf(&cp, "/dev/%s%c", disk, 'a' + i); 1436 asprintf(&cp, "/dev/%s%c", disk, 'a' + i);
1235 rval = swapctl(SWAP_ON, cp, 0); 1437 rval = swapctl(SWAP_ON, cp, 0);
1236 free(cp); 1438 free(cp);
1237 if (rval != 0) 1439 if (rval != 0)
1238 return -1; 1440 return -1;
1239 } 1441 }
1240 1442
1241 return 0; 1443 return 0;
1242} 1444}
1243 1445
1244int 1446int
1245check_swap(const char *disk, int remove_swap) 1447check_swap(const char *disk, int remove_swap)
1246{ 1448{
1247 struct swapent *swap; 1449 struct swapent *swap;
1248 char *cp; 1450 char *cp;
1249 int nswap; 1451 int nswap;
1250 int l; 1452 int l;
1251 int rval = 0; 1453 int rval = 0;
1252 1454
1253 nswap = swapctl(SWAP_NSWAP, 0, 0); 1455 nswap = swapctl(SWAP_NSWAP, 0, 0);
1254 if (nswap <= 0) 1456 if (nswap <= 0)
1255 return 0; 1457 return 0;
1256 1458
1257 swap = malloc(nswap * sizeof *swap); 1459 swap = malloc(nswap * sizeof *swap);
1258 if (swap == NULL) 1460 if (swap == NULL)
1259 return -1; 1461 return -1;
1260 1462
1261 nswap = swapctl(SWAP_STATS, swap, nswap); 1463 nswap = swapctl(SWAP_STATS, swap, nswap);
1262 if (nswap < 0) 1464 if (nswap < 0)
1263 goto bad_swap; 1465 goto bad_swap;
1264 1466
1265 l = strlen(disk); 1467 l = strlen(disk);
1266 while (--nswap >= 0) { 1468 while (--nswap >= 0) {
1267 /* Should we check the se_dev or se_path? */ 1469 /* Should we check the se_dev or se_path? */
1268 cp = swap[nswap].se_path; 1470 cp = swap[nswap].se_path;
1269 if (memcmp(cp, "/dev/", 5) != 0) 1471 if (memcmp(cp, "/dev/", 5) != 0)
1270 continue; 1472 continue;
1271 if (memcmp(cp + 5, disk, l) != 0) 1473 if (memcmp(cp + 5, disk, l) != 0)
1272 continue; 1474 continue;
1273 if (!isalpha(*(unsigned char *)(cp + 5 + l))) 1475 if (!isalpha(*(unsigned char *)(cp + 5 + l)))
1274 continue; 1476 continue;
1275 if (cp[5 + l + 1] != 0) 1477 if (cp[5 + l + 1] != 0)
1276 continue; 1478 continue;
1277 /* ok path looks like it is for this device */ 1479 /* ok path looks like it is for this device */
1278 if (!remove_swap) { 1480 if (!remove_swap) {
1279 /* count active swap areas */ 1481 /* count active swap areas */
1280 rval++; 1482 rval++;
1281 continue; 1483 continue;
1282 } 1484 }
1283 if (swapctl(SWAP_OFF, cp, 0) == -1) 1485 if (swapctl(SWAP_OFF, cp, 0) == -1)
1284 rval = -1; 1486 rval = -1;
1285 } 1487 }
1286 1488
1287 done: 1489 done:
1288 free(swap); 1490 free(swap);
1289 return rval; 1491 return rval;
1290 1492
1291 bad_swap: 1493 bad_swap:
1292 rval = -1; 1494 rval = -1;
1293 goto done; 1495 goto done;
1294} 1496}
1295 1497
1296#ifdef HAVE_BOOTXX_xFS 1498#ifdef HAVE_BOOTXX_xFS
1297char * 1499char *
1298bootxx_name(void) 1500bootxx_name(void)
1299{ 1501{
1300 int fstype; 1502 int fstype;
1301 const char *bootxxname; 1503 const char *bootxxname;
1302 char *bootxx; 1504 char *bootxx;
1303 1505
1304 /* check we have boot code for the root partition type */ 1506 /* check we have boot code for the root partition type */
1305 fstype = pm->bsdlabel[pm->rootpart].pi_fstype; 1507 fstype = pm->bsdlabel[pm->rootpart].pi_fstype;
1306 switch (fstype) { 1508 switch (fstype) {
1307#if defined(BOOTXX_FFSV1) || defined(BOOTXX_FFSV2) 1509#if defined(BOOTXX_FFSV1) || defined(BOOTXX_FFSV2)
1308 case FS_BSDFFS: 1510 case FS_BSDFFS:
1309 if (pm->bsdlabel[pm->rootpart].pi_flags & PIF_FFSv2) { 1511 if (pm->bsdlabel[pm->rootpart].pi_flags & PIF_FFSv2) {
1310#ifdef BOOTXX_FFSV2 1512#ifdef BOOTXX_FFSV2
1311 bootxxname = BOOTXX_FFSV2; 1513 bootxxname = BOOTXX_FFSV2;
1312#else 1514#else
1313 bootxxname = NULL; 1515 bootxxname = NULL;
1314#endif 1516#endif
1315 } else { 1517 } else {
1316#ifdef BOOTXX_FFSV1 1518#ifdef BOOTXX_FFSV1
1317 bootxxname = BOOTXX_FFSV1; 1519 bootxxname = BOOTXX_FFSV1;
1318#else 1520#else
1319 bootxxname = NULL; 1521 bootxxname = NULL;
1320#endif 1522#endif
1321 } 1523 }
1322 break; 1524 break;
1323#endif 1525#endif
1324#ifdef BOOTXX_LFSV2 1526#ifdef BOOTXX_LFSV2
1325 case FS_BSDLFS: 1527 case FS_BSDLFS:
1326 bootxxname = BOOTXX_LFSV2; 1528 bootxxname = BOOTXX_LFSV2;
1327 break; 1529 break;
1328#endif 1530#endif
1329 default: 1531 default:
1330 bootxxname = NULL; 1532 bootxxname = NULL;
1331 break; 1533 break;
1332 } 1534 }
1333 1535
1334 if (bootxxname == NULL) 1536 if (bootxxname == NULL)
1335 return NULL; 1537 return NULL;
1336 1538
1337 asprintf(&bootxx, "%s/%s", BOOTXXDIR, bootxxname); 1539 asprintf(&bootxx, "%s/%s", BOOTXXDIR, bootxxname);
1338 return bootxx; 1540 return bootxx;
1339} 1541}
1340#endif 1542#endif
1341 1543
1342static int 1544static int
1343get_fsid_by_gptuuid(const char *str) 1545get_fsid_by_gptuuid(const char *str)
1344{ 1546{
1345 int i; 1547 int i;
1346 uuid_t uuid; 1548 uuid_t uuid;
1347 uint32_t status; 1549 uint32_t status;
1348 1550
1349 uuid_from_string(str, &uuid, &status); 1551 uuid_from_string(str, &uuid, &status);
1350 if (status == uuid_s_ok) { 1552 if (status == uuid_s_ok) {
1351 for (i = 0; gpt_filesystems[i].id > 0; i++) 1553 for (i = 0; gpt_filesystems[i].id > 0; i++)
1352 if (uuid_equal(&uuid, &(gpt_filesystems[i].uuid), NULL)) 1554 if (uuid_equal(&uuid, &(gpt_filesystems[i].uuid), NULL))
1353 return gpt_filesystems[i].id; 1555 return gpt_filesystems[i].id;
1354 } 1556 }
1355 return FS_OTHER; 1557 return FS_OTHER;
1356} 1558}
1357 1559
1358const char * 1560const char *
1359get_gptfs_by_id(int filesystem) 1561get_gptfs_by_id(int filesystem)
1360{ 1562{
1361 int i; 1563 int i;
1362 for (i = 0; gpt_filesystems[i].id > 0; i++) 1564 for (i = 0; gpt_filesystems[i].id > 0; i++)
1363 if (filesystem == gpt_filesystems[i].id) 1565 if (filesystem == gpt_filesystems[i].id)
1364 return gpt_filesystems[i].name; 1566 return gpt_filesystems[i].name;
1365 return NULL; 1567 return NULL;
1366} 1568}
1367 1569
1368/* from dkctl.c */ 1570/* from dkctl.c */
1369static int 1571static int
1370get_dkwedges_sort(const void *a, const void *b) 1572get_dkwedges_sort(const void *a, const void *b)
1371{ 1573{
1372 const struct dkwedge_info *dkwa = a, *dkwb = b; 1574 const struct dkwedge_info *dkwa = a, *dkwb = b;
1373 const daddr_t oa = dkwa->dkw_offset, ob = dkwb->dkw_offset; 1575 const daddr_t oa = dkwa->dkw_offset, ob = dkwb->dkw_offset;
1374 return (oa < ob) ? -1 : (oa > ob) ? 1 : 0; 1576 return (oa < ob) ? -1 : (oa > ob) ? 1 : 0;
1375} 1577}
1376 1578
1377int 1579int
1378get_dkwedges(struct dkwedge_info **dkw, const char *diskdev) 1580get_dkwedges(struct dkwedge_info **dkw, const char *diskdev)
1379{ 1581{
1380 int fd; 1582 int fd;
1381 char buf[STRSIZE]; 1583 char buf[STRSIZE];
1382 size_t bufsize; 1584 size_t bufsize;
1383 struct dkwedge_list dkwl; 1585 struct dkwedge_list dkwl;
1384 1586
1385 *dkw = NULL; 1587 *dkw = NULL;
1386 dkwl.dkwl_buf = *dkw; 1588 dkwl.dkwl_buf = *dkw;
1387 dkwl.dkwl_bufsize = 0; 1589 dkwl.dkwl_bufsize = 0;
1388 fd = opendisk(diskdev, O_RDONLY, buf, STRSIZE, 0); 1590 fd = opendisk(diskdev, O_RDONLY, buf, STRSIZE, 0);
1389 if (fd < 0) 1591 if (fd < 0)
1390 return -1; 1592 return -1;
1391 1593
1392 for (;;) { 1594 for (;;) {
1393 if (ioctl(fd, DIOCLWEDGES, &dkwl) == -1) 1595 if (ioctl(fd, DIOCLWEDGES, &dkwl) == -1)
1394 return -2; 1596 return -2;
1395 if (dkwl.dkwl_nwedges == dkwl.dkwl_ncopied) 1597 if (dkwl.dkwl_nwedges == dkwl.dkwl_ncopied)
1396 break; 1598 break;
1397 bufsize = dkwl.dkwl_nwedges * sizeof(**dkw); 1599 bufsize = dkwl.dkwl_nwedges * sizeof(**dkw);
1398 if (dkwl.dkwl_bufsize < bufsize) { 1600 if (dkwl.dkwl_bufsize < bufsize) {
1399 *dkw = realloc(dkwl.dkwl_buf, bufsize); 1601 *dkw = realloc(dkwl.dkwl_buf, bufsize);
1400 if (*dkw == NULL) 1602 if (*dkw == NULL)
1401 return -3; 1603 return -3;
1402 dkwl.dkwl_buf = *dkw; 1604 dkwl.dkwl_buf = *dkw;
1403 dkwl.dkwl_bufsize = bufsize; 1605 dkwl.dkwl_bufsize = bufsize;
1404 } 1606 }
1405 } 1607 }
1406 1608
1407 if (dkwl.dkwl_nwedges > 0 && *dkw != NULL) 1609 if (dkwl.dkwl_nwedges > 0 && *dkw != NULL)
1408 qsort(*dkw, dkwl.dkwl_nwedges, sizeof(**dkw), get_dkwedges_sort); 1610 qsort(*dkw, dkwl.dkwl_nwedges, sizeof(**dkw), get_dkwedges_sort);
1409 1611
1410 close(fd); 1612 close(fd);
1411 return dkwl.dkwl_nwedges; 1613 return dkwl.dkwl_nwedges;
1412} 1614}
1413 1615
1414/* XXX: rewrite */ 1616/* XXX: rewrite */
1415static int 1617static int
1416incoregpt(pm_devs_t *pm_cur, partinfo *lp) 1618incoregpt(pm_devs_t *pm_cur, partinfo *lp)
1417{ 1619{
1418 int i, num; 1620 int i, num;
1419 unsigned int p_num; 1621 unsigned int p_num;
1420 uint64_t p_start, p_size; 1622 uint64_t p_start, p_size;
1421 char *textbuf, *t, *tt, p_type[STRSIZE]; 1623 char *textbuf, *t, *tt, p_type[STRSIZE];
1422 struct dkwedge_info *dkw; 1624 struct dkwedge_info *dkw;
1423 1625
1424 num = get_dkwedges(&dkw, pm_cur->diskdev); 1626 num = get_dkwedges(&dkw, pm_cur->diskdev);
1425 if (dkw != NULL) { 1627 if (dkw != NULL) {
1426 for (i = 0; i < num && i < MAX_WEDGES; i++) 1628 for (i = 0; i < num && i < MAX_WEDGES; i++)
1427 run_program(RUN_SILENT, "dkctl %s delwedge %s", 1629 run_program(RUN_SILENT, "dkctl %s delwedge %s",
1428 pm_cur->diskdev, dkw[i].dkw_devname); 1630 pm_cur->diskdev, dkw[i].dkw_devname);
1429 free (dkw); 1631 free (dkw);
1430 } 1632 }
1431 1633
1432 if (collect(T_OUTPUT, &textbuf, "gpt show -u %s 2>/dev/null", pm_cur->diskdev) < 1) 1634 if (collect(T_OUTPUT, &textbuf, "gpt show -u %s 2>/dev/null", pm_cur->diskdev) < 1)
1433 return -1; 1635 return -1;
1434 1636
1435 (void)strtok(textbuf, "\n"); /* ignore first line */ 1637 (void)strtok(textbuf, "\n"); /* ignore first line */
1436 while ((t = strtok(NULL, "\n")) != NULL) { 1638 while ((t = strtok(NULL, "\n")) != NULL) {
1437 i = 0; p_start = 0; p_size = 0; p_num = 0; strcpy(p_type, ""); /* init */ 1639 i = 0; p_start = 0; p_size = 0; p_num = 0; strcpy(p_type, ""); /* init */
1438 while ((tt = strsep(&t, " \t")) != NULL) { 1640 while ((tt = strsep(&t, " \t")) != NULL) {
1439 if (strlen(tt) == 0) 1641 if (strlen(tt) == 0)
1440 continue; 1642 continue;
1441 if (i == 0) 1643 if (i == 0)
1442 p_start = strtouq(tt, NULL, 10); 1644 p_start = strtouq(tt, NULL, 10);
1443 if (i == 1) 1645 if (i == 1)
1444 p_size = strtouq(tt, NULL, 10); 1646 p_size = strtouq(tt, NULL, 10);
1445 if (i == 2) 1647 if (i == 2)
1446 p_num = strtouq(tt, NULL, 10); 1648 p_num = strtouq(tt, NULL, 10);
1447 if (i > 2 || (i == 2 && p_num == 0)) 1649 if (i > 2 || (i == 2 && p_num == 0))
1448 if ( 1650 if (
1449 strcmp(tt, "GPT") && 1651 strcmp(tt, "GPT") &&
1450 strcmp(tt, "part") && 1652 strcmp(tt, "part") &&
1451 strcmp(tt, "-") 1653 strcmp(tt, "-")
1452 ) 1654 )
1453 strlcat(p_type, tt, STRSIZE); 1655 strlcat(p_type, tt, STRSIZE);
1454 i++; 1656 i++;
1455 } 1657 }
1456 if (p_start == 0 || p_size == 0) 1658 if (p_start == 0 || p_size == 0)
1457 continue; 1659 continue;
1458 else if (! strcmp(p_type, "Pritable")) 1660 else if (! strcmp(p_type, "Pritable"))
1459 pm_cur->ptstart = p_start + p_size; 1661 pm_cur->ptstart = p_start + p_size;
1460 else if (! strcmp(p_type, "Sectable")) 1662 else if (! strcmp(p_type, "Sectable"))
1461 pm_cur->ptsize = p_start - pm_cur->ptstart - 1; 1663 pm_cur->ptsize = p_start - pm_cur->ptstart - 1;
1462 else if (p_num == 0 && strlen(p_type) > 0) 1664 else if (p_num == 0 && strlen(p_type) > 0)
1463 /* Utilitary entry (PMBR, etc) */ 1665 /* Utilitary entry (PMBR, etc) */
1464 continue; 1666 continue;
1465 else if (p_num == 0) { 1667 else if (p_num == 0) {
1466 /* Free space */ 1668 /* Free space */
1467 continue; 1669 continue;
1468 } else { 1670 } else {
1469 /* Usual partition */ 1671 /* Usual partition */
1470 lp[p_num].pi_size = p_size; 1672 lp[p_num].pi_size = p_size;
1471 lp[p_num].pi_offset = p_start; 1673 lp[p_num].pi_offset = p_start;
1472 lp[p_num].pi_fstype = get_fsid_by_gptuuid(p_type); 1674 lp[p_num].pi_fstype = get_fsid_by_gptuuid(p_type);
1473 } 1675 }
1474 } 1676 }
1475 free(textbuf); 1677 free(textbuf);
1476 1678
1477 return 0; 1679 return 0;
1478} 1680}
1479 1681
1480static bool 1682static bool
1481is_gpt(const char *dev) 1683is_gpt(const char *dev)
1482{ 1684{
1483 1685
1484 check_available_binaries(); 1686 check_available_binaries();
1485 1687
1486 if (!have_gpt) 1688 if (!have_gpt)
1487 return false; 1689 return false;
1488 1690
1489 return run_program(RUN_SILENT | RUN_ERROR_OK, 1691 return run_program(RUN_SILENT | RUN_ERROR_OK,
1490 "gpt -qr header %s", dev) == 0; 1692 "gpt -qr header %s", dev) == 0;
1491} 1693}

cvs diff -r1.5 -r1.6 src/usr.sbin/sysinst/mbr.c (switch to unified diff)

--- src/usr.sbin/sysinst/mbr.c 2015/05/10 10:14:02 1.5
+++ src/usr.sbin/sysinst/mbr.c 2018/06/03 13:16:30 1.6
@@ -1,1903 +1,1906 @@ @@ -1,1903 +1,1906 @@
1/* $NetBSD: mbr.c,v 1.5 2015/05/10 10:14:02 martin Exp $ */ 1/* $NetBSD: mbr.c,v 1.6 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* 35/*
36 * Following applies to the geometry guessing code 36 * Following applies to the geometry guessing code
37 */ 37 */
38 38
39/* 39/*
40 * Mach Operating System 40 * Mach Operating System
41 * Copyright (c) 1992 Carnegie Mellon University 41 * Copyright (c) 1992 Carnegie Mellon University
42 * All Rights Reserved. 42 * All Rights Reserved.
43 * 43 *
44 * Permission to use, copy, modify and distribute this software and its 44 * Permission to use, copy, modify and distribute this software and its
45 * documentation is hereby granted, provided that both the copyright 45 * documentation is hereby granted, provided that both the copyright
46 * notice and this permission notice appear in all copies of the 46 * notice and this permission notice appear in all copies of the
47 * software, derivative works or modified versions, and any portions 47 * software, derivative works or modified versions, and any portions
48 * thereof, and that both notices appear in supporting documentation. 48 * thereof, and that both notices appear in supporting documentation.
49 * 49 *
50 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 50 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
51 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 51 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
52 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 52 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
53 * 53 *
54 * Carnegie Mellon requests users of this software to return to 54 * Carnegie Mellon requests users of this software to return to
55 * 55 *
56 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 56 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
57 * School of Computer Science 57 * School of Computer Science
58 * Carnegie Mellon University 58 * Carnegie Mellon University
59 * Pittsburgh PA 15213-3890 59 * Pittsburgh PA 15213-3890
60 * 60 *
61 * any improvements or extensions that they make and grant Carnegie Mellon 61 * any improvements or extensions that they make and grant Carnegie Mellon
62 * the rights to redistribute these changes. 62 * the rights to redistribute these changes.
63 */ 63 */
64 64
65/* mbr.c -- DOS Master Boot Record editing code */ 65/* mbr.c -- DOS Master Boot Record editing code */
66 66
67#include <sys/param.h> 67#include <sys/param.h>
68#include <sys/types.h> 68#include <sys/types.h>
69#include <stdio.h> 69#include <stdio.h>
70#include <unistd.h> 70#include <unistd.h>
71#include <fcntl.h> 71#include <fcntl.h>
72#include <util.h> 72#include <util.h>
73#include "defs.h" 73#include "defs.h"
74#include "mbr.h" 74#include "mbr.h"
75#include "md.h" 75#include "md.h"
76#include "msg_defs.h" 76#include "msg_defs.h"
77#include "menu_defs.h" 77#include "menu_defs.h"
78#include "endian.h" 78#include "endian.h"
79 79
80#define NO_BOOTMENU (-0x100) 80#define NO_BOOTMENU (-0x100)
81 81
82#define MAXCYL 1023 /* Possibly 1024 */ 82#define MAXCYL 1023 /* Possibly 1024 */
83#define MAXHEAD 255 /* Possibly 256 */ 83#define MAXHEAD 255 /* Possibly 256 */
84#define MAXSECTOR 63 84#define MAXSECTOR 63
85 85
86struct part_id { 86struct part_id {
87 int id; 87 int id;
88 const char *name; 88 const char *name;
89} part_ids[] = { 89} part_ids[] = {
90 {0, "unused"}, 90 {0, "unused"},
91 {MBR_PTYPE_NETBSD, "NetBSD"}, 91 {MBR_PTYPE_NETBSD, "NetBSD"},
92 {MBR_PTYPE_EXT_LBA, "Extended partition, LBA"}, 92 {MBR_PTYPE_EXT_LBA, "Extended partition, LBA"},
93 {MBR_PTYPE_386BSD, "FreeBSD/386BSD"}, 93 {MBR_PTYPE_386BSD, "FreeBSD/386BSD"},
94 {MBR_PTYPE_OPENBSD, "OpenBSD"}, 94 {MBR_PTYPE_OPENBSD, "OpenBSD"},
95 {MBR_PTYPE_LNXEXT2, "Linux native"}, 95 {MBR_PTYPE_LNXEXT2, "Linux native"},
96 {MBR_PTYPE_LNXSWAP, "Linux swap"}, 96 {MBR_PTYPE_LNXSWAP, "Linux swap"},
97 {MBR_PTYPE_FAT12, "DOS FAT12"}, 97 {MBR_PTYPE_FAT12, "DOS FAT12"},
98 {MBR_PTYPE_FAT16S, "DOS FAT16, <32M"}, 98 {MBR_PTYPE_FAT16S, "DOS FAT16, <32M"},
99 {MBR_PTYPE_FAT16B, "DOS FAT16, >32M"}, 99 {MBR_PTYPE_FAT16B, "DOS FAT16, >32M"},
100 {MBR_PTYPE_FAT16L, "Windows FAT16, LBA"}, 100 {MBR_PTYPE_FAT16L, "Windows FAT16, LBA"},
101 {MBR_PTYPE_FAT32, "Windows FAT32"}, 101 {MBR_PTYPE_FAT32, "Windows FAT32"},
102 {MBR_PTYPE_FAT32L, "Windows FAT32, LBA"}, 102 {MBR_PTYPE_FAT32L, "Windows FAT32, LBA"},
103 {MBR_PTYPE_NTFSVOL, "NTFS volume set"}, 103 {MBR_PTYPE_NTFSVOL, "NTFS volume set"},
104 {MBR_PTYPE_NTFS, "NTFS"}, 104 {MBR_PTYPE_NTFS, "NTFS"},
105 {MBR_PTYPE_PREP, "PReP Boot"}, 105 {MBR_PTYPE_PREP, "PReP Boot"},
106#ifdef MBR_PTYPE_SOLARIS 106#ifdef MBR_PTYPE_SOLARIS
107 {MBR_PTYPE_SOLARIS, "Solaris"}, 107 {MBR_PTYPE_SOLARIS, "Solaris"},
108#endif 108#endif
109 {-1, "Unknown"}, 109 {-1, "Unknown"},
110}; 110};
111 111
112static int get_mapping(struct mbr_partition *, int, int *, int *, int *, 112static int get_mapping(struct mbr_partition *, int, int *, int *, int *,
113 daddr_t *); 113 daddr_t *);
114static void convert_mbr_chs(int, int, int, uint8_t *, uint8_t *, 114static void convert_mbr_chs(int, int, int, uint8_t *, uint8_t *,
115 uint8_t *, uint32_t); 115 uint8_t *, uint32_t);
116static void get_ptn_alignment(struct mbr_partition *); 116static void get_ptn_alignment(struct mbr_partition *);
117 117
118static unsigned int ptn_alignment; 118static unsigned int ptn_alignment;
119static unsigned int ptn_0_offset; 119static unsigned int ptn_0_offset;
120 120
121/* 121/*
122 * Notes on the extended partition editor. 122 * Notes on the extended partition editor.
123 * 123 *
124 * The extended partition structure is actually a singly linked list. 124 * The extended partition structure is actually a singly linked list.
125 * Each of the 'mbr' sectors can only contain 2 items, the first describes 125 * Each of the 'mbr' sectors can only contain 2 items, the first describes
126 * a user partition (relative to that mbr sector), the second describes 126 * a user partition (relative to that mbr sector), the second describes
127 * the following partition (relative to the start of the extended partition). 127 * the following partition (relative to the start of the extended partition).
128 * 128 *
129 * The 'start' sector for the user partition is always the size of one 129 * The 'start' sector for the user partition is always the size of one
130 * track - very often 63. The extended partitions themselves should 130 * track - very often 63. The extended partitions themselves should
131 * always start on a cylinder boundary using the BIOS geometry - often 131 * always start on a cylinder boundary using the BIOS geometry - often
132 * 16065 sectors per cylinder. 132 * 16065 sectors per cylinder.
133 * 133 *
134 * The disk is also always described in increasing sector order. 134 * The disk is also always described in increasing sector order.
135 * 135 *
136 * During editing we keep the mbr sectors accurate (it might have been 136 * During editing we keep the mbr sectors accurate (it might have been
137 * easier to use absolute sector numbers though), and keep a copy of the 137 * easier to use absolute sector numbers though), and keep a copy of the
138 * entire sector - to preserve any information any other OS has tried 138 * entire sector - to preserve any information any other OS has tried
139 * to squirrel away in the (apparently) unused space. 139 * to squirrel away in the (apparently) unused space.
140 * 140 *
141 * For simplicity we add entries for unused space. These should not 141 * For simplicity we add entries for unused space. These should not
142 * get written to the disk. 142 * get written to the disk.
143 * 143 *
144 * Typical disk (with some small numbers): 144 * Typical disk (with some small numbers):
145 * 145 *
146 * 0 -> a 63 37 dos 146 * 0 -> a 63 37 dos
147 * b 100 1000 extended LBA (type 15) 147 * b 100 1000 extended LBA (type 15)
148 * 148 *
149 * 100 -> a 63 37 user 149 * 100 -> a 63 37 user
150 * b 100 200 extended partiton (type 5) 150 * b 100 200 extended partiton (type 5)
151 * 151 *
152 * 200 -> a 63 37 user 152 * 200 -> a 63 37 user
153 * b 200 300 extended partiton (type 5) 153 * b 200 300 extended partiton (type 5)
154 * 154 *
155 * 300 -> a 63 37 user 155 * 300 -> a 63 37 user
156 * b 0 0 0 (end of chain) 156 * b 0 0 0 (end of chain)
157 * 157 *
158 * If there is a gap, the 'b' partition will start beyond the area 158 * If there is a gap, the 'b' partition will start beyond the area
159 * described by the 'a' partition. 159 * described by the 'a' partition.
160 * 160 *
161 * While writing this comment, I can't remember what happens is there 161 * While writing this comment, I can't remember what happens is there
162 * is space at the start of the extended partition. 162 * is space at the start of the extended partition.
163 */ 163 */
164 164
165#ifndef debug_extended 165#ifndef debug_extended
166#define dump_mbr(mbr, msg) 166#define dump_mbr(mbr, msg)
167#else 167#else
168void 168void
169dump_mbr(mbr_info_t *mbr, const char *msg) 169dump_mbr(mbr_info_t *mbr, const char *msg)
170{ 170{
171 int i; 171 int i;
172 172
173 fprintf(stderr, "%s: bsec %d\n", msg, bsec); 173 fprintf(stderr, "%s: bsec %d\n", msg, bsec);
174 do { 174 do {
175 fprintf(stderr, "%9p: %9d %9p %6.6s:", 175 fprintf(stderr, "%9p: %9d %9p %6.6s:",
176 mbr, mbr->sector, mbr->extended, 176 mbr, mbr->sector, mbr->extended,
177 mbr->prev_ext, mbr->last_mounted); 177 mbr->prev_ext, mbr->last_mounted);
178 for (i = 0; i < 4; i++) 178 for (i = 0; i < 4; i++)
179 fprintf(stderr, " %*d %9d %9d %9d,\n", 179 fprintf(stderr, " %*d %9d %9d %9d,\n",
180 i ? 41 : 3, 180 i ? 41 : 3,
181 mbr->mbr.mbr_parts[i].mbrp_type, 181 mbr->mbr.mbr_parts[i].mbrp_type,
182 mbr->mbr.mbr_parts[i].mbrp_start, 182 mbr->mbr.mbr_parts[i].mbrp_start,
183 mbr->mbr.mbr_parts[i].mbrp_size, 183 mbr->mbr.mbr_parts[i].mbrp_size,
184 mbr->mbr.mbr_parts[i].mbrp_start + 184 mbr->mbr.mbr_parts[i].mbrp_start +
185 mbr->mbr.mbr_parts[i].mbrp_size); 185 mbr->mbr.mbr_parts[i].mbrp_size);
186 } while ((mbr = mbr->extended)); 186 } while ((mbr = mbr->extended));
187} 187}
188#endif 188#endif
189 189
190/* 190/*
191 * To be used only on ports which cannot provide any bios geometry 191 * To be used only on ports which cannot provide any bios geometry
192 */ 192 */
193int 193int
194set_bios_geom_with_mbr_guess(void) 194set_bios_geom_with_mbr_guess(void)
195{ 195{
196 int cyl, head; 196 int cyl, head;
197 daddr_t sec; 197 daddr_t sec;
198 198
199 read_mbr(pm->diskdev, &mbr); 199 read_mbr(pm->diskdev, &mbr);
200 msg_display(MSG_nobiosgeom, pm->dlcyl, pm->dlhead, pm->dlsec); 200 msg_display(MSG_nobiosgeom, pm->dlcyl, pm->dlhead, pm->dlsec);
201 if (guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec) >= 0) 201 if (guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec) >= 0)
202 msg_display_add(MSG_biosguess, cyl, head, sec); 202 msg_display_add(MSG_biosguess, cyl, head, sec);
203 set_bios_geom(cyl, head, sec); 203 set_bios_geom(cyl, head, sec);
204 return edit_mbr(&mbr); 204 return edit_mbr(&mbr);
205} 205}
206 206
207/* 207/*
208 * get C/H/S geometry from user via menu interface and 208 * get C/H/S geometry from user via menu interface and
209 * store in globals. 209 * store in globals.
210 */ 210 */
211void 211void
212set_bios_geom(int cyl, int head, int sec) 212set_bios_geom(int cyl, int head, int sec)
213{ 213{
214 char res[80]; 214 char res[80];
215 215
216 msg_display_add(MSG_setbiosgeom); 216 msg_display_add(MSG_setbiosgeom);
217 217
218 do { 218 do {
219 snprintf(res, 80, "%d", sec); 219 snprintf(res, 80, "%d", sec);
220 msg_prompt_add(MSG_sectors, res, res, 80); 220 msg_prompt_add(MSG_sectors, res, res, 80);
221 bsec = atoi(res); 221 bsec = atoi(res);
222 } while (bsec <= 0 || bsec > 63); 222 } while (bsec <= 0 || bsec > 63);
223 223
224 do { 224 do {
225 snprintf(res, 80, "%d", head); 225 snprintf(res, 80, "%d", head);
226 msg_prompt_add(MSG_heads, res, res, 80); 226 msg_prompt_add(MSG_heads, res, res, 80);
227 bhead = atoi(res); 227 bhead = atoi(res);
228 } while (bhead <= 0 || bhead > 256); 228 } while (bhead <= 0 || bhead > 256);
229 229
230 bcyl = pm->dlsize / bsec / bhead; 230 bcyl = pm->dlsize / bsec / bhead;
231 if (pm->dlsize != bcyl * bsec * bhead) 231 if (pm->dlsize != bcyl * bsec * bhead)
232 bcyl++; 232 bcyl++;
233} 233}
234 234
235#ifdef notdef 235#ifdef notdef
236void 236void
237disp_cur_geom(void) 237disp_cur_geom(void)
238{ 238{
239 239
240 msg_display_add(MSG_realgeom, pm->dlcyl, pm->dlhead, pm->dlsec); 240 msg_display_add(MSG_realgeom, pm->dlcyl, pm->dlhead, pm->dlsec);
241 msg_display_add(MSG_biosgeom, bcyl, bhead, bsec); 241 msg_display_add(MSG_biosgeom, bcyl, bhead, bsec);
242} 242}
243#endif 243#endif
244 244
245 245
246/* 246/*
247 * Then, the partition stuff... 247 * Then, the partition stuff...
248 */ 248 */
249 249
250/* 250/*
251 * If we change the mbr partitioning, the we must remove any references 251 * If we change the mbr partitioning, the we must remove any references
252 * in the netbsd disklabel to the part we changed. 252 * in the netbsd disklabel to the part we changed.
253 */ 253 */
254static void 254static void
255remove_old_partitions(uint start, int64_t size) 255remove_old_partitions(uint start, int64_t size)
256{ 256{
257 partinfo *p; 257 partinfo *p;
258 uint end; 258 uint end;
259 259
260 if (size > 0) { 260 if (size > 0) {
261 end = start + size; 261 end = start + size;
262 } else { 262 } else {
263 end = start; 263 end = start;
264 start = end - size; 264 start = end - size;
265 } 265 }
266 266
267 if (end == 0) 267 if (end == 0)
268 return; 268 return;
269 269
270 for (p = pm->oldlabel; p < pm->oldlabel + nelem(pm->oldlabel); p++) { 270 for (p = pm->oldlabel; p < pm->oldlabel + nelem(pm->oldlabel); p++) {
271 if (p->pi_offset >= end || p->pi_offset + p->pi_size <= start) 271 if (p->pi_offset >= end || p->pi_offset + p->pi_size <= start)
272 continue; 272 continue;
273 memset(p, 0, sizeof *p); 273 memset(p, 0, sizeof *p);
274 } 274 }
275} 275}
276 276
277static int 277static int
278find_mbr_space(struct mbr_sector *mbrs, uint *start, uint *size, uint from, int ignore) 278find_mbr_space(struct mbr_sector *mbrs, uint *start, uint *size, uint from, int ignore)
279{ 279{
280 uint sz; 280 uint sz;
281 int i; 281 int i;
282 uint s, e; 282 uint s, e;
283 283
284 check_again: 284 check_again:
285 sz = pm->dlsize - from; 285 sz = pm->dlsize - from;
286 for (i = 0; i < MBR_PART_COUNT; i++) { 286 for (i = 0; i < MBR_PART_COUNT; i++) {
287 if (i == ignore) 287 if (i == ignore)
288 continue; 288 continue;
289 s = mbrs->mbr_parts[i].mbrp_start; 289 s = mbrs->mbr_parts[i].mbrp_start;
290 e = s + mbrs->mbr_parts[i].mbrp_size; 290 e = s + mbrs->mbr_parts[i].mbrp_size;
291 if (s <= from && e > from) { 291 if (s <= from && e > from) {
292 from = e; 292 from = e;
293 goto check_again; 293 goto check_again;
294 } 294 }
295 if (s > from && s - from < sz) 295 if (s > from && s - from < sz)
296 sz = s - from; 296 sz = s - from;
297 } 297 }
298 if (sz == 0) 298 if (sz == 0)
299 return -1; 299 return -1;
300 if (start != NULL) 300 if (start != NULL)
301 *start = from; 301 *start = from;
302 if (size != NULL) 302 if (size != NULL)
303 *size = sz; 303 *size = sz;
304 return 0; 304 return 0;
305} 305}
306 306
307static struct mbr_partition * 307static struct mbr_partition *
308get_mbrp(mbr_info_t **mbrip, int opt) 308get_mbrp(mbr_info_t **mbrip, int opt)
309{ 309{
310 mbr_info_t *mbri = *mbrip; 310 mbr_info_t *mbri = *mbrip;
311 311
312 if (opt >= MBR_PART_COUNT) 312 if (opt >= MBR_PART_COUNT)
313 for (opt -= MBR_PART_COUNT - 1; opt; opt--) 313 for (opt -= MBR_PART_COUNT - 1; opt; opt--)
314 mbri = mbri->extended; 314 mbri = mbri->extended;
315 315
316 *mbrip = mbri; 316 *mbrip = mbri;
317 return &mbri->mbr.mbr_parts[opt]; 317 return &mbri->mbr.mbr_parts[opt];
318} 318}
319 319
320static int 320static int
321err_msg_win(const char *errmsg) 321err_msg_win(const char *errmsg)
322{ 322{
323 const char *cont; 323 const char *cont;
324 int l, l1; 324 int l, l1;
325 325
326 errmsg = msg_string(errmsg); 326 errmsg = msg_string(errmsg);
327 cont = msg_string(MSG_Hit_enter_to_continue); 327 cont = msg_string(MSG_Hit_enter_to_continue);
328 328
329 l = strlen(errmsg); 329 l = strlen(errmsg);
330 l1 = strlen(cont); 330 l1 = strlen(cont);
331 if (l < l1) 331 if (l < l1)
332 l = l1; 332 l = l1;
333 333
334 msg_prompt_win("%s.\n%s", -1, 18, l + 5, 4, 334 msg_prompt_win("%s.\n%s", -1, 18, l + 5, 4,
335 NULL, NULL, 1, errmsg, cont); 335 NULL, NULL, 1, errmsg, cont);
336 return 0; 336 return 0;
337} 337}
338 338
339static int 339static int
340set_mbr_type(menudesc *m, void *arg) 340set_mbr_type(menudesc *m, void *arg)
341{ 341{
342 mbr_info_t *mbri = arg; 342 mbr_info_t *mbri = arg;
343 mbr_info_t *ombri = arg; 343 mbr_info_t *ombri = arg;
344 mbr_info_t *ext; 344 mbr_info_t *ext;
345 struct mbr_partition *mbrp; 345 struct mbr_partition *mbrp;
346 char *cp; 346 char *cp;
347 int opt = mbri->opt; 347 int opt = mbri->opt;
348 int type; 348 int type;
349 u_int start, sz; 349 u_int start, sz;
350 int i; 350 int i;
351 char numbuf[5]; 351 char numbuf[5];
352 352
353 dump_mbr(ombri, "set type"); 353 dump_mbr(ombri, "set type");
354 354
355 mbrp = get_mbrp(&mbri, opt); 355 mbrp = get_mbrp(&mbri, opt);
356 if (opt >= MBR_PART_COUNT) 356 if (opt >= MBR_PART_COUNT)
357 opt = 0; 357 opt = 0;
358 358
359 type = m->cursel; 359 type = m->cursel;
360 if (type == 0) 360 if (type == 0)
361 return 1; 361 return 1;
362 type = part_ids[type - 1].id; 362 type = part_ids[type - 1].id;
363 while (type == -1) { 363 while (type == -1) {
364 snprintf(numbuf, sizeof numbuf, "%u", mbrp->mbrp_type); 364 snprintf(numbuf, sizeof numbuf, "%u", mbrp->mbrp_type);
365 msg_prompt_win(MSG_get_ptn_id, -1, 18, 0, 0, 365 msg_prompt_win(MSG_get_ptn_id, -1, 18, 0, 0,
366 numbuf, numbuf, sizeof numbuf); 366 numbuf, numbuf, sizeof numbuf);
367 type = strtoul(numbuf, &cp, 0); 367 type = strtoul(numbuf, &cp, 0);
368 if (*cp != 0) 368 if (*cp != 0)
369 type = -1; 369 type = -1;
370 } 370 }
371 371
372 if (type == mbrp->mbrp_type) 372 if (type == mbrp->mbrp_type)
373 /* type not changed... */ 373 /* type not changed... */
374 return 1; 374 return 1;
375 375
376 mbri->last_mounted[opt < MBR_PART_COUNT ? opt : 0] = NULL; 376 mbri->last_mounted[opt < MBR_PART_COUNT ? opt : 0] = NULL;
377 377
378 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) { 378 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) {
379 /* deleting extended partition.... */ 379 /* deleting extended partition.... */
380 if (mbri->sector || mbri->extended->extended) 380 if (mbri->sector || mbri->extended->extended)
381 /* We should have stopped this happening... */ 381 /* We should have stopped this happening... */
382 return err_msg_win("can't delete extended"); 382 return err_msg_win("can't delete extended");
383 free(mbri->extended); 383 free(mbri->extended);
384 mbri->extended = NULL; 384 mbri->extended = NULL;
385 } 385 }
386 386
387 if (type == 0) { 387 if (type == 0) {
388 /* Deleting partition */ 388 /* Deleting partition */
389 mbrp->mbrp_type = 0; 389 mbrp->mbrp_type = 0;
390 /* Remove references to this space from the NetBSD label */ 390 /* Remove references to this space from the NetBSD label */
391 remove_old_partitions(mbri->sector + mbrp->mbrp_start, 391 remove_old_partitions(mbri->sector + mbrp->mbrp_start,
392 mbrp->mbrp_size); 392 mbrp->mbrp_size);
393#ifdef BOOTSEL 393#ifdef BOOTSEL
394 if (ombri->bootsec == mbri->sector + mbrp->mbrp_start) 394 if (ombri->bootsec == mbri->sector + mbrp->mbrp_start)
395 ombri->bootsec = 0; 395 ombri->bootsec = 0;
396 396
397 memset(mbri->mbrb.mbrbs_nametab[opt], 0, 397 memset(mbri->mbrb.mbrbs_nametab[opt], 0,
398 sizeof mbri->mbrb.mbrbs_nametab[opt]); 398 sizeof mbri->mbrb.mbrbs_nametab[opt]);
399#endif 399#endif
400 if (mbri->sector == 0) { 400 if (mbri->sector == 0) {
401 /* A main partition */ 401 /* A main partition */
402 memset(mbrp, 0, sizeof *mbrp); 402 memset(mbrp, 0, sizeof *mbrp);
403 return 1; 403 return 1;
404 } 404 }
405 405
406 /* Merge with previous and next free areas */ 406 /* Merge with previous and next free areas */
407 ext = mbri->prev_ext; 407 ext = mbri->prev_ext;
408 if (ext != NULL && ext->mbr.mbr_parts[0].mbrp_type == 0) { 408 if (ext != NULL && ext->mbr.mbr_parts[0].mbrp_type == 0) {
409 /* previous was free - back up one entry */ 409 /* previous was free - back up one entry */
410 mbri = ext; 410 mbri = ext;
411 ombri->opt--; 411 ombri->opt--;
412 } 412 }
413 while ((ext = mbri->extended)) { 413 while ((ext = mbri->extended)) {
414 if (ext->mbr.mbr_parts[0].mbrp_type != 0) 414 if (ext->mbr.mbr_parts[0].mbrp_type != 0)
415 break; 415 break;
416 sz = ext->mbr.mbr_parts[0].mbrp_start + 416 sz = ext->mbr.mbr_parts[0].mbrp_start +
417 ext->mbr.mbr_parts[0].mbrp_size; 417 ext->mbr.mbr_parts[0].mbrp_size;
418 /* Increase size of our (empty) partition */ 418 /* Increase size of our (empty) partition */
419 mbri->mbr.mbr_parts[0].mbrp_size += sz; 419 mbri->mbr.mbr_parts[0].mbrp_size += sz;
420 /* Make us describe the next partition */ 420 /* Make us describe the next partition */
421 mbri->mbr.mbr_parts[1] = ext->mbr.mbr_parts[1]; 421 mbri->mbr.mbr_parts[1] = ext->mbr.mbr_parts[1];
422 /* fix list of extended partitions */ 422 /* fix list of extended partitions */
423 mbri->extended = ext->extended; 423 mbri->extended = ext->extended;
424 if (ext->extended != NULL) 424 if (ext->extended != NULL)
425 ext->extended->prev_ext = mbri; 425 ext->extended->prev_ext = mbri;
426 free(ext); 426 free(ext);
427 /* Make previous size cover all our ptn */ 427 /* Make previous size cover all our ptn */
428 ext = mbri->prev_ext; 428 ext = mbri->prev_ext;
429 if (ext != NULL) 429 if (ext != NULL)
430 ext->mbr.mbr_parts[1].mbrp_size += sz; 430 ext->mbr.mbr_parts[1].mbrp_size += sz;
431 } 431 }
432 return 1; 432 return 1;
433 } 433 }
434 434
435 if (mbrp->mbrp_start == 0) { 435 if (mbrp->mbrp_start == 0) {
436 /* Find first chunk of space... */ 436 /* Find first chunk of space... */
437 /* Must be in the main partition */ 437 /* Must be in the main partition */
438 if (mbri->sector != 0) 438 if (mbri->sector != 0)
439 /* shouldn't be possible to have null start... */ 439 /* shouldn't be possible to have null start... */
440 return err_msg_win("main-extended mixup"); 440 return err_msg_win("main-extended mixup");
441 if (find_mbr_space(&mbri->mbr, &start, &sz, bsec, -1) != 0) 441 if (find_mbr_space(&mbri->mbr, &start, &sz, bsec, -1) != 0)
442 /* no space */ 442 /* no space */
443 return err_msg_win(MSG_No_free_space); 443 return err_msg_win(MSG_No_free_space);
444 mbrp->mbrp_start = start; 444 mbrp->mbrp_start = start;
445 mbrp->mbrp_size = sz; 445 mbrp->mbrp_size = sz;
446 /* If there isn't an active partition mark this one active */ 446 /* If there isn't an active partition mark this one active */
447 if (!MBR_IS_EXTENDED(type)) { 447 if (!MBR_IS_EXTENDED(type)) {
448 for (i = 0; i < MBR_PART_COUNT; i++) 448 for (i = 0; i < MBR_PART_COUNT; i++)
449 if (mbri->mbr.mbr_parts[i].mbrp_flag != 0) 449 if (mbri->mbr.mbr_parts[i].mbrp_flag != 0)
450 break; 450 break;
451 if (i == MBR_PART_COUNT) 451 if (i == MBR_PART_COUNT)
452 mbrp->mbrp_flag = MBR_PFLAG_ACTIVE; 452 mbrp->mbrp_flag = MBR_PFLAG_ACTIVE;
453 } 453 }
454 } 454 }
455 455
456 if (MBR_IS_EXTENDED(type)) { 456 if (MBR_IS_EXTENDED(type)) {
457 if (mbri->sector != 0) 457 if (mbri->sector != 0)
458 /* Can't set extended partition in an extended one */ 458 /* Can't set extended partition in an extended one */
459 return err_msg_win(MSG_Only_one_extended_ptn); 459 return err_msg_win(MSG_Only_one_extended_ptn);
460 if (mbri->extended) 460 if (mbri->extended)
461 /* Can't have two extended partitions */ 461 /* Can't have two extended partitions */
462 return err_msg_win(MSG_Only_one_extended_ptn); 462 return err_msg_win(MSG_Only_one_extended_ptn);
463 /* Create new extended partition */ 463 /* Create new extended partition */
464 ext = calloc(1, sizeof *mbri->extended); 464 ext = calloc(1, sizeof *mbri->extended);
465 if (!ext) 465 if (!ext)
466 return 0; 466 return 0;
467 mbri->extended = ext; 467 mbri->extended = ext;
468 ext->sector = mbrp->mbrp_start; 468 ext->sector = mbrp->mbrp_start;
469 ext->mbr.mbr_parts[0].mbrp_start = ptn_0_offset; 469 ext->mbr.mbr_parts[0].mbrp_start = ptn_0_offset;
470 ext->mbr.mbr_parts[0].mbrp_size = 470 ext->mbr.mbr_parts[0].mbrp_size =
471 mbrp->mbrp_size - ptn_0_offset; 471 mbrp->mbrp_size - ptn_0_offset;
472 } 472 }
473 mbrp->mbrp_type = type; 473 mbrp->mbrp_type = type;
474 474
475 return 1; 475 return 1;
476} 476}
477 477
478static void 478static void
479set_type_label(menudesc *m, int opt, void *arg) 479set_type_label(menudesc *m, int opt, void *arg)
480{ 480{
481 481
482 if (opt == 0) { 482 if (opt == 0) {
483 wprintw(m->mw, "%s", msg_string(MSG_Dont_change)); 483 wprintw(m->mw, "%s", msg_string(MSG_Dont_change));
484 return; 484 return;
485 } 485 }
486 if (opt == 1) { 486 if (opt == 1) {
487 wprintw(m->mw, "%s", msg_string(MSG_Delete_partition)); 487 wprintw(m->mw, "%s", msg_string(MSG_Delete_partition));
488 return; 488 return;
489 } 489 }
490 if (part_ids[opt - 1].id == -1) { 490 if (part_ids[opt - 1].id == -1) {
491 wprintw(m->mw, "%s", msg_string(MSG_Other_kind)); 491 wprintw(m->mw, "%s", msg_string(MSG_Other_kind));
492 return; 492 return;
493 } 493 }
494 wprintw(m->mw, "%s", part_ids[opt - 1].name); 494 wprintw(m->mw, "%s", part_ids[opt - 1].name);
495} 495}
496 496
497static int 497static int
498edit_mbr_type(menudesc *m, void *arg) 498edit_mbr_type(menudesc *m, void *arg)
499{ 499{
500 static menu_ent type_opts[1 + nelem(part_ids)]; 500 static menu_ent type_opts[1 + nelem(part_ids)];
501 static int type_menu = -1; 501 static int type_menu = -1;
502 unsigned int i; 502 unsigned int i;
503 503
504 if (type_menu == -1) { 504 if (type_menu == -1) {
505 for (i = 0; i < nelem(type_opts); i++) { 505 for (i = 0; i < nelem(type_opts); i++) {
506 type_opts[i].opt_menu = OPT_NOMENU; 506 type_opts[i].opt_menu = OPT_NOMENU;
507 type_opts[i].opt_action = set_mbr_type; 507 type_opts[i].opt_action = set_mbr_type;
508 } 508 }
509 type_menu = new_menu(NULL, type_opts, nelem(type_opts), 509 type_menu = new_menu(NULL, type_opts, nelem(type_opts),
510 13, 12, 0, 30, 510 13, 12, 0, 30,
511 MC_SUBMENU | MC_SCROLL | MC_NOEXITOPT | MC_NOCLEAR, 511 MC_SUBMENU | MC_SCROLL | MC_NOEXITOPT | MC_NOCLEAR,
512 NULL, set_type_label, NULL, 512 NULL, set_type_label, NULL,
513 NULL, NULL); 513 NULL, NULL);
514 } 514 }
515 515
516 if (type_menu != -1) 516 if (type_menu != -1)
517 process_menu(type_menu, arg); 517 process_menu(type_menu, arg);
518 518
519 return 0; 519 return 0;
520} 520}
521 521
522static int 522static int
523edit_mbr_start(menudesc *m, void *arg) 523edit_mbr_start(menudesc *m, void *arg)
524{ 524{
525 mbr_info_t *mbri = arg; 525 mbr_info_t *mbri = arg;
526 mbr_info_t *ext; 526 mbr_info_t *ext;
527 struct mbr_partition *mbrp; 527 struct mbr_partition *mbrp;
528 int opt = mbri->opt; 528 int opt = mbri->opt;
529 uint start, sz; 529 uint start, sz;
530 uint new_r, new, limit, dflt_r; 530 uint new_r, new, limit, dflt_r;
531 int64_t delta; 531 int64_t delta;
532 const char *errmsg; 532 const char *errmsg;
533 char *cp; 533 char *cp;
534 struct { 534 struct {
535 uint start; 535 uint start;
536 uint start_r; 536 uint start_r;
537 uint limit; 537 uint limit;
538 } freespace[MBR_PART_COUNT]; 538 } freespace[MBR_PART_COUNT];
539 unsigned int spaces; 539 unsigned int spaces;
540 unsigned int i; 540 unsigned int i;
541 char prompt[MBR_PART_COUNT * 60]; 541 char prompt[MBR_PART_COUNT * 60];
542 unsigned int len; 542 unsigned int len;
543 char numbuf[12]; 543 char numbuf[12];
544 544
545 if (opt >= MBR_PART_COUNT) 545 if (opt >= MBR_PART_COUNT)
546 /* should not be able to get here... */ 546 /* should not be able to get here... */
547 return 1; 547 return 1;
548 548
549 mbrp = mbri->mbr.mbr_parts + opt; 549 mbrp = mbri->mbr.mbr_parts + opt;
550 /* locate the start of all free areas */ 550 /* locate the start of all free areas */
551 spaces = 0; 551 spaces = 0;
552 for (start = bsec, i = 0; i < MBR_PART_COUNT; start += sz, i++) { 552 for (start = bsec, i = 0; i < MBR_PART_COUNT; start += sz, i++) {
553 if (find_mbr_space(&mbri->mbr, &start, &sz, start, opt)) 553 if (find_mbr_space(&mbri->mbr, &start, &sz, start, opt))
554 break; 554 break;
555 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) { 555 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) {
556 /* Only want the area that contains this partition */ 556 /* Only want the area that contains this partition */
557 if (mbrp->mbrp_start < start || 557 if (mbrp->mbrp_start < start ||
558 mbrp->mbrp_start >= start + sz) 558 mbrp->mbrp_start >= start + sz)
559 continue; 559 continue;
560 i = MBR_PART_COUNT - 1; 560 i = MBR_PART_COUNT - 1;
561 } 561 }
562 freespace[spaces].start = start; 562 freespace[spaces].start = start;
563 freespace[spaces].start_r = start / sizemult; 563 freespace[spaces].start_r = start / sizemult;
564 freespace[spaces].limit = start + sz; 564 freespace[spaces].limit = start + sz;
565 if (++spaces >= sizeof freespace) 565 if (++spaces >= sizeof freespace)
566 /* shouldn't happen... */ 566 /* shouldn't happen... */
567 break; 567 break;
568 } 568 }
569 569
570 /* Add description of start/size to user prompt */ 570 /* Add description of start/size to user prompt */
571 len = 0; 571 len = 0;
572 for (i = 0; i < spaces; i++) { 572 for (i = 0; i < spaces; i++) {
573 len += snprintf(prompt + len, sizeof prompt - len, 573 len += snprintf(prompt + len, sizeof prompt - len,
574 msg_string(MSG_ptn_starts), 574 msg_string(MSG_ptn_starts),
575 freespace[i].start_r, 575 freespace[i].start_r,
576 freespace[i].limit / sizemult, multname, 576 freespace[i].limit / sizemult, multname,
577 freespace[i].limit / sizemult - freespace[i].start_r, 577 freespace[i].limit / sizemult - freespace[i].start_r,
578 multname); 578 multname);
579 if (len >= sizeof prompt) 579 if (len >= sizeof prompt)
580 break; 580 break;
581 } 581 }
582 582
583 /* And loop until the user gives a sensible answer */ 583 /* And loop until the user gives a sensible answer */
584 dflt_r = mbrp->mbrp_start / sizemult; 584 dflt_r = mbrp->mbrp_start / sizemult;
585 errmsg = ""; 585 errmsg = "";
586 for (;;) { 586 for (;;) {
587 snprintf(numbuf, sizeof numbuf, "%d", dflt_r); 587 snprintf(numbuf, sizeof numbuf, "%d", dflt_r);
588 msg_prompt_win(MSG_get_ptn_start, -1, 18, 60, spaces + 3, 588 msg_prompt_win(MSG_get_ptn_start, -1, 18, 60, spaces + 3,
589 numbuf, numbuf, sizeof numbuf, 589 numbuf, numbuf, sizeof numbuf,
590 prompt, msg_string(errmsg), multname); 590 prompt, msg_string(errmsg), multname);
591 new_r = strtoul(numbuf, &cp, 0); 591 new_r = strtoul(numbuf, &cp, 0);
592 if (*cp != 0) { 592 if (*cp != 0) {
593 errmsg = MSG_Invalid_numeric; 593 errmsg = MSG_Invalid_numeric;
594 continue; 594 continue;
595 } 595 }
596 if (new_r == dflt_r) 596 if (new_r == dflt_r)
597 /* Unchanged */ 597 /* Unchanged */
598 return 0; 598 return 0;
599 /* 599 /*
600 * Check that the start address from the user is inside one 600 * Check that the start address from the user is inside one
601 * of the free areas. 601 * of the free areas.
602 */ 602 */
603 new = new_r * sizemult; 603 new = new_r * sizemult;
604 for (i = 0; i < spaces; i++) { 604 for (i = 0; i < spaces; i++) {
605 if (new_r == freespace[i].start_r) { 605 if (new_r == freespace[i].start_r) {
606 new = freespace[i].start; 606 new = freespace[i].start;
607 break; 607 break;
608 } 608 }
609 if (new >= freespace[i].start && 609 if (new >= freespace[i].start &&
610 new < freespace[i].limit) 610 new < freespace[i].limit)
611 break; 611 break;
612 } 612 }
613 if (i >= spaces) { 613 if (i >= spaces) {
614 errmsg = MSG_Space_allocated; 614 errmsg = MSG_Space_allocated;
615 continue; 615 continue;
616 } 616 }
617 limit = freespace[i].limit; 617 limit = freespace[i].limit;
618 /* 618 /*
619 * We can only increase the start of an extended partition 619 * We can only increase the start of an extended partition
620 * if the corresponding space inside the partition isn't used. 620 * if the corresponding space inside the partition isn't used.
621 */ 621 */
622 if (new > mbrp->mbrp_start && 622 if (new > mbrp->mbrp_start &&
623 MBR_IS_EXTENDED(mbrp->mbrp_type) && 623 MBR_IS_EXTENDED(mbrp->mbrp_type) &&
624 (mbri->extended->mbr.mbr_parts[0].mbrp_type != 0 || 624 (mbri->extended->mbr.mbr_parts[0].mbrp_type != 0 ||
625 mbri->extended->mbr.mbr_parts[0].mbrp_size < 625 mbri->extended->mbr.mbr_parts[0].mbrp_size <
626 new - mbrp->mbrp_start)) { 626 new - mbrp->mbrp_start)) {
627 errmsg = MSG_Space_allocated; 627 errmsg = MSG_Space_allocated;
628 continue; 628 continue;
629 } 629 }
630 break; 630 break;
631 } 631 }
632 632
633 if (new < mbrp->mbrp_start + mbrp->mbrp_size && 633 if (new < mbrp->mbrp_start + mbrp->mbrp_size &&
634 limit > mbrp->mbrp_start) 634 limit > mbrp->mbrp_start)
635 /* Keep end of partition in the same place */ 635 /* Keep end of partition in the same place */
636 limit = mbrp->mbrp_start + mbrp->mbrp_size; 636 limit = mbrp->mbrp_start + mbrp->mbrp_size;
637 637
638 delta = new - mbrp->mbrp_start; 638 delta = new - mbrp->mbrp_start;
639 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) { 639 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) {
640 ext = mbri->extended; 640 ext = mbri->extended;
641 if (ext->mbr.mbr_parts[0].mbrp_type != 0) { 641 if (ext->mbr.mbr_parts[0].mbrp_type != 0) {
642 /* allocate an extended ptn for the free item */ 642 /* allocate an extended ptn for the free item */
643 ext = calloc(1, sizeof *ext); 643 ext = calloc(1, sizeof *ext);
644 if (!ext) 644 if (!ext)
645 return 0; 645 return 0;
646 ext->sector = mbrp->mbrp_start; 646 ext->sector = mbrp->mbrp_start;
647 ext->extended = mbri->extended; 647 ext->extended = mbri->extended;
648 mbri->extended->prev_ext = ext; 648 mbri->extended->prev_ext = ext;
649 mbri->extended = ext; 649 mbri->extended = ext;
650 ext->mbr.mbr_parts[0].mbrp_start = bsec; 650 ext->mbr.mbr_parts[0].mbrp_start = bsec;
651 ext->mbr.mbr_parts[0].mbrp_size = -bsec; 651 ext->mbr.mbr_parts[0].mbrp_size = -bsec;
652 ext->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT; 652 ext->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT;
653 ext->mbr.mbr_parts[1].mbrp_start = 0; 653 ext->mbr.mbr_parts[1].mbrp_start = 0;
654 ext->mbr.mbr_parts[1].mbrp_size = 654 ext->mbr.mbr_parts[1].mbrp_size =
655 ext->extended->mbr.mbr_parts[0].mbrp_start + 655 ext->extended->mbr.mbr_parts[0].mbrp_start +
656 ext->extended->mbr.mbr_parts[0].mbrp_size; 656 ext->extended->mbr.mbr_parts[0].mbrp_size;
657 } 657 }
658 /* adjust size of first free item */ 658 /* adjust size of first free item */
659 ext->mbr.mbr_parts[0].mbrp_size -= delta; 659 ext->mbr.mbr_parts[0].mbrp_size -= delta;
660 ext->sector += delta; 660 ext->sector += delta;
661 /* and the link of all extended partitions */ 661 /* and the link of all extended partitions */
662 do 662 do
663 if (ext->extended) 663 if (ext->extended)
664 ext->mbr.mbr_parts[1].mbrp_start -= delta; 664 ext->mbr.mbr_parts[1].mbrp_start -= delta;
665 while ((ext = ext->extended)); 665 while ((ext = ext->extended));
666 } 666 }
667 remove_old_partitions(mbri->sector + mbrp->mbrp_start, delta); 667 remove_old_partitions(mbri->sector + mbrp->mbrp_start, delta);
668 668
669 /* finally set partition base and size */ 669 /* finally set partition base and size */
670 mbrp->mbrp_start = new; 670 mbrp->mbrp_start = new;
671 mbrp->mbrp_size = limit - new; 671 mbrp->mbrp_size = limit - new;
672 mbri->last_mounted[opt] = NULL; 672 mbri->last_mounted[opt] = NULL;
673 673
674 return 0; 674 return 0;
675} 675}
676 676
677static int 677static int
678edit_mbr_size(menudesc *m, void *arg) 678edit_mbr_size(menudesc *m, void *arg)
679{ 679{
680 mbr_info_t *mbri = arg; 680 mbr_info_t *mbri = arg;
681 mbr_info_t *ombri = arg; 681 mbr_info_t *ombri = arg;
682 mbr_info_t *ext; 682 mbr_info_t *ext;
683 struct mbr_partition *mbrp; 683 struct mbr_partition *mbrp;
684 int opt = mbri->opt; 684 int opt = mbri->opt;
685 uint start, max, max_r, dflt, dflt_r, new; 685 uint start, max, max_r, dflt, dflt_r, new;
686 uint freespace; 686 uint freespace;
687 int delta; 687 int delta;
688 char numbuf[12]; 688 char numbuf[12];
689 char *cp; 689 char *cp;
690 const char *errmsg; 690 const char *errmsg;
691 691
692 mbrp = get_mbrp(&mbri, opt); 692 mbrp = get_mbrp(&mbri, opt);
693 dflt = mbrp->mbrp_size; 693 dflt = mbrp->mbrp_size;
694 if (opt < MBR_PART_COUNT) { 694 if (opt < MBR_PART_COUNT) {
695 max = 0; 695 max = 0;
696 find_mbr_space(&mbri->mbr, &start, &max, mbrp->mbrp_start, opt); 696 find_mbr_space(&mbri->mbr, &start, &max, mbrp->mbrp_start, opt);
697 if (start != mbrp->mbrp_start) 697 if (start != mbrp->mbrp_start)
698 return 0; 698 return 0;
699 if (dflt == 0) 699 if (dflt == 0)
700 dflt = max; 700 dflt = max;
701 } else { 701 } else {
702 ext = mbri->extended; 702 ext = mbri->extended;
703 max = dflt; 703 max = dflt;
704 /* 704 /*
705 * If the next extended partition describes a free area, 705 * If the next extended partition describes a free area,
706 * then merge it onto this area. 706 * then merge it onto this area.
707 */ 707 */
708 if (ext != NULL && ext->mbr.mbr_parts[0].mbrp_type == 0) { 708 if (ext != NULL && ext->mbr.mbr_parts[0].mbrp_type == 0) {
709 if (ext->extended) 709 if (ext->extended)
710 ext->extended->prev_ext = mbri; 710 ext->extended->prev_ext = mbri;
711 mbri->extended = ext->extended; 711 mbri->extended = ext->extended;
712 if (mbri->prev_ext) 712 if (mbri->prev_ext)
713 mbri->prev_ext->mbr.mbr_parts[1].mbrp_size 713 mbri->prev_ext->mbr.mbr_parts[1].mbrp_size
714 += mbri->mbr.mbr_parts[1].mbrp_size; 714 += mbri->mbr.mbr_parts[1].mbrp_size;
715 mbrp->mbrp_size += mbri->mbr.mbr_parts[1].mbrp_size; 715 mbrp->mbrp_size += mbri->mbr.mbr_parts[1].mbrp_size;
716 max += mbri->mbr.mbr_parts[1].mbrp_size; 716 max += mbri->mbr.mbr_parts[1].mbrp_size;
717 mbri->mbr.mbr_parts[1] = ext->mbr.mbr_parts[1]; 717 mbri->mbr.mbr_parts[1] = ext->mbr.mbr_parts[1];
718 free(ext); 718 free(ext);
719 } 719 }
720 } 720 }
721 721
722 start = mbri->sector + mbrp->mbrp_start; 722 start = mbri->sector + mbrp->mbrp_start;
723 /* We need to keep both the unrounded and rounded (_r) max and dflt */ 723 /* We need to keep both the unrounded and rounded (_r) max and dflt */
724 dflt_r = (start + dflt) / sizemult - start / sizemult; 724 dflt_r = (start + dflt) / sizemult - start / sizemult;
725 if (max == dflt) 725 if (max == dflt)
726 max_r = dflt_r; 726 max_r = dflt_r;
727 else 727 else
728 max_r = max / sizemult; 728 max_r = max / sizemult;
729 for (errmsg = "";;) { 729 for (errmsg = "";;) {
730 snprintf(numbuf, sizeof numbuf, "%d", dflt_r); 730 snprintf(numbuf, sizeof numbuf, "%d", dflt_r);
731 msg_prompt_win(MSG_get_ptn_size, -1, 18, 0, 0, 731 msg_prompt_win(MSG_get_ptn_size, -1, 18, 0, 0,
732 numbuf, numbuf, sizeof numbuf, 732 numbuf, numbuf, sizeof numbuf,
733 msg_string(errmsg), max_r, multname); 733 msg_string(errmsg), max_r, multname);
734 new = strtoul(numbuf, &cp, 0); 734 new = strtoul(numbuf, &cp, 0);
735 if (*cp != 0) { 735 if (*cp != 0) {
736 errmsg = MSG_Invalid_numeric; 736 errmsg = MSG_Invalid_numeric;
737 continue; 737 continue;
738 } 738 }
739 if (new > max_r) { 739 if (new > max_r) {
740 errmsg = MSG_Too_large; 740 errmsg = MSG_Too_large;
741 continue; 741 continue;
742 } 742 }
743 if (new == 0) 743 if (new == 0)
744 /* Treat zero as a request for the maximum */ 744 /* Treat zero as a request for the maximum */
745 new = max_r; 745 new = max_r;
746 if (new == dflt_r) 746 if (new == dflt_r)
747 /* If unchanged, don't re-round size */ 747 /* If unchanged, don't re-round size */
748 new = dflt; 748 new = dflt;
749 else { 749 else {
750 /* Round end to the partition alignment */ 750 /* Round end to the partition alignment */
751 if (sizemult != 1) { 751 if (sizemult != 1) {
752 new *= sizemult; 752 new *= sizemult;
753 new += rounddown(start, ptn_alignment); 753 new += rounddown(start, ptn_alignment);
754 new = roundup(new, ptn_alignment); 754 new = roundup(new, ptn_alignment);
755 new -= start; 755 new -= start;
756 while (new <= 0) 756 while (new <= 0)
757 new += ptn_alignment; 757 new += ptn_alignment;
758 } 758 }
759 } 759 }
760 if (new > max) 760 if (new > max)
761 /* We rounded the value to above the max */ 761 /* We rounded the value to above the max */
762 new = max; 762 new = max;
763 763
764 if (new == dflt || opt >= MBR_PART_COUNT 764 if (new == dflt || opt >= MBR_PART_COUNT
765 || !MBR_IS_EXTENDED(mbrp->mbrp_type)) 765 || !MBR_IS_EXTENDED(mbrp->mbrp_type))
766 break; 766 break;
767 /* 767 /*
768 * We've been asked to change the size of the main extended 768 * We've been asked to change the size of the main extended
769 * partition. If this reduces the size, then that space 769 * partition. If this reduces the size, then that space
770 * must be unallocated. If it increases the size then 770 * must be unallocated. If it increases the size then
771 * we must add a description ofthe new free space. 771 * we must add a description ofthe new free space.
772 */ 772 */
773 /* Find last extended partition */ 773 /* Find last extended partition */
774 for (ext = mbri->extended; ext->extended; ext = ext->extended) 774 for (ext = mbri->extended; ext->extended; ext = ext->extended)
775 continue; 775 continue;
776 if ((new < dflt && (ext->mbr.mbr_parts[0].mbrp_type != 0 776 if ((new < dflt && (ext->mbr.mbr_parts[0].mbrp_type != 0
777 || (mbrp->mbrp_start + new < ext->sector + bsec 777 || (mbrp->mbrp_start + new < ext->sector + bsec
778 && mbrp->mbrp_start + new != ext->sector))) 778 && mbrp->mbrp_start + new != ext->sector)))
779 || (new > dflt && ext->mbr.mbr_parts[0].mbrp_type != 0 779 || (new > dflt && ext->mbr.mbr_parts[0].mbrp_type != 0
780 && new < dflt + bsec)) { 780 && new < dflt + bsec)) {
781 errmsg = MSG_Space_allocated; 781 errmsg = MSG_Space_allocated;
782 continue; 782 continue;
783 } 783 }
784 delta = new - dflt; 784 delta = new - dflt;
785 if (ext->mbr.mbr_parts[0].mbrp_type == 0) { 785 if (ext->mbr.mbr_parts[0].mbrp_type == 0) {
786 /* adjust size of last item (free space) */ 786 /* adjust size of last item (free space) */
787 if (mbrp->mbrp_start + new == ext->sector) { 787 if (mbrp->mbrp_start + new == ext->sector) {
788 /* kill last extended ptn */ 788 /* kill last extended ptn */
789 ext = ext->prev_ext; 789 ext = ext->prev_ext;
790 free(ext->extended); 790 free(ext->extended);
791 ext->extended = NULL; 791 ext->extended = NULL;
792 memset(&ext->mbr.mbr_parts[1], 0, 792 memset(&ext->mbr.mbr_parts[1], 0,
793 sizeof ext->mbr.mbr_parts[1]); 793 sizeof ext->mbr.mbr_parts[1]);
794 break; 794 break;
795 } 795 }
796 ext->mbr.mbr_parts[0].mbrp_size += delta; 796 ext->mbr.mbr_parts[0].mbrp_size += delta;
797 ext = ext->prev_ext; 797 ext = ext->prev_ext;
798 if (ext != NULL) 798 if (ext != NULL)
799 ext->mbr.mbr_parts[1].mbrp_size += delta; 799 ext->mbr.mbr_parts[1].mbrp_size += delta;
800 break; 800 break;
801 } 801 }
802 /* Joy of joys, we must allocate another extended ptn */ 802 /* Joy of joys, we must allocate another extended ptn */
803 mbri = ext; 803 mbri = ext;
804 ext = calloc(1, sizeof *ext); 804 ext = calloc(1, sizeof *ext);
805 if (!ext) 805 if (!ext)
806 return 0; 806 return 0;
807 mbri->extended = ext; 807 mbri->extended = ext;
808 ext->prev_ext = mbri; 808 ext->prev_ext = mbri;
809 ext->mbr.mbr_parts[0].mbrp_start = bsec; 809 ext->mbr.mbr_parts[0].mbrp_start = bsec;
810 ext->mbr.mbr_parts[0].mbrp_size = delta - bsec; 810 ext->mbr.mbr_parts[0].mbrp_size = delta - bsec;
811 ext->sector = mbri->sector + mbri->mbr.mbr_parts[0].mbrp_start 811 ext->sector = mbri->sector + mbri->mbr.mbr_parts[0].mbrp_start
812 + mbri->mbr.mbr_parts[0].mbrp_size; 812 + mbri->mbr.mbr_parts[0].mbrp_size;
813 mbri->mbr.mbr_parts[1].mbrp_start = ext->sector - ombri->extended->sector; 813 mbri->mbr.mbr_parts[1].mbrp_start = ext->sector - ombri->extended->sector;
814 mbri->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT; 814 mbri->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT;
815 mbri->mbr.mbr_parts[1].mbrp_size = delta; 815 mbri->mbr.mbr_parts[1].mbrp_size = delta;
816 break; 816 break;
817 } 817 }
818 818
819 if (opt >= MBR_PART_COUNT && max - new <= (uint32_t)bsec) 819 if (opt >= MBR_PART_COUNT && max - new <= (uint32_t)bsec)
820 /* Round up if not enough space for a header for free area */ 820 /* Round up if not enough space for a header for free area */
821 new = max; 821 new = max;
822 822
823 if (new != mbrp->mbrp_size) { 823 if (new != mbrp->mbrp_size) {
824 /* Kill information about old partition from label */ 824 /* Kill information about old partition from label */
825 mbri->last_mounted[opt < MBR_PART_COUNT ? opt : 0] = NULL; 825 mbri->last_mounted[opt < MBR_PART_COUNT ? opt : 0] = NULL;
826 remove_old_partitions(mbri->sector + mbrp->mbrp_start + 826 remove_old_partitions(mbri->sector + mbrp->mbrp_start +
827 mbrp->mbrp_size, (int64_t)new - mbrp->mbrp_size); 827 mbrp->mbrp_size, (int64_t)new - mbrp->mbrp_size);
828 } 828 }
829 829
830 mbrp->mbrp_size = new; 830 mbrp->mbrp_size = new;
831 if (opt < MBR_PART_COUNT || new == max) 831 if (opt < MBR_PART_COUNT || new == max)
832 return 0; 832 return 0;
833 833
834 /* Add extended partition for the free space */ 834 /* Add extended partition for the free space */
835 ext = calloc(1, sizeof *ext); 835 ext = calloc(1, sizeof *ext);
836 if (!ext) { 836 if (!ext) {
837 mbrp->mbrp_size = max; 837 mbrp->mbrp_size = max;
838 return 0; 838 return 0;
839 } 839 }
840 /* Link into our extended chain */ 840 /* Link into our extended chain */
841 ext->extended = mbri->extended; 841 ext->extended = mbri->extended;
842 mbri->extended = ext; 842 mbri->extended = ext;
843 ext->prev_ext = mbri; 843 ext->prev_ext = mbri;
844 if (ext->extended != NULL) 844 if (ext->extended != NULL)
845 ext->extended->prev_ext = ext; 845 ext->extended->prev_ext = ext;
846 ext->mbr.mbr_parts[1] = mbri->mbr.mbr_parts[1]; 846 ext->mbr.mbr_parts[1] = mbri->mbr.mbr_parts[1];
847 freespace = max - new; 847 freespace = max - new;
848 if (mbri->prev_ext != NULL) 848 if (mbri->prev_ext != NULL)
849 mbri->prev_ext->mbr.mbr_parts[1].mbrp_size -= freespace; 849 mbri->prev_ext->mbr.mbr_parts[1].mbrp_size -= freespace;
850 850
851 ext->mbr.mbr_parts[0].mbrp_start = bsec; 851 ext->mbr.mbr_parts[0].mbrp_start = bsec;
852 ext->mbr.mbr_parts[0].mbrp_size = freespace - bsec; 852 ext->mbr.mbr_parts[0].mbrp_size = freespace - bsec;
853 853
854 ext->sector = mbri->sector + mbri->mbr.mbr_parts[0].mbrp_start 854 ext->sector = mbri->sector + mbri->mbr.mbr_parts[0].mbrp_start
855 + mbri->mbr.mbr_parts[0].mbrp_size; 855 + mbri->mbr.mbr_parts[0].mbrp_size;
856 mbri->mbr.mbr_parts[1].mbrp_start = ext->sector - ombri->extended->sector; 856 mbri->mbr.mbr_parts[1].mbrp_start = ext->sector - ombri->extended->sector;
857 mbri->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT; 857 mbri->mbr.mbr_parts[1].mbrp_type = MBR_PTYPE_EXT;
858 mbri->mbr.mbr_parts[1].mbrp_size = freespace; 858 mbri->mbr.mbr_parts[1].mbrp_size = freespace;
859 859
860 return 0; 860 return 0;
861} 861}
862 862
863static int 863static int
864edit_mbr_active(menudesc *m, void *arg) 864edit_mbr_active(menudesc *m, void *arg)
865{ 865{
866 mbr_info_t *mbri = arg; 866 mbr_info_t *mbri = arg;
867 int i; 867 int i;
868 uint8_t *fl; 868 uint8_t *fl;
869 869
870 if (mbri->opt >= MBR_PART_COUNT) 870 if (mbri->opt >= MBR_PART_COUNT)
871 /* sanity */ 871 /* sanity */
872 return 0; 872 return 0;
873 873
874 /* Invert active flag */ 874 /* Invert active flag */
875 fl = &mbri->mbr.mbr_parts[mbri->opt].mbrp_flag; 875 fl = &mbri->mbr.mbr_parts[mbri->opt].mbrp_flag;
876 if (*fl == MBR_PFLAG_ACTIVE) { 876 if (*fl == MBR_PFLAG_ACTIVE) {
877 *fl = 0; 877 *fl = 0;
878 return 0; 878 return 0;
879 } 879 }
880 880
881 /* Ensure there is at most one active partition */ 881 /* Ensure there is at most one active partition */
882 for (i = 0; i < MBR_PART_COUNT; i++) 882 for (i = 0; i < MBR_PART_COUNT; i++)
883 mbri->mbr.mbr_parts[i].mbrp_flag = 0; 883 mbri->mbr.mbr_parts[i].mbrp_flag = 0;
884 *fl = MBR_PFLAG_ACTIVE; 884 *fl = MBR_PFLAG_ACTIVE;
885 885
886 return 0; 886 return 0;
887} 887}
888 888
889static int 889static int
890edit_mbr_install(menudesc *m, void *arg) 890edit_mbr_install(menudesc *m, void *arg)
891{ 891{
892 mbr_info_t *mbri = arg; 892 mbr_info_t *mbri = arg;
893 mbr_info_t *ombri = arg; 893 mbr_info_t *ombri = arg;
894 struct mbr_partition *mbrp; 894 struct mbr_partition *mbrp;
895 int opt = mbri->opt; 895 int opt = mbri->opt;
896 uint start; 896 uint start;
897 897
898 mbrp = get_mbrp(&mbri, opt); 898 mbrp = get_mbrp(&mbri, opt);
899 if (opt >= MBR_PART_COUNT) 899 if (opt >= MBR_PART_COUNT)
900 opt = 0; 900 opt = 0;
901 901
902 start = mbri->sector + mbrp->mbrp_start; 902 start = mbri->sector + mbrp->mbrp_start;
903 /* We just remember the start address of the partition... */ 903 /* We just remember the start address of the partition... */
904 if (start == ombri->install) 904 if (start == ombri->install)
905 ombri->install = 0; 905 ombri->install = 0;
906 else 906 else
907 ombri->install = start; 907 ombri->install = start;
908 return 0; 908 return 0;
909} 909}
910 910
911#ifdef BOOTSEL 911#ifdef BOOTSEL
912static int 912static int
913edit_mbr_bootmenu(menudesc *m, void *arg) 913edit_mbr_bootmenu(menudesc *m, void *arg)
914{ 914{
915 mbr_info_t *mbri = arg; 915 mbr_info_t *mbri = arg;
916 mbr_info_t *ombri = arg; 916 mbr_info_t *ombri = arg;
917 struct mbr_partition *mbrp; 917 struct mbr_partition *mbrp;
918 int opt = mbri->opt; 918 int opt = mbri->opt;
919 919
920 mbrp = get_mbrp(&mbri, opt); 920 mbrp = get_mbrp(&mbri, opt);
921 if (opt >= MBR_PART_COUNT) 921 if (opt >= MBR_PART_COUNT)
922 opt = 0; 922 opt = 0;
923 923
924 msg_prompt_win(/* XXX translate? */ "bootmenu", -1, 18, 0, 0, 924 msg_prompt_win(/* XXX translate? */ "bootmenu", -1, 18, 0, 0,
925 mbri->mbrb.mbrbs_nametab[opt], 925 mbri->mbrb.mbrbs_nametab[opt],
926 mbri->mbrb.mbrbs_nametab[opt], 926 mbri->mbrb.mbrbs_nametab[opt],
927 sizeof mbri->mbrb.mbrbs_nametab[opt]); 927 sizeof mbri->mbrb.mbrbs_nametab[opt]);
928 if (mbri->mbrb.mbrbs_nametab[opt][0] == ' ') 928 if (mbri->mbrb.mbrbs_nametab[opt][0] == ' ')
929 mbri->mbrb.mbrbs_nametab[opt][0] = 0; 929 mbri->mbrb.mbrbs_nametab[opt][0] = 0;
930 if (mbri->mbrb.mbrbs_nametab[opt][0] == 0 930 if (mbri->mbrb.mbrbs_nametab[opt][0] == 0
931 && ombri->bootsec == mbri->sector + mbrp->mbrp_start) 931 && ombri->bootsec == mbri->sector + mbrp->mbrp_start)
932 ombri->bootsec = 0; 932 ombri->bootsec = 0;
933 return 0; 933 return 0;
934} 934}
935 935
936static int 936static int
937edit_mbr_bootdefault(menudesc *m, void *arg) 937edit_mbr_bootdefault(menudesc *m, void *arg)
938{ 938{
939 mbr_info_t *mbri = arg; 939 mbr_info_t *mbri = arg;
940 mbr_info_t *ombri = arg; 940 mbr_info_t *ombri = arg;
941 struct mbr_partition *mbrp; 941 struct mbr_partition *mbrp;
942 942
943 mbrp = get_mbrp(&mbri, mbri->opt); 943 mbrp = get_mbrp(&mbri, mbri->opt);
944 944
945 ombri->bootsec = mbri->sector + mbrp->mbrp_start; 945 ombri->bootsec = mbri->sector + mbrp->mbrp_start;
946 return 0; 946 return 0;
947} 947}
948#endif 948#endif
949 949
950static void set_ptn_label(menudesc *m, int line, void *arg); 950static void set_ptn_label(menudesc *m, int line, void *arg);
951static void set_ptn_header(menudesc *m, void *arg); 951static void set_ptn_header(menudesc *m, void *arg);
952 952
953static int 953static int
954edit_mbr_entry(menudesc *m, void *arg) 954edit_mbr_entry(menudesc *m, void *arg)
955{ 955{
956 mbr_info_t *mbri = arg; 956 mbr_info_t *mbri = arg;
957 static int ptn_menu = -1; 957 static int ptn_menu = -1;
958 958
959 static menu_ent ptn_opts[] = { 959 static menu_ent ptn_opts[] = {
960#define PTN_OPT_TYPE 0 960#define PTN_OPT_TYPE 0
961 {NULL, OPT_NOMENU, 0, edit_mbr_type}, 961 {NULL, OPT_NOMENU, 0, edit_mbr_type},
962#define PTN_OPT_START 1 962#define PTN_OPT_START 1
963 {NULL, OPT_NOMENU, 0, edit_mbr_start}, 963 {NULL, OPT_NOMENU, 0, edit_mbr_start},
964#define PTN_OPT_SIZE 2 964#define PTN_OPT_SIZE 2
965 {NULL, OPT_NOMENU, 0, edit_mbr_size}, 965 {NULL, OPT_NOMENU, 0, edit_mbr_size},
966#define PTN_OPT_END 3 966#define PTN_OPT_END 3
967 {NULL, OPT_NOMENU, OPT_IGNORE, NULL}, /* display end */ 967 {NULL, OPT_NOMENU, OPT_IGNORE, NULL}, /* display end */
968#define PTN_OPT_ACTIVE 4 968#define PTN_OPT_ACTIVE 4
969 {NULL, OPT_NOMENU, 0, edit_mbr_active}, 969 {NULL, OPT_NOMENU, 0, edit_mbr_active},
970#define PTN_OPT_INSTALL 5 970#define PTN_OPT_INSTALL 5
971 {NULL, OPT_NOMENU, 0, edit_mbr_install}, 971 {NULL, OPT_NOMENU, 0, edit_mbr_install},
972#ifdef BOOTSEL 972#ifdef BOOTSEL
973#define PTN_OPT_BOOTMENU 6 973#define PTN_OPT_BOOTMENU 6
974 {NULL, OPT_NOMENU, 0, edit_mbr_bootmenu}, 974 {NULL, OPT_NOMENU, 0, edit_mbr_bootmenu},
975#define PTN_OPT_BOOTDEFAULT 7 975#define PTN_OPT_BOOTDEFAULT 7
976 {NULL, OPT_NOMENU, 0, edit_mbr_bootdefault}, 976 {NULL, OPT_NOMENU, 0, edit_mbr_bootdefault},
977#endif 977#endif
978 {MSG_askunits, MENU_sizechoice, OPT_SUB, NULL}, 978 {MSG_askunits, MENU_sizechoice, OPT_SUB, NULL},
979 }; 979 };
980 980
981 if (ptn_menu == -1) 981 if (ptn_menu == -1)
982 ptn_menu = new_menu(NULL, ptn_opts, nelem(ptn_opts), 982 ptn_menu = new_menu(NULL, ptn_opts, nelem(ptn_opts),
983 15, 6, 0, 54, 983 15, 6, 0, 54,
984 MC_SUBMENU | MC_SCROLL | MC_NOCLEAR, 984 MC_SUBMENU | MC_SCROLL | MC_NOCLEAR,
985 set_ptn_header, set_ptn_label, NULL, 985 set_ptn_header, set_ptn_label, NULL,
986 NULL, MSG_Partition_OK); 986 NULL, MSG_Partition_OK);
987 if (ptn_menu == -1) 987 if (ptn_menu == -1)
988 return 1; 988 return 1;
989 989
990 mbri->opt = m->cursel; 990 mbri->opt = m->cursel;
991 process_menu(ptn_menu, mbri); 991 process_menu(ptn_menu, mbri);
992 return 0; 992 return 0;
993} 993}
994 994
995static void 995static void
996set_ptn_label(menudesc *m, int line, void *arg) 996set_ptn_label(menudesc *m, int line, void *arg)
997{ 997{
998 mbr_info_t *mbri = arg; 998 mbr_info_t *mbri = arg;
999 mbr_info_t *ombri = arg; 999 mbr_info_t *ombri = arg;
1000 struct mbr_partition *mbrp; 1000 struct mbr_partition *mbrp;
1001 int opt; 1001 int opt;
1002 static const char *yes, *no; 1002 static const char *yes, *no;
1003 1003
1004 if (yes == NULL) { 1004 if (yes == NULL) {
1005 yes = msg_string(MSG_Yes); 1005 yes = msg_string(MSG_Yes);
1006 no = msg_string(MSG_No); 1006 no = msg_string(MSG_No);
1007 } 1007 }
1008 1008
1009 opt = mbri->opt; 1009 opt = mbri->opt;
1010 mbrp = get_mbrp(&mbri, opt); 1010 mbrp = get_mbrp(&mbri, opt);
1011 if (opt >= MBR_PART_COUNT) 1011 if (opt >= MBR_PART_COUNT)
1012 opt = 0; 1012 opt = 0;
1013 1013
1014 switch (line) { 1014 switch (line) {
1015 case PTN_OPT_TYPE: 1015 case PTN_OPT_TYPE:
1016 wprintw(m->mw, msg_string(MSG_ptn_type), 1016 wprintw(m->mw, msg_string(MSG_ptn_type),
1017 get_partname(mbrp->mbrp_type)); 1017 get_partname(mbrp->mbrp_type));
1018 break; 1018 break;
1019 case PTN_OPT_START: 1019 case PTN_OPT_START:
1020 wprintw(m->mw, msg_string(MSG_ptn_start), 1020 wprintw(m->mw, msg_string(MSG_ptn_start),
1021 (mbri->sector + mbrp->mbrp_start) / sizemult, multname); 1021 (mbri->sector + mbrp->mbrp_start) / sizemult, multname);
1022 break; 1022 break;
1023 case PTN_OPT_SIZE: 1023 case PTN_OPT_SIZE:
1024 wprintw(m->mw, msg_string(MSG_ptn_size), 1024 wprintw(m->mw, msg_string(MSG_ptn_size),
1025 (mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size) / 1025 (mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size) /
1026 sizemult - 1026 sizemult -
1027 (mbri->sector + mbrp->mbrp_start) / sizemult, multname); 1027 (mbri->sector + mbrp->mbrp_start) / sizemult, multname);
1028 break; 1028 break;
1029 case PTN_OPT_END: 1029 case PTN_OPT_END:
1030 wprintw(m->mw, msg_string(MSG_ptn_end), 1030 wprintw(m->mw, msg_string(MSG_ptn_end),
1031 (mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size) / 1031 (mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size) /
1032 sizemult, multname); 1032 sizemult, multname);
1033 break; 1033 break;
1034 case PTN_OPT_ACTIVE: 1034 case PTN_OPT_ACTIVE:
1035 wprintw(m->mw, msg_string(MSG_ptn_active), 1035 wprintw(m->mw, msg_string(MSG_ptn_active),
1036 mbrp->mbrp_flag == MBR_PFLAG_ACTIVE ? yes : no); 1036 mbrp->mbrp_flag == MBR_PFLAG_ACTIVE ? yes : no);
1037 break; 1037 break;
1038 case PTN_OPT_INSTALL: 1038 case PTN_OPT_INSTALL:
1039 wprintw(m->mw, msg_string(MSG_ptn_install), 1039 wprintw(m->mw, msg_string(MSG_ptn_install),
1040 mbri->sector + mbrp->mbrp_start == ombri->install && 1040 mbri->sector + mbrp->mbrp_start == ombri->install &&
1041 mbrp->mbrp_type == MBR_PTYPE_NETBSD ? yes : no); 1041 mbrp->mbrp_type == MBR_PTYPE_NETBSD ? yes : no);
1042 break; 1042 break;
1043#ifdef BOOTSEL 1043#ifdef BOOTSEL
1044 case PTN_OPT_BOOTMENU: 1044 case PTN_OPT_BOOTMENU:
1045 wprintw(m->mw, msg_string(MSG_bootmenu), 1045 wprintw(m->mw, msg_string(MSG_bootmenu),
1046 mbri->mbrb.mbrbs_nametab[opt]); 1046 mbri->mbrb.mbrbs_nametab[opt]);
1047 break; 1047 break;
1048 case PTN_OPT_BOOTDEFAULT: 1048 case PTN_OPT_BOOTDEFAULT:
1049 wprintw(m->mw, msg_string(MSG_boot_dflt), 1049 wprintw(m->mw, msg_string(MSG_boot_dflt),
1050 ombri->bootsec == mbri->sector + mbrp->mbrp_start ? yes 1050 ombri->bootsec == mbri->sector + mbrp->mbrp_start ? yes
1051 : no); 1051 : no);
1052 break; 1052 break;
1053#endif 1053#endif
1054 } 1054 }
1055 1055
1056} 1056}
1057 1057
1058static void 1058static void
1059set_ptn_header(menudesc *m, void *arg) 1059set_ptn_header(menudesc *m, void *arg)
1060{ 1060{
1061 mbr_info_t *mbri = arg; 1061 mbr_info_t *mbri = arg;
1062 struct mbr_partition *mbrp; 1062 struct mbr_partition *mbrp;
1063 int opt = mbri->opt; 1063 int opt = mbri->opt;
1064 int typ; 1064 int typ;
1065 1065
1066 mbrp = get_mbrp(&mbri, opt); 1066 mbrp = get_mbrp(&mbri, opt);
1067 if (opt >= MBR_PART_COUNT) 1067 if (opt >= MBR_PART_COUNT)
1068 opt = 0; 1068 opt = 0;
1069 typ = mbrp->mbrp_type; 1069 typ = mbrp->mbrp_type;
1070 1070
1071#define DISABLE(opt,cond) \ 1071#define DISABLE(opt,cond) \
1072 if (cond) \ 1072 if (cond) \
1073 m->opts[opt].opt_flags |= OPT_IGNORE; \ 1073 m->opts[opt].opt_flags |= OPT_IGNORE; \
1074 else \ 1074 else \
1075 m->opts[opt].opt_flags &= ~OPT_IGNORE; 1075 m->opts[opt].opt_flags &= ~OPT_IGNORE;
1076 1076
1077 /* Can't change type of the extended partition unless it is empty */ 1077 /* Can't change type of the extended partition unless it is empty */
1078 DISABLE(PTN_OPT_TYPE, MBR_IS_EXTENDED(typ) && 1078 DISABLE(PTN_OPT_TYPE, MBR_IS_EXTENDED(typ) &&
1079 (mbri->extended->mbr.mbr_parts[0].mbrp_type != 0 || 1079 (mbri->extended->mbr.mbr_parts[0].mbrp_type != 0 ||
1080 mbri->extended->extended != NULL)); 1080 mbri->extended->extended != NULL));
1081 1081
1082 /* It is unnecessary to be able to change the base of an extended ptn */ 1082 /* It is unnecessary to be able to change the base of an extended ptn */
1083 DISABLE(PTN_OPT_START, mbri->sector || typ == 0); 1083 DISABLE(PTN_OPT_START, mbri->sector || typ == 0);
1084 1084
1085 /* or the size of a free area */ 1085 /* or the size of a free area */
1086 DISABLE(PTN_OPT_SIZE, typ == 0); 1086 DISABLE(PTN_OPT_SIZE, typ == 0);
1087 1087
1088 /* Only 'normal' partitions can be 'Active' */ 1088 /* Only 'normal' partitions can be 'Active' */
1089 DISABLE(PTN_OPT_ACTIVE, mbri->sector != 0 || MBR_IS_EXTENDED(typ) || typ == 0); 1089 DISABLE(PTN_OPT_ACTIVE, mbri->sector != 0 || MBR_IS_EXTENDED(typ) || typ == 0);
1090 1090
1091 /* Can only install into NetBSD partition */ 1091 /* Can only install into NetBSD partition */
1092 DISABLE(PTN_OPT_INSTALL, typ != MBR_PTYPE_NETBSD); 1092 DISABLE(PTN_OPT_INSTALL, typ != MBR_PTYPE_NETBSD);
1093 1093
1094#ifdef BOOTSEL 1094#ifdef BOOTSEL
1095 /* The extended partition isn't bootable */ 1095 /* The extended partition isn't bootable */
1096 DISABLE(PTN_OPT_BOOTMENU, MBR_IS_EXTENDED(typ) || typ == 0); 1096 DISABLE(PTN_OPT_BOOTMENU, MBR_IS_EXTENDED(typ) || typ == 0);
1097 1097
1098 if (typ == 0) 1098 if (typ == 0)
1099 mbri->mbrb.mbrbs_nametab[opt][0] = 0; 1099 mbri->mbrb.mbrbs_nametab[opt][0] = 0;
1100 1100
1101 /* Only partitions with bootmenu names can be made the default */ 1101 /* Only partitions with bootmenu names can be made the default */
1102 DISABLE(PTN_OPT_BOOTDEFAULT, mbri->mbrb.mbrbs_nametab[opt][0] == 0); 1102 DISABLE(PTN_OPT_BOOTDEFAULT, mbri->mbrb.mbrbs_nametab[opt][0] == 0);
1103#endif 1103#endif
1104#undef DISABLE 1104#undef DISABLE
1105} 1105}
1106 1106
1107static void 1107static void
1108set_mbr_label(menudesc *m, int opt, void *arg) 1108set_mbr_label(menudesc *m, int opt, void *arg)
1109{ 1109{
1110 mbr_info_t *mbri = arg; 1110 mbr_info_t *mbri = arg;
1111 mbr_info_t *ombri = arg; 1111 mbr_info_t *ombri = arg;
1112 struct mbr_partition *mbrp; 1112 struct mbr_partition *mbrp;
1113 uint rstart, rend; 1113 uint rstart, rend;
1114 const char *name, *cp, *mounted; 1114 const char *name, *cp, *mounted;
1115 int len; 1115 int len;
1116 1116
1117 mbrp = get_mbrp(&mbri, opt); 1117 mbrp = get_mbrp(&mbri, opt);
1118 if (opt >= MBR_PART_COUNT) 1118 if (opt >= MBR_PART_COUNT)
1119 opt = 0; 1119 opt = 0;
1120 1120
1121 if (mbrp->mbrp_type == 0 && mbri->sector == 0) { 1121 if (mbrp->mbrp_type == 0 && mbri->sector == 0) {
1122 len = snprintf(0, 0, msg_string(MSG_part_row_used), 0, 0, 0); 1122 len = snprintf(0, 0, msg_string(MSG_part_row_used), 0, 0, 0);
1123 wprintw(m->mw, "%*s", len, ""); 1123 wprintw(m->mw, "%*s", len, "");
1124 } else { 1124 } else {
1125 rstart = mbri->sector + mbrp->mbrp_start; 1125 rstart = mbri->sector + mbrp->mbrp_start;
1126 rend = (rstart + mbrp->mbrp_size) / sizemult; 1126 rend = (rstart + mbrp->mbrp_size) / sizemult;
1127 rstart = rstart / sizemult; 1127 rstart = rstart / sizemult;
1128 wprintw(m->mw, msg_string(MSG_part_row_used), 1128 wprintw(m->mw, msg_string(MSG_part_row_used),
1129 rstart, rend - rstart, 1129 rstart, rend - rstart,
1130 mbrp->mbrp_flag == MBR_PFLAG_ACTIVE ? 'a' : ' ', 1130 mbrp->mbrp_flag == MBR_PFLAG_ACTIVE ? 'a' : ' ',
1131#ifdef BOOTSEL 1131#ifdef BOOTSEL
1132 ombri->bootsec == mbri->sector + mbrp->mbrp_start ? 'd' : 1132 ombri->bootsec == mbri->sector + mbrp->mbrp_start ? 'd' :
1133#endif 1133#endif
1134 ' ', 1134 ' ',
1135 mbri->sector + mbrp->mbrp_start == ombri->install && 1135 mbri->sector + mbrp->mbrp_start == ombri->install &&
1136 mbrp->mbrp_type == MBR_PTYPE_NETBSD ? 'I' : ' '); 1136 mbrp->mbrp_type == MBR_PTYPE_NETBSD ? 'I' : ' ');
1137 } 1137 }
1138 name = get_partname(mbrp->mbrp_type); 1138 name = get_partname(mbrp->mbrp_type);
1139 mounted = mbri->last_mounted[opt]; 1139 mounted = mbri->last_mounted[opt];
1140 len = strlen(name); 1140 len = strlen(name);
1141 cp = strchr(name, ','); 1141 cp = strchr(name, ',');
1142 if (cp != NULL) 1142 if (cp != NULL)
1143 len = cp - name; 1143 len = cp - name;
1144 if (mounted && *mounted != 0) { 1144 if (mounted && *mounted != 0) {
1145 wprintw(m->mw, " %*s (%s)", len, name, mounted); 1145 wprintw(m->mw, " %*s (%s)", len, name, mounted);
1146 } else 1146 } else
1147 wprintw(m->mw, " %.*s", len, name); 1147 wprintw(m->mw, " %.*s", len, name);
1148#ifdef BOOTSEL 1148#ifdef BOOTSEL
1149 if (mbri->mbrb.mbrbs_nametab[opt][0] != 0) { 1149 if (mbri->mbrb.mbrbs_nametab[opt][0] != 0) {
1150 int x, y; 1150 int x, y;
1151 1151
1152 getyx(m->mw, y, x); 1152 getyx(m->mw, y, x);
1153 if (x > 52) { 1153 if (x > 52) {
1154 x = 52; 1154 x = 52;
1155 wmove(m->mw, y, x); 1155 wmove(m->mw, y, x);
1156 } 1156 }
1157 wprintw(m->mw, "%*s %s", 53 - x, "", 1157 wprintw(m->mw, "%*s %s", 53 - x, "",
1158 mbri->mbrb.mbrbs_nametab[opt]); 1158 mbri->mbrb.mbrbs_nametab[opt]);
1159 } 1159 }
1160#endif 1160#endif
1161} 1161}
1162 1162
1163static void 1163static void
1164set_mbr_header(menudesc *m, void *arg) 1164set_mbr_header(menudesc *m, void *arg)
1165{ 1165{
1166 mbr_info_t *mbri = arg; 1166 mbr_info_t *mbri = arg;
1167 static menu_ent *opts; 1167 static menu_ent *opts;
1168 static int num_opts; 1168 static int num_opts;
1169 mbr_info_t *ext; 1169 mbr_info_t *ext;
1170 menu_ent *op; 1170 menu_ent *op;
1171 int i; 1171 int i;
1172 int left; 1172 int left;
1173 1173
1174 msg_display(MSG_editparttable); 1174 msg_display(MSG_editparttable);
1175 1175
1176 msg_table_add(MSG_part_header, (unsigned long)(pm->dlsize/sizemult), 1176 msg_table_add(MSG_part_header, (unsigned long)(pm->dlsize/sizemult),
1177 multname, multname, multname, multname); 1177 multname, multname, multname, multname);
1178 1178
1179 if (num_opts == 0) { 1179 if (num_opts == 0) {
1180 num_opts = 6; 1180 num_opts = 6;
1181 opts = malloc(6 * sizeof *opts); 1181 opts = malloc(6 * sizeof *opts);
1182 if (opts == NULL) { 1182 if (opts == NULL) {
1183 m->numopts = 0; 1183 m->numopts = 0;
1184 return; 1184 return;
1185 } 1185 }
1186 } 1186 }
1187 1187
1188 /* First four items are the main partitions */ 1188 /* First four items are the main partitions */
1189 for (op = opts, i = 0; i < MBR_PART_COUNT; op++, i++) { 1189 for (op = opts, i = 0; i < MBR_PART_COUNT; op++, i++) {
1190 op->opt_name = NULL; 1190 op->opt_name = NULL;
1191 op->opt_menu = OPT_NOMENU; 1191 op->opt_menu = OPT_NOMENU;
1192 op->opt_flags = OPT_SUB; 1192 op->opt_flags = OPT_SUB;
1193 op->opt_action = edit_mbr_entry; 1193 op->opt_action = edit_mbr_entry;
1194 } 1194 }
1195 left = num_opts - MBR_PART_COUNT; 1195 left = num_opts - MBR_PART_COUNT;
1196 1196
1197 /* Followed by the extended partitions */ 1197 /* Followed by the extended partitions */
1198 for (ext = mbri->extended; ext; left--, op++, ext = ext->extended) { 1198 for (ext = mbri->extended; ext; left--, op++, ext = ext->extended) {
1199 if (left <= 1) { 1199 if (left <= 1) {
1200 menu_ent *new = realloc(opts, 1200 menu_ent *new = realloc(opts,
1201 (num_opts + 4) * sizeof *opts); 1201 (num_opts + 4) * sizeof *opts);
1202 if (new == NULL) 1202 if (new == NULL)
1203 break; 1203 break;
1204 num_opts += 4; 1204 num_opts += 4;
1205 left += 4; 1205 left += 4;
1206 op = new + (op - opts); 1206 op = new + (op - opts);
1207 opts = new; 1207 opts = new;
1208 } 1208 }
1209 op->opt_name = NULL; 1209 op->opt_name = NULL;
1210 op->opt_menu = OPT_NOMENU; 1210 op->opt_menu = OPT_NOMENU;
1211 op->opt_flags = 0; 1211 op->opt_flags = 0;
1212 op->opt_action = edit_mbr_entry; 1212 op->opt_action = edit_mbr_entry;
1213 } 1213 }
1214 1214
1215 /* and unit changer */ 1215 /* and unit changer */
1216 op->opt_name = MSG_askunits; 1216 op->opt_name = MSG_askunits;
1217 op->opt_menu = MENU_sizechoice; 1217 op->opt_menu = MENU_sizechoice;
1218 op->opt_flags = OPT_SUB; 1218 op->opt_flags = OPT_SUB;
1219 op->opt_action = NULL; 1219 op->opt_action = NULL;
1220 op++; 1220 op++;
1221 1221
1222 m->opts = opts; 1222 m->opts = opts;
1223 m->numopts = op - opts; 1223 m->numopts = op - opts;
1224} 1224}
1225 1225
1226int 1226int
1227mbr_use_wholedisk(mbr_info_t *mbri) 1227mbr_use_wholedisk(mbr_info_t *mbri)
1228{ 1228{
1229 struct mbr_sector *mbrs = &mbri->mbr; 1229 struct mbr_sector *mbrs = &mbri->mbr;
1230 mbr_info_t *ext; 1230 mbr_info_t *ext;
1231 struct mbr_partition *part; 1231 struct mbr_partition *part;
1232 1232
1233 part = &mbrs->mbr_parts[0]; 1233 part = &mbrs->mbr_parts[0];
1234 /* Set the partition information for full disk usage. */ 1234 /* Set the partition information for full disk usage. */
1235 while ((ext = mbri->extended)) { 1235 while ((ext = mbri->extended)) {
1236 mbri->extended = ext->extended; 1236 mbri->extended = ext->extended;
1237 free(ext); 1237 free(ext);
1238 } 1238 }
1239 memset(part, 0, MBR_PART_COUNT * sizeof *part); 1239 memset(part, 0, MBR_PART_COUNT * sizeof *part);
1240#ifdef BOOTSEL 1240#ifdef BOOTSEL
1241 memset(&mbri->mbrb, 0, sizeof mbri->mbrb); 1241 memset(&mbri->mbrb, 0, sizeof mbri->mbrb);
1242#endif 1242#endif
1243 part[0].mbrp_type = MBR_PTYPE_NETBSD; 1243 part[0].mbrp_type = MBR_PTYPE_NETBSD;
1244 part[0].mbrp_size = pm->dlsize - ptn_0_offset; 1244 part[0].mbrp_size = pm->dlsize - ptn_0_offset;
1245 part[0].mbrp_start = ptn_0_offset; 1245 part[0].mbrp_start = ptn_0_offset;
1246 part[0].mbrp_flag = MBR_PFLAG_ACTIVE; 1246 part[0].mbrp_flag = MBR_PFLAG_ACTIVE;
1247 1247
1248 pm->ptstart = ptn_0_offset; 1248 pm->ptstart = ptn_0_offset;
1249 pm->ptsize = pm->dlsize - ptn_0_offset; 1249 pm->ptsize = pm->dlsize - ptn_0_offset;
1250 return 1; 1250 return 1;
1251} 1251}
1252 1252
1253/* 1253/*
1254 * Let user change incore Master Boot Record partitions via menu. 1254 * Let user change incore Master Boot Record partitions via menu.
1255 */ 1255 */
1256int 1256int
1257edit_mbr(mbr_info_t *mbri) 1257edit_mbr(mbr_info_t *mbri)
1258{ 1258{
1259 struct mbr_sector *mbrs = &mbri->mbr; 1259 struct mbr_sector *mbrs = &mbri->mbr;
1260 mbr_info_t *ext; 1260 mbr_info_t *ext;
1261 struct mbr_partition *part; 1261 struct mbr_partition *part;
1262 int i, j; 1262 int i, j;
1263 int usefull; 1263 int usefull;
1264 int mbr_menu; 1264 int mbr_menu;
1265 int activepart; 1265 int activepart;
1266 int numbsd; 1266 int numbsd;
1267 uint bsdstart, bsdsize; 1267 uint bsdstart, bsdsize;
1268 uint start; 1268 uint start;
1269 1269
1270 /* Ask full/part */ 1270 /* If targeting a wedge, do not ask for further partitioning */
 1271 if (pm && pm->no_part)
 1272 return 1;
1271 1273
 1274 /* Ask full/part */
1272 part = &mbrs->mbr_parts[0]; 1275 part = &mbrs->mbr_parts[0];
1273 get_ptn_alignment(part); /* update ptn_alignment */ 1276 get_ptn_alignment(part); /* update ptn_alignment */
1274 if (partman_go) 1277 if (partman_go)
1275 usefull = 0; 1278 usefull = 0;
1276 else { 1279 else {
1277 msg_display(MSG_fullpart, pm->diskdev); 1280 msg_display(MSG_fullpart, pm->diskdev);
1278 process_menu(MENU_fullpart, &usefull); 1281 process_menu(MENU_fullpart, &usefull);
1279 } 1282 }
1280 1283
1281 /* DOS fdisk label checking and value setting. */ 1284 /* DOS fdisk label checking and value setting. */
1282 if (usefull) { 1285 if (usefull) {
1283 /* Count nonempty, non-BSD partitions. */ 1286 /* Count nonempty, non-BSD partitions. */
1284 numbsd = 0; 1287 numbsd = 0;
1285 for (i = 0; i < MBR_PART_COUNT; i++) { 1288 for (i = 0; i < MBR_PART_COUNT; i++) {
1286 j = part[i].mbrp_type; 1289 j = part[i].mbrp_type;
1287 if (j == 0) 1290 if (j == 0)
1288 continue; 1291 continue;
1289 numbsd++; 1292 numbsd++;
1290 if (j != MBR_PTYPE_NETBSD) 1293 if (j != MBR_PTYPE_NETBSD)
1291 numbsd++; 1294 numbsd++;
1292 } 1295 }
1293 1296
1294 /* Ask if we really want to blow away non-NetBSD stuff */ 1297 /* Ask if we really want to blow away non-NetBSD stuff */
1295 if (numbsd > 1) { 1298 if (numbsd > 1) {
1296 msg_display(MSG_ovrwrite); 1299 msg_display(MSG_ovrwrite);
1297 if (!ask_noyes(NULL)) { 1300 if (!ask_noyes(NULL)) {
1298 if (logfp) 1301 if (logfp)
1299 (void)fprintf(logfp, "User answered no to destroy other data, aborting.\n"); 1302 (void)fprintf(logfp, "User answered no to destroy other data, aborting.\n");
1300 return 0; 1303 return 0;
1301 } 1304 }
1302 } 1305 }
1303 return(md_mbr_use_wholedisk(mbri)); 1306 return(md_mbr_use_wholedisk(mbri));
1304 } 1307 }
1305 1308
1306 mbr_menu = new_menu(NULL, NULL, 16, 0, -1, 15, 70, 1309 mbr_menu = new_menu(NULL, NULL, 16, 0, -1, 15, 70,
1307 MC_NOBOX | MC_ALWAYS_SCROLL | MC_NOCLEAR, 1310 MC_NOBOX | MC_ALWAYS_SCROLL | MC_NOCLEAR,
1308 set_mbr_header, set_mbr_label, NULL, 1311 set_mbr_header, set_mbr_label, NULL,
1309 NULL, MSG_Partition_table_ok); 1312 NULL, MSG_Partition_table_ok);
1310 if (mbr_menu == -1) 1313 if (mbr_menu == -1)
1311 return 0; 1314 return 0;
1312 1315
1313 /* Default to MB, and use bios geometry for cylinder size */ 1316 /* Default to MB, and use bios geometry for cylinder size */
1314 set_sizemultname_meg(); 1317 set_sizemultname_meg();
1315 pm->current_cylsize = bhead * bsec; 1318 pm->current_cylsize = bhead * bsec;
1316 1319
1317 for (;;) { 1320 for (;;) {
1318 pm->ptstart = 0; 1321 pm->ptstart = 0;
1319 pm->ptsize = 0; 1322 pm->ptsize = 0;
1320 process_menu(mbr_menu, mbri); 1323 process_menu(mbr_menu, mbri);
1321 1324
1322 activepart = 0; 1325 activepart = 0;
1323 bsdstart = 0; 1326 bsdstart = 0;
1324 bsdsize = 0; 1327 bsdsize = 0;
1325 for (ext = mbri; ext; ext = ext->extended) { 1328 for (ext = mbri; ext; ext = ext->extended) {
1326 part = ext->mbr.mbr_parts; 1329 part = ext->mbr.mbr_parts;
1327 for (i = 0; i < MBR_PART_COUNT; part++, i++) { 1330 for (i = 0; i < MBR_PART_COUNT; part++, i++) {
1328 if (part->mbrp_flag != 0) 1331 if (part->mbrp_flag != 0)
1329 activepart = 1; 1332 activepart = 1;
1330 if (part->mbrp_type != MBR_PTYPE_NETBSD) 1333 if (part->mbrp_type != MBR_PTYPE_NETBSD)
1331 continue; 1334 continue;
1332 start = ext->sector + part->mbrp_start; 1335 start = ext->sector + part->mbrp_start;
1333 if (start == mbri->install) { 1336 if (start == mbri->install) {
1334 pm->ptstart = mbri->install; 1337 pm->ptstart = mbri->install;
1335 pm->ptsize = part->mbrp_size; 1338 pm->ptsize = part->mbrp_size;
1336 } 1339 }
1337 if (bsdstart != 0) 1340 if (bsdstart != 0)
1338 bsdstart = ~0; 1341 bsdstart = ~0;
1339 else { 1342 else {
1340 bsdstart = start; 1343 bsdstart = start;
1341 bsdsize = part->mbrp_size; 1344 bsdsize = part->mbrp_size;
1342 } 1345 }
1343 } 1346 }
1344 } 1347 }
1345 1348
1346 /* Install in only netbsd partition if none tagged */ 1349 /* Install in only netbsd partition if none tagged */
1347 if (pm->ptstart == 0 && bsdstart != ~0u) { 1350 if (pm->ptstart == 0 && bsdstart != ~0u) {
1348 pm->ptstart = bsdstart; 1351 pm->ptstart = bsdstart;
1349 pm->ptsize = bsdsize; 1352 pm->ptsize = bsdsize;
1350 } 1353 }
1351 1354
1352 if (pm->ptstart == 0) { 1355 if (pm->ptstart == 0) {
1353 if (bsdstart == 0) 1356 if (bsdstart == 0)
1354 msg_display(MSG_nobsdpart); 1357 msg_display(MSG_nobsdpart);
1355 else 1358 else
1356 msg_display(MSG_multbsdpart, 0); 1359 msg_display(MSG_multbsdpart, 0);
1357 msg_display_add(MSG_reeditpart, 0); 1360 msg_display_add(MSG_reeditpart, 0);
1358 if (!ask_yesno(NULL)) 1361 if (!ask_yesno(NULL))
1359 return 0; 1362 return 0;
1360 continue; 1363 continue;
1361 } 1364 }
1362 1365
1363 if (activepart == 0) { 1366 if (activepart == 0) {
1364 msg_display(MSG_noactivepart); 1367 msg_display(MSG_noactivepart);
1365 if (ask_yesno(NULL)) 1368 if (ask_yesno(NULL))
1366 continue; 1369 continue;
1367 } 1370 }
1368 /* the md_check_mbr function has 3 ret codes to deal with 1371 /* the md_check_mbr function has 3 ret codes to deal with
1369 * the different possible states. 0, 1, >1 1372 * the different possible states. 0, 1, >1
1370 */ 1373 */
1371 j = md_check_mbr(mbri); 1374 j = md_check_mbr(mbri);
1372 if (j == 0) 1375 if (j == 0)
1373 return 0; 1376 return 0;
1374 if (j == 1) 1377 if (j == 1)
1375 continue; 1378 continue;
1376 1379
1377 break; 1380 break;
1378 } 1381 }
1379 1382
1380 free_menu(mbr_menu); 1383 free_menu(mbr_menu);
1381 1384
1382 return 1; 1385 return 1;
1383} 1386}
1384 1387
1385const char * 1388const char *
1386get_partname(int typ) 1389get_partname(int typ)
1387{ 1390{
1388 int j; 1391 int j;
1389 static char unknown[32]; 1392 static char unknown[32];
1390 1393
1391 for (j = 0; part_ids[j].id != -1; j++) 1394 for (j = 0; part_ids[j].id != -1; j++)
1392 if (part_ids[j].id == typ) 1395 if (part_ids[j].id == typ)
1393 return part_ids[j].name; 1396 return part_ids[j].name;
1394 1397
1395 snprintf(unknown, sizeof unknown, "Unknown (%d)", typ); 1398 snprintf(unknown, sizeof unknown, "Unknown (%d)", typ);
1396 return unknown; 1399 return unknown;
1397} 1400}
1398 1401
1399#ifdef BOOTSEL 1402#ifdef BOOTSEL
1400static int 1403static int
1401validate_and_set_names(mbr_info_t *mbri, const struct mbr_bootsel *src, 1404validate_and_set_names(mbr_info_t *mbri, const struct mbr_bootsel *src,
1402 uint32_t ext_base) 1405 uint32_t ext_base)
1403{ 1406{
1404 size_t i, l; 1407 size_t i, l;
1405 const unsigned char *p; 1408 const unsigned char *p;
1406 1409
1407 /* 1410 /*
1408 * The 16 bit magic used to detect whether mbr_bootsel is valid 1411 * The 16 bit magic used to detect whether mbr_bootsel is valid
1409 * or not is pretty week - collisions have been seen in the wild; 1412 * or not is pretty week - collisions have been seen in the wild;
1410 * but maybe it is just foreign tools corruption reminiscents 1413 * but maybe it is just foreign tools corruption reminiscents
1411 * of NetBSD MBRs. Anyway, before accepting a boot menu definition, 1414 * of NetBSD MBRs. Anyway, before accepting a boot menu definition,
1412 * make sure it is kinda "sane". 1415 * make sure it is kinda "sane".
1413 */ 1416 */
1414 1417
1415 for (i = 0; i < MBR_PART_COUNT; i++) { 1418 for (i = 0; i < MBR_PART_COUNT; i++) {
1416 /* 1419 /*
1417 * Make sure the name does not contain controll chars 1420 * Make sure the name does not contain controll chars
1418 * (not using iscntrl due to minimalistic locale support 1421 * (not using iscntrl due to minimalistic locale support
1419 * in miniroot environments) and is properly 0-terminated. 1422 * in miniroot environments) and is properly 0-terminated.
1420 */ 1423 */
1421 for (l = 0, p = (const unsigned char *)&src->mbrbs_nametab[i]; 1424 for (l = 0, p = (const unsigned char *)&src->mbrbs_nametab[i];
1422 *p != 0; l++, p++) { 1425 *p != 0; l++, p++) {
1423 if (l > MBR_BS_PARTNAMESIZE) 1426 if (l > MBR_BS_PARTNAMESIZE)
1424 return 0; 1427 return 0;
1425 if (*p < ' ') /* hacky 'iscntrl' */ 1428 if (*p < ' ') /* hacky 'iscntrl' */
1426 return 0; 1429 return 0;
1427 } 1430 }
1428 } 1431 }
1429 1432
1430 memcpy(&mbri->mbrb, src, sizeof(*src)); 1433 memcpy(&mbri->mbrb, src, sizeof(*src));
1431 1434
1432 if (ext_base == 0) 1435 if (ext_base == 0)
1433 return mbri->mbrb.mbrbs_defkey - SCAN_1; 1436 return mbri->mbrb.mbrbs_defkey - SCAN_1;
1434 return 0; 1437 return 0;
1435} 1438}
1436#endif 1439#endif
1437 1440
1438int 1441int
1439read_mbr(const char *disk, mbr_info_t *mbri) 1442read_mbr(const char *disk, mbr_info_t *mbri)
1440{ 1443{
1441 struct mbr_partition *mbrp; 1444 struct mbr_partition *mbrp;
1442 struct mbr_sector *mbrs = &mbri->mbr; 1445 struct mbr_sector *mbrs = &mbri->mbr;
1443 mbr_info_t *ext = NULL; 1446 mbr_info_t *ext = NULL;
1444 char diskpath[MAXPATHLEN]; 1447 char diskpath[MAXPATHLEN];
1445 int fd, i; 1448 int fd, i;
1446 uint32_t ext_base = 0, next_ext = 0, ext_size = 0; 1449 uint32_t ext_base = 0, next_ext = 0, ext_size = 0;
1447 int rval = -1; 1450 int rval = -1;
1448#ifdef BOOTSEL 1451#ifdef BOOTSEL
1449 mbr_info_t *ombri = mbri; 1452 mbr_info_t *ombri = mbri;
1450 int bootkey = 0; 1453 int bootkey = 0;
1451#endif 1454#endif
1452 1455
1453 /* 1456 /*
1454 * Fake up a likely 'bios sectors per track' for any extended 1457 * Fake up a likely 'bios sectors per track' for any extended
1455 * partition headers we might have to produce. 1458 * partition headers we might have to produce.
1456 */ 1459 */
1457 if (bsec == 0) 1460 if (bsec == 0)
1458 bsec = pm->dlsec; 1461 bsec = pm->dlsec;
1459 if (bhead == 0) 1462 if (bhead == 0)
1460 bhead = pm->dlhead; 1463 bhead = pm->dlhead;
1461 if (bcyl == 0) 1464 if (bcyl == 0)
1462 bhead = pm->dlcyl; 1465 bhead = pm->dlcyl;
1463 1466
1464 ptn_0_offset = bsec; 1467 ptn_0_offset = bsec;
1465 /* use 1MB default offset on large disks as fdisk(8) */ 1468 /* use 1MB default offset on large disks as fdisk(8) */
1466 if (pm->dlsize > 2048 * 1024 * 128) 1469 if (pm->dlsize > 2048 * 1024 * 128)
1467 ptn_0_offset = 2048; 1470 ptn_0_offset = 2048;
1468 1471
1469 memset(mbri, 0, sizeof *mbri); 1472 memset(mbri, 0, sizeof *mbri);
1470 1473
1471 /* Open the disk. */ 1474 /* Open the disk. */
1472 fd = opendisk(disk, O_RDONLY, diskpath, sizeof(diskpath), 0); 1475 fd = opendisk(disk, O_RDONLY, diskpath, sizeof(diskpath), 0);
1473 if (fd < 0) 1476 if (fd < 0)
1474 goto bad_mbr; 1477 goto bad_mbr;
1475 1478
1476 for (;;) { 1479 for (;;) {
1477 if (pread(fd, mbrs, sizeof *mbrs, 1480 if (pread(fd, mbrs, sizeof *mbrs,
1478 (ext_base + next_ext) * (off_t)MBR_SECSIZE) - sizeof *mbrs != 0) 1481 (ext_base + next_ext) * (off_t)MBR_SECSIZE) - sizeof *mbrs != 0)
1479 break; 1482 break;
1480 1483
1481 if (!valid_mbr(mbrs)) 1484 if (!valid_mbr(mbrs))
1482 break; 1485 break;
1483 1486
1484 mbrp = &mbrs->mbr_parts[0]; 1487 mbrp = &mbrs->mbr_parts[0];
1485 if (ext_base == 0) { 1488 if (ext_base == 0) {
1486 get_ptn_alignment(mbrp); /* get ptn_0_offset */ 1489 get_ptn_alignment(mbrp); /* get ptn_0_offset */
1487 } else { 1490 } else {
1488 /* sanity check extended chain */ 1491 /* sanity check extended chain */
1489 if (MBR_IS_EXTENDED(mbrp[0].mbrp_type)) 1492 if (MBR_IS_EXTENDED(mbrp[0].mbrp_type))
1490 break; 1493 break;
1491 if (mbrp[1].mbrp_type != 0 && 1494 if (mbrp[1].mbrp_type != 0 &&
1492 !MBR_IS_EXTENDED(mbrp[1].mbrp_type)) 1495 !MBR_IS_EXTENDED(mbrp[1].mbrp_type))
1493 break; 1496 break;
1494 if (mbrp[2].mbrp_type != 0 || mbrp[3].mbrp_type != 0) 1497 if (mbrp[2].mbrp_type != 0 || mbrp[3].mbrp_type != 0)
1495 break; 1498 break;
1496 /* Looks ok, link into extended chain */ 1499 /* Looks ok, link into extended chain */
1497 mbri->extended = ext; 1500 mbri->extended = ext;
1498 ext->prev_ext = next_ext != 0 ? mbri : NULL; 1501 ext->prev_ext = next_ext != 0 ? mbri : NULL;
1499 ext->extended = NULL; 1502 ext->extended = NULL;
1500 mbri = ext; 1503 mbri = ext;
1501 ext = NULL; 1504 ext = NULL;
1502 } 1505 }
1503#if BOOTSEL 1506#if BOOTSEL
1504 if (mbrs->mbr_bootsel_magic == htole16(MBR_MAGIC)) { 1507 if (mbrs->mbr_bootsel_magic == htole16(MBR_MAGIC)) {
1505 /* old bootsel, grab bootsel info */ 1508 /* old bootsel, grab bootsel info */
1506 bootkey = validate_and_set_names(mbri, 1509 bootkey = validate_and_set_names(mbri,
1507 (struct mbr_bootsel *) 1510 (struct mbr_bootsel *)
1508 ((uint8_t *)mbrs + MBR_BS_OLD_OFFSET), 1511 ((uint8_t *)mbrs + MBR_BS_OLD_OFFSET),
1509 ext_base); 1512 ext_base);
1510 } else if (mbrs->mbr_bootsel_magic == htole16(MBR_BS_MAGIC)) { 1513 } else if (mbrs->mbr_bootsel_magic == htole16(MBR_BS_MAGIC)) {
1511 /* new location */ 1514 /* new location */
1512 bootkey = validate_and_set_names(mbri, 1515 bootkey = validate_and_set_names(mbri,
1513 &mbrs->mbr_bootsel, ext_base); 1516 &mbrs->mbr_bootsel, ext_base);
1514 } 1517 }
1515 /* Save original flags for mbr code update tests */ 1518 /* Save original flags for mbr code update tests */
1516 mbri->oflags = mbri->mbrb.mbrbs_flags; 1519 mbri->oflags = mbri->mbrb.mbrbs_flags;
1517#endif 1520#endif
1518 mbri->sector = next_ext + ext_base; 1521 mbri->sector = next_ext + ext_base;
1519 next_ext = 0; 1522 next_ext = 0;
1520 rval = 0; 1523 rval = 0;
1521 for (i = 0; i < MBR_PART_COUNT; mbrp++, i++) { 1524 for (i = 0; i < MBR_PART_COUNT; mbrp++, i++) {
1522 if (mbrp->mbrp_type == 0) { 1525 if (mbrp->mbrp_type == 0) {
1523 /* type is unused, discard scum */ 1526 /* type is unused, discard scum */
1524 memset(mbrp, 0, sizeof *mbrp); 1527 memset(mbrp, 0, sizeof *mbrp);
1525 continue; 1528 continue;
1526 } 1529 }
1527 mbrp->mbrp_start = le32toh(mbrp->mbrp_start); 1530 mbrp->mbrp_start = le32toh(mbrp->mbrp_start);
1528 mbrp->mbrp_size = le32toh(mbrp->mbrp_size); 1531 mbrp->mbrp_size = le32toh(mbrp->mbrp_size);
1529 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) { 1532 if (MBR_IS_EXTENDED(mbrp->mbrp_type)) {
1530 next_ext = mbrp->mbrp_start; 1533 next_ext = mbrp->mbrp_start;
1531 if (ext_base == 0) 1534 if (ext_base == 0)
1532 ext_size = mbrp->mbrp_size; 1535 ext_size = mbrp->mbrp_size;
1533 } else { 1536 } else {
1534 mbri->last_mounted[i] = strdup(get_last_mounted( 1537 mbri->last_mounted[i] = strdup(get_last_mounted(
1535 fd, mbri->sector + mbrp->mbrp_start, NULL)); 1538 fd, mbri->sector + mbrp->mbrp_start, NULL));
1536#if BOOTSEL 1539#if BOOTSEL
1537 if (ombri->install == 0 && 1540 if (ombri->install == 0 &&
1538 strcmp(mbri->last_mounted[i], "/") == 0) 1541 strcmp(mbri->last_mounted[i], "/") == 0)
1539 ombri->install = mbri->sector + 1542 ombri->install = mbri->sector +
1540 mbrp->mbrp_start; 1543 mbrp->mbrp_start;
1541#endif 1544#endif
1542 } 1545 }
1543#if BOOTSEL 1546#if BOOTSEL
1544 if (mbri->mbrb.mbrbs_nametab[i][0] != 0 1547 if (mbri->mbrb.mbrbs_nametab[i][0] != 0
1545 && bootkey-- == 0) 1548 && bootkey-- == 0)
1546 ombri->bootsec = mbri->sector + 1549 ombri->bootsec = mbri->sector +
1547 mbrp->mbrp_start; 1550 mbrp->mbrp_start;
1548#endif 1551#endif
1549 } 1552 }
1550 1553
1551 if (ext_base != 0) { 1554 if (ext_base != 0) {
1552 /* Is there a gap before the next partition? */ 1555 /* Is there a gap before the next partition? */
1553 unsigned int limit = next_ext; 1556 unsigned int limit = next_ext;
1554 unsigned int base; 1557 unsigned int base;
1555 if (limit == 0) 1558 if (limit == 0)
1556 limit = ext_size; 1559 limit = ext_size;
1557 mbrp -= MBR_PART_COUNT; 1560 mbrp -= MBR_PART_COUNT;
1558 base =mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size; 1561 base =mbri->sector + mbrp->mbrp_start + mbrp->mbrp_size;
1559 if (mbrp->mbrp_type != 0 && ext_base + limit != base) { 1562 if (mbrp->mbrp_type != 0 && ext_base + limit != base) {
1560 /* Mock up an extry for the space */ 1563 /* Mock up an extry for the space */
1561 ext = calloc(1, sizeof *ext); 1564 ext = calloc(1, sizeof *ext);
1562 if (!ext) 1565 if (!ext)
1563 break; 1566 break;
1564 ext->sector = base; 1567 ext->sector = base;
1565 ext->mbr.mbr_magic = htole16(MBR_MAGIC); 1568 ext->mbr.mbr_magic = htole16(MBR_MAGIC);
1566 ext->mbr.mbr_parts[1] = mbrp[1]; 1569 ext->mbr.mbr_parts[1] = mbrp[1];
1567 ext->mbr.mbr_parts[0].mbrp_start = ptn_0_offset; 1570 ext->mbr.mbr_parts[0].mbrp_start = ptn_0_offset;
1568 ext->mbr.mbr_parts[0].mbrp_size = 1571 ext->mbr.mbr_parts[0].mbrp_size =
1569 ext_base + limit - base - ptn_0_offset; 1572 ext_base + limit - base - ptn_0_offset;
1570 mbrp[1].mbrp_type = MBR_PTYPE_EXT; 1573 mbrp[1].mbrp_type = MBR_PTYPE_EXT;
1571 mbrp[1].mbrp_start = base - ext_base; 1574 mbrp[1].mbrp_start = base - ext_base;
1572 mbrp[1].mbrp_size = limit - mbrp[1].mbrp_start; 1575 mbrp[1].mbrp_size = limit - mbrp[1].mbrp_start;
1573 mbri->extended = ext; 1576 mbri->extended = ext;
1574 ext->prev_ext = mbri; 1577 ext->prev_ext = mbri;
1575 ext->extended = NULL; 1578 ext->extended = NULL;
1576 mbri = ext; 1579 mbri = ext;
1577 ext = NULL; 1580 ext = NULL;
1578 } 1581 }
1579 } 1582 }
1580 1583
1581 if (next_ext == 0 || ext_base + next_ext <= mbri->sector) 1584 if (next_ext == 0 || ext_base + next_ext <= mbri->sector)
1582 break; 1585 break;
1583 if (ext_base == 0) { 1586 if (ext_base == 0) {
1584 ext_base = next_ext; 1587 ext_base = next_ext;
1585 next_ext = 0; 1588 next_ext = 0;
1586 } 1589 }
1587 ext = calloc(sizeof *ext, 1); 1590 ext = calloc(sizeof *ext, 1);
1588 if (!ext) 1591 if (!ext)
1589 break; 1592 break;
1590 mbrs = &ext->mbr; 1593 mbrs = &ext->mbr;
1591 } 1594 }
1592 1595
1593 bad_mbr: 1596 bad_mbr:
1594 free(ext); 1597 free(ext);
1595 if (fd >= 0) 1598 if (fd >= 0)
1596 close(fd); 1599 close(fd);
1597 if (rval == -1) { 1600 if (rval == -1) {
1598 memset(&mbrs->mbr_parts, 0, sizeof mbrs->mbr_parts); 1601 memset(&mbrs->mbr_parts, 0, sizeof mbrs->mbr_parts);
1599 mbrs->mbr_magic = htole16(MBR_MAGIC); 1602 mbrs->mbr_magic = htole16(MBR_MAGIC);
1600 } 1603 }
1601 dump_mbr(ombri, "read"); 1604 dump_mbr(ombri, "read");
1602 return rval; 1605 return rval;
1603} 1606}
1604 1607
1605int 1608int
1606write_mbr(const char *disk, mbr_info_t *mbri, int convert) 1609write_mbr(const char *disk, mbr_info_t *mbri, int convert)
1607{ 1610{
1608 char diskpath[MAXPATHLEN]; 1611 char diskpath[MAXPATHLEN];
1609 int fd, i, ret = 0; 1612 int fd, i, ret = 0;
1610 struct mbr_partition *mbrp; 1613 struct mbr_partition *mbrp;
1611 u_int32_t pstart, psize; 1614 u_int32_t pstart, psize;
1612#ifdef BOOTSEL 1615#ifdef BOOTSEL
1613 struct mbr_sector *mbrs; 1616 struct mbr_sector *mbrs;
1614#endif 1617#endif
1615 struct mbr_sector mbrsec; 1618 struct mbr_sector mbrsec;
1616 mbr_info_t *ext; 1619 mbr_info_t *ext;
1617 uint sector; 1620 uint sector;
1618 1621
1619 /* Open the disk. */ 1622 /* Open the disk. */
1620 fd = opendisk(disk, O_WRONLY, diskpath, sizeof(diskpath), 0); 1623 fd = opendisk(disk, O_WRONLY, diskpath, sizeof(diskpath), 0);
1621 if (fd < 0) 1624 if (fd < 0)
1622 return -1; 1625 return -1;
1623 1626
1624#ifdef BOOTSEL 1627#ifdef BOOTSEL
1625 /* 1628 /*
1626 * If the main boot code (appears to) contain the netbsd bootcode, 1629 * If the main boot code (appears to) contain the netbsd bootcode,
1627 * copy in all the menu strings and set the default keycode 1630 * copy in all the menu strings and set the default keycode
1628 * to be that for the default partition. 1631 * to be that for the default partition.
1629 * Unfortunately we can't rely on the user having actually updated 1632 * Unfortunately we can't rely on the user having actually updated
1630 * to the new mbr code :-( 1633 * to the new mbr code :-(
1631 */ 1634 */
1632 if (mbri->mbr.mbr_bootsel_magic == htole16(MBR_BS_MAGIC) 1635 if (mbri->mbr.mbr_bootsel_magic == htole16(MBR_BS_MAGIC)
1633 || mbri->mbr.mbr_bootsel_magic == htole16(MBR_MAGIC)) { 1636 || mbri->mbr.mbr_bootsel_magic == htole16(MBR_MAGIC)) {
1634 int8_t key = SCAN_1; 1637 int8_t key = SCAN_1;
1635 uint offset = MBR_BS_OFFSET; 1638 uint offset = MBR_BS_OFFSET;
1636 if (mbri->mbr.mbr_bootsel_magic == htole16(MBR_MAGIC)) 1639 if (mbri->mbr.mbr_bootsel_magic == htole16(MBR_MAGIC))
1637 offset = MBR_BS_OLD_OFFSET; 1640 offset = MBR_BS_OLD_OFFSET;
1638 mbri->mbrb.mbrbs_defkey = SCAN_ENTER; 1641 mbri->mbrb.mbrbs_defkey = SCAN_ENTER;
1639 if (mbri->mbrb.mbrbs_timeo == 0) 1642 if (mbri->mbrb.mbrbs_timeo == 0)
1640 mbri->mbrb.mbrbs_timeo = 182; /* 10 seconds */ 1643 mbri->mbrb.mbrbs_timeo = 182; /* 10 seconds */
1641 for (ext = mbri; ext != NULL; ext = ext->extended) { 1644 for (ext = mbri; ext != NULL; ext = ext->extended) {
1642 mbrs = &ext->mbr; 1645 mbrs = &ext->mbr;
1643 mbrp = &mbrs->mbr_parts[0]; 1646 mbrp = &mbrs->mbr_parts[0];
1644 /* Ensure marker is set in each sector */ 1647 /* Ensure marker is set in each sector */
1645 mbrs->mbr_bootsel_magic = mbri->mbr.mbr_bootsel_magic; 1648 mbrs->mbr_bootsel_magic = mbri->mbr.mbr_bootsel_magic;
1646 /* and copy in bootsel parameters */ 1649 /* and copy in bootsel parameters */
1647 *(struct mbr_bootsel *)((uint8_t *)mbrs + offset) = 1650 *(struct mbr_bootsel *)((uint8_t *)mbrs + offset) =
1648 ext->mbrb; 1651 ext->mbrb;
1649 for (i = 0; i < MBR_PART_COUNT; i++) { 1652 for (i = 0; i < MBR_PART_COUNT; i++) {
1650 if (ext->mbrb.mbrbs_nametab[i][0] == 0) 1653 if (ext->mbrb.mbrbs_nametab[i][0] == 0)
1651 continue; 1654 continue;
1652 if (ext->sector + mbrp->mbrp_start == 1655 if (ext->sector + mbrp->mbrp_start ==
1653 mbri->bootsec) 1656 mbri->bootsec)
1654 mbri->mbrb.mbrbs_defkey = key; 1657 mbri->mbrb.mbrbs_defkey = key;
1655 key++; 1658 key++;
1656 } 1659 }
1657 } 1660 }
1658 /* copy main data (again) since we've put the 'key' in */ 1661 /* copy main data (again) since we've put the 'key' in */
1659 *(struct mbr_bootsel *)((uint8_t *)&mbri->mbr + offset) = 1662 *(struct mbr_bootsel *)((uint8_t *)&mbri->mbr + offset) =
1660 mbri->mbrb; 1663 mbri->mbrb;
1661 } 1664 }
1662#endif 1665#endif
1663 1666
1664 for (ext = mbri; ext != NULL; ext = ext->extended) { 1667 for (ext = mbri; ext != NULL; ext = ext->extended) {
1665 sector = ext->sector; 1668 sector = ext->sector;
1666 mbrsec = ext->mbr; /* copy sector */ 1669 mbrsec = ext->mbr; /* copy sector */
1667 mbrp = &mbrsec.mbr_parts[0]; 1670 mbrp = &mbrsec.mbr_parts[0];
1668 1671
1669 if (sector != 0 && ext->extended != NULL 1672 if (sector != 0 && ext->extended != NULL
1670 && ext->extended->mbr.mbr_parts[0].mbrp_type == 0) { 1673 && ext->extended->mbr.mbr_parts[0].mbrp_type == 0) {
1671 /* We are followed by an empty slot, collapse out */ 1674 /* We are followed by an empty slot, collapse out */
1672 ext = ext->extended; 1675 ext = ext->extended;
1673 /* Make us describe the next non-empty partition */ 1676 /* Make us describe the next non-empty partition */
1674 mbrp[1] = ext->mbr.mbr_parts[1]; 1677 mbrp[1] = ext->mbr.mbr_parts[1];
1675 } 1678 }
1676 1679
1677 for (i = 0; i < MBR_PART_COUNT; i++) { 1680 for (i = 0; i < MBR_PART_COUNT; i++) {
1678 if (mbrp[i].mbrp_start == 0 && mbrp[i].mbrp_size == 0) { 1681 if (mbrp[i].mbrp_start == 0 && mbrp[i].mbrp_size == 0) {
1679 mbrp[i].mbrp_scyl = 0; 1682 mbrp[i].mbrp_scyl = 0;
1680 mbrp[i].mbrp_shd = 0; 1683 mbrp[i].mbrp_shd = 0;
1681 mbrp[i].mbrp_ssect = 0; 1684 mbrp[i].mbrp_ssect = 0;
1682 mbrp[i].mbrp_ecyl = 0; 1685 mbrp[i].mbrp_ecyl = 0;
1683 mbrp[i].mbrp_ehd = 0; 1686 mbrp[i].mbrp_ehd = 0;
1684 mbrp[i].mbrp_esect = 0; 1687 mbrp[i].mbrp_esect = 0;
1685 continue; 1688 continue;
1686 } 1689 }
1687 pstart = mbrp[i].mbrp_start; 1690 pstart = mbrp[i].mbrp_start;
1688 psize = mbrp[i].mbrp_size; 1691 psize = mbrp[i].mbrp_size;
1689 mbrp[i].mbrp_start = htole32(pstart); 1692 mbrp[i].mbrp_start = htole32(pstart);
1690 mbrp[i].mbrp_size = htole32(psize); 1693 mbrp[i].mbrp_size = htole32(psize);
1691 if (convert) { 1694 if (convert) {
1692 convert_mbr_chs(bcyl, bhead, bsec, 1695 convert_mbr_chs(bcyl, bhead, bsec,
1693 &mbrp[i].mbrp_scyl, &mbrp[i].mbrp_shd, 1696 &mbrp[i].mbrp_scyl, &mbrp[i].mbrp_shd,
1694 &mbrp[i].mbrp_ssect, pstart); 1697 &mbrp[i].mbrp_ssect, pstart);
1695 convert_mbr_chs(bcyl, bhead, bsec, 1698 convert_mbr_chs(bcyl, bhead, bsec,
1696 &mbrp[i].mbrp_ecyl, &mbrp[i].mbrp_ehd, 1699 &mbrp[i].mbrp_ecyl, &mbrp[i].mbrp_ehd,
1697 &mbrp[i].mbrp_esect, pstart + psize - 1); 1700 &mbrp[i].mbrp_esect, pstart + psize - 1);
1698 } 1701 }
1699 } 1702 }
1700 1703
1701 mbrsec.mbr_magic = htole16(MBR_MAGIC); 1704 mbrsec.mbr_magic = htole16(MBR_MAGIC);
1702 if (pwrite(fd, &mbrsec, sizeof mbrsec, 1705 if (pwrite(fd, &mbrsec, sizeof mbrsec,
1703 sector * (off_t)MBR_SECSIZE) < 0) { 1706 sector * (off_t)MBR_SECSIZE) < 0) {
1704 ret = -1; 1707 ret = -1;
1705 break; 1708 break;
1706 } 1709 }
1707 } 1710 }
1708 1711
1709 (void)close(fd); 1712 (void)close(fd);
1710 return ret; 1713 return ret;
1711} 1714}
1712 1715
1713int 1716int
1714valid_mbr(struct mbr_sector *mbrs) 1717valid_mbr(struct mbr_sector *mbrs)
1715{ 1718{
1716 1719
1717 return (le16toh(mbrs->mbr_magic) == MBR_MAGIC); 1720 return (le16toh(mbrs->mbr_magic) == MBR_MAGIC);
1718} 1721}
1719 1722
1720static void 1723static void
1721convert_mbr_chs(int cyl, int head, int sec, 1724convert_mbr_chs(int cyl, int head, int sec,
1722 uint8_t *cylp, uint8_t *headp, uint8_t *secp, 1725 uint8_t *cylp, uint8_t *headp, uint8_t *secp,
1723 uint32_t relsecs) 1726 uint32_t relsecs)
1724{ 1727{
1725 unsigned int tcyl, temp, thead, tsec; 1728 unsigned int tcyl, temp, thead, tsec;
1726 1729
1727 temp = head * sec; 1730 temp = head * sec;
1728 tcyl = relsecs / temp; 1731 tcyl = relsecs / temp;
1729 relsecs -= tcyl * temp; 1732 relsecs -= tcyl * temp;
1730 1733
1731 thead = relsecs / sec; 1734 thead = relsecs / sec;
1732 tsec = relsecs - thead * sec + 1; 1735 tsec = relsecs - thead * sec + 1;
1733 1736
1734 if (tcyl > MAXCYL) 1737 if (tcyl > MAXCYL)
1735 tcyl = MAXCYL; 1738 tcyl = MAXCYL;
1736 1739
1737 *cylp = MBR_PUT_LSCYL(tcyl); 1740 *cylp = MBR_PUT_LSCYL(tcyl);
1738 *headp = thead; 1741 *headp = thead;
1739 *secp = MBR_PUT_MSCYLANDSEC(tcyl, tsec); 1742 *secp = MBR_PUT_MSCYLANDSEC(tcyl, tsec);
1740} 1743}
1741 1744
1742/* 1745/*
1743 * This function is ONLY to be used as a last resort to provide a 1746 * This function is ONLY to be used as a last resort to provide a
1744 * hint for the user. Ports should provide a more reliable way 1747 * hint for the user. Ports should provide a more reliable way
1745 * of getting the BIOS geometry. The i386 code, for example, 1748 * of getting the BIOS geometry. The i386 code, for example,
1746 * uses the BIOS geometry as passed on from the bootblocks, 1749 * uses the BIOS geometry as passed on from the bootblocks,
1747 * and only uses this as a hint to the user when that information 1750 * and only uses this as a hint to the user when that information
1748 * is not present, or a match could not be made with a NetBSD 1751 * is not present, or a match could not be made with a NetBSD
1749 * device. 1752 * device.
1750 */ 1753 */
1751 1754
1752int 1755int
1753guess_biosgeom_from_mbr(mbr_info_t *mbri, int *cyl, int *head, daddr_t *sec) 1756guess_biosgeom_from_mbr(mbr_info_t *mbri, int *cyl, int *head, daddr_t *sec)
1754{ 1757{
1755 struct mbr_sector *mbrs = &mbri->mbr; 1758 struct mbr_sector *mbrs = &mbri->mbr;
1756 struct mbr_partition *parts = &mbrs->mbr_parts[0]; 1759 struct mbr_partition *parts = &mbrs->mbr_parts[0];
1757 int xcylinders, xheads, i, j; 1760 int xcylinders, xheads, i, j;
1758 daddr_t xsectors; 1761 daddr_t xsectors;
1759 int c1, h1, s1, c2, h2, s2; 1762 int c1, h1, s1, c2, h2, s2;
1760 daddr_t a1, a2; 1763 daddr_t a1, a2;
1761 uint64_t num, denom; 1764 uint64_t num, denom;
1762 1765
1763 /* 1766 /*
1764 * The physical parameters may be invalid as bios geometry. 1767 * The physical parameters may be invalid as bios geometry.
1765 * If we cannot determine the actual bios geometry, we are 1768 * If we cannot determine the actual bios geometry, we are
1766 * better off picking a likely 'faked' geometry than leaving 1769 * better off picking a likely 'faked' geometry than leaving
1767 * the invalid physical one. 1770 * the invalid physical one.
1768 */ 1771 */
1769 1772
1770 xcylinders = pm->dlcyl; 1773 xcylinders = pm->dlcyl;
1771 xheads = pm->dlhead; 1774 xheads = pm->dlhead;
1772 xsectors = pm->dlsec; 1775 xsectors = pm->dlsec;
1773 if (xcylinders > MAXCYL || xheads > MAXHEAD || xsectors > MAXSECTOR) { 1776 if (xcylinders > MAXCYL || xheads > MAXHEAD || xsectors > MAXSECTOR) {
1774 xsectors = MAXSECTOR; 1777 xsectors = MAXSECTOR;
1775 xheads = MAXHEAD; 1778 xheads = MAXHEAD;
1776 xcylinders = pm->dlsize / (MAXSECTOR * MAXHEAD); 1779 xcylinders = pm->dlsize / (MAXSECTOR * MAXHEAD);
1777 if (xcylinders > MAXCYL) 1780 if (xcylinders > MAXCYL)
1778 xcylinders = MAXCYL; 1781 xcylinders = MAXCYL;
1779 } 1782 }
1780 *cyl = xcylinders; 1783 *cyl = xcylinders;
1781 *head = xheads; 1784 *head = xheads;
1782 *sec = xsectors; 1785 *sec = xsectors;
1783 1786
1784 xheads = -1; 1787 xheads = -1;
1785 1788
1786 /* Try to deduce the number of heads from two different mappings. */ 1789 /* Try to deduce the number of heads from two different mappings. */
1787 for (i = 0; i < MBR_PART_COUNT * 2 - 1; i++) { 1790 for (i = 0; i < MBR_PART_COUNT * 2 - 1; i++) {
1788 if (get_mapping(parts, i, &c1, &h1, &s1, &a1) < 0) 1791 if (get_mapping(parts, i, &c1, &h1, &s1, &a1) < 0)
1789 continue; 1792 continue;
1790 a1 -= s1; 1793 a1 -= s1;
1791 for (j = i + 1; j < MBR_PART_COUNT * 2; j++) { 1794 for (j = i + 1; j < MBR_PART_COUNT * 2; j++) {
1792 if (get_mapping(parts, j, &c2, &h2, &s2, &a2) < 0) 1795 if (get_mapping(parts, j, &c2, &h2, &s2, &a2) < 0)
1793 continue; 1796 continue;
1794 a2 -= s2; 1797 a2 -= s2;
1795 num = (uint64_t)h1 * a2 - (quad_t)h2 * a1; 1798 num = (uint64_t)h1 * a2 - (quad_t)h2 * a1;
1796 denom = (uint64_t)c2 * a1 - (quad_t)c1 * a2; 1799 denom = (uint64_t)c2 * a1 - (quad_t)c1 * a2;
1797 if (num != 0 && denom != 0 && num % denom == 0) { 1800 if (num != 0 && denom != 0 && num % denom == 0) {
1798 xheads = (int)(num / denom); 1801 xheads = (int)(num / denom);
1799 xsectors = a1 / (c1 * xheads + h1); 1802 xsectors = a1 / (c1 * xheads + h1);
1800 break; 1803 break;
1801 } 1804 }
1802 } 1805 }
1803 if (xheads != -1) 1806 if (xheads != -1)
1804 break; 1807 break;
1805 } 1808 }
1806 1809
1807 if (xheads == -1) 1810 if (xheads == -1)
1808 return -1; 1811 return -1;
1809 1812
1810 /* 1813 /*
1811 * Estimate the number of cylinders. 1814 * Estimate the number of cylinders.
1812 * XXX relies on get_disks having been called. 1815 * XXX relies on get_disks having been called.
1813 */ 1816 */
1814 xcylinders = pm->dlsize / xheads / xsectors; 1817 xcylinders = pm->dlsize / xheads / xsectors;
1815 if (pm->dlsize != xcylinders * xheads * xsectors) 1818 if (pm->dlsize != xcylinders * xheads * xsectors)
1816 xcylinders++; 1819 xcylinders++;
1817 1820
1818 /* 1821 /*
1819 * Now verify consistency with each of the partition table entries. 1822 * Now verify consistency with each of the partition table entries.
1820 * Be willing to shove cylinders up a little bit to make things work, 1823 * Be willing to shove cylinders up a little bit to make things work,
1821 * but translation mismatches are fatal. 1824 * but translation mismatches are fatal.
1822 */ 1825 */
1823 for (i = 0; i < MBR_PART_COUNT * 2; i++) { 1826 for (i = 0; i < MBR_PART_COUNT * 2; i++) {
1824 if (get_mapping(parts, i, &c1, &h1, &s1, &a1) < 0) 1827 if (get_mapping(parts, i, &c1, &h1, &s1, &a1) < 0)
1825 continue; 1828 continue;
1826 if (c1 >= MAXCYL - 1) 1829 if (c1 >= MAXCYL - 1)
1827 /* Ignore anything that is near the CHS limit */ 1830 /* Ignore anything that is near the CHS limit */
1828 continue; 1831 continue;
1829 if (xsectors * (c1 * xheads + h1) + s1 != a1) 1832 if (xsectors * (c1 * xheads + h1) + s1 != a1)
1830 return -1; 1833 return -1;
1831 } 1834 }
1832 1835
1833 /* 1836 /*
1834 * Everything checks out. Reset the geometry to use for further 1837 * Everything checks out. Reset the geometry to use for further
1835 * calculations. 1838 * calculations.
1836 */ 1839 */
1837 *cyl = MIN(xcylinders, MAXCYL); 1840 *cyl = MIN(xcylinders, MAXCYL);
1838 *head = xheads; 1841 *head = xheads;
1839 *sec = xsectors; 1842 *sec = xsectors;
1840 return 0; 1843 return 0;
1841} 1844}
1842 1845
1843static int 1846static int
1844get_mapping(struct mbr_partition *parts, int i, 1847get_mapping(struct mbr_partition *parts, int i,
1845 int *cylinder, int *head, int *sector, daddr_t *absolute) 1848 int *cylinder, int *head, int *sector, daddr_t *absolute)
1846{ 1849{
1847 struct mbr_partition *apart = &parts[i / 2]; 1850 struct mbr_partition *apart = &parts[i / 2];
1848 1851
1849 if (apart->mbrp_type == 0) 1852 if (apart->mbrp_type == 0)
1850 return -1; 1853 return -1;
1851 if (i % 2 == 0) { 1854 if (i % 2 == 0) {
1852 *cylinder = MBR_PCYL(apart->mbrp_scyl, apart->mbrp_ssect); 1855 *cylinder = MBR_PCYL(apart->mbrp_scyl, apart->mbrp_ssect);
1853 *head = apart->mbrp_shd; 1856 *head = apart->mbrp_shd;
1854 *sector = MBR_PSECT(apart->mbrp_ssect) - 1; 1857 *sector = MBR_PSECT(apart->mbrp_ssect) - 1;
1855 *absolute = le32toh(apart->mbrp_start); 1858 *absolute = le32toh(apart->mbrp_start);
1856 } else { 1859 } else {
1857 *cylinder = MBR_PCYL(apart->mbrp_ecyl, apart->mbrp_esect); 1860 *cylinder = MBR_PCYL(apart->mbrp_ecyl, apart->mbrp_esect);
1858 *head = apart->mbrp_ehd; 1861 *head = apart->mbrp_ehd;
1859 *sector = MBR_PSECT(apart->mbrp_esect) - 1; 1862 *sector = MBR_PSECT(apart->mbrp_esect) - 1;
1860 *absolute = le32toh(apart->mbrp_start) 1863 *absolute = le32toh(apart->mbrp_start)
1861 + le32toh(apart->mbrp_size) - 1; 1864 + le32toh(apart->mbrp_size) - 1;
1862 } 1865 }
1863 /* Sanity check the data against max values */ 1866 /* Sanity check the data against max values */
1864 if ((((*cylinder * MAXHEAD) + *head) * (uint32_t)MAXSECTOR + *sector) < *absolute) 1867 if ((((*cylinder * MAXHEAD) + *head) * (uint32_t)MAXSECTOR + *sector) < *absolute)
1865 /* cannot be a CHS mapping */ 1868 /* cannot be a CHS mapping */
1866 return -1; 1869 return -1;
1867 1870
1868 return 0; 1871 return 0;
1869} 1872}
1870 1873
1871/* 1874/*
1872 * Determine partition boundary alignment as fdisk(8) does. 1875 * Determine partition boundary alignment as fdisk(8) does.
1873 */ 1876 */
1874static void 1877static void
1875get_ptn_alignment(struct mbr_partition *mbrp0) 1878get_ptn_alignment(struct mbr_partition *mbrp0)
1876{ 1879{
1877 uint32_t ptn_0_base, ptn_0_limit; 1880 uint32_t ptn_0_base, ptn_0_limit;
1878 1881
1879 /* Default to using 'traditional' cylinder alignment */ 1882 /* Default to using 'traditional' cylinder alignment */
1880 ptn_alignment = bhead * bsec; 1883 ptn_alignment = bhead * bsec;
1881 ptn_0_offset = bsec; 1884 ptn_0_offset = bsec;
1882 1885
1883 if (mbrp0->mbrp_type != 0) { 1886 if (mbrp0->mbrp_type != 0) {
1884 /* Try to copy offset of first partition */ 1887 /* Try to copy offset of first partition */
1885 ptn_0_base = le32toh(mbrp0->mbrp_start); 1888 ptn_0_base = le32toh(mbrp0->mbrp_start);
1886 ptn_0_limit = ptn_0_base + le32toh(mbrp0->mbrp_size); 1889 ptn_0_limit = ptn_0_base + le32toh(mbrp0->mbrp_size);
1887 if (!(ptn_0_limit & 2047)) { 1890 if (!(ptn_0_limit & 2047)) {
1888 /* Partition ends on a 1MB boundary, align to 1MB */ 1891 /* Partition ends on a 1MB boundary, align to 1MB */
1889 ptn_alignment = 2048; 1892 ptn_alignment = 2048;
1890 if (ptn_0_base <= 2048 1893 if (ptn_0_base <= 2048
1891 && !(ptn_0_base & (ptn_0_base - 1))) { 1894 && !(ptn_0_base & (ptn_0_base - 1))) {
1892 /* ptn_base is a power of 2, use it */ 1895 /* ptn_base is a power of 2, use it */
1893 ptn_0_offset = ptn_0_base; 1896 ptn_0_offset = ptn_0_base;
1894 } 1897 }
1895 } 1898 }
1896 } else { 1899 } else {
1897 /* Use 1MB offset for large (>128GB) disks */ 1900 /* Use 1MB offset for large (>128GB) disks */
1898 if (pm->dlsize > 2048 * 1024 * 128) { 1901 if (pm->dlsize > 2048 * 1024 * 128) {
1899 ptn_alignment = 2048; 1902 ptn_alignment = 2048;
1900 ptn_0_offset = 2048; 1903 ptn_0_offset = 2048;
1901 } 1904 }
1902 } 1905 }
1903} 1906}

cvs diff -r1.6 -r1.7 src/usr.sbin/sysinst/msg.mi.de (switch to unified diff)

--- src/usr.sbin/sysinst/msg.mi.de 2015/05/17 10:13:24 1.6
+++ src/usr.sbin/sysinst/msg.mi.de 2018/06/03 13:16:30 1.7
@@ -1,1263 +1,1274 @@ @@ -1,1263 +1,1274 @@
1/* $NetBSD: msg.mi.de,v 1.6 2015/05/17 10:13:24 martin Exp $ */ 1/* $NetBSD: msg.mi.de,v 1.7 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* MI Message catalog -- German, machine independent */ 35/* MI Message catalog -- German, machine independent */
36 36
37message usage 37message usage
38{Aufruf: sysinst [-D] [-f Definitionsdatei] [-r Version] [-C bg:fg] 38{Aufruf: sysinst [-D] [-f Definitionsdatei] [-r Version] [-C bg:fg]
39} 39}
40 40
41/* 41/*
42 * We can not use non ascii characters in this message - it is displayed 42 * We can not use non ascii characters in this message - it is displayed
43 * before the locale is set up! 43 * before the locale is set up!
44 */ 44 */
45message sysinst_message_language 45message sysinst_message_language
46{Installation auf Deutsch} 46{Installation auf Deutsch}
47 47
48message sysinst_message_locale 48message sysinst_message_locale
49{de_DE.ISO8859-15} 49{de_DE.ISO8859-15}
50 50
51message Yes {Ja} 51message Yes {Ja}
52message No {Nein} 52message No {Nein}
53message All {Alle(s)} 53message All {Alle(s)}
54message Some {Einige} 54message Some {Einige}
55message None {Kein(e)} 55message None {Kein(e)}
56message none {kein(e)} 56message none {kein(e)}
57message OK {OK} 57message OK {OK}
58message ok {ok} 58message ok {ok}
59message On {An} 59message On {An}
60message Off {Aus} 60message Off {Aus}
61message unchanged {unverändert} 61message unchanged {unverändert}
62message Delete {Löschen?} 62message Delete {Löschen?}
63message install 63message install
64{installieren} 64{installieren}
65 65
66message reinstall 66message reinstall
67{Sets erneut installieren für} 67{Sets erneut installieren für}
68 68
69message upgrade 69message upgrade
70{Aktualisierung} 70{Aktualisierung}
71 71
72message hello 72message hello
73{Willkommen bei Sysinst, dem Installationsprogramm von NetBSD-@@VERSION@@. 73{Willkommen bei Sysinst, dem Installationsprogramm von NetBSD-@@VERSION@@.
74Dieses Programm wird Ihnen helfen, NetBSD auf eine Festplatte zu installieren 74Dieses Programm wird Ihnen helfen, NetBSD auf eine Festplatte zu installieren
75oder aber eine bereits bestehende Installation von NetBSD zu aktualisieren. 75oder aber eine bereits bestehende Installation von NetBSD zu aktualisieren.
76In den folgenden Menüs können Sie mit den Buchstaben (a, b, c, ...) 76In den folgenden Menüs können Sie mit den Buchstaben (a, b, c, ...)
77die verschiedenen Menüeinträge wählen oder durch Drücken von Strg-N/Strg-P 77die verschiedenen Menüeinträge wählen oder durch Drücken von Strg-N/Strg-P
78die Markierung auf- oder abbewegen. Die Cursor- und Bildlauftasten 78die Markierung auf- oder abbewegen. Die Cursor- und Bildlauftasten
79(Seite vor/zurück) sollten ebenfalls funktionieren.  79(Seite vor/zurück) sollten ebenfalls funktionieren.
80Durch Betätigen der Eingabetaste aktivieren Sie die gegenwärtige Auswahl. 80Durch Betätigen der Eingabetaste aktivieren Sie die gegenwärtige Auswahl.
81} 81}
82 82
83message thanks 83message thanks
84{Danke, dass Sie NetBSD benutzen! 84{Danke, dass Sie NetBSD benutzen!
85} 85}
86 86
87message installusure 87message installusure
88{Sie haben sich dazu entschieden NetBSD auf Ihre Festplatte zu installieren. 88{Sie haben sich dazu entschieden NetBSD auf Ihre Festplatte zu installieren.
89Dieser Vorgang verändert Informationen auf Ihrer Festplatte. Zu diesem 89Dieser Vorgang verändert Informationen auf Ihrer Festplatte. Zu diesem
90Zeitpunkt sollten Sie sicherheitshalber eine vollständige Datensicherung 90Zeitpunkt sollten Sie sicherheitshalber eine vollständige Datensicherung
91gemacht haben! Die Installation durchläuft die folgenden Schritte: 91gemacht haben! Die Installation durchläuft die folgenden Schritte:
92 a) Partitionieren Ihrer Festplatte 92 a) Partitionieren Ihrer Festplatte
93 b) Erstellen eines neuen BSD Dateisystems 93 b) Erstellen eines neuen BSD Dateisystems
94 c) Laden und Installieren der Distribution (Kernel+Basissystem) 94 c) Laden und Installieren der Distribution (Kernel+Basissystem)
95 d) Grundlegendes Konfigurieren des Systems 95 d) Grundlegendes Konfigurieren des Systems
96 96
97(Nachdem Sie Angaben zur Partitionierung Ihrer Festplatte gemacht haben - 97(Nachdem Sie Angaben zur Partitionierung Ihrer Festplatte gemacht haben -
98aber noch bevor die Festplatte verändert wird - erhalten Sie die Möglichkeit 98aber noch bevor die Festplatte verändert wird - erhalten Sie die Möglichkeit
99die Installation abzubrechen.) 99die Installation abzubrechen.)
100 100
101Wollen Sie fortfahren? 101Wollen Sie fortfahren?
102} 102}
103 103
104message upgradeusure 104message upgradeusure
105{Sie möchten das auf der Festplatte befindliche NetBSD-System aktualisieren. 105{Sie möchten das auf der Festplatte befindliche NetBSD-System aktualisieren.
106Zu diesem Zeitpunkt sollten Sie bereits eine vollständige  106Zu diesem Zeitpunkt sollten Sie bereits eine vollständige
107Datensicherung durchgeführt haben! Wollen Sie NetBSD wirklich aktualisieren? 107Datensicherung durchgeführt haben! Wollen Sie NetBSD wirklich aktualisieren?
108(Dies ist die letzte Warnung, bevor Ihre Festplatte(n) modifiziert werden.) 108(Dies ist die letzte Warnung, bevor Ihre Festplatte(n) modifiziert werden.)
109} 109}
110 110
111message reinstallusure 111message reinstallusure
112{Im folgenden werden die NetBSD Distributionssets (Kernel + Basissystem) 112{Im folgenden werden die NetBSD Distributionssets (Kernel + Basissystem)
113auf eine vorbereitete Festplatte ausgepackt. Diese Prozedur lädt und entpackt 113auf eine vorbereitete Festplatte ausgepackt. Diese Prozedur lädt und entpackt
114die Sets auf eine im Vorfeld partitionierte und bootfähige Festplatte aus. 114die Sets auf eine im Vorfeld partitionierte und bootfähige Festplatte aus.
115Es werden weder Festplatten gelabelt, Bootblöcke aktualisiert noch bestehende 115Es werden weder Festplatten gelabelt, Bootblöcke aktualisiert noch bestehende
116Konfigurationen gesichert. 116Konfigurationen gesichert.
117 117
118Beenden Sie jetzt und wählen Sie dann 'Installation' oder 'Aktualisierung', 118Beenden Sie jetzt und wählen Sie dann 'Installation' oder 'Aktualisierung',
119falls Ihre Festplatte nicht entsprechend vorbereitet ist oder Sie das System 119falls Ihre Festplatte nicht entsprechend vorbereitet ist oder Sie das System
120neu installieren oder aber ein bestehendes aktualisieren möchten! 120neu installieren oder aber ein bestehendes aktualisieren möchten!
121 121
122Wollen Sie die NetBSD Distributionssets wirklich erneut installieren? 122Wollen Sie die NetBSD Distributionssets wirklich erneut installieren?
123(Dies ist die letzte Warnung, bevor die Inhalte Ihres Dateisystems 123(Dies ist die letzte Warnung, bevor die Inhalte Ihres Dateisystems
124überschrieben werden!) 124überschrieben werden!)
125} 125}
126 126
127message mount_failed 127message mount_failed
128{Versuch, %s zu mounten ist fehlgeschlagen. Fortfahren? 128{Versuch, %s zu mounten ist fehlgeschlagen. Fortfahren?
129} 129}
130 130
131message nodisk 131message nodisk
132{Ich kann keine für NetBSD nutzbaren Festplatten finden. 132{Ich kann keine für NetBSD nutzbaren Festplatten finden.
133Zurück zum Hauptmenü... 133Zurück zum Hauptmenü...
134} 134}
135 135
136message onedisk 136message onedisk
137{Ich habe nur eine Festplatte, %s, gefunden. Ich gehe somit davon aus, dass 137{Ich habe nur eine Festplatte, %s, gefunden. Ich gehe somit davon aus, dass
138Sie NetBSD darauf %s möchten.  138Sie NetBSD darauf %s möchten.
139} 139}
140 140
141message ask_disk 141message ask_disk
142{Auf welcher Festplatte möchten Sie NetBSD %s? } 142{Auf welcher Festplatte möchten Sie NetBSD %s? }
143 143
144message Available_disks 144message Available_disks
145{Verfügbare Festplatten} 145{Verfügbare Festplatten}
146 146
147message heads 147message heads
148{Köpfe} 148{Köpfe}
149 149
150message sectors 150message sectors
151{Sektoren} 151{Sektoren}
152 152
153message fs_isize 153message fs_isize
154{Durchschnittliche Dateigröße (in Bytes)} 154{Durchschnittliche Dateigröße (in Bytes)}
155 155
156message mountpoint 156message mountpoint
157{Mountpoint (oder 'kein(e)'))} 157{Mountpoint (oder 'kein(e)'))}
158 158
159message cylname 159message cylname
160{Zyl} 160{Zyl}
161 161
162message secname 162message secname
163{Sek} 163{Sek}
164 164
165message megname 165message megname
166{MB} 166{MB}
167 167
168message layout 168message layout
169{NetBSD benutzt ein BSD-Disklabel, um den NetBSD-Teil der Festplatte in 169{NetBSD benutzt ein BSD-Disklabel, um den NetBSD-Teil der Festplatte in
170mehrere BSD Partitionen zu unterteilen. Sie müssen jetzt das BSD-Disklabel 170mehrere BSD Partitionen zu unterteilen. Sie müssen jetzt das BSD-Disklabel
171erstellen. 171erstellen.
172 172
173Sie können einen Texteditor verwenden, um die Größe der NetBSD- 173Sie können einen Texteditor verwenden, um die Größe der NetBSD-
174Partitionen zu definieren oder aber die bestehenden Partitionen mit Größe 174Partitionen zu definieren oder aber die bestehenden Partitionen mit Größe
175und Inhalt belassen. 175und Inhalt belassen.
176 176
177Sie haben gleich die Möglichkeit, alle Felder des Disklabels zu verändern. 177Sie haben gleich die Möglichkeit, alle Felder des Disklabels zu verändern.
178 178
179Der NetBSD-Teil Ihrer Festplatte ist %d Megabytes groß. 179Der NetBSD-Teil Ihrer Festplatte ist %d Megabytes groß.
180Eine volle Installation benötigt mindestens %d Megabytes - ohne X11 (grafische 180Eine volle Installation benötigt mindestens %d Megabytes - ohne X11 (grafische
181Oberfläche) - und %d Megabytes, wenn Sie X11 ebenfalls installieren. 181Oberfläche) - und %d Megabytes, wenn Sie X11 ebenfalls installieren.
182} 182}
183 183
184message Choose_your_size_specifier 184message Choose_your_size_specifier
185{Wählen Sie Megabytes, so werden effektive Partitionsgrößen 185{Wählen Sie Megabytes, so werden effektive Partitionsgrößen
186festgesetzt, die nahe Ihrer Größenangabe liegen - ausgerichtet 186festgesetzt, die nahe Ihrer Größenangabe liegen - ausgerichtet
187nach Zylindergrenzen. Bei modernen ZBR Festplatten variieren die 187nach Zylindergrenzen. Bei modernen ZBR Festplatten variieren die
188Zylindergrößen durchgehend, so daß kein großer Verlass auf die 188Zylindergrößen durchgehend, so daß kein großer Verlass auf die
189genauen Grenzen der Zylinder besteht. Bei älteren Festplatten dagegen 189genauen Grenzen der Zylinder besteht. Bei älteren Festplatten dagegen
190ist es am effizientesten, sich Partitionsgrößen auszusuchen, die exakt 190ist es am effizientesten, sich Partitionsgrößen auszusuchen, die exakt
191ein Vielfaches der aktuellen Zylindergröße ausmachen. 191ein Vielfaches der aktuellen Zylindergröße ausmachen.
192 192
193Wählen Sie Ihre Einheit.} 193Wählen Sie Ihre Einheit.}
194 194
195message ptnsizes 195message ptnsizes
196{Sie können jetzt die Größen der Systempartitionen verändern. Standardmäßig 196{Sie können jetzt die Größen der Systempartitionen verändern. Standardmäßig
197wird der gesamte Speicherplatz der Rootpartition zugeordnet. Wenn Sie  197wird der gesamte Speicherplatz der Rootpartition zugeordnet. Wenn Sie
198wollen, können Sie separate Partitionen definieren, z.B. /usr (zusätzliche 198wollen, können Sie separate Partitionen definieren, z.B. /usr (zusätzliche
199Systemdateien), /var (Log- bzw. Protokolldateien und anderes) oder /home 199Systemdateien), /var (Log- bzw. Protokolldateien und anderes) oder /home
200(Verzeichnis für die persönlichen Dateien der Anwender). 200(Verzeichnis für die persönlichen Dateien der Anwender).
201 201
202Verbleibender freier Speicherplatz wird der mit '+' markierten Partition 202Verbleibender freier Speicherplatz wird der mit '+' markierten Partition
203hinzugefügt. 203hinzugefügt.
204} 204}
205 205
206message ptnheaders 206message ptnheaders
207{ 207{
208 MB Zylinder Sektoren Dateisystem 208 MB Zylinder Sektoren Dateisystem
209} 209}
210 210
211message askfsmount 211message askfsmount
212{Mount-Verzeichnis?} 212{Mount-Verzeichnis?}
213 213
214message askfssize 214message askfssize
215{Größe für %s in %s?} 215{Größe für %s in %s?}
216 216
217message askunits 217message askunits
218{Verändern der Größeneinheiten (Sektoren/Zylinder/MB)} 218{Verändern der Größeneinheiten (Sektoren/Zylinder/MB)}
219 219
220message NetBSD_partition_cant_change 220message NetBSD_partition_cant_change
221{NetBSD-Partition} 221{NetBSD-Partition}
222 222
223message Whole_disk_cant_change 223message Whole_disk_cant_change
224{Ganze Festplatte} 224{Ganze Festplatte}
225 225
226message Boot_partition_cant_change 226message Boot_partition_cant_change
227{Boot-Partition} 227{Boot-Partition}
228 228
229message add_another_ptn 229message add_another_ptn
230{Hinzufügen einer benutzerdefinierten Partition} 230{Hinzufügen einer benutzerdefinierten Partition}
231 231
232message fssizesok 232message fssizesok
233{Akzeptieren. Freier Speicherplatz: %d %s, %d freie Partitionen.} 233{Akzeptieren. Freier Speicherplatz: %d %s, %d freie Partitionen.}
234 234
235message fssizesbad 235message fssizesbad
236{Reduzieren der Partitionsgrößen um %d %s (%u Sektoren).} 236{Reduzieren der Partitionsgrößen um %d %s (%u Sektoren).}
237 237
238message startoutsidedisk 238message startoutsidedisk
239{Der Startwert, den Sie angegeben haben, liegt jenseits des Endes der 239{Der Startwert, den Sie angegeben haben, liegt jenseits des Endes der
240Festplatte.  240Festplatte.
241} 241}
242 242
243message endoutsidedisk 243message endoutsidedisk
244{Mit diesem Wert liegt das Ende der Partition jenseits des Endes der 244{Mit diesem Wert liegt das Ende der Partition jenseits des Endes der
245Festplatte.  245Festplatte.
246Die Größe Ihrer Partition wurde auf %d %s verringert. 246Die Größe Ihrer Partition wurde auf %d %s verringert.
247 247
248Drücken Sie die Eingabetaste um fortzufahren. 248Drücken Sie die Eingabetaste um fortzufahren.
249} 249}
250 250
251message toobigdisklabel 251message toobigdisklabel
252{ 252{
253Diese Platte ist zu groß für eine 253Diese Platte ist zu groß für eine
254disklabel-Partitionstabelle und kann deswegen weder für 254disklabel-Partitionstabelle und kann deswegen weder für
255boot- noch für root-Partitionen benutzt werden} 255boot- noch für root-Partitionen benutzt werden}
256 256
257message fspart 257message fspart
258{Nachfolgend sehen Sie Ihre BSD-Disklabel-Partitionen: 258{Nachfolgend sehen Sie Ihre BSD-Disklabel-Partitionen:
259(Dies ist die letzte Chance, diese zu ändern.) 259(Dies ist die letzte Chance, diese zu ändern.)
260 260
261} 261}
262 262
263message fspart_header 263message fspart_header
264{ Start %3s Ende %3s Größe %3s FS Typ Newfs Mount Mount Verz. 264{ Start %3s Ende %3s Größe %3s FS Typ Newfs Mount Mount Verz.
265 --------- --------- ---------- ---------- ----- ----- ----------- 265 --------- --------- ---------- ---------- ----- ----- -----------
266} 266}
267 267
268message fspart_row 268message fspart_row
269{%9lu %9lu %10lu %-10s %-5s %-5s %s} 269{%9lu %9lu %10lu %-10s %-5s %-5s %s}
270 270
271message show_all_unused_partitions 271message show_all_unused_partitions
272{Alle unbenutzten Partitionen anzeigen} 272{Alle unbenutzten Partitionen anzeigen}
273 273
274message partition_sizes_ok 274message partition_sizes_ok
275{Partitionsgrößen OK} 275{Partitionsgrößen OK}
276 276
277message edfspart 277message edfspart
278{Die gegenwärtigen Werte für die Partition '%c' werden unten angezeigt. 278{Die gegenwärtigen Werte für die Partition '%c' werden unten angezeigt.
279Wählen Sie das Feld, das Sie ändern möchten:  279Wählen Sie das Feld, das Sie ändern möchten:
280 280
281 MB Zylinder Sektoren 281 MB Zylinder Sektoren
282 ------- --------- --------- 282 ------- --------- ---------
283} 283}
284 284
285message fstype_fmt 285message fstype_fmt
286{Dateisystemtyp: %9s} 286{Dateisystemtyp: %9s}
287 287
288message start_fmt 288message start_fmt
289{ Start: %9u %8u%c %9u} 289{ Start: %9u %8u%c %9u}
290 290
291message size_fmt 291message size_fmt
292{ Größe: %9u %8u%c %9u} 292{ Größe: %9u %8u%c %9u}
293 293
294message end_fmt 294message end_fmt
295{ Ende: %9u %8u%c %9u} 295{ Ende: %9u %8u%c %9u}
296 296
297message bsize_fmt 297message bsize_fmt
298{ Blockgröße: %9d bytes} 298{ Blockgröße: %9d bytes}
299 299
300message fsize_fmt 300message fsize_fmt
301{Fragmentgröße: %9d bytes} 301{Fragmentgröße: %9d bytes}
302 302
303message isize_fmt 303message isize_fmt
304{ Durchschnittliche Dateigröße: %d Bytes (zur Inode-Bestimmung) } 304{ Durchschnittliche Dateigröße: %d Bytes (zur Inode-Bestimmung) }
305message isize_fmt_dflt 305message isize_fmt_dflt
306{ Durchschnittliche Dateigröße: 4 Fragmente} 306{ Durchschnittliche Dateigröße: 4 Fragmente}
307 307
308message newfs_fmt 308message newfs_fmt
309{Neues Dateisystem (newfs): %8s} 309{Neues Dateisystem (newfs): %8s}
310 310
311message mount_fmt 311message mount_fmt
312{ Mount: %9s} 312{ Mount: %9s}
313 313
314message mount_options_fmt 314message mount_options_fmt
315{ Mountoptionen: } 315{ Mountoptionen: }
316 316
317message mountpt_fmt 317message mountpt_fmt
318{ Mount-Verz.: %9s} 318{ Mount-Verz.: %9s}
319 319
320message toggle 320message toggle
321{Wählen Sie} 321{Wählen Sie}
322 322
323message restore 323message restore
324{Ursprüngliche Werte wiederherstellen} 324{Ursprüngliche Werte wiederherstellen}
325 325
326message Select_the_type 326message Select_the_type
327{Wählen Sie den Dateisystemtyp aus} 327{Wählen Sie den Dateisystemtyp aus}
328 328
329message other_types 329message other_types
330{Andere Dateisystemtypen} 330{Andere Dateisystemtypen}
331 331
332message label_size 332message label_size
333{%s 333{%s
334Spezielle Werte, die für die Größenangaben eingegeben werden können: 334Spezielle Werte, die für die Größenangaben eingegeben werden können:
335 -1: bis zum Ende des NetBSD-Teils der Festplatte gehen 335 -1: bis zum Ende des NetBSD-Teils der Festplatte gehen
336 a-%c: Partition dort beenden, wo Partition X anfängt 336 a-%c: Partition dort beenden, wo Partition X anfängt
337 337
338Größe (%s)} 338Größe (%s)}
339 339
340message label_offset 340message label_offset
341{%s 341{%s
342Spezielle Werte, die für den Start angegeben werden können: 342Spezielle Werte, die für den Start angegeben werden können:
343 -1: dort anfangen, wo der NetBSD Teil der Festplatte beginnt 343 -1: dort anfangen, wo der NetBSD Teil der Festplatte beginnt
344 a-%c: direkt hinter der angegebenen Partition starten (a, b, ..., %c) 344 a-%c: direkt hinter der angegebenen Partition starten (a, b, ..., %c)
345 345
346start (%s)} 346start (%s)}
347 347
348message invalid_sector_number 348message invalid_sector_number
349{Ungültige Sektornummer 349{Ungültige Sektornummer
350} 350}
351 351
352message Select_file_system_block_size 352message Select_file_system_block_size
353{Wählen Sie die Blockgröße des Dateisystems aus} 353{Wählen Sie die Blockgröße des Dateisystems aus}
354 354
355message Select_file_system_fragment_size 355message Select_file_system_fragment_size
356{Wählen Sie die Fragmentgröße des Dateisystems aus} 356{Wählen Sie die Fragmentgröße des Dateisystems aus}
357 357
358message packname 358message packname
359{Bitte geben Sie Ihrer NetBSD-Festplatte einen Namen} 359{Bitte geben Sie Ihrer NetBSD-Festplatte einen Namen}
360 360
361message lastchance 361message lastchance
362{NetBSD wird nun auf die Festplatte (%s) installiert. Noch wurde nichts 362{NetBSD wird nun auf die Festplatte (%s) installiert. Noch wurde nichts
363geschrieben. Dies ist Ihre letzte Chance, diesen Prozess abzubrechen. 363geschrieben. Dies ist Ihre letzte Chance, diesen Prozess abzubrechen.
364 364
365Möchten Sie fortfahren? 365Möchten Sie fortfahren?
366 366
367} 367}
368 368
369message disksetupdone 369message disksetupdone
370{Der erste Teil der Installation ist nun abgeschlossen.  370{Der erste Teil der Installation ist nun abgeschlossen.
371Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und 371Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und
372auf allen von Ihnen gewählten Partitionen ein Dateisystem initialisiert 372auf allen von Ihnen gewählten Partitionen ein Dateisystem initialisiert
373und geprüft. 373und geprüft.
374} 374}
375 375
376message disksetupdoneupdate 376message disksetupdoneupdate
377{Der erste Teil der Prozedur ist nun abgeschlossen.  377{Der erste Teil der Prozedur ist nun abgeschlossen.
378Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und 378Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und
379und alle gewählten Dateisysteme auf Fehler überprüft. 379und alle gewählten Dateisysteme auf Fehler überprüft.
380} 380}
381 381
382message openfail 382message openfail
383{Konnte %s nicht öffnen, die Fehlermeldung lautet: %s. 383{Konnte %s nicht öffnen, die Fehlermeldung lautet: %s.
384} 384}
385 385
386 386
387message mountfail 387message mountfail
388{Das Mounten des Gerätes /dev/%s%c auf %s ist fehlgeschlagen. 388{Das Mounten des Gerätes /dev/%s%c auf %s ist fehlgeschlagen.
389} 389}
390 390
391message extractcomplete 391message extractcomplete
392{Das Extrahieren der ausgewählten Sets für NetBSD-@@VERSION@@ ist abgeschlossen. 392{Das Extrahieren der ausgewählten Sets für NetBSD-@@VERSION@@ ist abgeschlossen.
393Das System ist somit fähig, von der ausgewählten Partition zu starten. Um die 393Das System ist somit fähig, von der ausgewählten Partition zu starten. Um die
394Installation zu vervollständigen, gibt Ihnen sysinst die Möglichkeit, eine 394Installation zu vervollständigen, gibt Ihnen sysinst die Möglichkeit, eine
395grundlegende Konfiguration vorzunehmen. 395grundlegende Konfiguration vorzunehmen.
396} 396}
397 397
398message instcomplete 398message instcomplete
399{Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Das System 399{Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Das System
400sollte von der Festplatte starten können. Beachten Sie die INSTALL-Anleitung, 400sollte von der Festplatte starten können. Beachten Sie die INSTALL-Anleitung,
401um sich über die weitere Konfiguration zu informieren. 401um sich über die weitere Konfiguration zu informieren.
402Auch die afterboot(8) Manpage ist weiterzuempfehlen; Sie enthält eine Liste 402Auch die afterboot(8) Manpage ist weiterzuempfehlen; Sie enthält eine Liste
403mit Punkten, die nach dem ersten vollständigen Start geprüft werden sollten. 403mit Punkten, die nach dem ersten vollständigen Start geprüft werden sollten.
404 404
405Zumindest aber sollten Sie die /etc/rc.conf entsprechend Ihren Bedürfnissen 405Zumindest aber sollten Sie die /etc/rc.conf entsprechend Ihren Bedürfnissen
406konfigurieren. Werfen Sie einen Blick in /etc/defaults/rc.conf rein, wo Sie 406konfigurieren. Werfen Sie einen Blick in /etc/defaults/rc.conf rein, wo Sie
407die Vorgaben für diese Datei finden. 407die Vorgaben für diese Datei finden.
408} 408}
409 409
410message upgrcomplete 410message upgrcomplete
411{Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Sie müssen 411{Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Sie müssen
412nun die Anweisungen im INSTALL-Dokument beachten, damit Ihr System - 412nun die Anweisungen im INSTALL-Dokument beachten, damit Ihr System -
413entsprechend Ihrer Situation - neu konfiguriert werden kann. 413entsprechend Ihrer Situation - neu konfiguriert werden kann.
414Lesen Sie (erneut) die afterboot(8) Manpage, da diese seit Ihrer letzten 414Lesen Sie (erneut) die afterboot(8) Manpage, da diese seit Ihrer letzten
415Aktualisierung bzw. Installation zusätzliche Angaben enthalten kann. 415Aktualisierung bzw. Installation zusätzliche Angaben enthalten kann.
416 416
417Sie sollten wenigstens rc.conf ändern; dort gilt es rc_configured=NO auf 417Sie sollten wenigstens rc.conf ändern; dort gilt es rc_configured=NO auf
418rc_configured=YES umzustellen, da das System sonst nur bis zum Single User 418rc_configured=YES umzustellen, da das System sonst nur bis zum Single User
419Modus (Einbenutzermodus) startet. 419Modus (Einbenutzermodus) startet.
420} 420}
421 421
422 422
423message unpackcomplete 423message unpackcomplete
424{Das Entpacken der zusätzlichen Releasesets von NetBSD-@@VERSION@@ ist nun 424{Das Entpacken der zusätzlichen Releasesets von NetBSD-@@VERSION@@ ist nun
425beendet. 425beendet.
426Sie sollten nun die Anweisungen im INSTALL Dokument beachten, um 426Sie sollten nun die Anweisungen im INSTALL Dokument beachten, um
427Ihr System Ihrer Konfiguration entsprechend einzurichten. Die afterboot(8) 427Ihr System Ihrer Konfiguration entsprechend einzurichten. Die afterboot(8)
428Manpage kann ebenfalls nützlich sein. 428Manpage kann ebenfalls nützlich sein.
429  429
430Zumindest müssen Sie die Datei rc.conf editieren, so daß die gewünschten 430Zumindest müssen Sie die Datei rc.conf editieren, so daß die gewünschten
431Dienste gestartet werden. Vergessen Sie nicht, rc_configured=NO auf 431Dienste gestartet werden. Vergessen Sie nicht, rc_configured=NO auf
432rc_configured=YES umzustellen.  432rc_configured=YES umzustellen.
433} 433}
434 434
435message distmedium 435message distmedium
436{Ihre Festplatte ist nun bereit für die Installation der Kernel- und 436{Ihre Festplatte ist nun bereit für die Installation der Kernel- und
437Distributionspakete. Wie im INSTALL-Dokument beschrieben, haben Sie nun  437Distributionspakete. Wie im INSTALL-Dokument beschrieben, haben Sie nun
438mehrere Optionen. 438mehrere Optionen.
439Für FTP oder NFS müssen Sie mit einem Netzwerk verbunden sein und 439Für FTP oder NFS müssen Sie mit einem Netzwerk verbunden sein und
440Zugriff auf die entsprechenden Server haben. 440Zugriff auf die entsprechenden Server haben.
441 441
442Insgesamt %d Pakete ausgewählt, %d installiert. Nächstes Set: %s. 442Insgesamt %d Pakete ausgewählt, %d installiert. Nächstes Set: %s.
443 443
444} 444}
445 445
446message distset 446message distset
447{Die NetBSD Distribution ist in verschiedene Pakete (Sets) aufgeteilt. 447{Die NetBSD Distribution ist in verschiedene Pakete (Sets) aufgeteilt.
448Es gibt einige grundlegende Pakete, die auf jeden Fall benötigt werden, 448Es gibt einige grundlegende Pakete, die auf jeden Fall benötigt werden,
449sowie optionale. 449sowie optionale.
450Es bleibt Ihnen überlassen, ein Basissystem (Minimale Installation) oder 450Es bleibt Ihnen überlassen, ein Basissystem (Minimale Installation) oder
451alle Pakete (volle Installation) zu installieren bzw. einen benutzer- 451alle Pakete (volle Installation) zu installieren bzw. einen benutzer-
452definierten Satz auszuwählen. 452definierten Satz auszuwählen.
453} 453}
454 454
455message ftpsource 455message ftpsource
456{Dies sind die Daten zum Aufbau einer %s-Verbindung. 456{Dies sind die Daten zum Aufbau einer %s-Verbindung.
457Falls der Benutzer "ftp" ist, benötigen Sie kein Passwort. 457Falls der Benutzer "ftp" ist, benötigen Sie kein Passwort.
458 458
459} 459}
460 460
461message email 461message email
462{E-Mail-Adresse} 462{E-Mail-Adresse}
463 463
464message dev 464message dev
465{Laufwerk} 465{Laufwerk}
466 466
467message nfssource 467message nfssource
468{Geben Sie den NFS-Server samt Verzeichnis an, auf dem die Distribution zu 468{Geben Sie den NFS-Server samt Verzeichnis an, auf dem die Distribution zu
469finden ist. 469finden ist.
470(Das Verzeichnis muss .tgz Dateien enthalten und über NFS mountbar sein.) 470(Das Verzeichnis muss .tgz Dateien enthalten und über NFS mountbar sein.)
471 471
472} 472}
473 473
474message floppysource 474message floppysource
475{Geben Sie das Diskettenlaufwerk und das Transfer-Verzeichnis auf dem 475{Geben Sie das Diskettenlaufwerk und das Transfer-Verzeichnis auf dem
476Zieldateisystem an. Das Installationspaket muß direkt im obersten 476Zieldateisystem an. Das Installationspaket muß direkt im obersten
477Verzeichnis der Diskette liegen. 477Verzeichnis der Diskette liegen.
478 478
479} 479}
480 480
481message cdromsource 481message cdromsource
482{Geben Sie das CD-Laufwerk und das entsprechende Verzeichnis an, in dem 482{Geben Sie das CD-Laufwerk und das entsprechende Verzeichnis an, in dem
483die Distribution zu finden ist. 483die Distribution zu finden ist.
484(Das Verzeichnis muss .tgz Dateien enthalten.) 484(Das Verzeichnis muss .tgz Dateien enthalten.)
485 485
486} 486}
487 487
488message Available_cds 488message Available_cds
489{Verfügbare CDs} 489{Verfügbare CDs}
490 490
491message ask_cd 491message ask_cd
492{Es wurden mehrere CDs gefunden. Bitte wählen Sie die Installations CD aus.} 492{Es wurden mehrere CDs gefunden. Bitte wählen Sie die Installations CD aus.}
493 493
494message cd_path_not_found 494message cd_path_not_found
495{Die Installationsdateien wurden auf der ausgewählten CD nicht gefunden. Bitte 495{Die Installationsdateien wurden auf der ausgewählten CD nicht gefunden. Bitte
496prüfen Sie den Gerätenamen und Pfad der Installationsdateien.} 496prüfen Sie den Gerätenamen und Pfad der Installationsdateien.}
497 497
498message localfssource 498message localfssource
499{Geben Sie das noch nicht gemountete lokale Gerät und dessen entsprechendes 499{Geben Sie das noch nicht gemountete lokale Gerät und dessen entsprechendes
500Verzeichnis an, in dem die Distribution zu finden ist. 500Verzeichnis an, in dem die Distribution zu finden ist.
501(Das Verzeichnis muss .tgz Dateien enthalten.) 501(Das Verzeichnis muss .tgz Dateien enthalten.)
502 502
503} 503}
504 504
505message localdir 505message localdir
506{Geben Sie das Verzeichnis des bereits gemounteten lokalen Geräts an, in dem 506{Geben Sie das Verzeichnis des bereits gemounteten lokalen Geräts an, in dem
507die Distribution zu finden ist. 507die Distribution zu finden ist.
508(Das Verzeichnis muss .tgz Dateien enthalten.) 508(Das Verzeichnis muss .tgz Dateien enthalten.)
509 509
510} 510}
511 511
512message filesys 512message filesys
513{Dateisystem} 513{Dateisystem}
514 514
515message nonet 515message nonet
516{NetBSD hat keinen bekannten Netzwerkadapter gefunden. 516{NetBSD hat keinen bekannten Netzwerkadapter gefunden.
517Zurück zum vorigen Menü. 517Zurück zum vorigen Menü.
518} 518}
519 519
520message netup 520message netup
521{Die folgenden Netzwerkadapter sind verfügbar: %s  521{Die folgenden Netzwerkadapter sind verfügbar: %s
522Hat einer davon Zugriff auf die benötigten Server?} 522Hat einer davon Zugriff auf die benötigten Server?}
523 523
524message asknetdev 524message asknetdev
525{Welchen Netzwerkadapter möchten Sie benutzen?} 525{Welchen Netzwerkadapter möchten Sie benutzen?}
526 526
527message netdevs 527message netdevs
528{Verfügbare schnittstellen} 528{Verfügbare schnittstellen}
529 529
530message netinfo 530message netinfo
531{Um das Netzwerk nutzen zu können, benötigen wir folgende Angaben: 531{Um das Netzwerk nutzen zu können, benötigen wir folgende Angaben:
532 532
533} 533}
534 534
535message net_domain 535message net_domain
536{DNS-Domain} 536{DNS-Domain}
537 537
538message net_host 538message net_host
539{Hostname} 539{Hostname}
540 540
541message net_ip 541message net_ip
542{IPv4-Adresse} 542{IPv4-Adresse}
543 543
544message net_srv_ip 544message net_srv_ip
545{IPv4-Adressse des Servers} 545{IPv4-Adressse des Servers}
546 546
547message net_mask 547message net_mask
548{IPv4-Netzmaske} 548{IPv4-Netzmaske}
549 549
550message net_namesrv 550message net_namesrv
551{IPv4-Nameserver} 551{IPv4-Nameserver}
552 552
553message net_defroute 553message net_defroute
554{IPv4-Gateway} 554{IPv4-Gateway}
555 555
556message net_media 556message net_media
557{Art der Netzwerkverbindung} 557{Art der Netzwerkverbindung}
558 558
559message netok 559message netok
560{Nachfolgend sehen Sie die aktuellen Netzwerkeinstellungen. 560{Nachfolgend sehen Sie die aktuellen Netzwerkeinstellungen.
561 561
562DNS-Domain: %s  562DNS-Domain: %s
563Hostname: %s  563Hostname: %s
564Nameserver: %s  564Nameserver: %s
565Netzwerkadapter: %s  565Netzwerkadapter: %s
566Verbindungstyp: %s  566Verbindungstyp: %s
567IP-Adresse: %s  567IP-Adresse: %s
568Netzmaske: %s  568Netzmaske: %s
569IPv4-Gateway: %s  569IPv4-Gateway: %s
570} 570}
571 571
572message netok_slip 572message netok_slip
573{Sie haben die folgenden Daten gewählt. Sind diese Daten OK? 573{Sie haben die folgenden Daten gewählt. Sind diese Daten OK?
574 574
575DNS-Domain: %s  575DNS-Domain: %s
576Hostname: %s  576Hostname: %s
577Nameserver: %s  577Nameserver: %s
578Netzwerkadapter: %s  578Netzwerkadapter: %s
579Verbindungstyp: %s  579Verbindungstyp: %s
580IP-Adresse: %s  580IP-Adresse: %s
581IP-Adresse des Servers: %s  581IP-Adresse des Servers: %s
582Netzmaske: %s  582Netzmaske: %s
583IPv4-Gateway: %s  583IPv4-Gateway: %s
584} 584}
585 585
586message netokv6 586message netokv6
587{ 587{
588IPv6-Autokonfiguration: %s  588IPv6-Autokonfiguration: %s
589} 589}
590 590
591message netok_ok 591message netok_ok
592{Sind diese OK?} 592{Sind diese OK?}
593 593
594message slattach { 594message slattach {
595Flags für slattach 595Flags für slattach
596} 596}
597 597
598message wait_network 598message wait_network
599{ 599{
600Bitte warten Sie, während die Netzwerkgeräte initialisiert werden. 600Bitte warten Sie, während die Netzwerkgeräte initialisiert werden.
601} 601}
602 602
603message resolv 603message resolv
604{Konnte /etc/resolv.conf nicht erstellen. Installation abgebrochen. 604{Konnte /etc/resolv.conf nicht erstellen. Installation abgebrochen.
605} 605}
606 606
607message realdir 607message realdir
608{Konnte nicht in das Verzeichnis %s: %s wechseln. Installation abgebrochen. 608{Konnte nicht in das Verzeichnis %s: %s wechseln. Installation abgebrochen.
609} 609}
610 610
611message delete_xfer_file 611message delete_xfer_file
612{Nach der Installation löschen} 612{Nach der Installation löschen}
613 613
614message notarfile 614message notarfile
615{Das Release-Paket %s existiert nicht.} 615{Das Release-Paket %s existiert nicht.}
616 616
617message endtarok 617message endtarok
618{Alle Distributionspakete wurden erfolgreich entpackt.} 618{Alle Distributionspakete wurden erfolgreich entpackt.}
619 619
620message endtar 620message endtar
621{Beim Entpacken der Distributionspakete sind Probleme aufgetreten. 621{Beim Entpacken der Distributionspakete sind Probleme aufgetreten.
622Ihre Installation ist daher unvollständig. 622Ihre Installation ist daher unvollständig.
623 623
624Sie haben %d Distributionssets ausgewählt. %d davon wurden nicht 624Sie haben %d Distributionssets ausgewählt. %d davon wurden nicht
625gefunden und %d wegen eines Fehlers übersprungen. 625gefunden und %d wegen eines Fehlers übersprungen.
626Von %d zu entpackenden Paketen sind %d erfolgreich und %d 626Von %d zu entpackenden Paketen sind %d erfolgreich und %d
627mit Fehler entpackt worden. 627mit Fehler entpackt worden.
628 628
629Die Installation wird abgebrochen. Bitte prüfen Sie die Bezugsquellen Ihrer 629Die Installation wird abgebrochen. Bitte prüfen Sie die Bezugsquellen Ihrer
630Distribution und installieren Sie gegebenfalls die Pakete erneut.} 630Distribution und installieren Sie gegebenfalls die Pakete erneut.}
631 631
632message abort 632message abort
633{Ihre Auswahl ermöglicht keine NetBSD-Installation. Installation abgebrochen. 633{Ihre Auswahl ermöglicht keine NetBSD-Installation. Installation abgebrochen.
634} 634}
635 635
636message abortinst 636message abortinst
637{Die Distribution konnte nicht geladen werden. Sie müssen manuell fortfahren. 637{Die Distribution konnte nicht geladen werden. Sie müssen manuell fortfahren.
638Installation abgebrochen. 638Installation abgebrochen.
639} 639}
640 640
641message abortupgr 641message abortupgr
642{Die Distribution konnte nicht geladen werden. Sie müssen manuell fortfahren. 642{Die Distribution konnte nicht geladen werden. Sie müssen manuell fortfahren.
643Aktualisierung abgebrochen. 643Aktualisierung abgebrochen.
644} 644}
645 645
646message abortunpack 646message abortunpack
647{Das Entpacken der zusätzlichen Pakete ist fehlgeschlagen. Sie müssen 647{Das Entpacken der zusätzlichen Pakete ist fehlgeschlagen. Sie müssen
648entweder manuell fortfahren oder eine andere Bezugsquelle für die Release- 648entweder manuell fortfahren oder eine andere Bezugsquelle für die Release-
649Pakete angeben und es erneut versuchen. 649Pakete angeben und es erneut versuchen.
650} 650}
651 651
652message createfstab 652message createfstab
653{Unüberwindliches Problem! Die Datei /mnt/etc/fstab konnte nicht erstellt 653{Unüberwindliches Problem! Die Datei /mnt/etc/fstab konnte nicht erstellt
654werden. Der Vorgang wird abgebrochen. 654werden. Der Vorgang wird abgebrochen.
655} 655}
656 656
657 657
658message noetcfstab 658message noetcfstab
659{Hilfe! Die Datei /etc/fstab konnte im Ziellaufwerk %s nicht gefunden 659{Hilfe! Die Datei /etc/fstab konnte im Ziellaufwerk %s nicht gefunden
660werden. Die Aktualisierung wird abgebrochen. 660werden. Die Aktualisierung wird abgebrochen.
661} 661}
662 662
663message badetcfstab 663message badetcfstab
664{Hilfe! Es besteht eine fehlerhafte /etc/fstab im Ziellaufwerk %s. Die 664{Hilfe! Es besteht eine fehlerhafte /etc/fstab im Ziellaufwerk %s. Die
665Aktualisierung wird abgebrochen. 665Aktualisierung wird abgebrochen.
666} 666}
667 667
668message X_oldexists 668message X_oldexists
669{Der alte X Server %s/bin/X kann nicht als %s/bin/X.old 669{Der alte X Server %s/bin/X kann nicht als %s/bin/X.old
670gesichert werden, da eine Datei mit diesem Namen bereits existiert. 670gesichert werden, da eine Datei mit diesem Namen bereits existiert.
671Bitte korrigieren Sie dies, bevor Sie fortfahren. 671Bitte korrigieren Sie dies, bevor Sie fortfahren.
672 672
673Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten, 673Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten,
674wodurch Sie %s/bin/X.old überprüfen können. Gehört diese Datei zu 674wodurch Sie %s/bin/X.old überprüfen können. Gehört diese Datei zu
675einer früheren Aktualisierung, so können Sie diese mit rm -f 675einer früheren Aktualisierung, so können Sie diese mit rm -f
676%s/bin/x.old löschen und danach die Aktualisierung neu starten. 676%s/bin/x.old löschen und danach die Aktualisierung neu starten.
677Gehört die Datei %s/bin/X.old aber zu einer aktuellen, 677Gehört die Datei %s/bin/X.old aber zu einer aktuellen,
678abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit 678abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit
679mv %s/bin/X.old %s/bin/X wieder herstellen und die 679mv %s/bin/X.old %s/bin/X wieder herstellen und die
680unvollständige Aktualisierung fortsetzen. %0s%0s%0s 680unvollständige Aktualisierung fortsetzen. %0s%0s%0s
681 681
682Aktualisierung wird abgebrochen.} 682Aktualisierung wird abgebrochen.}
683 683
684message netnotup 684message netnotup
685{Beim Testen des Netzwerks ist ein Problem aufgetreten. Entweder Ihr 685{Beim Testen des Netzwerks ist ein Problem aufgetreten. Entweder Ihr
686Gateway oder Ihr Nameserver hat nicht auf "ping" reagiert. Wollen Sie Ihre 686Gateway oder Ihr Nameserver hat nicht auf "ping" reagiert. Wollen Sie Ihre
687Netzwerkkonfiguration überarbeiten? 687Netzwerkkonfiguration überarbeiten?
688 688
689("Nein" ermöglicht Ihnen die Fortsetzung oder den Abbruch der Installation.) 689("Nein" ermöglicht Ihnen die Fortsetzung oder den Abbruch der Installation.)
690} 690}
691 691
692message netnotup_continueanyway 692message netnotup_continueanyway
693{Wollen Sie die Installation dennoch fortsetzen? Sie können sich auch 693{Wollen Sie die Installation dennoch fortsetzen? Sie können sich auch
694später um das Netzwerk kümmern. ("Nein" bricht die Installation ab.) 694später um das Netzwerk kümmern. ("Nein" bricht die Installation ab.)
695} 695}
696 696
697message makedev 697message makedev
698{Erstelle Gerätedateien in /dev ... 698{Erstelle Gerätedateien in /dev ...
699} 699}
700 700
701message badfs 701message badfs
702{Das Dateisystem auf /dev/%s%c scheint kein BSD-Dateisystem zu sein, 702{Das Dateisystem auf /dev/%s%c scheint kein BSD-Dateisystem zu sein,
703die Prüfung des Dateisystems (fsck) ist fehlgeschlagen (Fehler %d). 703die Prüfung des Dateisystems (fsck) ist fehlgeschlagen (Fehler %d).
704 704
705Die Aktualisierung trotzdem fortsetzen? 705Die Aktualisierung trotzdem fortsetzen?
706} 706}
707 707
708message rootmissing 708message rootmissing
709{Das Zielverzeichnis %s existiert nicht. 709{Das Zielverzeichnis %s existiert nicht.
710} 710}
711 711
712message badroot 712message badroot
713{Das neu installierte root Dateisystem scheint unvollständig zu sein. 713{Das neu installierte root Dateisystem scheint unvollständig zu sein.
714Sind Sie sicher, dass Sie alle benötigten Sets installiert haben?  714Sind Sie sicher, dass Sie alle benötigten Sets installiert haben?
715} 715}
716 716
717message fd_type 717message fd_type
718{Floppy Dateisystem-Typ} 718{Floppy Dateisystem-Typ}
719 719
720message fdnotfound 720message fdnotfound
721{Ich konnte die Datei nicht finden. 721{Ich konnte die Datei nicht finden.
722} 722}
723 723
724message fdremount 724message fdremount
725{Die Diskette konnte nicht gemountet werden. 725{Die Diskette konnte nicht gemountet werden.
726} 726}
727 727
728message fdmount 728message fdmount
729{Bitte legen Sie die Diskette mit der Datei "%s.%s" ein. 729{Bitte legen Sie die Diskette mit der Datei "%s.%s" ein.
730 730
731Falls das Paket keine weiteren Disketten enthält, wählen Sie 731Falls das Paket keine weiteren Disketten enthält, wählen Sie
732"Paket fertig" um das Paket zu installieren. Wählen Sie 732"Paket fertig" um das Paket zu installieren. Wählen Sie
733"Holen abbrechen" um zur Auswahl des Installationsmediums 733"Holen abbrechen" um zur Auswahl des Installationsmediums
734zurückzukehren. 734zurückzukehren.
735} 735}
736 736
737.if 0 737.if 0
738message fdmount 738message fdmount
739{Bitte legen Sie die Diskette ein, auf der sich die Datei "%s.%s" befindet. } 739{Bitte legen Sie die Diskette ein, auf der sich die Datei "%s.%s" befindet. }
740 740
741message fdnotfound 741message fdnotfound
742{Ich konnte die Datei "%s.%s" nicht finden. Bitte legen Sie die entsprechende  742{Ich konnte die Datei "%s.%s" nicht finden. Bitte legen Sie die entsprechende
743Diskette ein. 743Diskette ein.
744Wenn dies die letzte Diskette des Paketes war, wählen Sie "Paket fertig", 744Wenn dies die letzte Diskette des Paketes war, wählen Sie "Paket fertig",
745um zum nächsten Paket überzugehen - falls ein weiteres Paket folgt.} 745um zum nächsten Paket überzugehen - falls ein weiteres Paket folgt.}
746 746
747message fdremount 747message fdremount
748{Die Diskette konnte nicht gemountet werden. 748{Die Diskette konnte nicht gemountet werden.
749 749
750Sie sollten:  750Sie sollten:
751 751
752Erneut probieren, die Diskette mit der Datei "%s.%s" einzulegen. 752Erneut probieren, die Diskette mit der Datei "%s.%s" einzulegen.
753 753
754Keine weiteren Disketten für dieses Paket laden, und stattdessen mit dem 754Keine weiteren Disketten für dieses Paket laden, und stattdessen mit dem
755nächsten Paket fortfahren - falls ein weiteres existiert. 755nächsten Paket fortfahren - falls ein weiteres existiert.
756 756
757Keine weiteren Pakete mehr vom dem Diskettenlaufwerk laden und die Installation 757Keine weiteren Pakete mehr vom dem Diskettenlaufwerk laden und die Installation
758abbrechen. 758abbrechen.
759} 759}
760.endif 760.endif
761 761
762message mntnetconfig 762message mntnetconfig
763{Möchten Sie die aktuellen Netzwerkeinstellungen für den allgemeinen 763{Möchten Sie die aktuellen Netzwerkeinstellungen für den allgemeinen
764Gebrauch in /etc speichern?} 764Gebrauch in /etc speichern?}
765 765
766message cur_distsets 766message cur_distsets
767{Die folgenden Distributionspakete werden verwendet: 767{Die folgenden Distributionspakete werden verwendet:
768 768
769} 769}
770 770
771message cur_distsets_header 771message cur_distsets_header
772{ Distributionspaket Ausgewählt 772{ Distributionspaket Ausgewählt
773 ------------------------ ---------- 773 ------------------------ ----------
774} 774}
775 775
776message set_base 776message set_base
777{Basispaket} 777{Basispaket}
778 778
779message set_system 779message set_system
780{Systemkonfiguration (/etc)} 780{Systemkonfiguration (/etc)}
781 781
782message set_compiler 782message set_compiler
783{Compiler} 783{Compiler}
784 784
785message set_games 785message set_games
786{Spiele} 786{Spiele}
787 787
788message set_man_pages 788message set_man_pages
789{Handbuchseiten (man pages)} 789{Handbuchseiten (man pages)}
790 790
791message set_misc 791message set_misc
792{Verschiedenes} 792{Verschiedenes}
793 793
794message set_modules 794message set_modules
795{Kernel Modules} 795{Kernel Modules}
796 796
797message set_tests 797message set_tests
798{Testprogramme} 798{Testprogramme}
799 799
800message set_text_tools 800message set_text_tools
801{Textbearbeitung} 801{Textbearbeitung}
802 802
803message set_X11 803message set_X11
804{X11 Sets} 804{X11 Sets}
805 805
806message set_X11_base 806message set_X11_base
807{X11 Basis und Clients} 807{X11 Basis und Clients}
808 808
809message set_X11_etc 809message set_X11_etc
810{X11 Konfiguration} 810{X11 Konfiguration}
811 811
812message set_X11_fonts 812message set_X11_fonts
813{X11 Schriftarten} 813{X11 Schriftarten}
814 814
815message set_X11_servers 815message set_X11_servers
816{X11 Server} 816{X11 Server}
817 817
818message set_X11_prog 818message set_X11_prog
819{X11 Programmierung} 819{X11 Programmierung}
820 820
821message set_source 821message set_source
822{Quelltexte und Debug-Info} 822{Quelltexte und Debug-Info}
823 823
824message set_syssrc 824message set_syssrc
825{Kernel Quelltexte} 825{Kernel Quelltexte}
826 826
827message set_src 827message set_src
828{Basissystem Quelltexte} 828{Basissystem Quelltexte}
829 829
830message set_sharesrc 830message set_sharesrc
831{Share Quelltexte} 831{Share Quelltexte}
832 832
833message set_gnusrc 833message set_gnusrc
834{GNU Quelltexte} 834{GNU Quelltexte}
835 835
836message set_xsrc 836message set_xsrc
837{X11 Quelltexte} 837{X11 Quelltexte}
838 838
839message set_debug 839message set_debug
840{Debug-Information} 840{Debug-Information}
841 841
842message set_xdebug 842message set_xdebug
843{X11 Debug-Information} 843{X11 Debug-Information}
844 844
845message cur_distsets_row 845message cur_distsets_row
846{%-27s %3s} 846{%-27s %3s}
847 847
848message select_all 848message select_all
849{Alle oben angezeigten Pakete auswählen} 849{Alle oben angezeigten Pakete auswählen}
850 850
851message select_none 851message select_none
852{Kein Paket wählen} 852{Kein Paket wählen}
853 853
854message install_selected_sets 854message install_selected_sets
855{Installieren der ausgewählten Pakete} 855{Installieren der ausgewählten Pakete}
856 856
857message tarerror 857message tarerror
858{Beim Extrahieren der Datei %s ist ein Fehler aufgetreten. Das bedeutet, dass 858{Beim Extrahieren der Datei %s ist ein Fehler aufgetreten. Das bedeutet, dass
859nicht alle Dateien korrekt extrahiert wurden und Ihr System somit nicht 859nicht alle Dateien korrekt extrahiert wurden und Ihr System somit nicht
860vollständig sein wird. 860vollständig sein wird.
861 861
862Möchten Sie mit dem Extrahieren der Pakete fortfahren?} 862Möchten Sie mit dem Extrahieren der Pakete fortfahren?}
863 863
864message must_be_one_root 864message must_be_one_root
865{Für eine der Partitionen muss als Mountverzeichnis '/' festgelegt werden.} 865{Für eine der Partitionen muss als Mountverzeichnis '/' festgelegt werden.}
866 866
867message partitions_overlap 867message partitions_overlap
868{Die Partitionen %c und %c überlappen sich.} 868{Die Partitionen %c und %c überlappen sich.}
869 869
870message No_Bootcode 870message No_Bootcode
871{Kein Bootcode für die Rootpartition vorhanden} 871{Kein Bootcode für die Rootpartition vorhanden}
872 872
873message cannot_ufs2_root 873message cannot_ufs2_root
874{Leider existiert für diese Maschine kein Bootloader für FFSv2 Dateisysteme, 874{Leider existiert für diese Maschine kein Bootloader für FFSv2 Dateisysteme,
875daher kann das Root-Dateisystem nicht im FFSv2 Format angelegt werden.} 875daher kann das Root-Dateisystem nicht im FFSv2 Format angelegt werden.}
876 876
877message edit_partitions_again 877message edit_partitions_again
878{ 878{
879 879
880Sie können entweder die Partitionstabelle noch einmal editieren oder aber zum 880Sie können entweder die Partitionstabelle noch einmal editieren oder aber zum
881Hauptmenü zurückkehren. 881Hauptmenü zurückkehren.
882 882
883Wollen Sie die Partitionstabelle erneut editieren?} 883Wollen Sie die Partitionstabelle erneut editieren?}
884 884
885 885
886message config_open_error 886message config_open_error
887{Konnte Konfigurationsdatei %s nicht öffnen.\n} 887{Konnte Konfigurationsdatei %s nicht öffnen.\n}
888 888
889message choose_timezone 889message choose_timezone
890{Bitte wählen Sie die für Sie passende Zeitzone aus der folgenden Liste aus. 890{Bitte wählen Sie die für Sie passende Zeitzone aus der folgenden Liste aus.
891Drücken Sie die Eingabetaste, um einen Eintrag anzuwählen. Betätigen Sie danach 891Drücken Sie die Eingabetaste, um einen Eintrag anzuwählen. Betätigen Sie danach
892die Taste 'x' gefolgt von der Eingabetaste, um das Menü zu verlassen. 892die Taste 'x' gefolgt von der Eingabetaste, um das Menü zu verlassen.
893 893
894 Vorgabe: %s  894 Vorgabe: %s
895 Ausgewählt: %s  895 Ausgewählt: %s
896 Lokale Zeit: %s %s 896 Lokale Zeit: %s %s
897} 897}
898 898
899message tz_back 899message tz_back
900{ Zurück zum Zeitzonenmenü.} 900{ Zurück zum Zeitzonenmenü.}
901 901
902message swapactive 902message swapactive
903{Das Laufwerk, das Sie ausgewählt haben, verfügt über eine Swappartition, die 903{Das Laufwerk, das Sie ausgewählt haben, verfügt über eine Swappartition, die
904gegenwärtig auch benutzt wird. 904gegenwärtig auch benutzt wird.
905Da Sie dabei sind, dieses Laufwerk erneut zu partitionieren, wird diese 905Da Sie dabei sind, dieses Laufwerk erneut zu partitionieren, wird diese
906Swappartition jetzt deaktiviert, weshalb eventuell Speicherprobleme auftreten 906Swappartition jetzt deaktiviert, weshalb eventuell Speicherprobleme auftreten
907können. Sollte solch ein Fehler auftreten, starten Sie bitte Ihr System neu und 907können. Sollte solch ein Fehler auftreten, starten Sie bitte Ihr System neu und
908probieren es erneut.} 908probieren es erneut.}
909 909
910message swapdelfailed 910message swapdelfailed
911{Beim Versuch, die Swappartition des Laufwerks, das Sie für die Installation 911{Beim Versuch, die Swappartition des Laufwerks, das Sie für die Installation
912von NetBSD ausgewählt haben, zu deaktivieren, ist ein Fehler 912von NetBSD ausgewählt haben, zu deaktivieren, ist ein Fehler
913aufgetreten. Bitte starten Sie das System neu.} 913aufgetreten. Bitte starten Sie das System neu.}
914 914
915message rootpw 915message rootpw
916{Das Rootpasswort für das neu installierte System wurde noch nicht gesetzt 916{Das Rootpasswort für das neu installierte System wurde noch nicht gesetzt
917und ist somit leer. Möchten Sie jetzt ein Rootpasswort für das System setzen?} 917und ist somit leer. Möchten Sie jetzt ein Rootpasswort für das System setzen?}
918 918
919message rootsh 919message rootsh
920{Sie können jetzt die Standardshell für Benutzer "root" auswählen. 920{Sie können jetzt die Standardshell für Benutzer "root" auswählen.
921Die Vorgabe dafür ist /bin/sh, aber vielleicht bevorzugen Sie eine andere 921Die Vorgabe dafür ist /bin/sh, aber vielleicht bevorzugen Sie eine andere
922Shell.} 922Shell.}
923 923
924message no_root_fs 924message no_root_fs
925{ 925{
926Für kein Dateisystem ist '/' als Mountverzeichnis gewählt. Sie müssen ein 926Für kein Dateisystem ist '/' als Mountverzeichnis gewählt. Sie müssen ein
927Dateisystem als '/' konfigurieren. 927Dateisystem als '/' konfigurieren.
928 928
929Drücken Sie die Eingabetaste um fortzufahren. 929Drücken Sie die Eingabetaste um fortzufahren.
930} 930}
931 931
932message Pick_an_option {Wählen Sie eine an- oder abzuschaltende Option.} 932message Pick_an_option {Wählen Sie eine an- oder abzuschaltende Option.}
933message Scripting {Skripting} 933message Scripting {Skripting}
934message Logging {Logging} 934message Logging {Logging}
935 935
936message Status { Status: } 936message Status { Status: }
937message Command {Kommando: } 937message Command {Kommando: }
938message Running {ausführen} 938message Running {ausführen}
939message Finished {fertig} 939message Finished {fertig}
940message Command_failed {fehlgeschlagen} 940message Command_failed {fehlgeschlagen}
941message Command_ended_on_signal {abgebrochen} 941message Command_ended_on_signal {abgebrochen}
942 942
943message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Installationsprogramm} 943message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Installationsprogramm}
944message Exit_Install_System {Installationsprogramm beenden} 944message Exit_Install_System {Installationsprogramm beenden}
945message Install_NetBSD_to_hard_disk {NetBSD auf die Festplatte installieren} 945message Install_NetBSD_to_hard_disk {NetBSD auf die Festplatte installieren}
946message Upgrade_NetBSD_on_a_hard_disk {Aktualisierung einer bestehenden NetBSD-Installation} 946message Upgrade_NetBSD_on_a_hard_disk {Aktualisierung einer bestehenden NetBSD-Installation}
947message Re_install_sets_or_install_additional_sets {Erneute Installation oder zusätzliche Pakete installieren} 947message Re_install_sets_or_install_additional_sets {Erneute Installation oder zusätzliche Pakete installieren}
948message Reboot_the_computer {Computer neu starten} 948message Reboot_the_computer {Computer neu starten}
949message Utility_menu {Extras} 949message Utility_menu {Extras}
950message Config_menu {Konfigurationsmenü} 950message Config_menu {Konfigurationsmenü}
951message exit_utility_menu {Zurück zum Hauptmenü} 951message exit_utility_menu {Zurück zum Hauptmenü}
952message exit_menu_generic {Zurück} 952message exit_menu_generic {Zurück}
953message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Extras} 953message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Extras}
954message Run_bin_sh {Ausführen von /bin/sh} 954message Run_bin_sh {Ausführen von /bin/sh}
955message Set_timezone {Setzen der Zeitzone} 955message Set_timezone {Setzen der Zeitzone}
956message Configure_network {Netzwerkkonfiguration} 956message Configure_network {Netzwerkkonfiguration}
957message Partition_a_disk {Partitionieren eines Laufwerks} 957message Partition_a_disk {Partitionieren eines Laufwerks}
958message Logging_functions {Protokollierungsfunktionen (Logging)} 958message Logging_functions {Protokollierungsfunktionen (Logging)}
959message Halt_the_system {System herunterfahren} 959message Halt_the_system {System herunterfahren}
960message yes_or_no {Ja oder Nein?} 960message yes_or_no {Ja oder Nein?}
961message Hit_enter_to_continue {Drücken Sie die Eingabetaste um fortzufahren.} 961message Hit_enter_to_continue {Drücken Sie die Eingabetaste um fortzufahren.}
962message Choose_your_installation {Wählen Sie Ihre Installation} 962message Choose_your_installation {Wählen Sie Ihre Installation}
963message Set_Sizes {Größen der NetBSD-Partitionen festlegen} 963message Set_Sizes {Größen der NetBSD-Partitionen festlegen}
964message Use_Existing {Bereits bestehende Partitionsgrößen beibehalten} 964message Use_Existing {Bereits bestehende Partitionsgrößen beibehalten}
965message Megabytes {Megabytes} 965message Megabytes {Megabytes}
966message Cylinders {Zylinder} 966message Cylinders {Zylinder}
967message Sectors {Sektoren} 967message Sectors {Sektoren}
968message Select_medium {Medium auswählen} 968message Select_medium {Medium auswählen}
969message ftp {FTP} 969message ftp {FTP}
970message http {HTTP} 970message http {HTTP}
971message nfs {NFS} 971message nfs {NFS}
972.if HAVE_INSTALL_IMAGE 972.if HAVE_INSTALL_IMAGE
973message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ 973message cdrom {CD-ROM / DVD / install image media} /* XXX translation */
974.else 974.else
975message cdrom {CD-ROM / DVD} 975message cdrom {CD-ROM / DVD}
976.endif 976.endif
977message floppy {Diskette} 977message floppy {Diskette}
978message local_fs {Ungemountetes Dateisysytem} 978message local_fs {Ungemountetes Dateisysytem}
979message local_dir {Lokales Verzeichnis} 979message local_dir {Lokales Verzeichnis}
980message Select_your_distribution {Wählen Sie Ihre Pakete} 980message Select_your_distribution {Wählen Sie Ihre Pakete}
981message Full_installation {Volle Installation} 981message Full_installation {Volle Installation}
982message Full_installation_nox {Grundinstallation ohne X11} 982message Full_installation_nox {Grundinstallation ohne X11}
983message Minimal_installation {Minimale Installation} 983message Minimal_installation {Minimale Installation}
984message Custom_installation {Benutzerdefinierte Installation} 984message Custom_installation {Benutzerdefinierte Installation}
985message hidden {** versteckt **} 985message hidden {** versteckt **}
986message Host {Host} 986message Host {Host}
987message Base_dir {Basispfad} 987message Base_dir {Basispfad}
988message Set_dir_bin {Binärpaket-Verzeichnis} 988message Set_dir_bin {Binärpaket-Verzeichnis}
989message Set_dir_src {Quelltext-Verzeichnis} 989message Set_dir_src {Quelltext-Verzeichnis}
990message Xfer_dir {Zwischenspeicher} 990message Xfer_dir {Zwischenspeicher}
991message User {Benutzer} 991message User {Benutzer}
992message Password {Passwort} 992message Password {Passwort}
993message Proxy {Proxy} 993message Proxy {Proxy}
994message Get_Distribution {Distribution herunterladen} 994message Get_Distribution {Distribution herunterladen}
995message Continue {Weiter} 995message Continue {Weiter}
996message What_do_you_want_to_do {Was möchten Sie tun?} 996message What_do_you_want_to_do {Was möchten Sie tun?}
997message Try_again {Versuchen Sie es erneut} 997message Try_again {Versuchen Sie es erneut}
998message Set_finished {Paket fertig} 998message Set_finished {Paket fertig}
999message Skip_set {Paket überspringen} 999message Skip_set {Paket überspringen}
1000message Skip_group {Paketgruppe überspringen} 1000message Skip_group {Paketgruppe überspringen}
1001message Abandon {Installation abbrechen} 1001message Abandon {Installation abbrechen}
1002message Abort_fetch {Holen abbrechen} 1002message Abort_fetch {Holen abbrechen}
1003message Device {Gerät} 1003message Device {Gerät}
1004message File_system {Dateisystem} 1004message File_system {Dateisystem}
1005message Select_DNS_server { Auswählen eines DNS Servers} 1005message Select_DNS_server { Auswählen eines DNS Servers}
1006message other {andere } 1006message other {andere }
1007message Perform_autoconfiguration {Führen Sie die automatische Konfiguration?} 1007message Perform_autoconfiguration {Führen Sie die automatische Konfiguration?}
1008message Root_shell {Root-Shell} 1008message Root_shell {Root-Shell}
1009message User_shell {User-Shell} 1009message User_shell {User-Shell}
1010message Color_scheme {Farbschema} 1010message Color_scheme {Farbschema}
1011message White_on_black {Weiß auf schwarz} 1011message White_on_black {Weiß auf schwarz}
1012message Black_on_white {Schwarz auf weiß} 1012message Black_on_white {Schwarz auf weiß}
1013message White_on_blue {Weiß auf Blau} 1013message White_on_blue {Weiß auf Blau}
1014message Green_on_black {Grün auf schwarz} 1014message Green_on_black {Grün auf schwarz}
1015 1015
1016.if AOUT2ELF 1016.if AOUT2ELF
1017message aoutfail 1017message aoutfail
1018{Das Verzeichnis, in das die alten a.out-Bibliotheken gesichert 1018{Das Verzeichnis, in das die alten a.out-Bibliotheken gesichert
1019werden sollten, konnte nicht erstellt werden. Bitte starten Sie 1019werden sollten, konnte nicht erstellt werden. Bitte starten Sie
1020die Aktualisierung erneut und stellen Sie sicher, dass alle Dateisysteme 1020die Aktualisierung erneut und stellen Sie sicher, dass alle Dateisysteme
1021gemountet sind.} 1021gemountet sind.}
1022 1022
1023message emulbackup 1023message emulbackup
1024{Eins der Verzeichnisse /emul/aout oder /emul war ein symbolischer 1024{Eins der Verzeichnisse /emul/aout oder /emul war ein symbolischer
1025Link, der auf ein nicht-gemountetes Dateisystem verwies. Der Link wurde 1025Link, der auf ein nicht-gemountetes Dateisystem verwies. Der Link wurde
1026mit einer '.old' Erweiterung versehen. Sobald Ihr aktualisiertes 1026mit einer '.old' Erweiterung versehen. Sobald Ihr aktualisiertes
1027System gestartet ist, müssen Sie das neu erstellte /emul/aout mit dem alten 1027System gestartet ist, müssen Sie das neu erstellte /emul/aout mit dem alten
1028Verzeichnis abgleichen. 1028Verzeichnis abgleichen.
1029} 1029}
1030.endif 1030.endif
1031 1031
1032message oldsendmail 1032message oldsendmail
1033{Sendmail ist nicht länger integrierter Bestandteil von NetBSD. 1033{Sendmail ist nicht länger integrierter Bestandteil von NetBSD.
1034Der Standard MTA ist nun Postfix. Ihr System benutzt derzeit 1034Der Standard MTA ist nun Postfix. Ihr System benutzt derzeit
1035eine Konfiguration in /etc/mailer.conf, die auf das nicht mehr 1035eine Konfiguration in /etc/mailer.conf, die auf das nicht mehr
1036vorhandene Sendmail-Programm verweist.  1036vorhandene Sendmail-Programm verweist.
1037Möchten Sie /etc/mailer.conf automatisch auf eine Version für 1037Möchten Sie /etc/mailer.conf automatisch auf eine Version für
1038Postfix umstellen? Falls Sie "Nein" wählen, müssen Sie anschließend 1038Postfix umstellen? Falls Sie "Nein" wählen, müssen Sie anschließend
1039manuell /etc/mailer.conf korrigieren, um funktionierende Mailauslieferung 1039manuell /etc/mailer.conf korrigieren, um funktionierende Mailauslieferung
1040zu gewährleisten.} 1040zu gewährleisten.}
1041 1041
1042message license 1042message license
1043{Um den Netzwerkadapter %s zu benutzen müssen Sie der Lizenz in 1043{Um den Netzwerkadapter %s zu benutzen müssen Sie der Lizenz in
1044der Datei %s zustimmen. 1044der Datei %s zustimmen.
1045Um den Lizenztext zu lesen, geben Sie ^Z ein, schauen den Inhalt 1045Um den Lizenztext zu lesen, geben Sie ^Z ein, schauen den Inhalt
1046der Datei an und kehren mit dem Befehl "fg" zu sysinst zurück.} 1046der Datei an und kehren mit dem Befehl "fg" zu sysinst zurück.}
1047 1047
1048message binpkg 1048message binpkg
1049{Um Binärpakete zu installieren, muss erst eine Netzwerkverbindung konfiguriert  1049{Um Binärpakete zu installieren, muss erst eine Netzwerkverbindung konfiguriert
1050werden, über die die Pakete heruntergeladen werden. Nach einem ersten Start in 1050werden, über die die Pakete heruntergeladen werden. Nach einem ersten Start in
1051das installierte System können mit dem Kommando 'pkgin' zusätzliche Pakete  1051das installierte System können mit dem Kommando 'pkgin' zusätzliche Pakete
1052installiert oder entfernt werden.} 1052installiert oder entfernt werden.}
1053 1053
1054message pkgpath 1054message pkgpath
1055{Zur Konfiguration von pkgin muss zuerst das Repository konfiguriert werden.  1055{Zur Konfiguration von pkgin muss zuerst das Repository konfiguriert werden.
1056Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort  1056Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort
1057sollen zum Herunterladen verwendet werden? Wenn der User auf "ftp" gesetzt wird,  1057sollen zum Herunterladen verwendet werden? Wenn der User auf "ftp" gesetzt wird,
1058dann wird kein Passwort benötigt.  1058dann wird kein Passwort benötigt.
1059 1059
1060} 1060}
1061message rcconf_backup_failed {rc.conf-Backup fehlgeschlagen. Trotzdem fortfahren?} 1061message rcconf_backup_failed {rc.conf-Backup fehlgeschlagen. Trotzdem fortfahren?}
1062message rcconf_backup_succeeded {rc.conf-Backup nach %s gespeichert.} 1062message rcconf_backup_succeeded {rc.conf-Backup nach %s gespeichert.}
1063message rcconf_restore_failed {rc.conf-Restore ist fehlgeschlagen.} 1063message rcconf_restore_failed {rc.conf-Restore ist fehlgeschlagen.}
1064message rcconf_delete_failed {Löschen des alten %s-Eintrages ist fehlgeschlagen.} 1064message rcconf_delete_failed {Löschen des alten %s-Eintrages ist fehlgeschlagen.}
1065message Pkg_dir {Paketverzeichnis} 1065message Pkg_dir {Paketverzeichnis}
1066message configure_prior {Existierende Installation konfigurieren} 1066message configure_prior {Existierende Installation konfigurieren}
1067message configure {Konfigurieren} 1067message configure {Konfigurieren}
1068message change {Ändern} 1068message change {Ändern}
1069message password_set {Passwort gesetzt} 1069message password_set {Passwort gesetzt}
1070message YES {JA} 1070message YES {JA}
1071message NO {NEIN} 1071message NO {NEIN}
1072message DONE {ERLEDIGT} 1072message DONE {ERLEDIGT}
1073message abandoned {Abgebrochen} 1073message abandoned {Abgebrochen}
1074message empty {***LEER***} 1074message empty {***LEER***}
1075message timezone {Zeitzone} 1075message timezone {Zeitzone}
1076message change_rootpw {root-Passwort setzen} 1076message change_rootpw {root-Passwort setzen}
1077message enable_binpkg {Installation von Binärpaketen vorbereiten} 1077message enable_binpkg {Installation von Binärpaketen vorbereiten}
1078message enable_sshd {sshd aktivieren} 1078message enable_sshd {sshd aktivieren}
1079message enable_ntpd {ntpd aktivieren} 1079message enable_ntpd {ntpd aktivieren}
1080message run_ntpdate {ntpdate beim Starten ausführen} 1080message run_ntpdate {ntpdate beim Starten ausführen}
1081message enable_mdnsd {mdnsd aktivieren} 1081message enable_mdnsd {mdnsd aktivieren}
1082message enable_xdm {xdm aktivieren} 1082message enable_xdm {xdm aktivieren}
1083message enable_cgd {cgd aktivieren} 1083message enable_cgd {cgd aktivieren}
1084message enable_lvm {lvm aktivieren} 1084message enable_lvm {lvm aktivieren}
1085message enable_raid {raidframe aktivieren} 1085message enable_raid {raidframe aktivieren}
1086message add_a_user {Add a user} 1086message add_a_user {Add a user}
1087message configmenu {Zusätzliche Einstellungen konfigurieren.} 1087message configmenu {Zusätzliche Einstellungen konfigurieren.}
1088message doneconfig {Konfiguration abgeschlossen.} 1088message doneconfig {Konfiguration abgeschlossen.}
1089message Install_pkgin {pkgin installieren und Datenbank initialisieren} 1089message Install_pkgin {pkgin installieren und Datenbank initialisieren}
1090message binpkg_installed  1090message binpkg_installed
1091{Das System kann nun Binärpakete mittels pkgin installieren. Um ein Paket zu  1091{Das System kann nun Binärpakete mittels pkgin installieren. Um ein Paket zu
1092installieren, muss man folenden Befehl von einer root-Shell ausführen: 1092installieren, muss man folenden Befehl von einer root-Shell ausführen:
1093 1093
1094pkgin install <packagename> 1094pkgin install <packagename>
1095 1095
1096Weitere Informationen finden sich in der pkgin(1)-Manpage.} 1096Weitere Informationen finden sich in der pkgin(1)-Manpage.}
1097message Install_pkgsrc {pkgsrc herunterladen und entpacken} 1097message Install_pkgsrc {pkgsrc herunterladen und entpacken}
1098message pkgsrc 1098message pkgsrc
1099{Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort  1099{Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort
1100sollen zum Herunterladen von pkgsrc verwendet werden? Wenn der User auf "ftp"  1100sollen zum Herunterladen von pkgsrc verwendet werden? Wenn der User auf "ftp"
1101gesetzt wird, dann wird kein Passwort benötigt.  1101gesetzt wird, dann wird kein Passwort benötigt.
1102 1102
1103} 1103}
1104message Pkgsrc_dir {pkgsrc-Verzeichnis} 1104message Pkgsrc_dir {pkgsrc-Verzeichnis}
1105message get_pkgsrc {pkgsrc zur Installation von Quellpaketen herunterladen und  1105message get_pkgsrc {pkgsrc zur Installation von Quellpaketen herunterladen und
1106installieren} 1106installieren}
1107message retry_pkgsrc_network {Netzwerkkonfiguration fehlgeschlagen. Noch einmal  1107message retry_pkgsrc_network {Netzwerkkonfiguration fehlgeschlagen. Noch einmal
1108versuchen?} 1108versuchen?}
1109message quit_pkgsrc {Ohne Installation von pkgsrc beenden.} 1109message quit_pkgsrc {Ohne Installation von pkgsrc beenden.}
1110message quit_pkgs_install {Installation von binär-Paketen beenden.} 1110message quit_pkgs_install {Installation von binär-Paketen beenden.}
1111message pkgin_failed  1111message pkgin_failed
1112{Die Installation von pkgin ist fehlgeschlagen, evtl. weil keine Binärpakete  1112{Die Installation von pkgin ist fehlgeschlagen, evtl. weil keine Binärpakete
1113vorhanden sind. Bitte den Pfad der Pakete überprüfen und noch einmal versuchen.} 1113vorhanden sind. Bitte den Pfad der Pakete überprüfen und noch einmal versuchen.}
1114message failed {Fehlgeschlagen} 1114message failed {Fehlgeschlagen}
1115message notsupported {Operation wird nicht unterstützt!} 1115message notsupported {Operation wird nicht unterstützt!}
1116message askfsmountadv {Mountpoint oder 'raid' oder 'cgd' oder 'lvm'?} 1116message askfsmountadv {Mountpoint oder 'raid' oder 'cgd' oder 'lvm'?}
1117message partman {Erweiterte Partitionierung} 1117message partman {Erweiterte Partitionierung}
1118message editbsdpart {Bearbeiten BSD-Partitionen} 1118message editbsdpart {Bearbeiten BSD-Partitionen}
1119message editmbr {Bearbeiten und speichern MBR} 1119message editmbr {Bearbeiten und speichern MBR}
1120message switchgpt {Wechseln Sie zu GPT} 1120message switchgpt {Wechseln Sie zu GPT}
1121message switchmbr {Wechseln Sie zu MBR} 1121message switchmbr {Wechseln Sie zu MBR}
1122message renamedisk {Stellen Sie Festplatten-Namen} 1122message renamedisk {Stellen Sie Festplatten-Namen}
1123message fmtasraid {Format als RAID} 1123message fmtasraid {Format als RAID}
1124message fmtaslvm {Format als LVM-PV} 1124message fmtaslvm {Format als LVM-PV}
1125message encrypt {Verschlüsseln} 1125message encrypt {Verschlüsseln}
1126message setbootable {Boot-Flag} 1126message setbootable {Boot-Flag}
1127message erase {Safe Erase} 1127message erase {Safe Erase}
1128message undo {Rückgängigmachen von Änderungen} 1128message undo {Rückgängigmachen von Änderungen}
1129message unconfig {Dekonfigurieren} 1129message unconfig {Dekonfigurieren}
1130message edit {Bearbeiten} 1130message edit {Bearbeiten}
1131message doumount {Force-umount} 1131message doumount {Force-umount}
1132message fillzeros {Füllen von Nullen} 1132message fillzeros {Füllen von Nullen}
1133message fillrandom {Füllen von zufälligen Daten} 1133message fillrandom {Füllen von zufälligen Daten}
1134message fillcrypto {Füllen von Crypto-Daten} 1134message fillcrypto {Füllen von Crypto-Daten}
1135message raid0 {0 - Keine Parität, nur einfache Striping.} 1135message raid0 {0 - Keine Parität, nur einfache Striping.}
1136message raid1 {1 - Mirroring. Die Parität ist der Spiegel.} 1136message raid1 {1 - Mirroring. Die Parität ist der Spiegel.}
1137message raid4 {4 - Striping mit Parität auf die letzte Komponente gespeichert.} 1137message raid4 {4 - Striping mit Parität auf die letzte Komponente gespeichert.}
1138message raid5 {5 - Striping mit Parität an den alle Komponenten.} 1138message raid5 {5 - Striping mit Parität an den alle Komponenten.}
1139 1139
1140message fremove {ENTFERNEN} 1140message fremove {ENTFERNEN}
1141message remove {Entfernen} 1141message remove {Entfernen}
1142message add {Hinzufügen} 1142message add {Hinzufügen}
1143message auto {auto} 1143message auto {auto}
1144 1144
1145message removepartswarn {Diese entfernen Sie alle Partitionen auf der Festplatte. Wollen Sie fortsetzen?} 1145message removepartswarn {Diese entfernen Sie alle Partitionen auf der Festplatte. Wollen Sie fortsetzen?}
1146message saveprompt {Speichern Sie die Änderungen vor dem Abschluss?} 1146message saveprompt {Speichern Sie die Änderungen vor dem Abschluss?}
1147message cantsave {Änderungen können nicht gespeichert werden.} 1147message cantsave {Änderungen können nicht gespeichert werden.}
1148message noroot {Kein Root-Partition definiert ist, kann nicht fortgesetzt werden \n} 1148message noroot {Kein Root-Partition definiert ist, kann nicht fortgesetzt werden \n}
1149message wannaunblock {Das Gerät ist blockiert. Wollen Sie zwingen sie zu entsperren und weiter?} 1149message wannaunblock {Das Gerät ist blockiert. Wollen Sie zwingen sie zu entsperren und weiter?}
1150message wannatry {Wollen Sie probieren?} 1150message wannatry {Wollen Sie probieren?}
1151message create_cgd {Erstellen kryptographische Volumen (CGD)} 1151message create_cgd {Erstellen kryptographische Volumen (CGD)}
1152message create_cnd {Erstellen Sie virtuelle Disk-Image (VND)} 1152message create_cnd {Erstellen Sie virtuelle Disk-Image (VND)}
1153message create_vg {Erstellen Volume-Gruppe (LVM VG)} 1153message create_vg {Erstellen Volume-Gruppe (LVM VG)}
1154message create_lv { Erstellen logischer Volumen} 1154message create_lv { Erstellen logischer Volumen}
1155message create_raid {Erstellen Software-RAID} 1155message create_raid {Erstellen Software-RAID}
1156message updpmlist {Aktualisieren Sie Geräte-Liste} 1156message updpmlist {Aktualisieren Sie Geräte-Liste}
1157message savepm {Speichern Sie die Änderungen} 1157message savepm {Speichern Sie die Änderungen}
1158message pmblocked {GESPERRT} 1158message pmblocked {GESPERRT}
1159message pmunchanged {NICHTS} 1159message pmunchanged {NICHTS}
1160message pmsetboot {BOOTEN} 1160message pmsetboot {BOOTEN}
1161message pmused {BENUTZT} 1161message pmused {BENUTZT}
1162message pmmounted {(montiert)} 1162message pmmounted {(montiert)}
1163message pmunused {(unbenutzt)} 1163message pmunused {(unbenutzt)}
1164message pmgptdisk {Festplatte mit GPT} 1164message pmgptdisk {Festplatte mit GPT}
1165 1165
1166message finishpm {Partitionierung beenden} 1166message finishpm {Partitionierung beenden}
1167message limitcount {Grenze für die Anzahl der Geräte erreicht wurde!} 1167message limitcount {Grenze für die Anzahl der Geräte erreicht wurde!}
1168message invaliddev {Ungültige Gerät!} 1168message invaliddev {Ungültige Gerät!}
1169message avdisks {Verfügbare Festplatten:} 1169message avdisks {Verfügbare Festplatten:}
1170message nofreedev {Kann nicht zugewiesen werden Geräteknoten!} 1170message nofreedev {Kann nicht zugewiesen werden Geräteknoten!}
1171message partman_header 1171message partman_header
1172{Partition Manager. Alle Festplatten, Partitionen usw. und dort angezeigt. 1172{Partition Manager. Alle Festplatten, Partitionen usw. und dort angezeigt.
1173Auf den ersten MBR-Partitionen machen, dann machen BSD-Label. 1173Auf den ersten MBR-Partitionen machen, dann machen BSD-Label.
1174Wenn Sie RAID verwenden, LVM oder CGD, gehen Sie folgendermaßen vor: 1174Wenn Sie RAID verwenden, LVM oder CGD, gehen Sie folgendermaßen vor:
11751) Erstellen BSD-Partitionen mit Typ benötigt; 2) Erstellen Sie RAID / 11751) Erstellen BSD-Partitionen mit Typ benötigt; 2) Erstellen Sie RAID /
1176LVM VG / CGD mit diesen Partitionen; 3) Speichern Sie es; 1176LVM VG / CGD mit diesen Partitionen; 3) Speichern Sie es;
11774) Erstellen Sie Partitionen für RAID / CGD oder Logical Volumes für LVM.} 11774) Erstellen Sie Partitionen für RAID / CGD oder Logical Volumes für LVM.}
1178 1178
1179message raid_menufmt { raid%d (ebene %1d) on %-34s %11uM} 1179message raid_menufmt { raid%d (ebene %1d) on %-34s %11uM}
1180message raid_err_menufmt { LEER RAID!} 1180message raid_err_menufmt { LEER RAID!}
1181message raid_disks_fmt {Festplatten: %27s} 1181message raid_disks_fmt {Festplatten: %27s}
1182message raid_spares_fmt {Ersatzbedarf: %26s} 1182message raid_spares_fmt {Ersatzbedarf: %26s}
1183message raid_level_fmt {RAID ebene: %22d} 1183message raid_level_fmt {RAID ebene: %22d}
1184message raid_numrow_fmt {numRow: %22d} 1184message raid_numrow_fmt {numRow: %22d}
1185message raid_numcol_fmt {numCol: %22d} 1185message raid_numcol_fmt {numCol: %22d}
1186message raid_numspare_fmt {numSpare: %22d} 1186message raid_numspare_fmt {numSpare: %22d}
1187message raid_sectpersu_fmt {sectPerSU: %22d} 1187message raid_sectpersu_fmt {sectPerSU: %22d}
1188message raid_superpar_fmt {SUsPerParityUnit: %22d} 1188message raid_superpar_fmt {SUsPerParityUnit: %22d}
1189message raid_superrec_fmt {SUsPerReconUnit: %22d} 1189message raid_superrec_fmt {SUsPerReconUnit: %22d}
1190message raid_nomultidim {Mehrdimensionale Arrays werden nicht unterstützt!} 1190message raid_nomultidim {Mehrdimensionale Arrays werden nicht unterstützt!}
1191message raid_numrow_ask {numRow?} 1191message raid_numrow_ask {numRow?}
1192message raid_numcol_ask {numCol?} 1192message raid_numcol_ask {numCol?}
1193message raid_numspare_ask {numSpare?} 1193message raid_numspare_ask {numSpare?}
1194message raid_sectpersu_ask {sectPerSU?} 1194message raid_sectpersu_ask {sectPerSU?}
1195message raid_superpar_ask {SUsPerParityUnit?} 1195message raid_superpar_ask {SUsPerParityUnit?}
1196message raid_superrec_ask {SUsPerReconUnit?} 1196message raid_superrec_ask {SUsPerReconUnit?}
1197message raid_disks {Festplatten im RAID:} 1197message raid_disks {Festplatten im RAID:}
1198message vnd_err_menufmt { PATH nicht definiert!} 1198message vnd_err_menufmt { PATH nicht definiert!}
1199message vnd_assgn_menufmt { vnd%1d auf %-50s ASSIGN} 1199message vnd_assgn_menufmt { vnd%1d auf %-50s ASSIGN}
1200message vnd_menufmt { vnd%1d auf %-44s %11uM} 1200message vnd_menufmt { vnd%1d auf %-44s %11uM}
1201message vnd_path_fmt {Dateipfad: %29s} 1201message vnd_path_fmt {Dateipfad: %29s}
1202message vnd_assgn_fmt {Neue Image-Datei erstellen: %12s} 1202message vnd_assgn_fmt {Neue Image-Datei erstellen: %12s}
1203message vnd_size_fmt {Größe: %22sM} 1203message vnd_size_fmt {Größe: %22sM}
1204message vnd_ro_fmt {Nur lesen: %22s} 1204message vnd_ro_fmt {Nur lesen: %22s}
1205message vnd_geom_fmt {Manuelle Geometrie: %8s} 1205message vnd_geom_fmt {Manuelle Geometrie: %8s}
1206message vnd_bps_fmt {Byte pro Sektor: %18s} 1206message vnd_bps_fmt {Byte pro Sektor: %18s}
1207message vnd_spt_fmt {Sektoren pro Spur: %18s} 1207message vnd_spt_fmt {Sektoren pro Spur: %18s}
1208message vnd_tpc_fmt {Spuren pro Zylinder: %18s} 1208message vnd_tpc_fmt {Spuren pro Zylinder: %18s}
1209message vnd_cyl_fmt {Zylinder: %22s} 1209message vnd_cyl_fmt {Zylinder: %22s}
1210message vnd_path_ask {Dateipfad?} 1210message vnd_path_ask {Dateipfad?}
1211message vnd_size_ask {Größe (MB)?} 1211message vnd_size_ask {Größe (MB)?}
1212message vnd_bps_ask {Byte pro Sektor?} 1212message vnd_bps_ask {Byte pro Sektor?}
1213message vnd_spt_ask {Sektoren pro Spur?} 1213message vnd_spt_ask {Sektoren pro Spur?}
1214message vnd_tpc_ask {Spuren pro Zylinder?} 1214message vnd_tpc_ask {Spuren pro Zylinder?}
1215message vnd_cyl_ask {Zylinder?} 1215message vnd_cyl_ask {Zylinder?}
1216message cgd_err_menufmt { DISK NICHT DEFINIERT!} 1216message cgd_err_menufmt { DISK NICHT DEFINIERT!}
1217message cgd_menufmt { cgd%1d %-48s %11uM} 1217message cgd_menufmt { cgd%1d %-48s %11uM}
1218message cgd_dev_fmt {Grundgerät: %24s} 1218message cgd_dev_fmt {Grundgerät: %24s}
1219message cgd_enc_fmt {Mausklick und: %24s} 1219message cgd_enc_fmt {Mausklick und: %24s}
1220message cgd_key_fmt {Schlüsselgröße: %24d} 1220message cgd_key_fmt {Schlüsselgröße: %24d}
1221message cgd_iv_fmt {IV-Algorithmus: %24s} 1221message cgd_iv_fmt {IV-Algorithmus: %24s}
1222message cgd_keygen_fmt {Schlüsselgenerierung: %18s} 1222message cgd_keygen_fmt {Schlüsselgenerierung: %18s}
1223message cgd_verif_fmt {Verification Methode: %18s} 1223message cgd_verif_fmt {Verification Methode: %18s}
1224message lvm_disks {Festplatten im VG:} 1224message lvm_disks {Festplatten im VG:}
1225message lvm_menufmt { %-44s %20sM} 1225message lvm_menufmt { %-44s %20sM}
1226message lvm_err_menufmt { VG LEER!} 1226message lvm_err_menufmt { VG LEER!}
1227message lvm_disks_fmt {PV's: %34s} 1227message lvm_disks_fmt {PV's: %34s}
1228message lvm_name_fmt {Name: %34s} 1228message lvm_name_fmt {Name: %34s}
1229message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} 1229message lvm_maxlv_fmt {MaxLogicalVolumes: %20s}
1230message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} 1230message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s}
1231message lvm_extsiz_fmt {PhysicalExtentSize: %20s} 1231message lvm_extsiz_fmt {PhysicalExtentSize: %20s}
1232message lvm_name_ask {Name?} 1232message lvm_name_ask {Name?}
1233message lvm_maxlv_ask {MaxLogicalVolumes?} 1233message lvm_maxlv_ask {MaxLogicalVolumes?}
1234message lvm_maxpv_ask {MaxPhysicalVolumes?} 1234message lvm_maxpv_ask {MaxPhysicalVolumes?}
1235message lvm_extsiz_ask {PhysicalExtentSize (MB)?} 1235message lvm_extsiz_ask {PhysicalExtentSize (MB)?}
1236message lvmlv_menufmt { Logische Volumen%-35s% 11uM} 1236message lvmlv_menufmt { Logische Volumen%-35s% 11uM}
1237message lvmlv_name_fmt {Name: %34s} 1237message lvmlv_name_fmt {Name: %34s}
1238message lvmlv_size_fmt {Größe: %32dM} 1238message lvmlv_size_fmt {Größe: %32dM}
1239message lvmlv_ro_fmt {Nur lesen: %27s} 1239message lvmlv_ro_fmt {Nur lesen: %27s}
1240message lvmlv_cont_fmt {Zusammenhängend: %23s} 1240message lvmlv_cont_fmt {Zusammenhängend: %23s}
1241message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} 1241message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s}
1242message lvmlv_minor_fmt {Minor-Nummer: %26s} 1242message lvmlv_minor_fmt {Minor-Nummer: %26s}
1243message lvmlv_mirrors_fmt {Mirrors: %27d} 1243message lvmlv_mirrors_fmt {Mirrors: %27d}
1244message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} 1244message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s}
1245message lvmlv_pers_fmt {Persistent Minor-Nummer: %14s} 1245message lvmlv_pers_fmt {Persistent Minor-Nummer: %14s}
1246message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} 1246message lvmlv_readahsect_fmt {ReadAheadSectors: %18s}
1247message lvmlv_stripes_fmt {Stripes: %27s} 1247message lvmlv_stripes_fmt {Stripes: %27s}
1248message lvmlv_stripesiz_fmt {StripeSize: %27s} 1248message lvmlv_stripesiz_fmt {StripeSize: %27s}
1249message lvmlv_zero_fmt {Nullsetzen der ersten KB:% 13s} 1249message lvmlv_zero_fmt {Nullsetzen der ersten KB:% 13s}
1250message lvmlv_name_ask {Name?} 1250message lvmlv_name_ask {Name?}
1251message lvmlv_size_ask {Größe (MB)?} 1251message lvmlv_size_ask {Größe (MB)?}
1252message lvmlv_extnum_ask {LogicalExtentsNumber?} 1252message lvmlv_extnum_ask {LogicalExtentsNumber?}
1253message lvmlv_minor_ask {Minor-Nummer?} 1253message lvmlv_minor_ask {Minor-Nummer?}
1254message lvmlv_mirrors_ask {Spiegel?} 1254message lvmlv_mirrors_ask {Spiegel?}
1255message lvmlv_regsiz_ask {MirrorLogRegionSize?} 1255message lvmlv_regsiz_ask {MirrorLogRegionSize?}
1256message lvmlv_readahsect_ask {ReadAheadSectors?} 1256message lvmlv_readahsect_ask {ReadAheadSectors?}
1257message lvmlv_stripes_ask {Stripes?} 1257message lvmlv_stripes_ask {Stripes?}
1258message addusername {8 character username to add} 1258message addusername {8 character username to add}
1259message addusertowheel {Do you wish to add this user to group wheel?} 1259message addusertowheel {Do you wish to add this user to group wheel?}
1260 1260
1261message Delete_partition 1261message Delete_partition
1262{Partition löschen} 1262{Partition löschen}
1263 1263
 1264
 1265message No_filesystem_newfs
 1266{Die ausgewählte Zielpartition scheint kein gültiges Dateisystem zu enthalten.
 1267Möchten Sie ein neues erstellen (die Partition formatieren)?}
 1268
 1269message Auto_add_swap_part
 1270{Eine Auslagerungspartitons (mit Namen %s)
 1271scheint bereits auf der Festplatte %s zu existieren.
 1272Möchten Sie diese benutzen?}
 1273
 1274

cvs diff -r1.6 -r1.7 src/usr.sbin/sysinst/msg.mi.es (switch to unified diff)

--- src/usr.sbin/sysinst/msg.mi.es 2015/05/17 10:13:24 1.6
+++ src/usr.sbin/sysinst/msg.mi.es 2018/06/03 13:16:30 1.7
@@ -1,1244 +1,1254 @@ @@ -1,1244 +1,1254 @@
1/* $NetBSD: msg.mi.es,v 1.6 2015/05/17 10:13:24 martin Exp $ */ 1/* $NetBSD: msg.mi.es,v 1.7 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* MI Message catalog -- spanish, machine independent */ 35/* MI Message catalog -- spanish, machine independent */
36 36
37message usage 37message usage
38{uso: sysinst [-D] [-f fichero_definición] [-r versión] [-C bg:fg] 38{uso: sysinst [-D] [-f fichero_definición] [-r versión] [-C bg:fg]
39} 39}
40 40
41/* 41/*
42 * We can not use non ascii characters in this message - it is displayed 42 * We can not use non ascii characters in this message - it is displayed
43 * before the locale is set up! 43 * before the locale is set up!
44 */ 44 */
45message sysinst_message_language 45message sysinst_message_language
46{Mensajes de instalacion en castellano} 46{Mensajes de instalacion en castellano}
47 47
48message sysinst_message_locale 48message sysinst_message_locale
49{es_ES.ISO8859-15} 49{es_ES.ISO8859-15}
50 50
51message Yes {Sí} 51message Yes {Sí}
52message No {No} 52message No {No}
53message All {Todo} 53message All {Todo}
54message Some {Algunos} 54message Some {Algunos}
55message None {Ninguno} 55message None {Ninguno}
56message none {ninguno} 56message none {ninguno}
57message OK {OK} 57message OK {OK}
58message ok {ok} 58message ok {ok}
59message On {Activado} 59message On {Activado}
60message Off {Desactivado} 60message Off {Desactivado}
61message unchanged {sin cambios} 61message unchanged {sin cambios}
62message Delete {¿Borrar?} 62message Delete {¿Borrar?}
63 63
64message install 64message install
65{instalar} 65{instalar}
66 66
67message reinstall 67message reinstall
68{reinstalar conjuntos para} 68{reinstalar conjuntos para}
69 69
70message upgrade 70message upgrade
71{actualizar} 71{actualizar}
72 72
73message hello 73message hello
74{Bienvenido a sysinst, la herramienta de instalación de NetBSD-@@VERSION@@. 74{Bienvenido a sysinst, la herramienta de instalación de NetBSD-@@VERSION@@.
75Esta herramienta guiada por menús está diseñada para ayudarle a instalar 75Esta herramienta guiada por menús está diseñada para ayudarle a instalar
76NetBSD en un disco duro, o actualizar un sistema NetBSD existente con 76NetBSD en un disco duro, o actualizar un sistema NetBSD existente con
77un trabajo mínimo.  77un trabajo mínimo.
78En los siguientes menús teclee la letra de referencia (a, b, c, ...) para 78En los siguientes menús teclee la letra de referencia (a, b, c, ...) para
79seleccionar una opción, o teclee CTRL+N/CTRL+P para seleccionar la opción 79seleccionar una opción, o teclee CTRL+N/CTRL+P para seleccionar la opción
80siguiente/anterior.  80siguiente/anterior.
81Las teclas de cursor y AvPág/RePág puede que también funcionen.  81Las teclas de cursor y AvPág/RePág puede que también funcionen.
82Active la selección actual desde el menú pulsando la tecla Intro. 82Active la selección actual desde el menú pulsando la tecla Intro.
83} 83}
84 84
85message thanks 85message thanks
86{¡Gracias por usar NetBSD! 86{¡Gracias por usar NetBSD!
87} 87}
88 88
89message installusure 89message installusure
90{Ha escogido instalar NetBSD en su disco duro. Esto cambiará información 90{Ha escogido instalar NetBSD en su disco duro. Esto cambiará información
91de su disco duro. ¡Debería haber hecho una copia de seguridad completa 91de su disco duro. ¡Debería haber hecho una copia de seguridad completa
92antes de este procedimiento! Este procedimiento realizará las siguientes 92antes de este procedimiento! Este procedimiento realizará las siguientes
93operaciones: 93operaciones:
94 a) Particionar su disco 94 a) Particionar su disco
95 b) Crear nuevos sistemas de ficheros BSD 95 b) Crear nuevos sistemas de ficheros BSD
96 c) Cargar e instalar los conjuntos de distribución 96 c) Cargar e instalar los conjuntos de distribución
97 d) Algunas configuraciones iniciales del sistema 97 d) Algunas configuraciones iniciales del sistema
98 98
99(Después de introducir la información de las particiones pero antes de que 99(Después de introducir la información de las particiones pero antes de que
100su disco sea cambiado, tendrá la oportunidad de salir del programa.) 100su disco sea cambiado, tendrá la oportunidad de salir del programa.)
101 101
102¿Desea continuar? 102¿Desea continuar?
103} 103}
104 104
105message upgradeusure 105message upgradeusure
106{Se va a actualizar NetBSD en su disco duro. Sin embargo, esto 106{Se va a actualizar NetBSD en su disco duro. Sin embargo, esto
107cambiará información de su disco duro. ¡Debería hacer una copia de seguridad 107cambiará información de su disco duro. ¡Debería hacer una copia de seguridad
108completa antes de este procedimiento! ¿Realmente desea actualizar NetBSD? 108completa antes de este procedimiento! ¿Realmente desea actualizar NetBSD?
109(Éste es su último aviso antes de que el programa empiece a modificar 109(Éste es su último aviso antes de que el programa empiece a modificar
110sus discos.) 110sus discos.)
111} 111}
112 112
113message reinstallusure 113message reinstallusure
114{Se va a desempaquetar los conjuntos de distribución de NetBSD 114{Se va a desempaquetar los conjuntos de distribución de NetBSD
115a un disco duro marcado como arrancable. Este procedimiento solamente 115a un disco duro marcado como arrancable. Este procedimiento solamente
116descarga y desempaqueta los conjuntos en un disco arrancable preparticionado. 116descarga y desempaqueta los conjuntos en un disco arrancable preparticionado.
117No pone nombre a los discos, ni actualiza los bloques de arranque, ni guarda 117No pone nombre a los discos, ni actualiza los bloques de arranque, ni guarda
118ninguna información de configuración. (Salga y escoja `instalar' o 118ninguna información de configuración. (Salga y escoja `instalar' o
119`actualizar' si quiere esas opciones.) ¡Ya debería haber hecho un 119`actualizar' si quiere esas opciones.) ¡Ya debería haber hecho un
120`instalar' o `actualizar' antes de iniciar este procedimiento! 120`instalar' o `actualizar' antes de iniciar este procedimiento!
121 121
122¿Realmente quiere reinstalar los conjuntos de la distribución NetBSD? 122¿Realmente quiere reinstalar los conjuntos de la distribución NetBSD?
123(Éste es su último aviso antes de que el programa empiece a modificar 123(Éste es su último aviso antes de que el programa empiece a modificar
124sus discos.) 124sus discos.)
125} 125}
126 126
127message mount_failed 127message mount_failed
128{No se ha podido montar %s. ¿Desea continuar? 128{No se ha podido montar %s. ¿Desea continuar?
129} 129}
130 130
131message nodisk 131message nodisk
132{No se ha podido encontrar ningún disco duro para ser usado por NetBSD. 132{No se ha podido encontrar ningún disco duro para ser usado por NetBSD.
133Se le volverá a llevar al menú original. 133Se le volverá a llevar al menú original.
134} 134}
135 135
136message onedisk 136message onedisk
137{Solamente se ha encontrado un disco, %s.  137{Solamente se ha encontrado un disco, %s.
138Por tanto se entiende que quiere %s NetBSD en él. 138Por tanto se entiende que quiere %s NetBSD en él.
139} 139}
140 140
141message ask_disk 141message ask_disk
142{¿En cuál disco quiere %s NetBSD? } 142{¿En cuál disco quiere %s NetBSD? }
143 143
144message Available_disks 144message Available_disks
145{Discos disponibles} 145{Discos disponibles}
146 146
147message heads 147message heads
148{cabezas} 148{cabezas}
149 149
150message sectors 150message sectors
151{sectores} 151{sectores}
152 152
153message fs_isize 153message fs_isize
154{tamaño promedio del fichero (bytes)} 154{tamaño promedio del fichero (bytes)}
155 155
156message mountpoint 156message mountpoint
157{punto de montaje (o 'ninguno')} 157{punto de montaje (o 'ninguno')}
158 158
159message cylname 159message cylname
160{cil} 160{cil}
161 161
162message secname 162message secname
163{sec} 163{sec}
164 164
165message megname 165message megname
166{MB} 166{MB}
167 167
168message layout 168message layout
169{NetBSD usa una etiqueta de BSD para dividir la porción NetBSD del disco 169{NetBSD usa una etiqueta de BSD para dividir la porción NetBSD del disco
170en varias particiones BSD. Ahora debería configurar su etiqueta BSD. 170en varias particiones BSD. Ahora debería configurar su etiqueta BSD.
171 171
172Puede usar un simple editor para establecer los tamaños de las particiones 172Puede usar un simple editor para establecer los tamaños de las particiones
173NetBSD, o mantener los tamaños de partición y contenidos actuales. 173NetBSD, o mantener los tamaños de partición y contenidos actuales.
174 174
175Después se la dará la oportunidad de cambiar cualquier campo de la 175Después se la dará la oportunidad de cambiar cualquier campo de la
176etiqueta. 176etiqueta.
177 177
178La parte NetBSD de su disco es de %d megabytes. 178La parte NetBSD de su disco es de %d megabytes.
179Una instalación completa requiere al menos %d megabytes sin X y 179Una instalación completa requiere al menos %d megabytes sin X y
180al menos %d megabytes si se incluyen los conjuntos de X. 180al menos %d megabytes si se incluyen los conjuntos de X.
181} 181}
182 182
183message Choose_your_size_specifier 183message Choose_your_size_specifier
184{Seleccionar megabytes producirá tamaños de partición cercanos a su 184{Seleccionar megabytes producirá tamaños de partición cercanos a su
185elección, pero alineados a los limites de los cilindros. 185elección, pero alineados a los limites de los cilindros.
186Seleccionar sectores le permitirá especificar los tamaños de manera 186Seleccionar sectores le permitirá especificar los tamaños de manera
187más precisa. En discos ZBR modernos, el tamaño real del cilindro varía 187más precisa. En discos ZBR modernos, el tamaño real del cilindro varía
188a lo largo del disco y no hay mucha ventaja real en el alineamiento de 188a lo largo del disco y no hay mucha ventaja real en el alineamiento de
189cilindros. En discos más viejos, lo más eficiente es seleccionar 189cilindros. En discos más viejos, lo más eficiente es seleccionar
190tamaños de partición que sean multiples exactos del tamaño real del  190tamaños de partición que sean multiples exactos del tamaño real del
191cilindro. 191cilindro.
192 192
193Escoja su especificador de tamaño} 193Escoja su especificador de tamaño}
194 194
195message ptnsizes 195message ptnsizes
196{Ahora puede cambiar los tamaños de las particiones del sistema. Por 196{Ahora puede cambiar los tamaños de las particiones del sistema. Por
197omisión se asigna todo el espacio al sistema de archivos raíz, sin embargo 197omisión se asigna todo el espacio al sistema de archivos raíz, sin embargo
198usted podría querer separar /usr (ficheros de sistema adicionales), /var 198usted podría querer separar /usr (ficheros de sistema adicionales), /var
199(ficheros de registro, etc) o /home (directorios de usuario). 199(ficheros de registro, etc) o /home (directorios de usuario).
200 200
201El espacio libre sobrante será añadido a la partición marcada con «+». 201El espacio libre sobrante será añadido a la partición marcada con «+».
202} 202}
203 203
204message ptnheaders 204message ptnheaders
205{ 205{
206 MB Cilindros Sectores Sistema de archivos 206 MB Cilindros Sectores Sistema de archivos
207} 207}
208 208
209message askfsmount 209message askfsmount
210{¿Punto de montaje?} 210{¿Punto de montaje?}
211 211
212message askfssize 212message askfssize
213{¿Tamaño de %s en %s?} 213{¿Tamaño de %s en %s?}
214 214
215message askunits 215message askunits
216{Cambiar las unidades de entrada (sectores/cilindros/MB)} 216{Cambiar las unidades de entrada (sectores/cilindros/MB)}
217 217
218message NetBSD_partition_cant_change 218message NetBSD_partition_cant_change
219{Partición NetBSD} 219{Partición NetBSD}
220 220
221message Whole_disk_cant_change 221message Whole_disk_cant_change
222{Todo el disco} 222{Todo el disco}
223 223
224message Boot_partition_cant_change 224message Boot_partition_cant_change
225{Partición de arranque} 225{Partición de arranque}
226 226
227message add_another_ptn 227message add_another_ptn
228{Añadir una partición definida por el usuario} 228{Añadir una partición definida por el usuario}
229 229
230message fssizesok 230message fssizesok
231{Aceptar los tamaños de las particiones. Espacio libre %d %s, %d particiones libres.} 231{Aceptar los tamaños de las particiones. Espacio libre %d %s, %d particiones libres.}
232 232
233message fssizesbad 233message fssizesbad
234{Reducir los tamaños de las particiones en %d %s (%u sectores).} 234{Reducir los tamaños de las particiones en %d %s (%u sectores).}
235 235
236message startoutsidedisk 236message startoutsidedisk
237{El valor del comienzo que ha especificado está mas allá del final del disco. 237{El valor del comienzo que ha especificado está mas allá del final del disco.
238} 238}
239 239
240message endoutsidedisk 240message endoutsidedisk
241{Con este valor, el final de la partición está mas allá del final del disco. 241{Con este valor, el final de la partición está mas allá del final del disco.
242El tamaño de la partición se ha truncado a %d %s. 242El tamaño de la partición se ha truncado a %d %s.
243 243
244Presione Intro para continuar 244Presione Intro para continuar
245} 245}
246 246
247message toobigdisklabel 247message toobigdisklabel
248{ 248{
249This disk is too large for a disklabel partition table to be used 249This disk is too large for a disklabel partition table to be used
250and hence cannot be used as a bootable disk or to hold the root 250and hence cannot be used as a bootable disk or to hold the root
251partition. 251partition.
252} 252}
253 253
254message fspart 254message fspart
255{Sus particiones con etiquetas BSD están ahora así. 255{Sus particiones con etiquetas BSD están ahora así.
256Ésta es su última oportunidad para cambiarlas. 256Ésta es su última oportunidad para cambiarlas.
257 257
258} 258}
259 259
260message fspart_header 260message fspart_header
261{ Inicio %3s Fin %3s Tamaño %3s Tipo FS Newfs Mont. Punto mont.  261{ Inicio %3s Fin %3s Tamaño %3s Tipo FS Newfs Mont. Punto mont.
262 ---------- --------- ---------- ---------- ----- ----- ----------- 262 ---------- --------- ---------- ---------- ----- ----- -----------
263} 263}
264 264
265message fspart_row 265message fspart_row
266{%10lu %9lu %10lu %-10s %-5s %-5s %s} 266{%10lu %9lu %10lu %-10s %-5s %-5s %s}
267 267
268message show_all_unused_partitions 268message show_all_unused_partitions
269{Mostrar todas las particiones no usadas} 269{Mostrar todas las particiones no usadas}
270 270
271message partition_sizes_ok 271message partition_sizes_ok
272{Tamaños de partición ok} 272{Tamaños de partición ok}
273 273
274message edfspart 274message edfspart
275{Los valores actuales de la particion `%c' son,  275{Los valores actuales de la particion `%c' son,
276Seleccione el campo que desee cambiar: 276Seleccione el campo que desee cambiar:
277 277
278 MB cilindros sectores 278 MB cilindros sectores
279 ------- --------- --------- 279 ------- --------- ---------
280} 280}
281 281
282message fstype_fmt 282message fstype_fmt
283{ FStype: %9s} 283{ FStype: %9s}
284 284
285message start_fmt 285message start_fmt
286{ inicio: %9u %8u%c %9u} 286{ inicio: %9u %8u%c %9u}
287 287
288message size_fmt 288message size_fmt
289{ tamaño: %9u %8u%c %9u} 289{ tamaño: %9u %8u%c %9u}
290 290
291message end_fmt 291message end_fmt
292{ fin: %9u %8u%c %9u} 292{ fin: %9u %8u%c %9u}
293 293
294message bsize_fmt 294message bsize_fmt
295{tamaño bloque: %9d bytes} 295{tamaño bloque: %9d bytes}
296 296
297message fsize_fmt 297message fsize_fmt
298{ tamaño frag: %9d bytes} 298{ tamaño frag: %9d bytes}
299 299
300message isize_fmt 300message isize_fmt
301{tam prom archi: %9d bytes (para número de inodos)} 301{tam prom archi: %9d bytes (para número de inodos)}
302message isize_fmt_dflt 302message isize_fmt_dflt
303{tam prom archi: 4 fragmentos} 303{tam prom archi: 4 fragmentos}
304 304
305message newfs_fmt 305message newfs_fmt
306{ newfs: %9s} 306{ newfs: %9s}
307 307
308message mount_fmt 308message mount_fmt
309{ montar: %9s} 309{ montar: %9s}
310 310
311message mount_options_fmt 311message mount_options_fmt
312{ opc montaje: } 312{ opc montaje: }
313 313
314message mountpt_fmt 314message mountpt_fmt
315{ punto montaje: %9s} 315{ punto montaje: %9s}
316 316
317message toggle 317message toggle
318{Conmutar} 318{Conmutar}
319 319
320message restore 320message restore
321{Restaurar los valores originales} 321{Restaurar los valores originales}
322 322
323message Select_the_type 323message Select_the_type
324{Seleccione el tipo} 324{Seleccione el tipo}
325 325
326message other_types 326message other_types
327{otros tipos} 327{otros tipos}
328 328
329message label_size 329message label_size
330{%s 330{%s
331Valores especiales que se pueden introducir para el valor del tamaño: 331Valores especiales que se pueden introducir para el valor del tamaño:
332 -1: usar hasta el final de la parte NetBSD del disco 332 -1: usar hasta el final de la parte NetBSD del disco
333 a-%c: terminar esta partición donde empieza la partición X 333 a-%c: terminar esta partición donde empieza la partición X
334 334
335tamaño (%s)} 335tamaño (%s)}
336 336
337message label_offset 337message label_offset
338{%s 338{%s
339Valores especiales que se pueden introducir para el valor del desplazamiento: 339Valores especiales que se pueden introducir para el valor del desplazamiento:
340 -1: empezar al principio de la parte NetBSD del disco 340 -1: empezar al principio de la parte NetBSD del disco
341 a-%c: empezar al final de la partición anterior (a, b, ..., %c) 341 a-%c: empezar al final de la partición anterior (a, b, ..., %c)
342 342
343inicio (%s)} 343inicio (%s)}
344 344
345message invalid_sector_number 345message invalid_sector_number
346{Número de sector mal formado 346{Número de sector mal formado
347} 347}
348 348
349message Select_file_system_block_size 349message Select_file_system_block_size
350{Seleccione el tamaño de bloque del sistema de archivos} 350{Seleccione el tamaño de bloque del sistema de archivos}
351 351
352message Select_file_system_fragment_size 352message Select_file_system_fragment_size
353{Seleccione el tamaño de fragmento del sistema de archivos} 353{Seleccione el tamaño de fragmento del sistema de archivos}
354 354
355message packname 355message packname
356{Por favor entroduzca un nombre para el disco NetBSD} 356{Por favor entroduzca un nombre para el disco NetBSD}
357 357
358message lastchance 358message lastchance
359{Bien, todo está preparado para instalar NetBSD en su disco duro (%s). 359{Bien, todo está preparado para instalar NetBSD en su disco duro (%s).
360Todavía no se ha escrito nada. Ésta es su última oportunidad para salir 360Todavía no se ha escrito nada. Ésta es su última oportunidad para salir
361del proceso antes de que se cambie nada. 361del proceso antes de que se cambie nada.
362 362
363¿Desea continuar? 363¿Desea continuar?
364} 364}
365 365
366message disksetupdone 366message disksetupdone
367{De acuerdo, la primera parte del procedimiento ha terminado. 367{De acuerdo, la primera parte del procedimiento ha terminado.
368Sysinst ha escrito una etiqueta en el disco objetivo, y ha 368Sysinst ha escrito una etiqueta en el disco objetivo, y ha
369formateado y comprobado las nuevas particiones que ha indicado 369formateado y comprobado las nuevas particiones que ha indicado
370para el disco objetivo. 370para el disco objetivo.
371} 371}
372 372
373message disksetupdoneupdate 373message disksetupdoneupdate
374{De acuerdo, la primera parte del procedimiento ha terminado. 374{De acuerdo, la primera parte del procedimiento ha terminado.
375Sysinst ha escrito una etiqueta en el disco objetivo, y 375Sysinst ha escrito una etiqueta en el disco objetivo, y
376comprobdo las nuevas particiones que ha indicado para el disco objetivo. 376comprobdo las nuevas particiones que ha indicado para el disco objetivo.
377} 377}
378 378
379message openfail 379message openfail
380{No se ha podido abrir %s, el mensaje de error ha sido: %s. 380{No se ha podido abrir %s, el mensaje de error ha sido: %s.
381} 381}
382 382
383message mountfail 383message mountfail
384{el montaje del dispositivo /dev/%s%c en %s ha fallado. 384{el montaje del dispositivo /dev/%s%c en %s ha fallado.
385} 385}
386 386
387message extractcomplete 387message extractcomplete
388{La extracción de los conjuntos seleccionados para NetBSD-@@VERSION@@ ha 388{La extracción de los conjuntos seleccionados para NetBSD-@@VERSION@@ ha
389finalizado. El sistema es ahora capaz de arrancar desde el disco duro 389finalizado. El sistema es ahora capaz de arrancar desde el disco duro
390seleccionado. Para completar la instalación, sysinst le dará la 390seleccionado. Para completar la instalación, sysinst le dará la
391oportunidad de configurar antes algunos aspectos esenciales. 391oportunidad de configurar antes algunos aspectos esenciales.
392} 392}
393 393
394message instcomplete 394message instcomplete
395{La instalación de NetBSD-@@VERSION@@ ha finalizado. El sistema debería 395{La instalación de NetBSD-@@VERSION@@ ha finalizado. El sistema debería
396arrancar desde el disco duro. Siga las instrucciones del documento 396arrancar desde el disco duro. Siga las instrucciones del documento
397INSTALL sobre la configuración final del sistema. La pagina de manual 397INSTALL sobre la configuración final del sistema. La pagina de manual
398de afterboot(8) es otra lectura recomendada; contiene una lista de 398de afterboot(8) es otra lectura recomendada; contiene una lista de
399cosas a comprobar despúes del primer arranque completo. 399cosas a comprobar despúes del primer arranque completo.
400 400
401Como mínimo, debe editar /etc/rc.conf para que cumpla sus necesidades. 401Como mínimo, debe editar /etc/rc.conf para que cumpla sus necesidades.
402Vea en /etc/defaults/rc.conf los valores predefinidos. 402Vea en /etc/defaults/rc.conf los valores predefinidos.
403} 403}
404 404
405message upgrcomplete 405message upgrcomplete
406{Actualización a NetBSD-@@VERSION@@ completada. Ahora tendrá que 406{Actualización a NetBSD-@@VERSION@@ completada. Ahora tendrá que
407seguir las instrucciones del documento INSTALL para hacer lo que 407seguir las instrucciones del documento INSTALL para hacer lo que
408necesite para conseguir tener el sistema configurado para su 408necesite para conseguir tener el sistema configurado para su
409situación. 409situación.
410Recuerde (re)leer la página de manual de afterboot(8), ya que puede 410Recuerde (re)leer la página de manual de afterboot(8), ya que puede
411contener nuevos apartados desde su ultima actualización. 411contener nuevos apartados desde su ultima actualización.
412 412
413Como mínimo, debe editar rc.conf para su entorno local y cambiar 413Como mínimo, debe editar rc.conf para su entorno local y cambiar
414rc_configured=NO a rc_configured=YES o los reinicios se detendrán en 414rc_configured=NO a rc_configured=YES o los reinicios se detendrán en
415single-user, y copie de nuevo los ficheros de contraseñas (teniendo en 415single-user, y copie de nuevo los ficheros de contraseñas (teniendo en
416cuenta las nuevas cuentas de sistema que se hayan podido crear para esta 416cuenta las nuevas cuentas de sistema que se hayan podido crear para esta
417versión) si estuviera usando ficheros de contraseñas locales. 417versión) si estuviera usando ficheros de contraseñas locales.
418} 418}
419 419
420 420
421message unpackcomplete 421message unpackcomplete
422{Finalizado el desempaquetamiento de conjuntos adicionales de NetBSD-@@VERSION@@. 422{Finalizado el desempaquetamiento de conjuntos adicionales de NetBSD-@@VERSION@@.
423Ahora necesitará seguir las instrucciones del documento INSTALL para 423Ahora necesitará seguir las instrucciones del documento INSTALL para
424tener su sistema reconfigurado para su situación. 424tener su sistema reconfigurado para su situación.
425La página de manual de afterboot(8) también puede serle de ayuda. 425La página de manual de afterboot(8) también puede serle de ayuda.
426 426
427Como mínimo, debe editar rc.conf para su entorno local, y cambiar 427Como mínimo, debe editar rc.conf para su entorno local, y cambiar
428rd_configure=NO a rc_configured=YES, o los reinicios se detendrán 428rd_configure=NO a rc_configured=YES, o los reinicios se detendrán
429en modo de usuario único. 429en modo de usuario único.
430} 430}
431 431
432message distmedium 432message distmedium
433{Su disco está ahora preparado para la instalación el nucleo y los conjuntos 433{Su disco está ahora preparado para la instalación el nucleo y los conjuntos
434de la distribución. Como se apunta en las notas INSTALL, tiene diversas 434de la distribución. Como se apunta en las notas INSTALL, tiene diversas
435opciones. Para ftp o nfs, tiene que estar conectado a una red con acceso 435opciones. Para ftp o nfs, tiene que estar conectado a una red con acceso
436a las maquinas apropiadas. 436a las maquinas apropiadas.
437 437
438Conjuntos seleccionados: %d, procesados: %d. Siguiente conjunto: %s. 438Conjuntos seleccionados: %d, procesados: %d. Siguiente conjunto: %s.
439 439
440} 440}
441 441
442message distset 442message distset
443{La distribución NetBSD está dividida en una colección de conjuntos de 443{La distribución NetBSD está dividida en una colección de conjuntos de
444distribución. Hay algunos conjuntos básicos que son necesarios para todas 444distribución. Hay algunos conjuntos básicos que son necesarios para todas
445las instalaciones, y otros conjuntos que no son necesarios para todas las 445las instalaciones, y otros conjuntos que no son necesarios para todas las
446instalaciones. Puede escoger para instalar sólo los conjuntos esenciales 446instalaciones. Puede escoger para instalar sólo los conjuntos esenciales
447(instalación mínima); instalar todos ellos (Instalación completa) o 447(instalación mínima); instalar todos ellos (Instalación completa) o
448seleccionar de entre los conjuntos de distribución opcionales. 448seleccionar de entre los conjuntos de distribución opcionales.
449} 449}
450 450
451message ftpsource 451message ftpsource
452{Lo siguiente son el sitio %s, directorio, usuario y contraseña que se 452{Lo siguiente son el sitio %s, directorio, usuario y contraseña que se
453usarán. Si «usuario» es «ftp», no se necesita contraseña.. 453usarán. Si «usuario» es «ftp», no se necesita contraseña..
454 454
455} 455}
456 456
457message email 457message email
458{dirección de correo electrónico} 458{dirección de correo electrónico}
459 459
460message dev 460message dev
461{dispositivo} 461{dispositivo}
462 462
463message nfssource 463message nfssource
464{Introduzca el servidor nfs y el directorio del servidor donde se encuentre 464{Introduzca el servidor nfs y el directorio del servidor donde se encuentre
465la distribución. Recuerde: el directorio debe contener los archivos .tgz y 465la distribución. Recuerde: el directorio debe contener los archivos .tgz y
466debe ser montable por nfs. 466debe ser montable por nfs.
467 467
468} 468}
469 469
470message floppysource 470message floppysource
471{Introduzca el dispositivo de disquete a usar y el directorio destino de la 471{Introduzca el dispositivo de disquete a usar y el directorio destino de la
472transferencia en el sistema de archivos. Los archivos del conjunto han de estar 472transferencia en el sistema de archivos. Los archivos del conjunto han de estar
473en el directorio raíz de los disquetes. 473en el directorio raíz de los disquetes.
474 474
475} 475}
476 476
477message cdromsource 477message cdromsource
478{Introduzca el dispositivo de CDROM a usar y el directorio del CDROM 478{Introduzca el dispositivo de CDROM a usar y el directorio del CDROM
479donde se encuentre la distribución. 479donde se encuentre la distribución.
480Recuerde, el directorio debe contener los archivos .tgz. 480Recuerde, el directorio debe contener los archivos .tgz.
481 481
482} 482}
483 483
484message Available_cds 484message Available_cds
485{Available CDs} 485{Available CDs}
486 486
487message ask_cd 487message ask_cd
488{Multiple CDs found, please select the one containing the install CD.} 488{Multiple CDs found, please select the one containing the install CD.}
489 489
490message cd_path_not_found 490message cd_path_not_found
491{The installation sets have not been found at the default location on this 491{The installation sets have not been found at the default location on this
492CD. Please check device and path name.} 492CD. Please check device and path name.}
493 493
494message localfssource 494message localfssource
495{Introduzca el dispositivo local desmontado y el directorio de ese 495{Introduzca el dispositivo local desmontado y el directorio de ese
496dispositivo donde se encuentre la distribución.  496dispositivo donde se encuentre la distribución.
497Recuerde, el directorio debe contener los archivos .tgz. 497Recuerde, el directorio debe contener los archivos .tgz.
498 498
499} 499}
500 500
501message localdir 501message localdir
502{Introduzca el directorio local ya montado donde se encuentre la distribución. 502{Introduzca el directorio local ya montado donde se encuentre la distribución.
503Recuerde, el directorio debe contener los archivos .tgz. 503Recuerde, el directorio debe contener los archivos .tgz.
504 504
505} 505}
506 506
507message filesys 507message filesys
508{sistema de archivos} 508{sistema de archivos}
509 509
510message nonet 510message nonet
511{No se ha podido encontrar ninguna interfaz de red para ser usada por NetBSD. 511{No se ha podido encontrar ninguna interfaz de red para ser usada por NetBSD.
512Se le devolverá al menú anterior. 512Se le devolverá al menú anterior.
513} 513}
514 514
515message netup 515message netup
516{Las siguientes interfaces están activas: %s 516{Las siguientes interfaces están activas: %s
517¿Conecta alguna de ellas al servidor requerido?} 517¿Conecta alguna de ellas al servidor requerido?}
518 518
519message asknetdev 519message asknetdev
520{¿Cuál interfaces usar?} 520{¿Cuál interfaces usar?}
521 521
522message netdevs 522message netdevs
523{Interfaces disponibles} 523{Interfaces disponibles}
524 524
525message netinfo 525message netinfo
526{Para poder usar la red, necesita responder lo siguiente: 526{Para poder usar la red, necesita responder lo siguiente:
527 527
528} 528}
529 529
530message net_domain 530message net_domain
531{Su dominio DNS} 531{Su dominio DNS}
532 532
533message net_host 533message net_host
534{Su nombre de máquina} 534{Su nombre de máquina}
535 535
536message net_ip 536message net_ip
537{Su número IPv4} 537{Su número IPv4}
538 538
539message net_srv_ip 539message net_srv_ip
540{Número servidor IPv4} 540{Número servidor IPv4}
541 541
542message net_mask 542message net_mask
543{Máscara de red IPv4} 543{Máscara de red IPv4}
544 544
545message net_namesrv 545message net_namesrv
546{Servidor de nombres IPv4} 546{Servidor de nombres IPv4}
547 547
548message net_defroute 548message net_defroute
549{Pasarela IPv4} 549{Pasarela IPv4}
550 550
551message net_media 551message net_media
552{Tipo de medio de la red} 552{Tipo de medio de la red}
553 553
554message netok 554message netok
555{Ha introducido los siguientes valores. 555{Ha introducido los siguientes valores.
556 556
557Dominio DNS: %s  557Dominio DNS: %s
558Nombre de máquina: %s  558Nombre de máquina: %s
559Serv de nombres: %s  559Serv de nombres: %s
560Interfaz primaria: %s  560Interfaz primaria: %s
561Tipo de medio: %s  561Tipo de medio: %s
562IP de la máquina: %s  562IP de la máquina: %s
563Máscara de red: %s  563Máscara de red: %s
564Pasarela IPv4: %s  564Pasarela IPv4: %s
565} 565}
566 566
567message netok_slip 567message netok_slip
568{Ha introducido los siguientes valores. ¿Son correctos? 568{Ha introducido los siguientes valores. ¿Son correctos?
569 569
570Dominio DNS: %s  570Dominio DNS: %s
571Nombre de la máquina: %s  571Nombre de la máquina: %s
572Serv de nombres: %s  572Serv de nombres: %s
573Interfaz primaria: %s  573Interfaz primaria: %s
574Tipo de medio: %s  574Tipo de medio: %s
575IP de la máquina: %s  575IP de la máquina: %s
576IP del servidor: %s  576IP del servidor: %s
577Máscara de red: %s  577Máscara de red: %s
578Pasarela IPv4: %s  578Pasarela IPv4: %s
579} 579}
580 580
581message netokv6 581message netokv6
582{IPv6 autoconf: %s  582{IPv6 autoconf: %s
583} 583}
584 584
585message netok_ok 585message netok_ok
586{¿Son correctos?} 586{¿Son correctos?}
587 587
588message wait_network 588message wait_network
589{ 589{
590Espere mientras las interfaces de red se levantan. 590Espere mientras las interfaces de red se levantan.
591} 591}
592 592
593message resolv 593message resolv
594{No se ha podido crear /etc/resolv.conf. Instalación interrumpida. 594{No se ha podido crear /etc/resolv.conf. Instalación interrumpida.
595} 595}
596 596
597message realdir 597message realdir
598{No se ha podido cambiar el directorio a %s: %s. Instalación 598{No se ha podido cambiar el directorio a %s: %s. Instalación
599interrumpida. 599interrumpida.
600} 600}
601 601
602message delete_xfer_file 602message delete_xfer_file
603{A eliminar después de la instalación} 603{A eliminar después de la instalación}
604 604
605message notarfile 605message notarfile
606{El conjunto %s no existe.} 606{El conjunto %s no existe.}
607 607
608message endtarok 608message endtarok
609{Todos los conjuntos de distribución han sido desempaquetados 609{Todos los conjuntos de distribución han sido desempaquetados
610correctamente.} 610correctamente.}
611 611
612message endtar 612message endtar
613{Ha habido problemas al desempaquetar los conjuntos de la distribución. 613{Ha habido problemas al desempaquetar los conjuntos de la distribución.
614Su instalación está incompleta. 614Su instalación está incompleta.
615 615
616Ha seleccionado %d conjuntos de distribución. %d conjuntos no han sido 616Ha seleccionado %d conjuntos de distribución. %d conjuntos no han sido
617encontrados, y %d han sido omitidos después de que ocurriera un 617encontrados, y %d han sido omitidos después de que ocurriera un
618error. De los %d que se han intentado, %d se han desempaquetado 618error. De los %d que se han intentado, %d se han desempaquetado
619sin errores y %d con errores. 619sin errores y %d con errores.
620 620
621La instalación ha sido interrumpida. Por favor, compruebe de nuevo su 621La instalación ha sido interrumpida. Por favor, compruebe de nuevo su
622fuente de distribución y considere el reinstalar los conjuntos desde 622fuente de distribución y considere el reinstalar los conjuntos desde
623el menú principal.} 623el menú principal.}
624 624
625message abort 625message abort
626{Sus opciones han hecho imposible instalar NetBSD. Instalación interrumpida. 626{Sus opciones han hecho imposible instalar NetBSD. Instalación interrumpida.
627} 627}
628 628
629message abortinst 629message abortinst
630{La distribución no ha sido cargada correctamente. Necesitará proceder 630{La distribución no ha sido cargada correctamente. Necesitará proceder
631a mano. Instalación interrumpida. 631a mano. Instalación interrumpida.
632} 632}
633 633
634message abortupgr 634message abortupgr
635{La distribución no ha sido correctamente cargada. Necesitará proceder 635{La distribución no ha sido correctamente cargada. Necesitará proceder
636a mano. Instalación interrumpida. 636a mano. Instalación interrumpida.
637} 637}
638 638
639message abortunpack 639message abortunpack
640{El desempaquetamiento de los conjuntos adicionales no ha sido satisfactorio.  640{El desempaquetamiento de los conjuntos adicionales no ha sido satisfactorio.
641Necesitará proceder a mano, o escoger una fuente diferente para los conjuntos 641Necesitará proceder a mano, o escoger una fuente diferente para los conjuntos
642de esta distribución y volver a intentarlo. 642de esta distribución y volver a intentarlo.
643} 643}
644 644
645message createfstab 645message createfstab
646{¡Hay un gran problema! No se puede crear /mnt/etc/fstab. Desistiendo. 646{¡Hay un gran problema! No se puede crear /mnt/etc/fstab. Desistiendo.
647} 647}
648 648
649 649
650message noetcfstab 650message noetcfstab
651{¡Ayuda! No hay /etc/fstab del disco objetivo %s. 651{¡Ayuda! No hay /etc/fstab del disco objetivo %s.
652Interrumpiendo la actualización. 652Interrumpiendo la actualización.
653} 653}
654 654
655message badetcfstab 655message badetcfstab
656{¡Ayuda! No se puede analizar /etc/fstab en el disco objetivo %s. 656{¡Ayuda! No se puede analizar /etc/fstab en el disco objetivo %s.
657Interrumpiendo la actualización. 657Interrumpiendo la actualización.
658} 658}
659 659
660message X_oldexists 660message X_oldexists
661{No se puede guardar %s/bin/X como %s/bin/X.old, porque el 661{No se puede guardar %s/bin/X como %s/bin/X.old, porque el
662disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto 662disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto
663antes de continuar. 663antes de continuar.
664 664
665Una manera es iniciando una shell desde el menú Utilidades, y examinar 665Una manera es iniciando una shell desde el menú Utilidades, y examinar
666el objetivo %s/bin/X y %s/bin/X.old. Si 666el objetivo %s/bin/X y %s/bin/X.old. Si
667%s/bin/X.old es de una actualización completada, puede rm -f 667%s/bin/X.old es de una actualización completada, puede rm -f
668%s/bin/X.old y reiniciar. O si %s/bin/X.old es de 668%s/bin/X.old y reiniciar. O si %s/bin/X.old es de
669una actualizacion reciente e incompleta, puede rm -f %s/bin/X 669una actualizacion reciente e incompleta, puede rm -f %s/bin/X
670y mv %s/bin/X.old a %s/bin/X. 670y mv %s/bin/X.old a %s/bin/X.
671 671
672Interrumpiendo la actualización.} 672Interrumpiendo la actualización.}
673 673
674message netnotup 674message netnotup
675{Ha habido un problema configurando la red. O su pasarela o su servidor 675{Ha habido un problema configurando la red. O su pasarela o su servidor
676de nombres no son alcanzables por un ping. ¿Quiere configurar la red 676de nombres no son alcanzables por un ping. ¿Quiere configurar la red
677de nuevo? («No» le permite continuar de todos modos o interrumpir el 677de nuevo? («No» le permite continuar de todos modos o interrumpir el
678proceso de instalación.) 678proceso de instalación.)
679} 679}
680 680
681message netnotup_continueanyway 681message netnotup_continueanyway
682{¿Le gustaría continuar el proceso de instalación de todos modos, y 682{¿Le gustaría continuar el proceso de instalación de todos modos, y
683suponer que la red está funcionando? («No» interrumpe el proceso de 683suponer que la red está funcionando? («No» interrumpe el proceso de
684instalación.) 684instalación.)
685} 685}
686 686
687message makedev 687message makedev
688{Creando nodos de dispositivo ... 688{Creando nodos de dispositivo ...
689} 689}
690 690
691message badfs 691message badfs
692{Parece ser que /dev/%s%c no es un sistema de archivos BSD o bien el 692{Parece ser que /dev/%s%c no es un sistema de archivos BSD o bien el
693fsck ha fallado. ¿Desea montarlo de todos modos? (Código de error: 693fsck ha fallado. ¿Desea montarlo de todos modos? (Código de error:
694%d.) 694%d.)
695} 695}
696 696
697message rootmissing 697message rootmissing
698{ el directorio raíz objetivo no existe %s. 698{ el directorio raíz objetivo no existe %s.
699} 699}
700 700
701message badroot 701message badroot
702{El nuevo sistema de archivos raíz no ha pasado la comprobación básica. 702{El nuevo sistema de archivos raíz no ha pasado la comprobación básica.
703 ¿Está seguro de que ha instalado todos los conjuntos requeridos? 703 ¿Está seguro de que ha instalado todos los conjuntos requeridos?
704 704
705} 705}
706 706
707message fd_type 707message fd_type
708{Tipo de sistema de archivos del disquete} 708{Tipo de sistema de archivos del disquete}
709 709
710message fdnotfound 710message fdnotfound
711{No se ha encontrado el fichero en el disco. 711{No se ha encontrado el fichero en el disco.
712} 712}
713 713
714message fdremount 714message fdremount
715{El disquete no ha sido montado correctamente. 715{El disquete no ha sido montado correctamente.
716} 716}
717 717
718message fdmount 718message fdmount
719{Por favor, inserte el disquete que contiene el fichero «%s.%s». 719{Por favor, inserte el disquete que contiene el fichero «%s.%s».
720 720
721Si el conjunto no está en más discos, seleccione "Conjunto finalizado" 721Si el conjunto no está en más discos, seleccione "Conjunto finalizado"
722para instalarlo. Seleccione "Abortar lectura" para regresar al menú 722para instalarlo. Seleccione "Abortar lectura" para regresar al menú
723de selección de medios de instalación. 723de selección de medios de instalación.
724} 724}
725 725
726message mntnetconfig 726message mntnetconfig
727{La información de red que ha introducido, ¿es la adecuada para el 727{La información de red que ha introducido, ¿es la adecuada para el
728funcionamiento normal de esta máquina y desea instalarla en /etc? } 728funcionamiento normal de esta máquina y desea instalarla en /etc? }
729 729
730message cur_distsets 730message cur_distsets
731{Ésta es la lista de conjuntos de distribución que se usará. 731{Ésta es la lista de conjuntos de distribución que se usará.
732 732
733} 733}
734 734
735message cur_distsets_header 735message cur_distsets_header
736{ Conjunto de distribución Selecc. 736{ Conjunto de distribución Selecc.
737 ------------------------ -------- 737 ------------------------ --------
738} 738}
739 739
740message set_base 740message set_base
741{Base} 741{Base}
742 742
743message set_system 743message set_system
744{Sistema (/etc)} 744{Sistema (/etc)}
745 745
746message set_compiler 746message set_compiler
747{Herramientas del compilador} 747{Herramientas del compilador}
748 748
749message set_games 749message set_games
750{Juegos} 750{Juegos}
751 751
752message set_man_pages 752message set_man_pages
753{Paginas de manual} 753{Paginas de manual}
754 754
755message set_misc 755message set_misc
756{Varios} 756{Varios}
757 757
758message set_modules 758message set_modules
759{Kernel Modules} 759{Kernel Modules}
760 760
761message set_tests 761message set_tests
762{Programas de prueba} 762{Programas de prueba}
763 763
764message set_text_tools 764message set_text_tools
765{Herramientas de procesamiento de textos} 765{Herramientas de procesamiento de textos}
766 766
767message set_X11 767message set_X11
768{Conjuntos de X11} 768{Conjuntos de X11}
769 769
770message set_X11_base 770message set_X11_base
771{X11 base y clientes} 771{X11 base y clientes}
772 772
773message set_X11_etc 773message set_X11_etc
774{Configuración de X11} 774{Configuración de X11}
775 775
776message set_X11_fonts 776message set_X11_fonts
777{Tipos de letra de X11} 777{Tipos de letra de X11}
778 778
779message set_X11_servers 779message set_X11_servers
780{Servidores X11} 780{Servidores X11}
781 781
782message set_X11_prog 782message set_X11_prog
783{Programación de X11} 783{Programación de X11}
784 784
785message set_source 785message set_source
786{Source and debug sets} 786{Source and debug sets}
787 787
788message set_syssrc 788message set_syssrc
789{Kernel sources} 789{Kernel sources}
790 790
791message set_src 791message set_src
792{Base sources} 792{Base sources}
793 793
794message set_sharesrc 794message set_sharesrc
795{Share sources} 795{Share sources}
796 796
797message set_gnusrc 797message set_gnusrc
798{GNU sources} 798{GNU sources}
799 799
800message set_xsrc 800message set_xsrc
801{X11 sources} 801{X11 sources}
802 802
803message set_debug 803message set_debug
804{Debug symbols} 804{Debug symbols}
805 805
806message set_xdebug 806message set_xdebug
807{X11 debug symbols} 807{X11 debug symbols}
808 808
809message cur_distsets_row 809message cur_distsets_row
810{%-27s %3s} 810{%-27s %3s}
811 811
812message select_all 812message select_all
813{Seleccionar todos los conjuntos anteriores} 813{Seleccionar todos los conjuntos anteriores}
814 814
815message select_none 815message select_none
816{No seleccionar ninguno de los conjuntos anteriores} 816{No seleccionar ninguno de los conjuntos anteriores}
817 817
818message install_selected_sets 818message install_selected_sets
819{Instalar los conjuntos seleccionados} 819{Instalar los conjuntos seleccionados}
820 820
821message tarerror 821message tarerror
822{Ha habido un error al extraer el fichero %s. Esto significa 822{Ha habido un error al extraer el fichero %s. Esto significa
823que algunos ficheros no han sido extraidos correctamente y su sistema 823que algunos ficheros no han sido extraidos correctamente y su sistema
824no estará completo. 824no estará completo.
825 825
826¿Continuar extrayendo conjuntos?} 826¿Continuar extrayendo conjuntos?}
827 827
828message must_be_one_root 828message must_be_one_root
829{Debe haber una sola partición marcada para ser montada en «/».} 829{Debe haber una sola partición marcada para ser montada en «/».}
830 830
831message partitions_overlap 831message partitions_overlap
832{las particiones %c y %c se solapan.} 832{las particiones %c y %c se solapan.}
833 833
834message No_Bootcode 834message No_Bootcode
835{No hay código de arranque para la partición root} 835{No hay código de arranque para la partición root}
836 836
837message cannot_ufs2_root 837message cannot_ufs2_root
838{Sorry, the root file system can't be FFSv2 due to lack of bootloader support 838{Sorry, the root file system can't be FFSv2 due to lack of bootloader support
839on this port.} 839on this port.}
840 840
841message edit_partitions_again 841message edit_partitions_again
842{ 842{
843 843
844Puede editar la tabla de particiones a mano, o dejarlo y retornar al 844Puede editar la tabla de particiones a mano, o dejarlo y retornar al
845menú principal. 845menú principal.
846 846
847¿Editar la tabla de particiones de nuevo?} 847¿Editar la tabla de particiones de nuevo?}
848 848
849message config_open_error 849message config_open_error
850{No se ha podido abrir el fichero de configuración %s\n} 850{No se ha podido abrir el fichero de configuración %s\n}
851 851
852message choose_timezone 852message choose_timezone
853{Por favor, escoja de la siguiente lista la zona horaria que le convenga.  853{Por favor, escoja de la siguiente lista la zona horaria que le convenga.
854Presione RETURN para seleccionar una entrada.  854Presione RETURN para seleccionar una entrada.
855Presione «x» seguido de RETURN para salir de la selección de la 855Presione «x» seguido de RETURN para salir de la selección de la
856zona horaria. 856zona horaria.
857 857
858 Predefinida: %s  858 Predefinida: %s
859 Seleccionada: %s  859 Seleccionada: %s
860 Hora local: %s %s  860 Hora local: %s %s
861} 861}
862 862
863message tz_back 863message tz_back
864{ Volver a la lista principal de zonas horarias} 864{ Volver a la lista principal de zonas horarias}
865 865
866message swapactive 866message swapactive
867{El disco que ha seleccionado tiene una partición de intercambio (swap) que 867{El disco que ha seleccionado tiene una partición de intercambio (swap) que
868puede que esté en uso actualmente si su sistema tiene poca memoria. Como 868puede que esté en uso actualmente si su sistema tiene poca memoria. Como
869se dispone a reparticionar este disco, esta partición swap será desactivada 869se dispone a reparticionar este disco, esta partición swap será desactivada
870ahora. Se advierte de que esto puede conducir a problemas de swap. 870ahora. Se advierte de que esto puede conducir a problemas de swap.
871Si obtuviera algun error, reinicie el sistema e inténtelo de nuevo.} 871Si obtuviera algun error, reinicie el sistema e inténtelo de nuevo.}
872 872
873message swapdelfailed 873message swapdelfailed
874{Sysinst ha fallado en la desactivación de la partición swap del disco que 874{Sysinst ha fallado en la desactivación de la partición swap del disco que
875ha escogido para la instalación. Por favor, reinicie e inténtelo de nuevo.} 875ha escogido para la instalación. Por favor, reinicie e inténtelo de nuevo.}
876 876
877message rootpw 877message rootpw
878{La contraseña de root del nuevo sistema instalado no ha sido asignada todavía, 878{La contraseña de root del nuevo sistema instalado no ha sido asignada todavía,
879y por tanto está vacía. ¿Quiere establecer ahora una contraseña de root para 879y por tanto está vacía. ¿Quiere establecer ahora una contraseña de root para
880el sistema?} 880el sistema?}
881 881
882message rootsh 882message rootsh
883{Ahora puede seleccionar que shell quiere usar para el usuario root. Por 883{Ahora puede seleccionar que shell quiere usar para el usuario root. Por
884omisión es /bin/sh, pero podría preferir otra.} 884omisión es /bin/sh, pero podría preferir otra.}
885 885
886message no_root_fs 886message no_root_fs
887{ 887{
888No hay un sistema de archivos raíz definido. Necesitará al menos un punto 888No hay un sistema de archivos raíz definido. Necesitará al menos un punto
889de montaje con «/». 889de montaje con «/».
890 890
891Presione <return> para continuar. 891Presione <return> para continuar.
892} 892}
893 893
894message slattach { 894message slattach {
895Introduzca los parámetros de slattach 895Introduzca los parámetros de slattach
896} 896}
897 897
898message Pick_an_option {Seleccione una opción para activar/desactivar.} 898message Pick_an_option {Seleccione una opción para activar/desactivar.}
899message Scripting {Scripting} 899message Scripting {Scripting}
900message Logging {Logging} 900message Logging {Logging}
901 901
902message Status { Estado: } 902message Status { Estado: }
903message Command {Orden: } 903message Command {Orden: }
904message Running {Ejecutando} 904message Running {Ejecutando}
905message Finished {Acabado } 905message Finished {Acabado }
906message Command_failed {Orden fallida} 906message Command_failed {Orden fallida}
907message Command_ended_on_signal {Orden terminada en señal} 907message Command_ended_on_signal {Orden terminada en señal}
908 908
909message NetBSD_VERSION_Install_System {Sistema de instalación de NetBSD-@@VERSION@@} 909message NetBSD_VERSION_Install_System {Sistema de instalación de NetBSD-@@VERSION@@}
910message Exit_Install_System {Salir del sistema de instalación} 910message Exit_Install_System {Salir del sistema de instalación}
911message Install_NetBSD_to_hard_disk {Instalar NetBSD en el disco duro} 911message Install_NetBSD_to_hard_disk {Instalar NetBSD en el disco duro}
912message Upgrade_NetBSD_on_a_hard_disk {Actualizar NetBSD en un disco duro} 912message Upgrade_NetBSD_on_a_hard_disk {Actualizar NetBSD en un disco duro}
913message Re_install_sets_or_install_additional_sets {Reinstalar conjuntos o instalar conjuntos adicionales} 913message Re_install_sets_or_install_additional_sets {Reinstalar conjuntos o instalar conjuntos adicionales}
914message Reboot_the_computer {Reiniciar la computadora} 914message Reboot_the_computer {Reiniciar la computadora}
915message Utility_menu {Menú de utilidades} 915message Utility_menu {Menú de utilidades}
916message Config_menu {Menu de configuración} 916message Config_menu {Menu de configuración}
917message exit_menu_generic {atrás} 917message exit_menu_generic {atrás}
918message exit_utility_menu {Exit} 918message exit_utility_menu {Exit}
919message NetBSD_VERSION_Utilities {Utilidades de NetBSD-@@VERSION@@} 919message NetBSD_VERSION_Utilities {Utilidades de NetBSD-@@VERSION@@}
920message Run_bin_sh {Ejecutar /bin/sh} 920message Run_bin_sh {Ejecutar /bin/sh}
921message Set_timezone {Establecer la zona horaria} 921message Set_timezone {Establecer la zona horaria}
922message Configure_network {Configurar la red} 922message Configure_network {Configurar la red}
923message Partition_a_disk {Particionar un disco} 923message Partition_a_disk {Particionar un disco}
924message Logging_functions {Funciones de registro} 924message Logging_functions {Funciones de registro}
925message Halt_the_system {Detener el sistema} 925message Halt_the_system {Detener el sistema}
926message yes_or_no {¿sí o no?} 926message yes_or_no {¿sí o no?}
927message Hit_enter_to_continue {Presione intro para continuar} 927message Hit_enter_to_continue {Presione intro para continuar}
928message Choose_your_installation {Seleccione su instalación} 928message Choose_your_installation {Seleccione su instalación}
929message Set_Sizes {Establecer los tamaños de las particiones NetBSD} 929message Set_Sizes {Establecer los tamaños de las particiones NetBSD}
930message Use_Existing {Usar los tamaños de las particiones existentes} 930message Use_Existing {Usar los tamaños de las particiones existentes}
931message Megabytes {Megabytes} 931message Megabytes {Megabytes}
932message Cylinders {Cilindros} 932message Cylinders {Cilindros}
933message Sectors {Sectores} 933message Sectors {Sectores}
934message Select_medium {Seleccione el medio} 934message Select_medium {Seleccione el medio}
935message ftp {FTP} 935message ftp {FTP}
936message http {HTTP} 936message http {HTTP}
937message nfs {NFS} 937message nfs {NFS}
938.if HAVE_INSTALL_IMAGE 938.if HAVE_INSTALL_IMAGE
939message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ 939message cdrom {CD-ROM / DVD / install image media} /* XXX translation */
940.else 940.else
941message cdrom {CD-ROM / DVD} 941message cdrom {CD-ROM / DVD}
942.endif 942.endif
943message floppy {Disquete} 943message floppy {Disquete}
944message local_fs {Sistema de archivos desmontado} 944message local_fs {Sistema de archivos desmontado}
945message local_dir {Directorio Local} 945message local_dir {Directorio Local}
946message Select_your_distribution {Seleccione su distribución} 946message Select_your_distribution {Seleccione su distribución}
947message Full_installation {Instalación completa} 947message Full_installation {Instalación completa}
948message Full_installation_nox {Instalación sin X11} 948message Full_installation_nox {Instalación sin X11}
949message Minimal_installation {Instalación mínima} 949message Minimal_installation {Instalación mínima}
950message Custom_installation {Instalación personalizada} 950message Custom_installation {Instalación personalizada}
951message hidden {** oculto **} 951message hidden {** oculto **}
952message Host {Máquina} 952message Host {Máquina}
953message Base_dir {Directorio base} 953message Base_dir {Directorio base}
954message Set_dir_src {Directorio de conjuntos binary} /* fix XLAT */ 954message Set_dir_src {Directorio de conjuntos binary} /* fix XLAT */
955message Set_dir_bin {Directorio de conjuntos source} /* fix XLAT */ 955message Set_dir_bin {Directorio de conjuntos source} /* fix XLAT */
956message Xfer_dir {Directorio a transferir a} 956message Xfer_dir {Directorio a transferir a}
957message User {Usuario} 957message User {Usuario}
958message Password {Contraseña} 958message Password {Contraseña}
959message Proxy {Proxy} 959message Proxy {Proxy}
960message Get_Distribution {Obtener la distribución} 960message Get_Distribution {Obtener la distribución}
961message Continue {Continuar} 961message Continue {Continuar}
962message What_do_you_want_to_do {¿Qué desea hacer?} 962message What_do_you_want_to_do {¿Qué desea hacer?}
963message Try_again {Reintentar} 963message Try_again {Reintentar}
964message Set_finished {Conjunto finalizado} 964message Set_finished {Conjunto finalizado}
965message Skip_set {Omitir conjunto} 965message Skip_set {Omitir conjunto}
966message Skip_group {Omitir grupo de conjuntos} 966message Skip_group {Omitir grupo de conjuntos}
967message Abandon {Abandonar instalación} 967message Abandon {Abandonar instalación}
968message Abort_fetch {Abortar lectura} 968message Abort_fetch {Abortar lectura}
969message Device {Dispositivo} 969message Device {Dispositivo}
970message File_system {Sistema de archivos} 970message File_system {Sistema de archivos}
971message Select_DNS_server { Seleccione servidor DNS} 971message Select_DNS_server { Seleccione servidor DNS}
972message other {otro } 972message other {otro }
973message Perform_autoconfiguration {¿Realizar autoconfiguración ?} 973message Perform_autoconfiguration {¿Realizar autoconfiguración ?}
974message Root_shell {Shell de root} 974message Root_shell {Shell de root}
975message Color_scheme {Combinación de colores} 975message Color_scheme {Combinación de colores}
976message White_on_black {Blanco sobre negro} 976message White_on_black {Blanco sobre negro}
977message Black_on_white {Negro sobre blanco} 977message Black_on_white {Negro sobre blanco}
978message White_on_blue {Blanco sobre azul} 978message White_on_blue {Blanco sobre azul}
979message Green_on_black {Verde sobre negro} 979message Green_on_black {Verde sobre negro}
980message User_shell {Shell de user} 980message User_shell {Shell de user}
981 981
982.if AOUT2ELF 982.if AOUT2ELF
983message aoutfail 983message aoutfail
984{No se ha podido crear el directorio al que deberían moverse las bibliotecas 984{No se ha podido crear el directorio al que deberían moverse las bibliotecas
985compartidas a.out antiguas. Por favor, intente el proceso de actualización 985compartidas a.out antiguas. Por favor, intente el proceso de actualización
986de nuevo y asegúrese de que ha montado todos los sistemas de ficheros.} 986de nuevo y asegúrese de que ha montado todos los sistemas de ficheros.}
987 987
988message emulbackup 988message emulbackup
989{El directorio /emul/aout o /emul de su sistema era un enlace simbólico que 989{El directorio /emul/aout o /emul de su sistema era un enlace simbólico que
990apuntaba a un sistema de archivos desmontado. Se le ha dado la extension 990apuntaba a un sistema de archivos desmontado. Se le ha dado la extension
991'.old'. Cuando vuelva a arrancar su sistema actualizado, puede que necesite 991'.old'. Cuando vuelva a arrancar su sistema actualizado, puede que necesite
992preocuparse de fundir el directorio /emul/aout nuevamente creado con el viejo. 992preocuparse de fundir el directorio /emul/aout nuevamente creado con el viejo.
993} 993}
994.endif 994.endif
995 995
996.if xxxx 996.if xxxx
997Si no está preparado para completar la 997Si no está preparado para completar la
998instalación en este momento, puede seleccionar «ninguno» y será retornado 998instalación en este momento, puede seleccionar «ninguno» y será retornado
999al menú principal. Cuando más adelante esté preparado, deberá seleccionar 999al menú principal. Cuando más adelante esté preparado, deberá seleccionar
1000«actualizar» desde el menú principal para completar la instalación. 1000«actualizar» desde el menú principal para completar la instalación.
1001 1001
1002message cdrombadmount 1002message cdrombadmount
1003{No se ha podido montar el CDROM /dev/%s.} 1003{No se ha podido montar el CDROM /dev/%s.}
1004 1004
1005message localfsbadmount 1005message localfsbadmount
1006{No se ha podido montar %s en el dispositivo local %s.} 1006{No se ha podido montar %s en el dispositivo local %s.}
1007.endif 1007.endif
1008 1008
1009message oldsendmail 1009message oldsendmail
1010{Sendmail ya no está disponible en esta versión de NetBSD; el MTA por defecto 1010{Sendmail ya no está disponible en esta versión de NetBSD; el MTA por defecto
1011es ahora postfix. El fichero /etc/mailer.conf aún está configurado para usar 1011es ahora postfix. El fichero /etc/mailer.conf aún está configurado para usar
1012el sendmail eliminado. ¿Desea actualizar el fichero /etc/mailer.conf 1012el sendmail eliminado. ¿Desea actualizar el fichero /etc/mailer.conf
1013automáticamente para que apunte a postfix? Si escoge "No" tendrá que 1013automáticamente para que apunte a postfix? Si escoge "No" tendrá que
1014actualizar /etc/mailer.conf usted mismo para asegurarse de que los mensajes 1014actualizar /etc/mailer.conf usted mismo para asegurarse de que los mensajes
1015de correo electrónico se envíen correctamente.} 1015de correo electrónico se envíen correctamente.}
1016 1016
1017message license 1017message license
1018{Para usar la interfaz de red %s, debe de aceptar la licencia en el archivo %s. 1018{Para usar la interfaz de red %s, debe de aceptar la licencia en el archivo %s.
1019Para ver este archivo ahora, pulse ^Z, mire el contendido del archivo, y luego 1019Para ver este archivo ahora, pulse ^Z, mire el contendido del archivo, y luego
1020teclee "fg" para continuar la instalación.} 1020teclee "fg" para continuar la instalación.}
1021 1021
1022message binpkg 1022message binpkg
1023{Para configurar el sistema de paquetes binários, por favor escoja el 1023{Para configurar el sistema de paquetes binários, por favor escoja el
1024sitio de red desde el cual descargar los paquetes. Una vez el sistema 1024sitio de red desde el cual descargar los paquetes. Una vez el sistema
1025arranque, puede usar 'pkgin' para instalar paquetes adicionales, o 1025arranque, puede usar 'pkgin' para instalar paquetes adicionales, o
1026eliminar paquetes ya instalados.} 1026eliminar paquetes ya instalados.}
1027  1027
1028message pkgpath 1028message pkgpath
1029{Las siguientes entradas representan el protocolo, la máquina, el 1029{Las siguientes entradas representan el protocolo, la máquina, el
1030directorio, el usuario y la contraseña que se usarán. Si el "usuario" 1030directorio, el usuario y la contraseña que se usarán. Si el "usuario"
1031es "ftp", entonces la contraseña es opcional. 1031es "ftp", entonces la contraseña es opcional.
1032 1032
1033} 1033}
1034message rcconf_backup_failed 1034message rcconf_backup_failed
1035{Error al intentar hacer una cópia de seguridad de rc.conf. ¿Desea continuar?} 1035{Error al intentar hacer una cópia de seguridad de rc.conf. ¿Desea continuar?}
1036message rcconf_backup_succeeded 1036message rcconf_backup_succeeded
1037{La cópia de seguridad de rc.conf se ha guardado en %s.} 1037{La cópia de seguridad de rc.conf se ha guardado en %s.}
1038message rcconf_restore_failed 1038message rcconf_restore_failed
1039{La recuperación de rc.conf desde su cópia de seguridad ha fallado.} 1039{La recuperación de rc.conf desde su cópia de seguridad ha fallado.}
1040message rcconf_delete_failed {La eliminación del viejo %s ha fallado.} 1040message rcconf_delete_failed {La eliminación del viejo %s ha fallado.}
1041message Pkg_dir {Directorio del paquete} 1041message Pkg_dir {Directorio del paquete}
1042message configure_prior {configure a prior installation of} 1042message configure_prior {configure a prior installation of}
1043message configure {Configurar} 1043message configure {Configurar}
1044message change {Cambiar} 1044message change {Cambiar}
1045message password_set {Contraseña configurada} 1045message password_set {Contraseña configurada}
1046message YES {SI} 1046message YES {SI}
1047message NO {NO} 1047message NO {NO}
1048message DONE {HECHO} 1048message DONE {HECHO}
1049message abandoned {Abandonado} 1049message abandoned {Abandonado}
1050message empty {***VACÍO***} 1050message empty {***VACÍO***}
1051message timezone {Zona horaria} 1051message timezone {Zona horaria}
1052message change_rootpw {Cambiar la contraseña de root} 1052message change_rootpw {Cambiar la contraseña de root}
1053message enable_binpkg {Activar la instalación de paquetes binarios} 1053message enable_binpkg {Activar la instalación de paquetes binarios}
1054message enable_sshd {Activar sshd} 1054message enable_sshd {Activar sshd}
1055message enable_ntpd {Activar ntpd} 1055message enable_ntpd {Activar ntpd}
1056message run_ntpdate {Ejecutar ntpdate durante el arranque} 1056message run_ntpdate {Ejecutar ntpdate durante el arranque}
1057message enable_mdnsd {Activar mdnsd} 1057message enable_mdnsd {Activar mdnsd}
1058message enable_xdm {Enable xdm} 1058message enable_xdm {Enable xdm}
1059message enable_cgd {Enable cgd} 1059message enable_cgd {Enable cgd}
1060message enable_lvm {Enable lvm} 1060message enable_lvm {Enable lvm}
1061message enable_raid {Enable raidframe} 1061message enable_raid {Enable raidframe}
1062message add_a_user {Add a user} 1062message add_a_user {Add a user}
1063message configmenu {Configurar elementos adicionales bajo demanda.} 1063message configmenu {Configurar elementos adicionales bajo demanda.}
1064message doneconfig {Terminar configuración} 1064message doneconfig {Terminar configuración}
1065message Install_pkgin {Instalar pkgin y actualizar la lista de paquetes} 1065message Install_pkgin {Instalar pkgin y actualizar la lista de paquetes}
1066message binpkg_installed  1066message binpkg_installed
1067{El sistema se ha configurado para usar pkgin para instalar paquetes 1067{El sistema se ha configurado para usar pkgin para instalar paquetes
1068binarios. Para instalar un paquete, ejecute: 1068binarios. Para instalar un paquete, ejecute:
1069 1069
1070pkgin install <nombre_del_paquete> 1070pkgin install <nombre_del_paquete>
1071 1071
1072desde una línea de comandos de root. Lea la página de manual pkgin(1) 1072desde una línea de comandos de root. Lea la página de manual pkgin(1)
1073para más detalles.} 1073para más detalles.}
1074message Install_pkgsrc {Descargar y desempaquetar pkgsrc} 1074message Install_pkgsrc {Descargar y desempaquetar pkgsrc}
1075message pkgsrc 1075message pkgsrc
1076{La instalación de pkgsrc necesita desempaquetar un archivo descargado 1076{La instalación de pkgsrc necesita desempaquetar un archivo descargado
1077desde la red. 1077desde la red.
1078Las siguientes entradas corresponden a la máquina, directorio, usuario 1078Las siguientes entradas corresponden a la máquina, directorio, usuario
1079y contraseña a usar para la conexión. Si "usuario" es "ftp", entonces 1079y contraseña a usar para la conexión. Si "usuario" es "ftp", entonces
1080la contraseña es opcional. 1080la contraseña es opcional.
1081 1081
1082} 1082}
1083message Pkgsrc_dir {Directorio de pkgsrc} 1083message Pkgsrc_dir {Directorio de pkgsrc}
1084message get_pkgsrc 1084message get_pkgsrc
1085{Descargar y desempaquetar pkgsrc para compilar desde código fuente} 1085{Descargar y desempaquetar pkgsrc para compilar desde código fuente}
1086message retry_pkgsrc_network 1086message retry_pkgsrc_network
1087{La configuración de la red ha fallado. ¿Reintentar?} 1087{La configuración de la red ha fallado. ¿Reintentar?}
1088message quit_pkgsrc {Salir sin instalar pkgsrc} 1088message quit_pkgsrc {Salir sin instalar pkgsrc}
1089message quit_pkgs_install {Salir sin instalar bin pkg} 1089message quit_pkgs_install {Salir sin instalar bin pkg}
1090message pkgin_failed  1090message pkgin_failed
1091{La instalación de pkgin ha fallado, posiblemente porque no existen 1091{La instalación de pkgin ha fallado, posiblemente porque no existen
1092paquetes binarios. Por favor verifique el camino a los paquetes y 1092paquetes binarios. Por favor verifique el camino a los paquetes y
1093reinténtelo de nuevo.} 1093reinténtelo de nuevo.}
1094message failed {Error} 1094message failed {Error}
1095 1095
1096message notsupported {Operación no admitida!} 1096message notsupported {Operación no admitida!}
1097message askfsmountadv {Punto de montaje o 'raid' o 'CGD' o 'lvm'?} 1097message askfsmountadv {Punto de montaje o 'raid' o 'CGD' o 'lvm'?}
1098message partman {Partición extendida} 1098message partman {Partición extendida}
1099message editbsdpart {Editar particiones BSD} 1099message editbsdpart {Editar particiones BSD}
1100message editmbr {Editar y guardar MBR} 1100message editmbr {Editar y guardar MBR}
1101message switchgpt {Cambiar a GPT} 1101message switchgpt {Cambiar a GPT}
1102message switchmbr {Cambiar a MBR} 1102message switchmbr {Cambiar a MBR}
1103message renamedisk {Establece el nombre del disco} 1103message renamedisk {Establece el nombre del disco}
1104message fmtasraid {Formato como RAID} 1104message fmtasraid {Formato como RAID}
1105message fmtaslvm {Formato como LVM PV} 1105message fmtaslvm {Formato como LVM PV}
1106message encrypt {Cifrar} 1106message encrypt {Cifrar}
1107message setbootable {La bandera de arranque} 1107message setbootable {La bandera de arranque}
1108message erase {Borrado seguro} 1108message erase {Borrado seguro}
1109message undo {Deshacer los cambios} 1109message undo {Deshacer los cambios}
1110message unconfig {Desconfigurar} 1110message unconfig {Desconfigurar}
1111message edit {Editar} 1111message edit {Editar}
1112message doumount {Fuerza umount} 1112message doumount {Fuerza umount}
1113message fillzeros {Llenar con ceros} 1113message fillzeros {Llenar con ceros}
1114message fillrandom {Llene los datos al azar} 1114message fillrandom {Llene los datos al azar}
1115message fillcrypto {Rellene los datos de cifrado} 1115message fillcrypto {Rellene los datos de cifrado}
1116message raid0 {0 - Sin paridad, creación de bandas sólo es simple.} 1116message raid0 {0 - Sin paridad, creación de bandas sólo es simple.}
1117message raid1 {1 - Creación de reflejos. La paridad es el espejo.} 1117message raid1 {1 - Creación de reflejos. La paridad es el espejo.}
1118message raid4 {4 - Striping con paridad almacenada en el último componente. component.} 1118message raid4 {4 - Striping con paridad almacenada en el último componente. component.}
1119message raid5 {5 - Striping con paridad en los componentes de todos. components.} 1119message raid5 {5 - Striping con paridad en los componentes de todos. components.}
1120 1120
1121message fremove {QUITAR} 1121message fremove {QUITAR}
1122message remove {Quitar} 1122message remove {Quitar}
1123message add {Añadir} 1123message add {Añadir}
1124message auto {auto} 1124message auto {auto}
1125 1125
1126message removepartswarn {Esta eliminar todas las particiones en el disco. ¿Desea continuar? want to continue?} 1126message removepartswarn {Esta eliminar todas las particiones en el disco. ¿Desea continuar? want to continue?}
1127message saveprompt {Guarde los cambios antes de terminar?} 1127message saveprompt {Guarde los cambios antes de terminar?}
1128message cantsave {Los cambios no se pueden guardar.} 1128message cantsave {Los cambios no se pueden guardar.}
1129message noroot {No hay una partición raíz definida, no puede continuar \n} 1129message noroot {No hay una partición raíz definida, no puede continuar \n}
1130message wannaunblock {El dispositivo está bloqueado. ¿Quiere forzar a desbloquear y continuar? unblock it and continue?} 1130message wannaunblock {El dispositivo está bloqueado. ¿Quiere forzar a desbloquear y continuar? unblock it and continue?}
1131message wannatry {¿Quieres probar?} 1131message wannatry {¿Quieres probar?}
1132message create_cgd {Crear cifrado de volumen (CGD)} 1132message create_cgd {Crear cifrado de volumen (CGD)}
1133message create_cnd {Crear imagen de disco virtual (VND)} 1133message create_cnd {Crear imagen de disco virtual (VND)}
1134message create_vg {Crear grupo de volúmenes (LVM VG)} 1134message create_vg {Crear grupo de volúmenes (LVM VG)}
1135message create_lv { Crear volúmenes lógicos} 1135message create_lv { Crear volúmenes lógicos}
1136message create_raid {Crear RAID por software} 1136message create_raid {Crear RAID por software}
1137message updpmlist {Actualizar lista de dispositivos} 1137message updpmlist {Actualizar lista de dispositivos}
1138message savepm {Guardar los cambios} 1138message savepm {Guardar los cambios}
1139message pmblocked {BLOQUEADO} 1139message pmblocked {BLOQUEADO}
1140message pmunchanged {SIN USO} 1140message pmunchanged {SIN USO}
1141message pmsetboot {ARRANCAR} 1141message pmsetboot {ARRANCAR}
1142message pmused {UTILIZA} 1142message pmused {UTILIZA}
1143message pmmounted {(montado)} 1143message pmmounted {(montado)}
1144message pmunused {(sin usar)} 1144message pmunused {(sin usar)}
1145message pmgptdisk {Disco con GPT} 1145message pmgptdisk {Disco con GPT}
1146 1146
1147message finishpm {Finalizar el particionado} 1147message finishpm {Finalizar el particionado}
1148message limitcount {Límite para el número de dispositivos se llegó!} 1148message limitcount {Límite para el número de dispositivos se llegó!}
1149message invaliddev {No válido dispositivo!} 1149message invaliddev {No válido dispositivo!}
1150message avdisks {Discos disponibles:} 1150message avdisks {Discos disponibles:}
1151message nofreedev {No se puede asignar nodo de dispositivo!} 1151message nofreedev {No se puede asignar nodo de dispositivo!}
1152message partman_header 1152message partman_header
1153{Partition Manager. Todos los discos, particiones y etc muestra allí. 1153{Partition Manager. Todos los discos, particiones y etc muestra allí.
1154Al principio, las particiones MBR hacen, a continuación, hacer etiquetas BSD. 1154Al principio, las particiones MBR hacen, a continuación, hacer etiquetas BSD.
1155Si desea utilizar RAID, LVM o CGD, siga estos pasos: 1155Si desea utilizar RAID, LVM o CGD, siga estos pasos:
11561) Crear particiones BSD con el tipo necesario; 11561) Crear particiones BSD con el tipo necesario;
11572) Crear RAID / LVM VG / CGD el uso de estas particiones; 3) Guárdalo; 11572) Crear RAID / LVM VG / CGD el uso de estas particiones; 3) Guárdalo;
11584) Crear particiones de volúmenes RAID / CGD o lógico de LVM.} 11584) Crear particiones de volúmenes RAID / CGD o lógico de LVM.}
1159 1159
1160message raid_menufmt { raid%d (nivel %1d) en %-34s %11uM} 1160message raid_menufmt { raid%d (nivel %1d) en %-34s %11uM}
1161message raid_err_menufmt { RAID VACIO!} 1161message raid_err_menufmt { RAID VACIO!}
1162message raid_disks_fmt {Discos: %32s} 1162message raid_disks_fmt {Discos: %32s}
1163message raid_spares_fmt {Piezas de recambio: %20s} 1163message raid_spares_fmt {Piezas de recambio: %20s}
1164message raid_level_fmt {RAID de nivel: %22d} 1164message raid_level_fmt {RAID de nivel: %22d}
1165message raid_numrow_fmt {numRow: %22d} 1165message raid_numrow_fmt {numRow: %22d}
1166message raid_numcol_fmt {numCol: %22d} 1166message raid_numcol_fmt {numCol: %22d}
1167message raid_numspare_fmt {numSpare: %22d} 1167message raid_numspare_fmt {numSpare: %22d}
1168message raid_sectpersu_fmt {sectPerSU: %22d} 1168message raid_sectpersu_fmt {sectPerSU: %22d}
1169message raid_superpar_fmt {SUsPerParityUnit: %22d} 1169message raid_superpar_fmt {SUsPerParityUnit: %22d}
1170message raid_superrec_fmt {SUsPerReconUnit: %22d} 1170message raid_superrec_fmt {SUsPerReconUnit: %22d}
1171message raid_nomultidim {Matrices multidimensionales no son compatibles!} 1171message raid_nomultidim {Matrices multidimensionales no son compatibles!}
1172message raid_numrow_ask {numRow?} 1172message raid_numrow_ask {numRow?}
1173message raid_numcol_ask {numCol?} 1173message raid_numcol_ask {numCol?}
1174message raid_numspare_ask {numSpare?} 1174message raid_numspare_ask {numSpare?}
1175message raid_sectpersu_ask {sectPerSU?} 1175message raid_sectpersu_ask {sectPerSU?}
1176message raid_superpar_ask {SUsPerParityUnit?} 1176message raid_superpar_ask {SUsPerParityUnit?}
1177message raid_superrec_ask {SUsPerReconUnit?} 1177message raid_superrec_ask {SUsPerReconUnit?}
1178message raid_disks {Los discos en RAID:} 1178message raid_disks {Los discos en RAID:}
1179message vnd_err_menufmt { CAMINO NO DEFINIDO!} 1179message vnd_err_menufmt { CAMINO NO DEFINIDO!}
1180message vnd_assgn_menufmt { vnd%1d en %-51s ASSIGN} 1180message vnd_assgn_menufmt { vnd%1d en %-51s ASSIGN}
1181message vnd_menufmt { vnd%1d en %-45s %11uM} 1181message vnd_menufmt { vnd%1d en %-45s %11uM}
1182message vnd_path_fmt {Ruta del archivo: %22s} 1182message vnd_path_fmt {Ruta del archivo: %22s}
1183message vnd_assgn_fmt {Create new image: %14s} 1183message vnd_assgn_fmt {Create new image: %14s}
1184message vnd_size_fmt {Tamaño: %22sM} 1184message vnd_size_fmt {Tamaño: %22sM}
1185message vnd_ro_fmt {Sólo lectura: %22s} 1185message vnd_ro_fmt {Sólo lectura: %22s}
1186message vnd_geom_fmt {Establecer la geometría de la mano: %4s} 1186message vnd_geom_fmt {Establecer la geometría de la mano: %4s}
1187message vnd_bps_fmt {Bytes por sector: %18s} 1187message vnd_bps_fmt {Bytes por sector: %18s}
1188message vnd_spt_fmt {Sectores por pista: %18s} 1188message vnd_spt_fmt {Sectores por pista: %18s}
1189message vnd_tpc_fmt {Pistas por cilindro: %18s} 1189message vnd_tpc_fmt {Pistas por cilindro: %18s}
1190message vnd_cyl_fmt {Cilindros: %22s} 1190message vnd_cyl_fmt {Cilindros: %22s}
1191message vnd_path_ask {Ruta de acceso?} 1191message vnd_path_ask {Ruta de acceso?}
1192message vnd_size_ask {Tamaño (MB)?} 1192message vnd_size_ask {Tamaño (MB)?}
1193message vnd_bps_ask {Bytes por sector?} 1193message vnd_bps_ask {Bytes por sector?}
1194message vnd_spt_ask {Sectores por pista?} 1194message vnd_spt_ask {Sectores por pista?}
1195message vnd_tpc_ask {Pistas por cilindro?} 1195message vnd_tpc_ask {Pistas por cilindro?}
1196message vnd_cyl_ask {Cilindros} 1196message vnd_cyl_ask {Cilindros}
1197message cgd_err_menufmt { DISCO NO SE DEFINE!} 1197message cgd_err_menufmt { DISCO NO SE DEFINE!}
1198message cgd_menufmt { cgd%1d %-48s %11uM} 1198message cgd_menufmt { cgd%1d %-48s %11uM}
1199message cgd_dev_fmt {Dispositivo de base: %19s} 1199message cgd_dev_fmt {Dispositivo de base: %19s}
1200message cgd_enc_fmt {Encriptación: %19s} 1200message cgd_enc_fmt {Encriptación: %19s}
1201message cgd_key_fmt {Tamaño de la clave: %19d} 1201message cgd_key_fmt {Tamaño de la clave: %19d}
1202message cgd_iv_fmt {Algoritmo IV: %19s} 1202message cgd_iv_fmt {Algoritmo IV: %19s}
1203message cgd_keygen_fmt {La generación de claves: %15s} 1203message cgd_keygen_fmt {La generación de claves: %15s}
1204message cgd_verif_fmt {Método de verificación: %15s} 1204message cgd_verif_fmt {Método de verificación: %15s}
1205message lvm_disks {Discos en VG:} 1205message lvm_disks {Discos en VG:}
1206message lvm_menufmt { %-44s %20sM} 1206message lvm_menufmt { %-44s %20sM}
1207message lvm_err_menufmt { VACIAR VG!} 1207message lvm_err_menufmt { VACIAR VG!}
1208message lvm_disks_fmt {PV's: %34s} 1208message lvm_disks_fmt {PV's: %34s}
1209message lvm_name_fmt {Nombre: %32s} 1209message lvm_name_fmt {Nombre: %32s}
1210message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} 1210message lvm_maxlv_fmt {MaxLogicalVolumes: %20s}
1211message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} 1211message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s}
1212message lvm_extsiz_fmt {PhysicalExtentSize: %20s} 1212message lvm_extsiz_fmt {PhysicalExtentSize: %20s}
1213message lvm_name_ask {Nombre?} 1213message lvm_name_ask {Nombre?}
1214message lvm_maxlv_ask {MaxLogicalVolumes?} 1214message lvm_maxlv_ask {MaxLogicalVolumes?}
1215message lvm_maxpv_ask {MaxPhysicalVolumes?} 1215message lvm_maxpv_ask {MaxPhysicalVolumes?}
1216message lvm_extsiz_ask {PhysicalExtentSize (MB)?} 1216message lvm_extsiz_ask {PhysicalExtentSize (MB)?}
1217message lvmlv_menufmt { El volumen lógico %-33s% 11uM} 1217message lvmlv_menufmt { El volumen lógico %-33s% 11uM}
1218message lvmlv_name_fmt {Nombre: %32s} 1218message lvmlv_name_fmt {Nombre: %32s}
1219message lvmlv_size_fmt {Tamaño: %31dM} 1219message lvmlv_size_fmt {Tamaño: %31dM}
1220message lvmlv_ro_fmt {Sólo lectura: %25s} 1220message lvmlv_ro_fmt {Sólo lectura: %25s}
1221message lvmlv_cont_fmt {Contigua: %25s} 1221message lvmlv_cont_fmt {Contigua: %25s}
1222message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} 1222message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s}
1223message lvmlv_minor_fmt {Menor número: %25s} 1223message lvmlv_minor_fmt {Menor número: %25s}
1224message lvmlv_mirrors_fmt {Espejos: %25d} 1224message lvmlv_mirrors_fmt {Espejos: %25d}
1225message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} 1225message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s}
1226message lvmlv_pers_fmt {Número de persistente menor: %11s} 1226message lvmlv_pers_fmt {Número de persistente menor: %11s}
1227message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} 1227message lvmlv_readahsect_fmt {ReadAheadSectors: %18s}
1228message lvmlv_stripes_fmt {Rayas: %25s} 1228message lvmlv_stripes_fmt {Rayas: %25s}
1229message lvmlv_stripesiz_fmt {Stripesize: %25s} 1229message lvmlv_stripesiz_fmt {Stripesize: %25s}
1230message lvmlv_zero_fmt {Puesta a cero de la primera KB: %8s} 1230message lvmlv_zero_fmt {Puesta a cero de la primera KB: %8s}
1231message lvmlv_name_ask {Nombre?} 1231message lvmlv_name_ask {Nombre?}
1232message lvmlv_size_ask {Tamaño (MB)?} 1232message lvmlv_size_ask {Tamaño (MB)?}
1233message lvmlv_extnum_ask {LogicalExtentsNumber?} 1233message lvmlv_extnum_ask {LogicalExtentsNumber?}
1234message lvmlv_minor_ask {Número menor de edad?} 1234message lvmlv_minor_ask {Número menor de edad?}
1235message lvmlv_mirrors_ask {Espejos?} 1235message lvmlv_mirrors_ask {Espejos?}
1236message lvmlv_regsiz_ask {MirrorLogRegionSize?} 1236message lvmlv_regsiz_ask {MirrorLogRegionSize?}
1237message lvmlv_readahsect_ask {ReadAheadSectors?} 1237message lvmlv_readahsect_ask {ReadAheadSectors?}
1238message lvmlv_stripes_ask {Rayas?} 1238message lvmlv_stripes_ask {Rayas?}
1239 1239
1240message addusername {8 character username to add} 1240message addusername {8 character username to add}
1241message addusertowheel {Do you wish to add this user to group wheel?} 1241message addusertowheel {Do you wish to add this user to group wheel?}
1242message Delete_partition 1242message Delete_partition
1243{Borrar partición} 1243{Borrar partición}
1244 1244
 1245
 1246message No_filesystem_newfs
 1247{The selected partition does not seem to have a valid file system.
 1248Do you want to newfs (format) it?}
 1249
 1250message Auto_add_swap_part
 1251{A swap partition (named %s) seems to exist on %s.
 1252Do you want to use that?}
 1253
 1254

cvs diff -r1.9 -r1.10 src/usr.sbin/sysinst/msg.mi.fr (switch to unified diff)

--- src/usr.sbin/sysinst/msg.mi.fr 2015/06/19 12:27:02 1.9
+++ src/usr.sbin/sysinst/msg.mi.fr 2018/06/03 13:16:30 1.10
@@ -1,1302 +1,1312 @@ @@ -1,1302 +1,1312 @@
1/* $NetBSD: msg.mi.fr,v 1.9 2015/06/19 12:27:02 youri Exp $ */ 1/* $NetBSD: msg.mi.fr,v 1.10 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc. 7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution. 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 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 18 * or promote products derived from this software without specific prior
19 * written permission. 19 * written permission.
20 * 20 *
21 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 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 22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 24 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 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 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 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 30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE. 31 * THE POSSIBILITY OF SUCH DAMAGE.
32 * 32 *
33 */ 33 */
34 34
35/* MI Message catalog -- french, machine independent */ 35/* MI Message catalog -- french, machine independent */
36 36
37message usage 37message usage
38{utilisation: sysinst [-D] [-f fichier_de_définition] [-r version] [-C bg:fg] 38{utilisation: sysinst [-D] [-f fichier_de_définition] [-r version] [-C bg:fg]
39} 39}
40 40
41/* 41/*
42 * We can not use non ascii characters in this message - it is displayed 42 * We can not use non ascii characters in this message - it is displayed
43 * before the locale is set up! 43 * before the locale is set up!
44 */ 44 */
45message sysinst_message_language 45message sysinst_message_language
46{Messages d'installation en français} 46{Messages d'installation en français}
47 47
48message sysinst_message_locale 48message sysinst_message_locale
49{fr_FR.ISO8859-15} 49{fr_FR.ISO8859-15}
50 50
51message Yes {Oui} 51message Yes {Oui}
52message No {Non} 52message No {Non}
53message All {Tous} 53message All {Tous}
54message Some {Une partie} 54message Some {Une partie}
55message None {Aucun} 55message None {Aucun}
56message none {aucun} 56message none {aucun}
57message OK {OK} 57message OK {OK}
58message ok {ok} 58message ok {ok}
59message unchanged {non-modifié} 59message unchanged {non-modifié}
60message On {On} 60message On {On}
61message Off {Off} 61message Off {Off}
62message Delete {Supprimer ?} 62message Delete {Supprimer ?}
63 63
64message install 64message install
65{installer} 65{installer}
66 66
67message reinstall 67message reinstall
68{réinstaller des composants de} 68{réinstaller des composants de}
69 69
70message upgrade 70message upgrade
71{mise à jour} 71{mise à jour}
72 72
73message hello 73message hello
74{Bienvenue dans Sysinst, l'outil d'installation de NetBSD-@@VERSION@@. 74{Bienvenue dans Sysinst, l'outil d'installation de NetBSD-@@VERSION@@.
75Cet utilitaire a été conçu pour vous aider à installer ou mettre à jour 75Cet utilitaire a été conçu pour vous aider à installer ou mettre à jour
76NetBSD sur votre disque dur avec un minimum de travail. 76NetBSD sur votre disque dur avec un minimum de travail.
77Dans les menus suivants, vous pourrez changer de sélection, soit en tapant la 77Dans les menus suivants, vous pourrez changer de sélection, soit en tapant la
78lettre en référence (a, b, c, d, ...) soit en utilisant les touches 78lettre en référence (a, b, c, d, ...) soit en utilisant les touches
79flèches du clavier. 79flèches du clavier.
80La sélection courante est activée en appuyant sur la touche Entrée. 80La sélection courante est activée en appuyant sur la touche Entrée.
81} 81}
82 82
83message thanks 83message thanks
84{Merci d'utiliser NetBSD ! 84{Merci d'utiliser NetBSD !
85} 85}
86 86
87message installusure 87message installusure
88{Vous avez choisi d'installer NetBSD sur votre disque dur. Ceci va changer les 88{Vous avez choisi d'installer NetBSD sur votre disque dur. Ceci va changer les
89informations contenues sur ce dernier. Vous devriez faire une sauvegarde 89informations contenues sur ce dernier. Vous devriez faire une sauvegarde
90complète de son contenu avant de poursuivre cette installation. Cette 90complète de son contenu avant de poursuivre cette installation. Cette
91procédure va effectuer les actions suivantes : 91procédure va effectuer les actions suivantes :
92 a) Partitionner votre disque dur. 92 a) Partitionner votre disque dur.
93 b) Créer de nouveaux systèmes de fichiers BSD. 93 b) Créer de nouveaux systèmes de fichiers BSD.
94 c) Installer les différents composants. 94 c) Installer les différents composants.
95 95
96(Une fois le partitionnement configuré, le système d'installation vous 96(Une fois le partitionnement configuré, le système d'installation vous
97demandera de confirmer avant d'appliquer toute modification sur votre 97demandera de confirmer avant d'appliquer toute modification sur votre
98disque dur.) 98disque dur.)
99 99
100Souhaitez-vous continuer ? 100Souhaitez-vous continuer ?
101} 101}
102 102
103message upgradeusure 103message upgradeusure
104{Mise à jour de NetBSD sur votre disque dur. 104{Mise à jour de NetBSD sur votre disque dur.
105Cela implique des modifications aux informations contenues 105Cela implique des modifications aux informations contenues
106sur votre disque dur. 106sur votre disque dur.
107Vous devriez faire une sauvegarde complète de celui-ci avant de 107Vous devriez faire une sauvegarde complète de celui-ci avant de
108continuer la procédure de mise à jour. 108continuer la procédure de mise à jour.
109Voulez-vous vraiment mettre à jour NetBSD ? 109Voulez-vous vraiment mettre à jour NetBSD ?
110(Ceci est le dernier avertissement avant que cette 110(Ceci est le dernier avertissement avant que cette
111procédure ne modifie votre disque.) 111procédure ne modifie votre disque.)
112} 112}
113 113
114message reinstallusure 114message reinstallusure
115{Les composants de NetBSD seront maintenant decompressés sur un disque dur 115{Les composants de NetBSD seront maintenant decompressés sur un disque dur
116démarrable. Cette procédure va rapatrier et décompresser les composants 116démarrable. Cette procédure va rapatrier et décompresser les composants
117sur un disque démarrable déjà partitionnné. Elle n'inscrit pas de "label" sur 117sur un disque démarrable déjà partitionnné. Elle n'inscrit pas de "label" sur
118le disque, n'installe pas de nouveaux secteurs d'amorçage et ne modifie 118le disque, n'installe pas de nouveaux secteurs d'amorçage et ne modifie
119pas les fichiers de configuration existants. (Quittez et choisissez `installer' 119pas les fichiers de configuration existants. (Quittez et choisissez `installer'
120ou `mettre à jour' si vous désirez ces options.) 120ou `mettre à jour' si vous désirez ces options.)
121Vous devriez déjà avoir fait une installation ou une mise à jour avant de 121Vous devriez déjà avoir fait une installation ou une mise à jour avant de
122démarrer cette procédure ! 122démarrer cette procédure !
123 123
124Voulez-vous réellement réinstaller les composants NetBSD ? 124Voulez-vous réellement réinstaller les composants NetBSD ?
125(Ceci est le dernier avertissement avant que cette procédure ne commence à 125(Ceci est le dernier avertissement avant que cette procédure ne commence à
126modifier vos disques.) 126modifier vos disques.)
127} 127}
128 128
129message mount_failed 129message mount_failed
130{Le montage du système de fichiers %s a échoué. Continuer ? 130{Le montage du système de fichiers %s a échoué. Continuer ?
131} 131}
132 132
133message nodisk 133message nodisk
134{Aucun disque utilisable par NetBSD n'a été trouvé. 134{Aucun disque utilisable par NetBSD n'a été trouvé.
135Retour au menu précédent. 135Retour au menu précédent.
136} 136}
137 137
138message onedisk 138message onedisk
139{Un seul disque a été trouvé : %s. Nous supposons que vous souhaitez 139{Un seul disque a été trouvé : %s. Nous supposons que vous souhaitez
140%s NetBSD sur ce dernier. 140%s NetBSD sur ce dernier.
141} 141}
142 142
143message ask_disk 143message ask_disk
144{Sur quel disque voulez-vous %s NetBSD ?} 144{Sur quel disque voulez-vous %s NetBSD ?}
145 145
146message Available_disks 146message Available_disks
147{Disques disponibles :} 147{Disques disponibles :}
148 148
149message heads 149message heads
150{têtes} 150{têtes}
151 151
152message sectors 152message sectors
153{secteurs} 153{secteurs}
154 154
155message fs_isize 155message fs_isize
156{taille moyenne de fichier (octets)} 156{taille moyenne de fichier (octets)}
157 157
158message mountpoint 158message mountpoint
159{point de montage (ou 'aucun')} 159{point de montage (ou 'aucun')}
160 160
161message cylname 161message cylname
162{cyl} 162{cyl}
163 163
164message secname 164message secname
165{sec} 165{sec}
166 166
167message megname 167message megname
168{Mo} 168{Mo}
169 169
170message layout 170message layout
171{NetBSD utilise un "disklabel" BSD pour diviser la portion du disque réservée à 171{NetBSD utilise un "disklabel" BSD pour diviser la portion du disque réservée à
172NetBSD en plusieurs partitions. Vous devez paramétrer ce dernier. 172NetBSD en plusieurs partitions. Vous devez paramétrer ce dernier.
173 173
174Vous pouvez utiliser un éditeur afin de préciser la taille des partitions 174Vous pouvez utiliser un éditeur afin de préciser la taille des partitions
175NetBSD, ou préserver la taille et le contenu des partitions existantes. 175NetBSD, ou préserver la taille et le contenu des partitions existantes.
176 176
177Vous aurez ensuite la possibilité d'éditer les champs du disklabel. 177Vous aurez ensuite la possibilité d'éditer les champs du disklabel.
178 178
179La taille allouée pour NetBSD sur votre disque est de %d Mo.  179La taille allouée pour NetBSD sur votre disque est de %d Mo.
180L'installation standard requiert au moins %d Mo.  180L'installation standard requiert au moins %d Mo.
181L'installation standard avec X requiert au moins %d Mo. 181L'installation standard avec X requiert au moins %d Mo.
182} 182}
183 183
184message Choose_your_size_specifier 184message Choose_your_size_specifier
185{Si vous choisissez "Mégaoctets", la taille sera le plus proche de votre 185{Si vous choisissez "Mégaoctets", la taille sera le plus proche de votre
186choix possible, arrondi au cylindre-près. 186choix possible, arrondi au cylindre-près.
187Si vous choisissez "Secteurs", vous pourrez choisir précisément 187Si vous choisissez "Secteurs", vous pourrez choisir précisément
188les tailles. 188les tailles.
189Sur les disques modernes, la taille réelle des cylindres est variable 189Sur les disques modernes, la taille réelle des cylindres est variable
190et il y a peu d'intérêt à aligner les partitions sur les cylindres. 190et il y a peu d'intérêt à aligner les partitions sur les cylindres.
191Pour les disques plus anciens, il est recommandé de choisir des tailles 191Pour les disques plus anciens, il est recommandé de choisir des tailles
192de partitions arrondies au cylindre-près, pour plus de performance. 192de partitions arrondies au cylindre-près, pour plus de performance.
193 193
194Choisissez l'unité d'espace disque désirée} 194Choisissez l'unité d'espace disque désirée}
195 195
196message ptnsizes 196message ptnsizes
197{Vous pouvez désormais modifier la taille des partitions système. 197{Vous pouvez désormais modifier la taille des partitions système.
198Par défaut, tout l'espace sera alloué à la partition racine principale, 198Par défaut, tout l'espace sera alloué à la partition racine principale,
199mais vous pouvez sous-diviser celle-ci en plusieurs 199mais vous pouvez sous-diviser celle-ci en plusieurs
200systèmes de fichiers. Exemples : /usr (fichiers système additionnels), 200systèmes de fichiers. Exemples : /usr (fichiers système additionnels),
201/var (fichiers des journaux, etc.) 201/var (fichiers des journaux, etc.)
202et /home (regroupant les répertoires utilisateurs). 202et /home (regroupant les répertoires utilisateurs).
203 203
204L'espace libre restant sera ajouté à la partition marquée par un '+'. 204L'espace libre restant sera ajouté à la partition marquée par un '+'.
205} 205}
206 206
207 207
208message ptnheaders 208message ptnheaders
209{ 209{
210 Mo Cylindres Secteurs Système de fichiers 210 Mo Cylindres Secteurs Système de fichiers
211} 211}
212 212
213message askfsmount 213message askfsmount
214{Point de montage ?} 214{Point de montage ?}
215 215
216message askfssize 216message askfssize
217{Taille pour %s en %s ?} 217{Taille pour %s en %s ?}
218 218
219message askunits 219message askunits
220{Changer d'unité (secteurs/cylindres/Mo)} 220{Changer d'unité (secteurs/cylindres/Mo)}
221 221
222message NetBSD_partition_cant_change 222message NetBSD_partition_cant_change
223{Partition de NetBSD} 223{Partition de NetBSD}
224 224
225message Whole_disk_cant_change 225message Whole_disk_cant_change
226{Totalité du disque} 226{Totalité du disque}
227 227
228message Boot_partition_cant_change 228message Boot_partition_cant_change
229{Partition de démarrage} 229{Partition de démarrage}
230 230
231message add_another_ptn 231message add_another_ptn
232{Ajouter manuellement une nouvelle partition} 232{Ajouter manuellement une nouvelle partition}
233 233
234message fssizesok 234message fssizesok
235{Taille de la partition acceptée. Libre : %d %s et %d partitions} 235{Taille de la partition acceptée. Libre : %d %s et %d partitions}
236 236
237message fssizesbad 237message fssizesbad
238{Réduire la taille de la partition de %d %s (%u secteurs).} 238{Réduire la taille de la partition de %d %s (%u secteurs).}
239 239
240message startoutsidedisk 240message startoutsidedisk
241{La valeur que vous avez spécifiée dépasse les limites du disque. 241{La valeur que vous avez spécifiée dépasse les limites du disque.
242} 242}
243 243
244message endoutsidedisk 244message endoutsidedisk
245{Avec cette valeur, la fin de la partition excède la limite du disque. 245{Avec cette valeur, la fin de la partition excède la limite du disque.
246La taille de la partition a été tronquée à %d %s. 246La taille de la partition a été tronquée à %d %s.
247} 247}
248 248
249message toobigdisklabel 249message toobigdisklabel
250{ 250{
251Ce disque est trop grand pour qu'une table de partition soit utilisée. 251Ce disque est trop grand pour qu'une table de partition soit utilisée.
252Il ne peut donc pas être utilisé en tant que disque démarrable ou 252Il ne peut donc pas être utilisé en tant que disque démarrable ou
253contenir la partition racine. 253contenir la partition racine.
254Il pourra cependant être utilisé sous NetBSD s'il est manuellement 254Il pourra cependant être utilisé sous NetBSD s'il est manuellement
255partitionné utilisant l'outil GPT(8). 255partitionné utilisant l'outil GPT(8).
256} 256}
257 257
258message fspart 258message fspart
259{Vos partitions NetBSD sont les suivantes : 259{Vos partitions NetBSD sont les suivantes :
260 260
261} 261}
262 262
263message fspart_header 263message fspart_header
264{ Début %3s Fin %3s Taille %3s Type Newfs Mount Point de montage 264{ Début %3s Fin %3s Taille %3s Type Newfs Mount Point de montage
265 --------- --------- ---------- ---------- ----- ----- ---------------- 265 --------- --------- ---------- ---------- ----- ----- ----------------
266} 266}
267 267
268message fspart_row 268message fspart_row
269{%9lu %9lu %10lu %-10s %-5s %-5s %s} 269{%9lu %9lu %10lu %-10s %-5s %-5s %s}
270 270
271message show_all_unused_partitions 271message show_all_unused_partitions
272{Afficher les partitions libres} 272{Afficher les partitions libres}
273 273
274message partition_sizes_ok 274message partition_sizes_ok
275{Taille et options des partitions valides} 275{Taille et options des partitions valides}
276 276
277message edfspart 277message edfspart
278{Vous devez d'abord préciser le type de système de fichiers (FS), 278{Vous devez d'abord préciser le type de système de fichiers (FS),
279puis les autres valeurs. 279puis les autres valeurs.
280 280
281Les valeurs actuelles pour la partition %c sont : 281Les valeurs actuelles pour la partition %c sont :
282 282
283 Mo cylindres secteurs 283 Mo cylindres secteurs
284 ------- --------- --------- 284 ------- --------- ---------
285 285
286} 286}
287 287
288message fstype_fmt 288message fstype_fmt
289{ type de système de fichiers : %9s} 289{ type de système de fichiers : %9s}
290 290
291message start_fmt 291message start_fmt
292{ début : %9u %8u%c %9u} 292{ début : %9u %8u%c %9u}
293 293
294message size_fmt 294message size_fmt
295{ taille : %9u %8u%c %9u} 295{ taille : %9u %8u%c %9u}
296 296
297message end_fmt 297message end_fmt
298{ fin : %9u %8u%c %9u} 298{ fin : %9u %8u%c %9u}
299 299
300message bsize_fmt 300message bsize_fmt
301{ taille de bloc : %9d bytes} 301{ taille de bloc : %9d bytes}
302 302
303message fsize_fmt 303message fsize_fmt
304{ taille de fragment : %9d bytes} 304{ taille de fragment : %9d bytes}
305 305
306message isize_fmt 306message isize_fmt
307{ taille moyenne de fichier : %9d bytes} 307{ taille moyenne de fichier : %9d bytes}
308message isize_fmt_dflt 308message isize_fmt_dflt
309{ taille moyenne de fichier : 4 fragments} 309{ taille moyenne de fichier : 4 fragments}
310 310
311message newfs_fmt 311message newfs_fmt
312{ formatage : %9s} 312{ formatage : %9s}
313 313
314message mount_fmt 314message mount_fmt
315{ montage : %9s} 315{ montage : %9s}
316 316
317message mount_options_fmt 317message mount_options_fmt
318{ options de montage : } 318{ options de montage : }
319 319
320message mountpt_fmt 320message mountpt_fmt
321{ Pt de montage : %9s} 321{ Pt de montage : %9s}
322 322
323message toggle 323message toggle
324{Basculer} 324{Basculer}
325 325
326message restore 326message restore
327{Restaurer les valeurs initiales} 327{Restaurer les valeurs initiales}
328 328
329message Select_the_type 329message Select_the_type
330{Sélection du type de système de fichiers} 330{Sélection du type de système de fichiers}
331 331
332message other_types 332message other_types
333{autres types} 333{autres types}
334 334
335message label_size 335message label_size
336{%s 336{%s
337Valeurs spéciales pouvant être utilisées pour définir la taille de la partition : 337Valeurs spéciales pouvant être utilisées pour définir la taille de la partition :
338 -1 : Utiliser jusqu'à la fin de la partie NetBSD du disque 338 -1 : Utiliser jusqu'à la fin de la partie NetBSD du disque
339 a-%c : Terminer cette partition où la partition X débute 339 a-%c : Terminer cette partition où la partition X débute
340 340
341taille (%s)} 341taille (%s)}
342 342
343message label_offset 343message label_offset
344{%s 344{%s
345Valeurs spéciales pouvant être utilisées pour définir le début de la partition : 345Valeurs spéciales pouvant être utilisées pour définir le début de la partition :
346 -1 : Commencer au début de la partie NetBSD du disque 346 -1 : Commencer au début de la partie NetBSD du disque
347 a-%c : Commencer à la suite de la partition précédente (a ... %c) 347 a-%c : Commencer à la suite de la partition précédente (a ... %c)
348 348
349début (%s)} 349début (%s)}
350 350
351message invalid_sector_number 351message invalid_sector_number
352{nombre de secteurs invalide 352{nombre de secteurs invalide
353} 353}
354 354
355message Select_file_system_block_size 355message Select_file_system_block_size
356{Sélectionnez la taille de bloc du système de fichiers} 356{Sélectionnez la taille de bloc du système de fichiers}
357 357
358message Select_file_system_fragment_size 358message Select_file_system_fragment_size
359{Sélectionnez la taille de fragment du système de fichiers} 359{Sélectionnez la taille de fragment du système de fichiers}
360 360
361message packname 361message packname
362{Veuillez donner un nom à votre disque.} 362{Veuillez donner un nom à votre disque.}
363 363
364message lastchance 364message lastchance
365{Nous sommes prêts à installer NetBSD sur votre disque (%s). 365{Nous sommes prêts à installer NetBSD sur votre disque (%s).
366Aucune modification n'a été effectuée pour l'instant. 366Aucune modification n'a été effectuée pour l'instant.
367Ceci est votre dernière opportunité pour quitter cette 367Ceci est votre dernière opportunité pour quitter cette
368procédure en laissant votre disque intact. 368procédure en laissant votre disque intact.
369 369
370Souhaitez-vous vraiment continuer ? 370Souhaitez-vous vraiment continuer ?
371} 371}
372 372
373message disksetupdone 373message disksetupdone
374{La première partie de la procédure est terminée. 374{La première partie de la procédure est terminée.
375Sysinst a écrit vos nouvelles partitions sur votre disque, 375Sysinst a écrit vos nouvelles partitions sur votre disque,
376puis a procédé à la vérification de leur intégrité (via fsck). 376puis a procédé à la vérification de leur intégrité (via fsck).
377} 377}
378 378
379message disksetupdoneupdate 379message disksetupdoneupdate
380{La première partie de la procédure est terminée. 380{La première partie de la procédure est terminée.
381Sysinst a écrit vos nouvelles partitions sur votre disque, 381Sysinst a écrit vos nouvelles partitions sur votre disque,
382puis a procédé à la vérification de leur intégrité (via fsck). 382puis a procédé à la vérification de leur intégrité (via fsck).
383} 383}
384 384
385message openfail 385message openfail
386{Impossible d'ouvrir %s. Message d'erreur obtenu : %s. 386{Impossible d'ouvrir %s. Message d'erreur obtenu : %s.
387} 387}
388 388
389message mountfail 389message mountfail
390{Le montage de /dev/%s%c sur %s a échoué. 390{Le montage de /dev/%s%c sur %s a échoué.
391} 391}
392 392
393message extractcomplete 393message extractcomplete
394{L'extraction des composants sélectionnés de NetBSD-@@VERSION@@ 394{L'extraction des composants sélectionnés de NetBSD-@@VERSION@@
395est complète. 395est complète.
396Le système peut désormais démarrer directement depuis le disque. 396Le système peut désormais démarrer directement depuis le disque.
397Pour compléter l'installation, Sysinst va maintenant vous 397Pour compléter l'installation, Sysinst va maintenant vous
398permettre d'effectuer quelques réglages essentiels. 398permettre d'effectuer quelques réglages essentiels.
399} 399}
400 400
401message instcomplete 401message instcomplete
402{L'installation de NetBSD-@@VERSION@@ est terminée. L'ordinateur va 402{L'installation de NetBSD-@@VERSION@@ est terminée. L'ordinateur va
403redémarrer depuis le disque dur. Veuillez consulter le document 403redémarrer depuis le disque dur. Veuillez consulter le document
404d'installation (INSTALL) pour apprendre à bien configurer votre 404d'installation (INSTALL) pour apprendre à bien configurer votre
405système. 405système.
406 406
407Nous vous recommandons au minimum de configurer le mot de passe 407Nous vous recommandons au minimum de configurer le mot de passe
408du compte root et de paramétrer /etc/rc.conf selon vos besoins. 408du compte root et de paramétrer /etc/rc.conf selon vos besoins.
409Consultez les manuels rc.conf(5), afterboot(8) et security(7) 409Consultez les manuels rc.conf(5), afterboot(8) et security(7)
410au besoin. 410au besoin.
411} 411}
412 412
413message unpackcomplete 413message unpackcomplete
414{La mise à jour de NetBSD-@@VERSION@@ est terminée. 414{La mise à jour de NetBSD-@@VERSION@@ est terminée.
415Veuillez consulter le document d'installation (INSTALL) pour apprendre 415Veuillez consulter le document d'installation (INSTALL) pour apprendre
416à bien configurer votre système. 416à bien configurer votre système.
417 417
418Vous devez éditer /etc/rc.conf et ajouter la ligne 418Vous devez éditer /etc/rc.conf et ajouter la ligne
419"RC_CONFIGURED=yes" pour redémarrer en mode multi-utilisateur. 419"RC_CONFIGURED=yes" pour redémarrer en mode multi-utilisateur.
420} 420}
421 421
422message upgrcomplete 422message upgrcomplete
423{L'installation des composants supplémentaires de NetBSD-@@VERSION@@ est 423{L'installation des composants supplémentaires de NetBSD-@@VERSION@@ est
424terminée. 424terminée.
425Veuillez consulter le document d'installation (INSTALL) pour apprendre 425Veuillez consulter le document d'installation (INSTALL) pour apprendre
426à bien configurer votre système. 426à bien configurer votre système.
427 427
428Vous devez éditer /etc/rc.conf et ajouter la ligne 428Vous devez éditer /etc/rc.conf et ajouter la ligne
429"RC_CONFIGURED=yes" pour redémarrer en mode multi-utilisateur. 429"RC_CONFIGURED=yes" pour redémarrer en mode multi-utilisateur.
430} 430}
431 431
432message distmedium 432message distmedium
433{Votre disque est maintenant prêt à recevoir le coeur du système 433{Votre disque est maintenant prêt à recevoir le coeur du système
434et ses différents composants annexes. Comme indiqué dans le document 434et ses différents composants annexes. Comme indiqué dans le document
435d'installation, vous avez plusieurs possibilités. Pour une installation via 435d'installation, vous avez plusieurs possibilités. Pour une installation via
436NFS ou FTP, vous devez être connecté à un réseau et avoir accès au serveur 436NFS ou FTP, vous devez être connecté à un réseau et avoir accès au serveur
437requis. 437requis.
438 438
439Composant sélectionné : %d, traité : %d. Prochain composant : %s. 439Composant sélectionné : %d, traité : %d. Prochain composant : %s.
440 440
441} 441}
442 442
443message distset 443message distset
444{La distribution de NetBSD est divisée en plusieurs composants. 444{La distribution de NetBSD est divisée en plusieurs composants.
445Certains sont indispensables. 445Certains sont indispensables.
446Trois types d'installations vous sont proposés : complète, minimale ou 446Trois types d'installations vous sont proposés : complète, minimale ou
447personnalisée. 447personnalisée.
448} 448}
449 449
450message ftpsource 450message ftpsource
451{Voici la configuration actuelle pour : nom du site (%s), répertoire, nom 451{Voici la configuration actuelle pour : nom du site (%s), répertoire, nom
452d'utilisateur et mot de passe. 452d'utilisateur et mot de passe.
453Si vous utilisez le mode FTP, le mot de passe n'est pas requis. 453Si vous utilisez le mode FTP, le mot de passe n'est pas requis.
454Le répertoire contenant les composants doit être défini par 454Le répertoire contenant les composants doit être défini par
455rapport au répertoire de base, et contenir chaque composant sous 455rapport au répertoire de base, et contenir chaque composant sous
456la forme de fichiers .tgz 456la forme de fichiers .tgz
457 457
458} 458}
459 459
460message email 460message email
461{adresse de courriel} 461{adresse de courriel}
462 462
463message dev 463message dev
464{périphérique} 464{périphérique}
465 465
466message nfssource 466message nfssource
467{Veuillez indiquer le nom du serveur NFS ainsi que le répertoire contenant 467{Veuillez indiquer le nom du serveur NFS ainsi que le répertoire contenant
468les fichiers d'installation. 468les fichiers d'installation.
469Ce répertoire doit être exporté via NFS, et contenir ces fichiers 469Ce répertoire doit être exporté via NFS, et contenir ces fichiers
470à sa racine même. 470à sa racine même.
471 471
472} 472}
473 473
474message floppysource 474message floppysource
475{Veuillez spécifier le nom du lecteur de disquette à utiliser. 475{Veuillez spécifier le nom du lecteur de disquette à utiliser.
476Les fichiers d'installation devront se trouver à la racine 476Les fichiers d'installation devront se trouver à la racine
477de chaque disquette. 477de chaque disquette.
478 478
479} 479}
480 480
481message cdromsource 481message cdromsource
482{Veuillez spécifier le nom du lecteur CD-ROM à utiliser, 482{Veuillez spécifier le nom du lecteur CD-ROM à utiliser,
483ainsi que le nom du répertoire contenant les fichiers d'installation. 483ainsi que le nom du répertoire contenant les fichiers d'installation.
484Ils doivent être placés à sa racine, sous la forme de fichiers 484Ils doivent être placés à sa racine, sous la forme de fichiers
485tgz. 485tgz.
486 486
487} 487}
488 488
489 489
490message Available_cds 490message Available_cds
491{CD-ROM disponibles} 491{CD-ROM disponibles}
492 492
493message ask_cd 493message ask_cd
494{Plusieurs CD-ROM ont été trouvés. Sélectionnez celui contenant le système 494{Plusieurs CD-ROM ont été trouvés. Sélectionnez celui contenant le système
495d'installation de NetBSD.} 495d'installation de NetBSD.}
496 496
497message cd_path_not_found 497message cd_path_not_found
498{Les archives d'installation ne peuvent être trouvées à l'emplacement spécifié 498{Les archives d'installation ne peuvent être trouvées à l'emplacement spécifié
499sur ce CD-ROM. Assurez-vous que le périphérique et le chemin sont les bons.} 499sur ce CD-ROM. Assurez-vous que le périphérique et le chemin sont les bons.}
500 500
501message localfssource 501message localfssource
502{Veuillez spécifier le nom du périphérique local (qui ne doit pas 502{Veuillez spécifier le nom du périphérique local (qui ne doit pas
503être monté) à utiliser. Ce dernier doit contenir les fichiers 503être monté) à utiliser. Ce dernier doit contenir les fichiers
504d'installation à sa racine, sous la forme de fichiers tgz. 504d'installation à sa racine, sous la forme de fichiers tgz.
505 505
506} 506}
507 507
508message localdir 508message localdir
509{Veuillez spécificer le nom du répertoire local (déjà monté) 509{Veuillez spécificer le nom du répertoire local (déjà monté)
510où se trouvent les fichiers d'installation. Ils doivent se trouver 510où se trouvent les fichiers d'installation. Ils doivent se trouver
511à la racine du répertoire, sous la forme de fichiers tgz. 511à la racine du répertoire, sous la forme de fichiers tgz.
512 512
513} 513}
514 514
515message filesys 515message filesys
516{système de fichiers} 516{système de fichiers}
517 517
518message nonet 518message nonet
519{Aucune interface réseau utilisable n'a été trouvée. 519{Aucune interface réseau utilisable n'a été trouvée.
520Retour au menu précédent. 520Retour au menu précédent.
521} 521}
522 522
523message netup 523message netup
524{Les interfaces réseau suivantes sont utilisables : %s 524{Les interfaces réseau suivantes sont utilisables : %s
525Quelle interface souhaitez-vous utiliser ? 525Quelle interface souhaitez-vous utiliser ?
526} 526}
527 527
528message asknetdev 528message asknetdev
529{Quelle interface doit être utilisée ?} 529{Quelle interface doit être utilisée ?}
530 530
531message netdevs 531message netdevs
532{Interfaces disponibles} 532{Interfaces disponibles}
533 533
534message netinfo 534message netinfo
535{Veuillez répondre aux points suivants afin de pouvoir utiliser 535{Veuillez répondre aux points suivants afin de pouvoir utiliser
536votre interface réseau : 536votre interface réseau :
537 537
538} 538}
539 539
540message net_domain 540message net_domain
541{Votre nom de domaine} 541{Votre nom de domaine}
542 542
543message net_host 543message net_host
544{Votre nom d'ordinateur} 544{Votre nom d'ordinateur}
545 545
546message net_ip 546message net_ip
547{Votre adresse IPv4} 547{Votre adresse IPv4}
548 548
549message net_srv_ip 549message net_srv_ip
550{Adresse IPv4 du serveur} 550{Adresse IPv4 du serveur}
551 551
552message net_mask 552message net_mask
553{Votre masque de réseau (IPv4)} 553{Votre masque de réseau (IPv4)}
554 554
555message net_namesrv 555message net_namesrv
556{Adresse IPv4 de votre serveur de noms (DNS)} 556{Adresse IPv4 de votre serveur de noms (DNS)}
557 557
558message net_defroute 558message net_defroute
559{Adresse IPv4 de votre passerelle} 559{Adresse IPv4 de votre passerelle}
560 560
561message net_media 561message net_media
562{Type de réseau (média)} 562{Type de réseau (média)}
563 563
564message netok 564message netok
565{Vous avez spécifié les valeurs suivantes : 565{Vous avez spécifié les valeurs suivantes :
566 566
567Nom de domaine (DNS) : %s  567Nom de domaine (DNS) : %s
568Nom d'ordinateur : %s  568Nom d'ordinateur : %s
569Adresse du serveur de noms : %s  569Adresse du serveur de noms : %s
570Interface réseau : %s  570Interface réseau : %s
571Type de réseau (média) %s  571Type de réseau (média) %s
572Adresse IPv4 : %s  572Adresse IPv4 : %s
573Masque de sous-réseau : %s  573Masque de sous-réseau : %s
574Adresse IPv4 de la passerelle : %s  574Adresse IPv4 de la passerelle : %s
575} 575}
576 576
577message netok_slip 577message netok_slip
578{Vous avez spécifié les valeurs suivantes. Êtes-vous d'accord ? 578{Vous avez spécifié les valeurs suivantes. Êtes-vous d'accord ?
579 579
580Nom de domaine (DNS) : %s  580Nom de domaine (DNS) : %s
581Nom d'ordinateur : %s  581Nom d'ordinateur : %s
582Adresse du serveur de noms : %s  582Adresse du serveur de noms : %s
583Interface réseau : %s  583Interface réseau : %s
584Type de réseau (média) : %s  584Type de réseau (média) : %s
585Adresse IPv4 : %s  585Adresse IPv4 : %s
586Adresse IPv4 du serveur : %s  586Adresse IPv4 du serveur : %s
587Masque de sous-réseau : %s  587Masque de sous-réseau : %s
588Adresse IPv4 de la passerelle : %s  588Adresse IPv4 de la passerelle : %s
589} 589}
590 590
591message netokv6 591message netokv6
592{Auto-configuration IPv6 : %s  592{Auto-configuration IPv6 : %s
593} 593}
594 594
595message netok_ok 595message netok_ok
596{Les valeurs sont-elles correctes ?} 596{Les valeurs sont-elles correctes ?}
597 597
598message slattach { 598message slattach {
599Entrez les "flags" slattach 599Entrez les "flags" slattach
600} 600}
601 601
602message wait_network 602message wait_network
603{ 603{
604Veuillez patienter pendant la configuration de l'interface... 604Veuillez patienter pendant la configuration de l'interface...
605} 605}
606 606
607message resolv 607message resolv
608{ 608{
609Impossible de créer le fichier /etc/resolv.conf 609Impossible de créer le fichier /etc/resolv.conf
610Échec de l'installation. 610Échec de l'installation.
611} 611}
612 612
613message realdir 613message realdir
614{ 614{
615Impossible de déplacer le répertoire %s/%s 615Impossible de déplacer le répertoire %s/%s
616Échec de l'installation. 616Échec de l'installation.
617} 617}
618 618
619message delete_xfer_file 619message delete_xfer_file
620{ 620{
621Effacer après l'installation 621Effacer après l'installation
622} 622}
623 623
624message notarfile 624message notarfile
625{Le composant %s n'existe pas.} 625{Le composant %s n'existe pas.}
626 626
627message endtarok 627message endtarok
628{ 628{
629Tous les composants sont installés. Veuillez appuyer sur la touche 629Tous les composants sont installés. Veuillez appuyer sur la touche
630Entrée pour continuer. 630Entrée pour continuer.
631} 631}
632 632
633message endtar 633message endtar
634{ 634{
635L'installation des composants est terminée. Toutefois, un ou plusieurs 635L'installation des composants est terminée. Toutefois, un ou plusieurs
636problèmes sont survenus au cours de leur extraction. 636problèmes sont survenus au cours de leur extraction.
637 637
638Vous avez sélectionné %d composants. %d n'ont pu être installés, 638Vous avez sélectionné %d composants. %d n'ont pu être installés,
639et %d ont été ignorés à la suite d'erreurs. 639et %d ont été ignorés à la suite d'erreurs.
640 640
641Sur les %d composants traités, %d ont pu être installés et 641Sur les %d composants traités, %d ont pu être installés et
642%d ont provoqué une erreur. 642%d ont provoqué une erreur.
643 643
644Veuillez vérifier l'intégrité des fichiers d'installation et leur 644Veuillez vérifier l'intégrité des fichiers d'installation et leur
645emplacement, puis essayez à nouveau via une réinstallation de composants, 645emplacement, puis essayez à nouveau via une réinstallation de composants,
646depuis le menu principal. 646depuis le menu principal.
647} 647}
648 648
649message abort 649message abort
650{ 650{
651Votre sélection ne permet pas l'installation de NetBSD. 651Votre sélection ne permet pas l'installation de NetBSD.
652Annulation de l'installation. 652Annulation de l'installation.
653} 653}
654 654
655message abortinst 655message abortinst
656{ 656{
657L'instalation des composants de NetBSD n'est pas complète. 657L'instalation des composants de NetBSD n'est pas complète.
658Vous allez devoir recommencer, ou terminer à la main. 658Vous allez devoir recommencer, ou terminer à la main.
659Échec de l'installation. 659Échec de l'installation.
660} 660}
661 661
662message abortupgr 662message abortupgr
663{ 663{
664La mise à jour des composants de NetBSD n'est pas complète. 664La mise à jour des composants de NetBSD n'est pas complète.
665Vous allez devoir recommencer, ou terminer à la main. 665Vous allez devoir recommencer, ou terminer à la main.
666Échec de l'installation. 666Échec de l'installation.
667} 667}
668 668
669message abortunpack 669message abortunpack
670{ 670{
671L'installation des composants supplémentaires n'est pas complète. 671L'installation des composants supplémentaires n'est pas complète.
672Vous allez devoir recommencer, ou terminer à la main. 672Vous allez devoir recommencer, ou terminer à la main.
673Essayez de choisir une source différente pour les fichiers 673Essayez de choisir une source différente pour les fichiers
674d'installation. 674d'installation.
675} 675}
676 676
677message createfstab 677message createfstab
678{ 678{
679Impossible de créer /mnt/etc/fstab 679Impossible de créer /mnt/etc/fstab
680Ceci est une erreur majeure : nous ne pouvons continuer. 680Ceci est une erreur majeure : nous ne pouvons continuer.
681Échec de l'installation. 681Échec de l'installation.
682} 682}
683 683
684message noetcfstab 684message noetcfstab
685{ 685{
686Le fichier /etc/fstab n'est pas présent sur le disque cible %s 686Le fichier /etc/fstab n'est pas présent sur le disque cible %s
687Ceci est une erreur majeure : nous ne pouvons continuer. 687Ceci est une erreur majeure : nous ne pouvons continuer.
688Échec de l'installation. 688Échec de l'installation.
689} 689}
690 690
691message badetcfstab 691message badetcfstab
692{ 692{
693Impossible de lire le contenu du fichier /etc/fstab présent sur 693Impossible de lire le contenu du fichier /etc/fstab présent sur
694le disque cible %s 694le disque cible %s
695Ceci est une erreur majeure : nous ne pouvons continuer. 695Ceci est une erreur majeure : nous ne pouvons continuer.
696Échec de l'installation. 696Échec de l'installation.
697} 697}
698 698
699message X_oldexists 699message X_oldexists
700{ 700{
701Impossible de sauvegarder %s/bin/X : le disque contient déjà 701Impossible de sauvegarder %s/bin/X : le disque contient déjà
702un fichier %s/bin/X.old et nous devons renommer le fichier actuel 702un fichier %s/bin/X.old et nous devons renommer le fichier actuel
703à ce nom. Veuillez supprimer ou renommer le fichier X.old avant de 703à ce nom. Veuillez supprimer ou renommer le fichier X.old avant de
704recommencer. 704recommencer.
705Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin 705Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin
706de faire cette modification. 706de faire cette modification.
707Ce fichier provient probablement d'une ancienne mise à jour et 707Ce fichier provient probablement d'une ancienne mise à jour et
708il est possible de le supprimer. S'il provient d'une mise à jour 708il est possible de le supprimer. S'il provient d'une mise à jour
709incomplète, vous pouvez effacer %s/bin/X et renommer 709incomplète, vous pouvez effacer %s/bin/X et renommer
710%s/bin/X.old jusqu'à %s/bin/X.%0s%0s%0s%0s%0s%0s 710%s/bin/X.old jusqu'à %s/bin/X.%0s%0s%0s%0s%0s%0s
711 711
712Arrêt de la mise à jour. 712Arrêt de la mise à jour.
713} 713}
714 714
715 715
716message netnotup 716message netnotup
717{ 717{
718Un problème est survenu lors de la configuration de votre interface 718Un problème est survenu lors de la configuration de votre interface
719réseau. Votre serveur de noms ou votre passerelle ne semblent pas 719réseau. Votre serveur de noms ou votre passerelle ne semblent pas
720répondre aux pings. 720répondre aux pings.
721Souhaitez-vous configurer à nouveau les paramètres de votre 721Souhaitez-vous configurer à nouveau les paramètres de votre
722connexion réseau ? 722connexion réseau ?
723(un refus provoquera l'arrêt de la procédure d'installation) 723(un refus provoquera l'arrêt de la procédure d'installation)
724} 724}
725 725
726message netnotup_continueanyway 726message netnotup_continueanyway
727{ 727{
728Souhaitez-vous poursuivre malgré tout le processus d'installation 728Souhaitez-vous poursuivre malgré tout le processus d'installation
729et supposer que le réseau fonctionne correctement ? 729et supposer que le réseau fonctionne correctement ?
730(un refus provoquera l'arrêt de la procédure d'installation) 730(un refus provoquera l'arrêt de la procédure d'installation)
731} 731}
732 732
733message makedev 733message makedev
734{Création des fichiers des périphériques ... 734{Création des fichiers des périphériques ...
735} 735}
736 736
737message badfs 737message badfs
738{ 738{
739/dev/%s%c ne semble pas être un système de fichiers BSD, ou 739/dev/%s%c ne semble pas être un système de fichiers BSD, ou
740la vérification de son intégrité par fsck a échoué, code d'erreur %d. 740la vérification de son intégrité par fsck a échoué, code d'erreur %d.
741 741
742Souhaitez-vous continuer mise à jour? 742Souhaitez-vous continuer mise à jour?
743} 743}
744 744
745message rootmissing 745message rootmissing
746{ 746{
747Impossible de trouver la racine du disque cible %s. 747Impossible de trouver la racine du disque cible %s.
748} 748}
749 749
750message badroot 750message badroot
751{ 751{
752La vérification de l'intégrité du nouveau système de fichiers a échoué. 752La vérification de l'intégrité du nouveau système de fichiers a échoué.
753Avez-vous bien installé tous les composants indispensables ? 753Avez-vous bien installé tous les composants indispensables ?
754} 754}
755 755
756message fd_type 756message fd_type
757{Système de fichiers de la disquette} 757{Système de fichiers de la disquette}
758 758
759message fdnotfound 759message fdnotfound
760{ 760{
761Impossible de trouver un fichier requis sur la disquette. 761Impossible de trouver un fichier requis sur la disquette.
762} 762}
763 763
764message fdremount 764message fdremount
765{ 765{
766Impossible de monter la disquette correctement. 766Impossible de monter la disquette correctement.
767} 767}
768 768
769message fdmount 769message fdmount
770{ 770{
771Veuillez insérer la disquette contenant le fichier "%s.%s". 771Veuillez insérer la disquette contenant le fichier "%s.%s".
772 772
773Si le jeu de disquettes ne comprend aucun autre disque, veuillez 773Si le jeu de disquettes ne comprend aucun autre disque, veuillez
774choisir "Ensemble terminé" pour mettre un terme à ce traitement. 774choisir "Ensemble terminé" pour mettre un terme à ce traitement.
775Sélectionnez "Annuler la récupération" pour revenir au menu 775Sélectionnez "Annuler la récupération" pour revenir au menu
776de sélection du média d'installation. 776de sélection du média d'installation.
777} 777}
778 778
779message mntnetconfig 779message mntnetconfig
780{Souhaitez-vous conserver les réglages réseaux après le redémarrage 780{Souhaitez-vous conserver les réglages réseaux après le redémarrage
781du système que nous venons d'installer ? } 781du système que nous venons d'installer ? }
782 782
783message cur_distsets 783message cur_distsets
784{ 784{
785Sélectionnez les composants dans la liste ci-dessous : 785Sélectionnez les composants dans la liste ci-dessous :
786} 786}
787 787
788message cur_distsets_header 788message cur_distsets_header
789{ Composant Installer? 789{ Composant Installer?
790------------------------------------ ---------- 790------------------------------------ ----------
791} 791}
792 792
793message set_base 793message set_base
794{Base} 794{Base}
795 795
796message set_system 796message set_system
797{Système (/etc)} 797{Système (/etc)}
798 798
799message set_compiler 799message set_compiler
800{Outils de développement} 800{Outils de développement}
801 801
802message set_games 802message set_games
803{Jeux} 803{Jeux}
804 804
805message set_man_pages 805message set_man_pages
806{Pages de manuel} 806{Pages de manuel}
807 807
808message set_misc 808message set_misc
809{Divers} 809{Divers}
810 810
811message set_modules 811message set_modules
812{Modules du noyau} 812{Modules du noyau}
813 813
814message set_tests 814message set_tests
815{Programmes de test} 815{Programmes de test}
816 816
817message set_text_tools 817message set_text_tools
818{Outils de manipulation de texte} 818{Outils de manipulation de texte}
819 819
820message set_X11 820message set_X11
821{X11} 821{X11}
822 822
823message set_X11_base 823message set_X11_base
824{X11 base et clients} 824{X11 base et clients}
825 825
826message set_X11_etc 826message set_X11_etc
827{X11 configuration} 827{X11 configuration}
828 828
829message set_X11_fonts 829message set_X11_fonts
830{X11 polices} 830{X11 polices}
831 831
832message set_X11_servers 832message set_X11_servers
833{X11 serveurs} 833{X11 serveurs}
834 834
835message set_X11_prog 835message set_X11_prog
836{X11 développement} 836{X11 développement}
837 837
838message set_source 838message set_source
839{Code source et débogage} 839{Code source et débogage}
840 840
841message set_syssrc 841message set_syssrc
842{Sources du noyeau} 842{Sources du noyeau}
843 843
844message set_src 844message set_src
845{Sources de la Base} 845{Sources de la Base}
846 846
847message set_sharesrc 847message set_sharesrc
848{Sources de partage (Share)} 848{Sources de partage (Share)}
849 849
850message set_gnusrc 850message set_gnusrc
851{Sources des composants GNU} 851{Sources des composants GNU}
852 852
853message set_xsrc 853message set_xsrc
854{Sources X11} 854{Sources X11}
855 855
856message set_debug 856message set_debug
857{Symboles de débogage} 857{Symboles de débogage}
858 858
859message set_xdebug 859message set_xdebug
860{Symboles de débogage X11} 860{Symboles de débogage X11}
861 861
862message cur_distsets_row 862message cur_distsets_row
863{%-33s %3s} 863{%-33s %3s}
864 864
865message select_all 865message select_all
866{Sélectionner tous les composants} 866{Sélectionner tous les composants}
867 867
868message select_none 868message select_none
869{Déselectionner tous les composants} 869{Déselectionner tous les composants}
870 870
871message install_selected_sets 871message install_selected_sets
872{Installer les composants sélectionnés} 872{Installer les composants sélectionnés}
873 873
874 874
875message tarerror 875message tarerror
876{ 876{
877Une erreur est survenue lors de l'installation du fichier %s. 877Une erreur est survenue lors de l'installation du fichier %s.
878Certains fichiers n'ayant pu être extraits correctement, 878Certains fichiers n'ayant pu être extraits correctement,
879le système n'est pas complet et pourrait ne pas fonctionner 879le système n'est pas complet et pourrait ne pas fonctionner
880correctement. 880correctement.
881 881
882Souhaitez-vous continuer l'installation des composants ? 882Souhaitez-vous continuer l'installation des composants ?
883} 883}
884 884
885message must_be_one_root 885message must_be_one_root
886{ 886{
887Une seule partition peut être montée en tant que racine, dite "/". 887Une seule partition peut être montée en tant que racine, dite "/".
888} 888}
889 889
890message partitions_overlap 890message partitions_overlap
891{Les partitions %c et %c s'empiètent l'une sur l'autre.} 891{Les partitions %c et %c s'empiètent l'une sur l'autre.}
892 892
893message No_Bootcode 893message No_Bootcode
894{Pas de programme de démarrage trouvé sur la partition racine} 894{Pas de programme de démarrage trouvé sur la partition racine}
895 895
896message cannot_ufs2_root 896message cannot_ufs2_root
897{Le système de fichiers de la partition racine ne peut pas être FFSv2 car le 897{Le système de fichiers de la partition racine ne peut pas être FFSv2 car le
898chargeur de démarrage ne le supporte pas.} 898chargeur de démarrage ne le supporte pas.}
899 899
900message edit_partitions_again 900message edit_partitions_again
901{ 901{
902Vous pouvez éditer la table de partitions à la main, ou abandonner et 902Vous pouvez éditer la table de partitions à la main, ou abandonner et
903retourner au menu principal. 903retourner au menu principal.
904 904
905Souhaitez-vous éditer à nouveau la table de partitions ? 905Souhaitez-vous éditer à nouveau la table de partitions ?
906} 906}
907 907
908message config_open_error 908message config_open_error
909{ 909{
910Impossible d'ouvrir le fichier de configuration %s.\n 910Impossible d'ouvrir le fichier de configuration %s.\n
911} 911}
912 912
913message choose_timezone 913message choose_timezone
914{ 914{
915Veuillez sélectionner votre zone horaire dans la liste suivante. 915Veuillez sélectionner votre zone horaire dans la liste suivante.
916Appuyez sur la touche Entrée pour confirmer votre choix. 916Appuyez sur la touche Entrée pour confirmer votre choix.
917Appuyez sur "x" puis sur Entrée pour valider la sélection en cours. 917Appuyez sur "x" puis sur Entrée pour valider la sélection en cours.
918 918
919 Par défaut : %s 919 Par défaut : %s
920 Sélection actuelle : %s 920 Sélection actuelle : %s
921 Heure locale : %s %s 921 Heure locale : %s %s
922} 922}
923 923
924message tz_back 924message tz_back
925{ Retour à la liste principale des fuseaux horaires} 925{ Retour à la liste principale des fuseaux horaires}
926 926
927message swapactive 927message swapactive
928{ 928{
929Le disque sélectionné dispose d'une partition d'échange (swap) qui 929Le disque sélectionné dispose d'une partition d'échange (swap) qui
930est peut-être en cours d'utilisation, en particulier si votre système 930est peut-être en cours d'utilisation, en particulier si votre système
931dispose de peu de mémoire. 931dispose de peu de mémoire.
932Le repartitionnement de votre disque requiert la désactivation de cette 932Le repartitionnement de votre disque requiert la désactivation de cette
933partition. Prenez garde ! Cette opération peut entraîner des erreurs. 933partition. Prenez garde ! Cette opération peut entraîner des erreurs.
934Si cela survient, vous devrez alors redémarrer et tenter à nouveau. 934Si cela survient, vous devrez alors redémarrer et tenter à nouveau.
935} 935}
936 936
937message swapdelfailed 937message swapdelfailed
938{ 938{
939Sysinst n'a pas pu désactiver la partition d'échange (swap) présente 939Sysinst n'a pas pu désactiver la partition d'échange (swap) présente
940sur le disque cible pour l'installation. Vous devez redémarrer et tenter 940sur le disque cible pour l'installation. Vous devez redémarrer et tenter
941à nouveau. 941à nouveau.
942} 942}
943 943
944message rootpw 944message rootpw
945{ 945{
946Aucun mot de passe pour le compte "root" n'a été défini. 946Aucun mot de passe pour le compte "root" n'a été défini.
947Nous vous recommandons de spécifier un mot de passe maintenant. 947Nous vous recommandons de spécifier un mot de passe maintenant.
948 948
949Le souhaitez-vous ? 949Le souhaitez-vous ?
950} 950}
951 951
952message rootsh 952message rootsh
953{ 953{
954Spécifiez le shell par défaut qui sera utilisé par l'utilisateur "root". 954Spécifiez le shell par défaut qui sera utilisé par l'utilisateur "root".
955Par défaut, il s'agit de /bin/sh 955Par défaut, il s'agit de /bin/sh
956} 956}
957 957
958message no_root_fs 958message no_root_fs
959{ 959{
960Aucune partition racine n'est actuellement définie. Vous devez au moins 960Aucune partition racine n'est actuellement définie. Vous devez au moins
961définir le point de montage de cette partition racine, dite "/". 961définir le point de montage de cette partition racine, dite "/".
962 962
963Appuyez sur la touche Entrée pour continuer. 963Appuyez sur la touche Entrée pour continuer.
964} 964}
965 965
966message Pick_an_option {Choisissez une option à activer/désactiver} 966message Pick_an_option {Choisissez une option à activer/désactiver}
967message Scripting {Scripting} 967message Scripting {Scripting}
968message Logging {Journal} 968message Logging {Journal}
969 969
970message Status {Statut : } 970message Status {Statut : }
971message Command {Commande : } 971message Command {Commande : }
972message Running {En cours d'exécution} 972message Running {En cours d'exécution}
973message Finished {Terminée} 973message Finished {Terminée}
974message Command_failed {Échec} 974message Command_failed {Échec}
975message Command_ended_on_signal {Commande terminée par un signal} 975message Command_ended_on_signal {Commande terminée par un signal}
976 976
977 977
978message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Programme d'installation} 978message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Programme d'installation}
979message Exit_Install_System {Quitter le programme d'installation} 979message Exit_Install_System {Quitter le programme d'installation}
980message Install_NetBSD_to_hard_disk {Installation de NetBSD sur disque dur} 980message Install_NetBSD_to_hard_disk {Installation de NetBSD sur disque dur}
981message Upgrade_NetBSD_on_a_hard_disk {Mise à jour de NetBSD sur disque dur} 981message Upgrade_NetBSD_on_a_hard_disk {Mise à jour de NetBSD sur disque dur}
982message Re_install_sets_or_install_additional_sets {Réinstaller ou installer de nouveaux composants} 982message Re_install_sets_or_install_additional_sets {Réinstaller ou installer de nouveaux composants}
983message Reboot_the_computer {Redémarrer l'ordinateur} 983message Reboot_the_computer {Redémarrer l'ordinateur}
984message Utility_menu {Utilitaires} 984message Utility_menu {Utilitaires}
985message Config_menu {Configuration} 985message Config_menu {Configuration}
986message exit_menu_generic {Quitter} 986message exit_menu_generic {Quitter}
987message exit_utility_menu {Quitter} 987message exit_utility_menu {Quitter}
988message NetBSD_VERSION_Utilities {Utilitaires NetBSD-@@VERSION@@} 988message NetBSD_VERSION_Utilities {Utilitaires NetBSD-@@VERSION@@}
989message Run_bin_sh {Exécuter /bin/sh} 989message Run_bin_sh {Exécuter /bin/sh}
990message Set_timezone {Configurer le fuseau horaire} 990message Set_timezone {Configurer le fuseau horaire}
991message Configure_network {Configurer le réseau} 991message Configure_network {Configurer le réseau}
992message Partition_a_disk {Partitionner un disque} 992message Partition_a_disk {Partitionner un disque}
993message Logging_functions {Journaux} 993message Logging_functions {Journaux}
994message Halt_the_system {Arrêter le système} 994message Halt_the_system {Arrêter le système}
995message yes_or_no {oui ou non?} 995message yes_or_no {oui ou non?}
996message Hit_enter_to_continue {Appuyez sur la touche Entrée pour continuer} 996message Hit_enter_to_continue {Appuyez sur la touche Entrée pour continuer}
997message Choose_your_installation {Choisir le type d'installation désiré} 997message Choose_your_installation {Choisir le type d'installation désiré}
998message Set_Sizes {Spécifier les tailles des partitions NetBSD} 998message Set_Sizes {Spécifier les tailles des partitions NetBSD}
999message Use_Existing {Utiliser les partitions existantes} 999message Use_Existing {Utiliser les partitions existantes}
1000message Megabytes {Mégaoctets} 1000message Megabytes {Mégaoctets}
1001message Cylinders {Cylindres} 1001message Cylinders {Cylindres}
1002message Sectors {Secteurs} 1002message Sectors {Secteurs}
1003message Select_medium {Sélection du média d'installation} 1003message Select_medium {Sélection du média d'installation}
1004message ftp {FTP} 1004message ftp {FTP}
1005message http {HTTP} 1005message http {HTTP}
1006message nfs {NFS} 1006message nfs {NFS}
1007.if HAVE_INSTALL_IMAGE 1007.if HAVE_INSTALL_IMAGE
1008message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ 1008message cdrom {CD-ROM / DVD / install image media} /* XXX translation */
1009.else 1009.else
1010message cdrom {CD-ROM / DVD} 1010message cdrom {CD-ROM / DVD}
1011.endif 1011.endif
1012message floppy {Disquette} 1012message floppy {Disquette}
1013message local_fs {Système de fichiers non-monté} 1013message local_fs {Système de fichiers non-monté}
1014message local_dir {Répertoire local monté} 1014message local_dir {Répertoire local monté}
1015message Select_your_distribution {Sélection de la distribution} 1015message Select_your_distribution {Sélection de la distribution}
1016message Full_installation {Installation complète} 1016message Full_installation {Installation complète}
1017message Full_installation_nox {Installation sans X11} 1017message Full_installation_nox {Installation sans X11}
1018message Minimal_installation {Installation minimale} 1018message Minimal_installation {Installation minimale}
1019message Custom_installation {Installation personnalisée} 1019message Custom_installation {Installation personnalisée}
1020message hidden {** caché **} 1020message hidden {** caché **}
1021message Host {Serveur FTP} 1021message Host {Serveur FTP}
1022message Base_dir {Répertoire de base} 1022message Base_dir {Répertoire de base}
1023message Set_dir_bin {Répertoire des composants binaire} 1023message Set_dir_bin {Répertoire des composants binaire}
1024message Set_dir_src {Répertoire des composants source} 1024message Set_dir_src {Répertoire des composants source}
1025message Xfer_dir {Répertoire de transfert} 1025message Xfer_dir {Répertoire de transfert}
1026message User {Utilisateur} 1026message User {Utilisateur}
1027message Password {Mot de passe} 1027message Password {Mot de passe}
1028message Proxy {Proxy} 1028message Proxy {Proxy}
1029message Get_Distribution {Récupérer la distribution} 1029message Get_Distribution {Récupérer la distribution}
1030message Continue {Continuer} 1030message Continue {Continuer}
1031message What_do_you_want_to_do {Que voulez-vous faire ?} 1031message What_do_you_want_to_do {Que voulez-vous faire ?}
1032message Try_again {Réessayer} 1032message Try_again {Réessayer}
1033message Set_finished {Extraction terminée} 1033message Set_finished {Extraction terminée}
1034message Skip_set {Sauter cet ensemble} 1034message Skip_set {Sauter cet ensemble}
1035message Skip_group {Sauter ce groupe} 1035message Skip_group {Sauter ce groupe}
1036message Abandon {Abandonner l'installation} 1036message Abandon {Abandonner l'installation}
1037message Abort_fetch {Annuler la récupération} 1037message Abort_fetch {Annuler la récupération}
1038message Device {Périphérique} 1038message Device {Périphérique}
1039message File_system {Système de fichiers} 1039message File_system {Système de fichiers}
1040message Select_DNS_server { Choisissez un serveur de noms :} 1040message Select_DNS_server { Choisissez un serveur de noms :}
1041message other {autre } 1041message other {autre }
1042message Perform_autoconfiguration {Configurer automatiquement ?} 1042message Perform_autoconfiguration {Configurer automatiquement ?}
1043message Root_shell {Shell du compte "root"} 1043message Root_shell {Shell du compte "root"}
1044message Color_scheme {Jeu de couleurs} 1044message Color_scheme {Jeu de couleurs}
1045message White_on_black {Blanc sur noir} 1045message White_on_black {Blanc sur noir}
1046message Black_on_white {Noir sur blanc} 1046message Black_on_white {Noir sur blanc}
1047message White_on_blue {Blanc sur bleu} 1047message White_on_blue {Blanc sur bleu}
1048message Green_on_black {Vert sur noir} 1048message Green_on_black {Vert sur noir}
1049message User_shell {Shell du compte "user"} 1049message User_shell {Shell du compte "user"}
1050 1050
1051.if AOUT2ELF 1051.if AOUT2ELF
1052message aoutfail 1052message aoutfail
1053{ 1053{
1054Le répertoire où se situent les anciennes librairies a.out doit être 1054Le répertoire où se situent les anciennes librairies a.out doit être
1055déplacé. Veuillez suivre la procédure de mise à jour et bien 1055déplacé. Veuillez suivre la procédure de mise à jour et bien
1056vérifier que tous les systèmes de fichiers sont montés. 1056vérifier que tous les systèmes de fichiers sont montés.
1057} 1057}
1058 1058
1059message emulbackup 1059message emulbackup
1060{ 1060{
1061Le répertoire /emul/aout ou /emul est présent sur le disque mais 1061Le répertoire /emul/aout ou /emul est présent sur le disque mais
1062pointe vers un répertoire non monté. Nous l'avons renommé en lui ajoutant 1062pointe vers un répertoire non monté. Nous l'avons renommé en lui ajoutant
1063l'extension ".old". Lorsque vous aurez terminé l'installation ou la mise à jour, 1063l'extension ".old". Lorsque vous aurez terminé l'installation ou la mise à jour,
1064vous devrez fusionner manuellement le nouveau répertoire avec l'ancien 1064vous devrez fusionner manuellement le nouveau répertoire avec l'ancien
1065/emul/aout. 1065/emul/aout.
1066} 1066}
1067.endif 1067.endif
1068 1068
1069message oldsendmail 1069message oldsendmail
1070{ 1070{
1071Sendmail n'est plus distribué dans cette version de NetBSD, le MTA par défaut 1071Sendmail n'est plus distribué dans cette version de NetBSD, le MTA par défaut
1072étant maintenant postfix. Toutefois, le fichier /etc/mailer.conf est toujours 1072étant maintenant postfix. Toutefois, le fichier /etc/mailer.conf est toujours
1073configuré pour utiliser sendmail. Voulez-vous mettre à jour le fichier 1073configuré pour utiliser sendmail. Voulez-vous mettre à jour le fichier
1074/etc/mailer.conf automatiquement pour utiliser postfix à la place ? Si vous 1074/etc/mailer.conf automatiquement pour utiliser postfix à la place ? Si vous
1075choisissez "Non", vous devrez mettre à jour /etc/mailer.conf manuellement 1075choisissez "Non", vous devrez mettre à jour /etc/mailer.conf manuellement
1076afin que vos courriels soient traités correctement. 1076afin que vos courriels soient traités correctement.
1077} 1077}
1078 1078
1079message license 1079message license
1080{Afin d'utiliser l'interface réseau : %s, vous devez accepter la licence 1080{Afin d'utiliser l'interface réseau : %s, vous devez accepter la licence
1081contenue dans le fichier %s. 1081contenue dans le fichier %s.
1082Pour afficher ce fichier, tapez ^Z (Ctrl-Z). 1082Pour afficher ce fichier, tapez ^Z (Ctrl-Z).
1083Après l'avoir lu, tapez "fg" pour continuer.} 1083Après l'avoir lu, tapez "fg" pour continuer.}
1084 1084
1085message binpkg 1085message binpkg
1086{Afin de configurer le système de paquetages binaires, choisissez 1086{Afin de configurer le système de paquetages binaires, choisissez
1087l'emplacement réseau où les paquetages se trouvent. Une fois le système 1087l'emplacement réseau où les paquetages se trouvent. Une fois le système
1088redémarré, vous pourrez utiliser 'pkgin' pour installer et aménager des 1088redémarré, vous pourrez utiliser 'pkgin' pour installer et aménager des
1089paquetages additionnels.} 1089paquetages additionnels.}
1090 1090
1091message pkgpath 1091message pkgpath
1092{Voici les configurations actuelles pour : protocole, serveur, répertoire, 1092{Voici les configurations actuelles pour : protocole, serveur, répertoire,
1093utilisateur et mot de passe qui seront utilisés. Si "utilisateur" est "ftp", 1093utilisateur et mot de passe qui seront utilisés. Si "utilisateur" est "ftp",
1094un mot de passe n'est pas requis. 1094un mot de passe n'est pas requis.
1095 1095
1096} 1096}
1097message rcconf_backup_failed {La copie de rc.conf a échoué. Continuer ?} 1097message rcconf_backup_failed {La copie de rc.conf a échoué. Continuer ?}
1098message rcconf_backup_succeeded {La copie de rc.conf a été sauvegardée jusqu'à %s.} 1098message rcconf_backup_succeeded {La copie de rc.conf a été sauvegardée jusqu'à %s.}
1099message rcconf_restore_failed {La restauration de la sauvegarde de rc.conf a échoué.} 1099message rcconf_restore_failed {La restauration de la sauvegarde de rc.conf a échoué.}
1100message rcconf_delete_failed {La suppression de l'ancien fichier %s a échoué.} 1100message rcconf_delete_failed {La suppression de l'ancien fichier %s a échoué.}
1101message Pkg_dir {Dossier de paquetages} 1101message Pkg_dir {Dossier de paquetages}
1102message configure_prior {configurer une installation existante de} 1102message configure_prior {configurer une installation existante de}
1103message configure {configurer} 1103message configure {configurer}
1104message change {changer} 1104message change {changer}
1105message password_set {Définir le mot de passe} 1105message password_set {Définir le mot de passe}
1106message YES {OUI} 1106message YES {OUI}
1107message NO {NON} 1107message NO {NON}
1108message DONE {TERMINER} 1108message DONE {TERMINER}
1109message abandoned {Abandonnée} 1109message abandoned {Abandonnée}
1110message empty {***VIDE***} 1110message empty {***VIDE***}
1111message timezone {Fuseau horaire} 1111message timezone {Fuseau horaire}
1112message change_rootpw {Changer le mot de passe "root"} 1112message change_rootpw {Changer le mot de passe "root"}
1113message enable_binpkg {Activer l'installation de paquetages binaires} 1113message enable_binpkg {Activer l'installation de paquetages binaires}
1114message enable_sshd {Activer sshd} 1114message enable_sshd {Activer sshd}
1115message enable_ntpd {Activer ntpd} 1115message enable_ntpd {Activer ntpd}
1116message run_ntpdate {Exécuter ntpdate au démarrage} 1116message run_ntpdate {Exécuter ntpdate au démarrage}
1117message enable_mdnsd {Activer mdnsd} 1117message enable_mdnsd {Activer mdnsd}
1118message enable_xdm {Activer xdm} 1118message enable_xdm {Activer xdm}
1119message enable_cgd {Activer cgd} 1119message enable_cgd {Activer cgd}
1120message enable_lvm {Activer lvm} 1120message enable_lvm {Activer lvm}
1121message enable_raid {Activer raidframe} 1121message enable_raid {Activer raidframe}
1122message add_a_user {Ajouter un utilisateur} 1122message add_a_user {Ajouter un utilisateur}
1123message configmenu {Configurer les items suivants si nécessaire.} 1123message configmenu {Configurer les items suivants si nécessaire.}
1124message doneconfig {Configuration terminée} 1124message doneconfig {Configuration terminée}
1125message Install_pkgin {Installer pkgin et mettre à jour le sommaire des paquetages} 1125message Install_pkgin {Installer pkgin et mettre à jour le sommaire des paquetages}
1126message binpkg_installed  1126message binpkg_installed
1127{Votre système est maintenant configuré pour utiliser pkgin afin d'installer 1127{Votre système est maintenant configuré pour utiliser pkgin afin d'installer
1128des paquetages binaires. Pour installer un paquetage, utilisez : 1128des paquetages binaires. Pour installer un paquetage, utilisez :
1129 1129
1130pkgin install <packagename> 1130pkgin install <packagename>
1131 1131
1132à partir d'un shell "root". Consultez le manuel pkgin(1) pour plus de détails.} 1132à partir d'un shell "root". Consultez le manuel pkgin(1) pour plus de détails.}
1133message Install_pkgsrc {Obtenir et extraire pkgsrc} 1133message Install_pkgsrc {Obtenir et extraire pkgsrc}
1134message pkgsrc 1134message pkgsrc
1135{L'installation de pkgsrc nécessite l'extraction d'une archive obtenue 1135{L'installation de pkgsrc nécessite l'extraction d'une archive obtenue
1136par le réseau. 1136par le réseau.
1137Voici les configurations actuelles pour : serveur, répertoire, utilisateur et 1137Voici les configurations actuelles pour : serveur, répertoire, utilisateur et
1138mot de passe qui seront utilisés. Si "utilisateur" est "ftp", un mot de passe 1138mot de passe qui seront utilisés. Si "utilisateur" est "ftp", un mot de passe
1139n'est pas requis. 1139n'est pas requis.
1140 1140
1141} 1141}
1142message Pkgsrc_dir {Répertoire pkgsrc} 1142message Pkgsrc_dir {Répertoire pkgsrc}
1143message get_pkgsrc 1143message get_pkgsrc
1144{Obtenir et extraire pkgsrc afin de compiler des paquetages à partir des sources} 1144{Obtenir et extraire pkgsrc afin de compiler des paquetages à partir des sources}
1145message retry_pkgsrc_network {La configuration du réseau a échoué. Réessayer ?} 1145message retry_pkgsrc_network {La configuration du réseau a échoué. Réessayer ?}
1146message quit_pkgsrc {Quitter sans installer pkgsrc} 1146message quit_pkgsrc {Quitter sans installer pkgsrc}
1147message quit_pkgs_install {Quitter sans installer bin pkg} 1147message quit_pkgs_install {Quitter sans installer bin pkg}
1148message pkgin_failed  1148message pkgin_failed
1149{L'installation de pkgin a échoué, peut-être parce que son paquetage binaire 1149{L'installation de pkgin a échoué, peut-être parce que son paquetage binaire
1150n'existe pas. Vérifiez le chemin et essayez à nouveau.} 1150n'existe pas. Vérifiez le chemin et essayez à nouveau.}
1151message failed {Échoué} 1151message failed {Échoué}
1152 1152
1153 1153
1154message notsupported {Le fonctionnement n'est pas pris en charge!} 1154message notsupported {Le fonctionnement n'est pas pris en charge!}
1155message askfsmountadv {Point de montage ou de 'raid' ou 'cgd' ou 'lvm'?} 1155message askfsmountadv {Point de montage ou de 'raid' ou 'cgd' ou 'lvm'?}
1156message partman {Partitionnement étendu} 1156message partman {Partitionnement étendu}
1157message editbsdpart {Modifier les partitions BSD} 1157message editbsdpart {Modifier les partitions BSD}
1158message editmbr {Modifiez et enregistrez MBR} 1158message editmbr {Modifiez et enregistrez MBR}
1159message switchgpt {Mettre à GPT} 1159message switchgpt {Mettre à GPT}
1160message switchmbr {Basculer vers MBR} 1160message switchmbr {Basculer vers MBR}
1161message renamedisk {Définir le nom du disque} 1161message renamedisk {Définir le nom du disque}
1162message fmtasraid {Format en RAID} 1162message fmtasraid {Format en RAID}
1163message fmtaslvm {Format de LVM PV} 1163message fmtaslvm {Format de LVM PV}
1164message encrypt {Crypter} 1164message encrypt {Crypter}
1165message setbootable {Drapeau d'amorçage} 1165message setbootable {Drapeau d'amorçage}
1166message erase {Fonction d'effacement sécurisé} 1166message erase {Fonction d'effacement sécurisé}
1167message undo {Annuler les changements} 1167message undo {Annuler les changements}
1168message unconfig {Annulation de la configuration} 1168message unconfig {Annulation de la configuration}
1169message edit {Éditer} 1169message edit {Éditer}
1170message doumount {Groupe umount} 1170message doumount {Groupe umount}
1171message fillzeros {Remplir de zéros} 1171message fillzeros {Remplir de zéros}
1172message fillrandom {Remplissez par des données aléatoires} 1172message fillrandom {Remplissez par des données aléatoires}
1173message fillcrypto {Remplissez par crypto données} 1173message fillcrypto {Remplissez par crypto données}
1174message raid0 {0 - Pas de parité, l'entrelacement seulement simple.} 1174message raid0 {0 - Pas de parité, l'entrelacement seulement simple.}
1175message raid1 {1 - Mirroring. La parité est le miroir.} 1175message raid1 {1 - Mirroring. La parité est le miroir.}
1176message raid4 {4 - Entrelacement avec parité stockées sur le dernier composant. component.} 1176message raid4 {4 - Entrelacement avec parité stockées sur le dernier composant. component.}
1177message raid5 {5 - Entrelacement avec parité à tous les composants. components.} 1177message raid5 {5 - Entrelacement avec parité à tous les composants. components.}
1178 1178
1179message fremove {ENLEVER} 1179message fremove {ENLEVER}
1180message remove {Supprimer} 1180message remove {Supprimer}
1181message add {Ajouter} 1181message add {Ajouter}
1182message auto {auto} 1182message auto {auto}
1183 1183
1184message removepartswarn {Cette supprimer toutes les partitions sur le disque. Voulez-vous continuer? want to continue?} 1184message removepartswarn {Cette supprimer toutes les partitions sur le disque. Voulez-vous continuer? want to continue?}
1185message saveprompt {Enregistrer les modifications avant de terminer?} 1185message saveprompt {Enregistrer les modifications avant de terminer?}
1186message cantsave {Aucune modification ne peut être sauvé.} 1186message cantsave {Aucune modification ne peut être sauvé.}
1187message noroot {Aucune partition racine défini, ne peut pas continuer \n continue\n} 1187message noroot {Aucune partition racine défini, ne peut pas continuer \n continue\n}
1188message wannaunblock {L'appareil est bloqué. Voulez-vous forcer le débloquer et continuer? unblock it and continue?} 1188message wannaunblock {L'appareil est bloqué. Voulez-vous forcer le débloquer et continuer? unblock it and continue?}
1189message wannatry {Voulez-vous essayer?} 1189message wannatry {Voulez-vous essayer?}
1190message create_cgd {Le volume cryptographique Créer (CGD)} 1190message create_cgd {Le volume cryptographique Créer (CGD)}
1191message create_cnd {Créer une image de disque virtuel (VND)} 1191message create_cnd {Créer une image de disque virtuel (VND)}
1192message create_vg {Créer un groupe de volumes LVM (VG)} 1192message create_vg {Créer un groupe de volumes LVM (VG)}
1193message create_lv { Créer un volume logique} 1193message create_lv { Créer un volume logique}
1194message create_raid {Créer un RAID logiciel} 1194message create_raid {Créer un RAID logiciel}
1195message updpmlist {Mettre à jour la liste des dispositifs} 1195message updpmlist {Mettre à jour la liste des dispositifs}
1196message savepm {Enregistrer les modifications} 1196message savepm {Enregistrer les modifications}
1197message pmblocked {BLOQUE} 1197message pmblocked {BLOQUE}
1198message pmunchanged {INCHANGÉ} 1198message pmunchanged {INCHANGÉ}
1199message pmsetboot {BOOT} 1199message pmsetboot {BOOT}
1200message pmused {UTILISÉ} 1200message pmused {UTILISÉ}
1201message pmmounted {(monté)} 1201message pmmounted {(monté)}
1202message pmunused {(non utilisé)} 1202message pmunused {(non utilisé)}
1203message pmgptdisk {Disque avec GPT} 1203message pmgptdisk {Disque avec GPT}
1204 1204
1205message finishpm {Terminer le partitionnement} 1205message finishpm {Terminer le partitionnement}
1206message limitcount {Limite pour le nombre de dispositifs a été atteint!} 1206message limitcount {Limite pour le nombre de dispositifs a été atteint!}
1207message invaliddev {Blancs appareil!} 1207message invaliddev {Blancs appareil!}
1208message avdisks {Disques disponibles:} 1208message avdisks {Disques disponibles:}
1209message nofreedev {Impossible d'allouer noeud de périphérique!} 1209message nofreedev {Impossible d'allouer noeud de périphérique!}
1210message partman_header 1210message partman_header
1211{Gestionnaire de partition. Tous les disques, les partitions et etc affiché. 1211{Gestionnaire de partition. Tous les disques, les partitions et etc affiché.
1212Dans un premier temps partitions MBR faire, puis faire étiquette BSD. 1212Dans un premier temps partitions MBR faire, puis faire étiquette BSD.
1213Si vous souhaitez utiliser RAID, LVM ou DMC, procédez comme suit: 1213Si vous souhaitez utiliser RAID, LVM ou DMC, procédez comme suit:
12141) Créer les partitions BSD de type de besoin; 2) Créer un système RAID / 12141) Créer les partitions BSD de type de besoin; 2) Créer un système RAID /
1215LVM VG / DMC utilisation de ces partitions; 3) la sauver; 1215LVM VG / DMC utilisation de ces partitions; 3) la sauver;
12164) Créer des partitions pour les volumes RAID / DMC ou logique par LVM.} 12164) Créer des partitions pour les volumes RAID / DMC ou logique par LVM.}
1217 1217
1218message raid_menufmt { raid%d (niveau %1d) sur %-32s %11uM} 1218message raid_menufmt { raid%d (niveau %1d) sur %-32s %11uM}
1219message raid_err_menufmt { RAID VIDE!} 1219message raid_err_menufmt { RAID VIDE!}
1220message raid_disks_fmt {Disques: %31s} 1220message raid_disks_fmt {Disques: %31s}
1221message raid_spares_fmt {Pièces de rechange: %20s} 1221message raid_spares_fmt {Pièces de rechange: %20s}
1222message raid_level_fmt {Niveau RAID: %22d} 1222message raid_level_fmt {Niveau RAID: %22d}
1223message raid_numrow_fmt {numRow: %22d} 1223message raid_numrow_fmt {numRow: %22d}
1224message raid_numcol_fmt {numCol: %22d} 1224message raid_numcol_fmt {numCol: %22d}
1225message raid_numspare_fmt {numSpare: %22d} 1225message raid_numspare_fmt {numSpare: %22d}
1226message raid_sectpersu_fmt {sectPerSU: %22d} 1226message raid_sectpersu_fmt {sectPerSU: %22d}
1227message raid_superpar_fmt {SUsPerParityUnit: %22d} 1227message raid_superpar_fmt {SUsPerParityUnit: %22d}
1228message raid_superrec_fmt {SUsPerReconUnit: %22d} 1228message raid_superrec_fmt {SUsPerReconUnit: %22d}
1229message raid_nomultidim {Tableaux multi-dimensionnels sont pas pris en charge!} 1229message raid_nomultidim {Tableaux multi-dimensionnels sont pas pris en charge!}
1230message raid_numrow_ask {numRow?} 1230message raid_numrow_ask {numRow?}
1231message raid_numcol_ask {numCol?} 1231message raid_numcol_ask {numCol?}
1232message raid_numspare_ask {numSpare?} 1232message raid_numspare_ask {numSpare?}
1233message raid_sectpersu_ask {sectPerSU?} 1233message raid_sectpersu_ask {sectPerSU?}
1234message raid_superpar_ask {SUsPerParityUnit?} 1234message raid_superpar_ask {SUsPerParityUnit?}
1235message raid_superrec_ask {SUsPerReconUnit?} 1235message raid_superrec_ask {SUsPerReconUnit?}
1236message raid_disks {Disques en RAID:} 1236message raid_disks {Disques en RAID:}
1237message vnd_err_menufmt { PATH NOT DEFINED!} 1237message vnd_err_menufmt { PATH NOT DEFINED!}
1238message vnd_assgn_menufmt { vnd%1d sur %-50s ASSIGN} 1238message vnd_assgn_menufmt { vnd%1d sur %-50s ASSIGN}
1239message vnd_menufmt { vnd%1d sur %-44s %11uM} 1239message vnd_menufmt { vnd%1d sur %-44s %11uM}
1240message vnd_path_fmt {Chemin du fichier: %20s} 1240message vnd_path_fmt {Chemin du fichier: %20s}
1241message vnd_assgn_fmt {Create new image: %14s} 1241message vnd_assgn_fmt {Create new image: %14s}
1242message vnd_size_fmt {Taille: %20sM} 1242message vnd_size_fmt {Taille: %20sM}
1243message vnd_ro_fmt {Read-only: %20s} 1243message vnd_ro_fmt {Read-only: %20s}
1244message vnd_geom_fmt {Définir la géométrie à la main: %8s} 1244message vnd_geom_fmt {Définir la géométrie à la main: %8s}
1245message vnd_bps_fmt {Octets par secteur: %20s} 1245message vnd_bps_fmt {Octets par secteur: %20s}
1246message vnd_spt_fmt {Secteurs par piste: %20s} 1246message vnd_spt_fmt {Secteurs par piste: %20s}
1247message vnd_tpc_fmt {Pistes par cylindre: %19s} 1247message vnd_tpc_fmt {Pistes par cylindre: %19s}
1248message vnd_cyl_fmt {Cylindres: %20s} 1248message vnd_cyl_fmt {Cylindres: %20s}
1249message vnd_path_ask {Chemin du fichier?} 1249message vnd_path_ask {Chemin du fichier?}
1250message vnd_size_ask {Taille (MB)?} 1250message vnd_size_ask {Taille (MB)?}
1251message vnd_bps_ask {Octets par secteur?} 1251message vnd_bps_ask {Octets par secteur?}
1252message vnd_spt_ask {Secteurs par piste?} 1252message vnd_spt_ask {Secteurs par piste?}
1253message vnd_tpc_ask {Pistes par cylindre?} 1253message vnd_tpc_ask {Pistes par cylindre?}
1254message vnd_cyl_ask {Cylindres} 1254message vnd_cyl_ask {Cylindres}
1255message cgd_err_menufmt { DISQUE NON DEFINI!} 1255message cgd_err_menufmt { DISQUE NON DEFINI!}
1256message cgd_menufmt { cgd%1d %-48s %11uM} 1256message cgd_menufmt { cgd%1d %-48s %11uM}
1257message cgd_dev_fmt {Dispositif de base: %20s} 1257message cgd_dev_fmt {Dispositif de base: %20s}
1258message cgd_enc_fmt {Chiffrage: %20s} 1258message cgd_enc_fmt {Chiffrage: %20s}
1259message cgd_key_fmt {Taille de la clé: %20d} 1259message cgd_key_fmt {Taille de la clé: %20d}
1260message cgd_iv_fmt {Algorithme IV: %20s} 1260message cgd_iv_fmt {Algorithme IV: %20s}
1261message cgd_keygen_fmt {La génération des clés: %16s} 1261message cgd_keygen_fmt {La génération des clés: %16s}
1262message cgd_verif_fmt {Méthode de vérification: %15s} 1262message cgd_verif_fmt {Méthode de vérification: %15s}
1263message lvm_disks {Disques à VG:} 1263message lvm_disks {Disques à VG:}
1264message lvm_menufmt { %-44s %20sM} 1264message lvm_menufmt { %-44s %20sM}
1265message lvm_err_menufmt { VIDER VG!} 1265message lvm_err_menufmt { VIDER VG!}
1266message lvm_disks_fmt {PV's: %34s} 1266message lvm_disks_fmt {PV's: %34s}
1267message lvm_name_fmt {Nom: %35s} 1267message lvm_name_fmt {Nom: %35s}
1268message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} 1268message lvm_maxlv_fmt {MaxLogicalVolumes: %20s}
1269message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} 1269message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s}
1270message lvm_extsiz_fmt {PhysicalExtentSize: %20s} 1270message lvm_extsiz_fmt {PhysicalExtentSize: %20s}
1271message lvm_name_ask {Nom?} 1271message lvm_name_ask {Nom?}
1272message lvm_maxlv_ask {MaxLogicalVolumes?} 1272message lvm_maxlv_ask {MaxLogicalVolumes?}
1273message lvm_maxpv_ask {MaxPhysicalVolumes?} 1273message lvm_maxpv_ask {MaxPhysicalVolumes?}
1274message lvm_extsiz_ask {PhysicalExtentSize (MB)?} 1274message lvm_extsiz_ask {PhysicalExtentSize (MB)?}
1275message lvmlv_menufmt { Logique volume %-35s %11uM} 1275message lvmlv_menufmt { Logique volume %-35s %11uM}
1276message lvmlv_name_fmt {Nom: %35s} 1276message lvmlv_name_fmt {Nom: %35s}
1277message lvmlv_size_fmt {Taille: %29dM} 1277message lvmlv_size_fmt {Taille: %29dM}
1278message lvmlv_ro_fmt {Read-only: %29s} 1278message lvmlv_ro_fmt {Read-only: %29s}
1279message lvmlv_cont_fmt {Contiguë: %29s} 1279message lvmlv_cont_fmt {Contiguë: %29s}
1280message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} 1280message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s}
1281message lvmlv_minor_fmt {Nombre mineur: %25s} 1281message lvmlv_minor_fmt {Nombre mineur: %25s}
1282message lvmlv_mirrors_fmt {Miroirs: %29d} 1282message lvmlv_mirrors_fmt {Miroirs: %29d}
1283message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} 1283message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s}
1284message lvmlv_pers_fmt {Persistante numéro mineur: %13s} 1284message lvmlv_pers_fmt {Persistante numéro mineur: %13s}
1285message lvmlv_readahsect_fmt {ReadAheadSectors: %22s} 1285message lvmlv_readahsect_fmt {ReadAheadSectors: %22s}
1286message lvmlv_stripes_fmt {Rayures: %28s} 1286message lvmlv_stripes_fmt {Rayures: %28s}
1287message lvmlv_stripesiz_fmt {Stripesize: %28s} 1287message lvmlv_stripesiz_fmt {Stripesize: %28s}
1288message lvmlv_zero_fmt {Remise à zéro de la KB d'abord: %8s} 1288message lvmlv_zero_fmt {Remise à zéro de la KB d'abord: %8s}
1289message lvmlv_name_ask {Nom?} 1289message lvmlv_name_ask {Nom?}
1290message lvmlv_size_ask {Taille (MB)?} 1290message lvmlv_size_ask {Taille (MB)?}
1291message lvmlv_extnum_ask {LogicalExtentsNumber?} 1291message lvmlv_extnum_ask {LogicalExtentsNumber?}
1292message lvmlv_minor_ask {Numéro mineur?} 1292message lvmlv_minor_ask {Numéro mineur?}
1293message lvmlv_mirrors_ask {Miroirs?} 1293message lvmlv_mirrors_ask {Miroirs?}
1294message lvmlv_regsiz_ask {MirrorLogRegionSize?} 1294message lvmlv_regsiz_ask {MirrorLogRegionSize?}
1295message lvmlv_readahsect_ask {ReadAheadSectors?} 1295message lvmlv_readahsect_ask {ReadAheadSectors?}
1296message lvmlv_stripes_ask {Stripes?} 1296message lvmlv_stripes_ask {Stripes?}
1297 1297
1298message addusername {Nom d'utilisateur (8 caractères)} 1298message addusername {Nom d'utilisateur (8 caractères)}
1299message addusertowheel {Ajouter cet utilisateur au groupe "wheel" ?} 1299message addusertowheel {Ajouter cet utilisateur au groupe "wheel" ?}
1300message Delete_partition 1300message Delete_partition
1301{Supprimer la partition} 1301{Supprimer la partition}
1302 1302
 1303
 1304message No_filesystem_newfs
 1305{The selected partition does not seem to have a valid file system.
 1306Do you want to newfs (format) it?}
 1307
 1308message Auto_add_swap_part
 1309{A swap partition (named %s) seems to exist on %s.
 1310Do you want to use that?}
 1311
 1312

cvs diff -r1.8 -r1.9 src/usr.sbin/sysinst/msg.mi.pl (switch to unified diff)

--- src/usr.sbin/sysinst/msg.mi.pl 2015/05/17 10:13:24 1.8
+++ src/usr.sbin/sysinst/msg.mi.pl 2018/06/03 13:16:30 1.9
@@ -1,1200 +1,1210 @@ @@ -1,1200 +1,1210 @@
1/* $NetBSD: msg.mi.pl,v 1.8 2015/05/17 10:13:24 martin Exp $ */ 1/* $NetBSD: msg.mi.pl,v 1.9 2018/06/03 13:16:30 martin Exp $ */
2/* Based on english version: */ 2/* Based on english version: */
3/* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */ 3/* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */
4 4
5/* 5/*
6 * Copyright 1997 Piermont Information Systems Inc. 6 * Copyright 1997 Piermont Information Systems Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * 8 *
9 * Written by Philip A. Nelson for Piermont Information Systems Inc. 9 * Written by Philip A. Nelson for Piermont Information Systems Inc.
10 * 10 *
11 * Redistribution and use in source and binary forms, with or without 11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions 12 * modification, are permitted provided that the following conditions
13 * are met: 13 * are met:
14 * 1. Redistributions of source code must retain the above copyright 14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer. 15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright 16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the 17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution. 18 * documentation and/or other materials provided with the distribution.
19 * 3. The name of Piermont Information Systems Inc. may not be used to endorse 19 * 3. The name of Piermont Information Systems Inc. may not be used to endorse
20 * or promote products derived from this software without specific prior 20 * or promote products derived from this software without specific prior
21 * written permission. 21 * written permission.
22 * 22 *
23 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 23 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS''
24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 26 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33 * THE POSSIBILITY OF SUCH DAMAGE. 33 * THE POSSIBILITY OF SUCH DAMAGE.
34 * 34 *
35 */ 35 */
36 36
37/* MI Message catalog -- polish, machine independent */ 37/* MI Message catalog -- polish, machine independent */
38 38
39message usage 39message usage
40{uzycie: sysinst [-D] [-f plik_definicja] [-r wersja] [-C bg:fg] 40{uzycie: sysinst [-D] [-f plik_definicja] [-r wersja] [-C bg:fg]
41} 41}
42 42
43/* 43/*
44 * We can not use non ascii characters in this message - it is displayed 44 * We can not use non ascii characters in this message - it is displayed
45 * before the locale is set up! 45 * before the locale is set up!
46 */ 46 */
47message sysinst_message_language 47message sysinst_message_language
48{Komunikaty instalacyjne w jezyku polskim} 48{Komunikaty instalacyjne w jezyku polskim}
49 49
50message sysinst_message_locale 50message sysinst_message_locale
51{pl_PL.ISO8859-2} 51{pl_PL.ISO8859-2}
52 52
53message Yes {Tak} 53message Yes {Tak}
54message No {Nie} 54message No {Nie}
55message All {Wszystkie} 55message All {Wszystkie}
56message Some {Niektore} 56message Some {Niektore}
57message None {Zadne} 57message None {Zadne}
58message none {zadne} 58message none {zadne}
59message ok {ok} 59message ok {ok}
60message OK {OK} 60message OK {OK}
61message unchanged {niezmienione} 61message unchanged {niezmienione}
62message On {Wlaczone} 62message On {Wlaczone}
63message Off {Wylaczone} 63message Off {Wylaczone}
64message Delete {Usunac?} 64message Delete {Usunac?}
65 65
66message install 66message install
67{zainstalowac} 67{zainstalowac}
68 68
69message reinstall 69message reinstall
70{przeinstaluj pakiety dla} 70{przeinstaluj pakiety dla}
71 71
72message upgrade 72message upgrade
73{zaktualizowac} 73{zaktualizowac}
74 74
75message mount_failed 75message mount_failed
76{Montowanie %s nie powiodlo sie. Kontynuowac? 76{Montowanie %s nie powiodlo sie. Kontynuowac?
77} 77}
78 78
79message hello 79message hello
80{Witaj w sysinst, systemie instalacyjnym NetBSD-@@VERSION@@. 80{Witaj w sysinst, systemie instalacyjnym NetBSD-@@VERSION@@.
81To, oparte na menu, narzedzie zostalo stworzone aby pomoc ci zainstalowac 81To, oparte na menu, narzedzie zostalo stworzone aby pomoc ci zainstalowac
82NetBSD na twardym dysku, lub zaktualizowac istniejacy system NetBSD, 82NetBSD na twardym dysku, lub zaktualizowac istniejacy system NetBSD,
83zuzywajac minimum czasu. W ponizszych menu mozesz zmienic aktualne 83zuzywajac minimum czasu. W ponizszych menu mozesz zmienic aktualne
84ustawienia poprzez naciskanie klawiszy (a, b, c, ...). Klawisze strzalek 84ustawienia poprzez naciskanie klawiszy (a, b, c, ...). Klawisze strzalek
85takze moga dzialac. Aktywujesz ustawienie poprzez nacisniecie ENTER. 85takze moga dzialac. Aktywujesz ustawienie poprzez nacisniecie ENTER.
86} 86}
87 87
88message thanks 88message thanks
89{Dziekujemy za uzywanie NetBSD! 89{Dziekujemy za uzywanie NetBSD!
90} 90}
91 91
92message installusure 92message installusure
93{Zdecydowales sie zainstalowac NetBSD na twardym dysku. Spowoduje to zmiane 93{Zdecydowales sie zainstalowac NetBSD na twardym dysku. Spowoduje to zmiane
94informacji na twoim dysku. Powinienes zrobic pelny backup danych przed 94informacji na twoim dysku. Powinienes zrobic pelny backup danych przed
95rozpoczeciem tej procedury! Zostana wykonane nastepujace czynnosci: 95rozpoczeciem tej procedury! Zostana wykonane nastepujace czynnosci:
96 a) Podzial dysku twardego 96 a) Podzial dysku twardego
97 b) Stworzenie nowych systemow plikow BSD 97 b) Stworzenie nowych systemow plikow BSD
98 c) Wgranie i zainstalowanie pakietow dystrybucji 98 c) Wgranie i zainstalowanie pakietow dystrybucji
99 99
100(Po wprowadzeniu informacji o partycjach, ale jeszcze zanim twoj dysk 100(Po wprowadzeniu informacji o partycjach, ale jeszcze zanim twoj dysk
101zostanie zmieniony, bedziesz mial mozliwosc przerwac te procedure.) 101zostanie zmieniony, bedziesz mial mozliwosc przerwac te procedure.)
102 102
103Czy kontynuowac? 103Czy kontynuowac?
104} 104}
105 105
106message upgradeusure 106message upgradeusure
107{Ok, zaktualizujmy NetBSD na twoim dysku. Jak zawsze, spowoduje to 107{Ok, zaktualizujmy NetBSD na twoim dysku. Jak zawsze, spowoduje to
108zmiane informacji na twoim dysku. Powinienes zrobic pelny backup danych 108zmiane informacji na twoim dysku. Powinienes zrobic pelny backup danych
109przed rozpoczeciem! Czy napewno chcesz zaktualizowac NetBSD? 109przed rozpoczeciem! Czy napewno chcesz zaktualizowac NetBSD?
110(Jest to ostatnie ostrzezenie zanim zacznie sie modyfikacja danych na 110(Jest to ostatnie ostrzezenie zanim zacznie sie modyfikacja danych na
111twoich dyskach.) 111twoich dyskach.)
112} 112}
113 113
114message reinstallusure 114message reinstallusure
115{Ok, rozpakujmy pakiety dystrybucyjne NetBSD na bootowalny twardy dysk. 115{Ok, rozpakujmy pakiety dystrybucyjne NetBSD na bootowalny twardy dysk.
116Ta procedura tylko sciaga i rozpakowuje pakiety na pre-partycjonowany 116Ta procedura tylko sciaga i rozpakowuje pakiety na pre-partycjonowany
117bootowalny dysk. Nie nazywa dyskow, aktualizuje bootblokow, lub zapisuje 117bootowalny dysk. Nie nazywa dyskow, aktualizuje bootblokow, lub zapisuje
118istniejacej konfiguracji. (Wyjdz i wybierz `instaluj' lub 118istniejacej konfiguracji. (Wyjdz i wybierz `instaluj' lub
119`aktualizuj' jesli chcesz to zrobic.) Powinienes wykonac `instaluj' lub 119`aktualizuj' jesli chcesz to zrobic.) Powinienes wykonac `instaluj' lub
120`aktualizuj' przed rozpoczeciem tej procedury! 120`aktualizuj' przed rozpoczeciem tej procedury!
121 121
122Czy napewno chcesz przeinstalowac pakiety dystrybucjne NetBSD? 122Czy napewno chcesz przeinstalowac pakiety dystrybucjne NetBSD?
123(Jest to ostatnie ostrzezenie zanim zacznie sie modyfikacja danych na 123(Jest to ostatnie ostrzezenie zanim zacznie sie modyfikacja danych na
124twoich dyskach.) 124twoich dyskach.)
125} 125}
126 126
127message nodisk 127message nodisk
128{Nie moge znalezc zadnych twardych dyskow do uzycia z NetBSD. Zostaniesz 128{Nie moge znalezc zadnych twardych dyskow do uzycia z NetBSD. Zostaniesz
129przeniesiony do menu glownego. 129przeniesiony do menu glownego.
130} 130}
131 131
132message onedisk 132message onedisk
133{Znalazlem tylko jeden dysk, %s. Stad przyjmuje, ze chcesz %s 133{Znalazlem tylko jeden dysk, %s. Stad przyjmuje, ze chcesz %s
134NetBSD wlasnie na nim. 134NetBSD wlasnie na nim.
135} 135}
136 136
137message ask_disk 137message ask_disk
138{Na ktorym z nich chcesz %s NetBSD? } 138{Na ktorym z nich chcesz %s NetBSD? }
139 139
140message Available_disks 140message Available_disks
141{Dostepne dyski} 141{Dostepne dyski}
142 142
143message heads 143message heads
144{glowice} 144{glowice}
145 145
146message sectors 146message sectors
147{sektory} 147{sektory}
148 148
149message fs_isize 149message fs_isize
150{sredni rozmiar pliku (bajty)} 150{sredni rozmiar pliku (bajty)}
151 151
152message mountpoint 152message mountpoint
153{punkt montowania (lub 'zaden')} 153{punkt montowania (lub 'zaden')}
154 154
155message cylname 155message cylname
156{cyl} 156{cyl}
157 157
158message secname 158message secname
159{sek} 159{sek}
160 160
161message megname 161message megname
162{MB} 162{MB}
163 163
164message layout 164message layout
165{NetBSD uzywa BSD disklabel aby pociac czesc dysku NetBSD na kilka 165{NetBSD uzywa BSD disklabel aby pociac czesc dysku NetBSD na kilka
166partycji BSD. Musisz teraz skonfigurowac BSD disklabel. 166partycji BSD. Musisz teraz skonfigurowac BSD disklabel.
167Masz kilka mozliwosci. Sa one opisane ponizej.  167Masz kilka mozliwosci. Sa one opisane ponizej.
168-- Standard: partycje BSD disklabel sa ustawiane przez ten program.  168-- Standard: partycje BSD disklabel sa ustawiane przez ten program.
169-- Uzyj istniejacych: Uzywa aktualnych partycji. Musisz je zamontowac. 169-- Uzyj istniejacych: Uzywa aktualnych partycji. Musisz je zamontowac.
170 170
171Dysk NetBSD to %d Megabajtow.  171Dysk NetBSD to %d Megabajtow.
172Standard wymaga przynajmniej %d Megabajtow. 172Standard wymaga przynajmniej %d Megabajtow.
173Standard z X Window System wymaga przynajmniej %d Megabajtow. 173Standard z X Window System wymaga przynajmniej %d Megabajtow.
174} 174}
175 175
176message Choose_your_size_specifier 176message Choose_your_size_specifier
177{Wybranie Megabajtow nada partycji rozmiar bliski twojemu wyborowi, 177{Wybranie Megabajtow nada partycji rozmiar bliski twojemu wyborowi,
178ale dopasowany do granic cylindrow. Wybranie sektorow pozwoli ci na 178ale dopasowany do granic cylindrow. Wybranie sektorow pozwoli ci na
179bardziej dokladne okreslenie rozmiarow. Na nowych dyskach ZBR rozmiar 179bardziej dokladne okreslenie rozmiarow. Na nowych dyskach ZBR rozmiar
180cylindra zmienia sie w zaleznosci od miejsca na dysku, jest wiec 180cylindra zmienia sie w zaleznosci od miejsca na dysku, jest wiec
181niewielka korzysc z dopasowania cylindrow. Na starszych dyskach 181niewielka korzysc z dopasowania cylindrow. Na starszych dyskach
182bardziej wydajne jest podawanie rozmiaru dysku, ktore sa 182bardziej wydajne jest podawanie rozmiaru dysku, ktore sa
183wielokrotnoscia aktualnego rozmiaru cylindra. 183wielokrotnoscia aktualnego rozmiaru cylindra.
184 184
185Wybierz specyfikator rozmiaru} 185Wybierz specyfikator rozmiaru}
186 186
187message ptnsizes 187message ptnsizes
188{Mozesz teraz zmienic rozmiary partycji systemowych. Domyslne ustawienia 188{Mozesz teraz zmienic rozmiary partycji systemowych. Domyslne ustawienia
189alokuja cala przestrzen na glowny system plikow, aczkolwiek mozesz zdefiniowac 189alokuja cala przestrzen na glowny system plikow, aczkolwiek mozesz zdefiniowac
190osobne partycje /usr (dodatkowe pliki systemowe), /var (dane systemowe i logi) 190osobne partycje /usr (dodatkowe pliki systemowe), /var (dane systemowe i logi)
191lub /home (katalogi domowe uzytkownikow). 191lub /home (katalogi domowe uzytkownikow).
192 192
193Wolna przestrzen zostanie dodana do partycji oznaczonej '+'. 193Wolna przestrzen zostanie dodana do partycji oznaczonej '+'.
194} 194}
195 195
196message ptnheaders 196message ptnheaders
197{ 197{
198 MB Cylindry Sektory System plikow 198 MB Cylindry Sektory System plikow
199} 199}
200 200
201message askfsmount 201message askfsmount
202{Punkt montowania?} 202{Punkt montowania?}
203 203
204message askfssize 204message askfssize
205{Rozmiar dla %s w %s?} 205{Rozmiar dla %s w %s?}
206 206
207message askunits 207message askunits
208{Zmien jednostki wejsciowe (sektory/cylindry/MB)} 208{Zmien jednostki wejsciowe (sektory/cylindry/MB)}
209 209
210message NetBSD_partition_cant_change 210message NetBSD_partition_cant_change
211{partycja NetBSD} 211{partycja NetBSD}
212 212
213message Whole_disk_cant_change 213message Whole_disk_cant_change
214{Caly dysk} 214{Caly dysk}
215 215
216message Boot_partition_cant_change 216message Boot_partition_cant_change
217{partycja uruchomic} 217{partycja uruchomic}
218 218
219message add_another_ptn 219message add_another_ptn
220{Dodaj partycje zdefiniowana przez uzytkownika} 220{Dodaj partycje zdefiniowana przez uzytkownika}
221 221
222message fssizesok 222message fssizesok
223{Zaakceptuj rozmiary partycji. Wolne miejsce %d %s, %d wolnych partycji.} 223{Zaakceptuj rozmiary partycji. Wolne miejsce %d %s, %d wolnych partycji.}
224 224
225message fssizesbad 225message fssizesbad
226{Zmniejsz rozmiary partycji o %d %s (%u sektorow).} 226{Zmniejsz rozmiary partycji o %d %s (%u sektorow).}
227 227
228message startoutsidedisk 228message startoutsidedisk
229{Wartosc poczatkowa ktora podales jest poza koncem dysku. 229{Wartosc poczatkowa ktora podales jest poza koncem dysku.
230} 230}
231 231
232message endoutsidedisk 232message endoutsidedisk
233{Przy tej wartosci, koniec partycji znajduje sie poza koncem dysku. Rozmiar 233{Przy tej wartosci, koniec partycji znajduje sie poza koncem dysku. Rozmiar
234twojej partycji zostal zmniejszony do %d %s. 234twojej partycji zostal zmniejszony do %d %s.
235} 235}
236 236
237message toobigdisklabel 237message toobigdisklabel
238{ 238{
239Ten dysk jest zbyt duzy dla tablicy partycji disklabel i dlatego 239Ten dysk jest zbyt duzy dla tablicy partycji disklabel i dlatego
240nie moze zostac uzyty jako dysk starowy ani nie moze przechowywac 240nie moze zostac uzyty jako dysk starowy ani nie moze przechowywac
241glownej partycji. 241glownej partycji.
242} 242}
243 243
244message fspart 244message fspart
245{Mamy teraz twoje partycje BSD-disklabel jako: 245{Mamy teraz twoje partycje BSD-disklabel jako:
246 246
247} 247}
248 248
249message fspart_header /* XXX abbreviations (or change fspart_row below) */ 249message fspart_header /* XXX abbreviations (or change fspart_row below) */
250{ Rozm %3s Prze %3s Koniec %3s Typ SP Ochrona Montowana Jako 250{ Rozm %3s Prze %3s Koniec %3s Typ SP Ochrona Montowana Jako
251 --------- --------- ---------- ---------- ------- ----- ---------- 251 --------- --------- ---------- ---------- ------- ----- ----------
252} 252}
253 253
254message fspart_row 254message fspart_row
255{%9lu %9lu %10lu %-10s %-7s %-9s %s} 255{%9lu %9lu %10lu %-10s %-7s %-9s %s}
256 256
257message show_all_unused_partitions 257message show_all_unused_partitions
258{Pokaz wszystkie nieuzywane partycje} 258{Pokaz wszystkie nieuzywane partycje}
259 259
260message partition_sizes_ok 260message partition_sizes_ok
261{Rozmiary partycji w porzadku} 261{Rozmiary partycji w porzadku}
262 262
263message edfspart 263message edfspart
264{Powinienes najpierw ustawic rodzaj systemu plikow (SP).  264{Powinienes najpierw ustawic rodzaj systemu plikow (SP).
265Pozniej inne wartosci. 265Pozniej inne wartosci.
266 266
267Aktualne wartosci dla partycji %c: 267Aktualne wartosci dla partycji %c:
268 268
269 MB cylinders sectors 269 MB cylinders sectors
270 ------- --------- --------- 270 ------- --------- ---------
271} 271}
272 272
273message fstype_fmt 273message fstype_fmt
274{ Typ systemu plikow: %9s} 274{ Typ systemu plikow: %9s}
275 275
276message start_fmt 276message start_fmt
277{ poczatek: %9u %8u%c %9u} 277{ poczatek: %9u %8u%c %9u}
278 278
279message size_fmt 279message size_fmt
280{ rozmiar: %9u %8u%c %9u} 280{ rozmiar: %9u %8u%c %9u}
281 281
282message end_fmt 282message end_fmt
283{ koniec: %9u %8u%c %9u} 283{ koniec: %9u %8u%c %9u}
284 284
285message bsize_fmt 285message bsize_fmt
286{ rozmiar bloku: %9d bajtow} 286{ rozmiar bloku: %9d bajtow}
287 287
288message fsize_fmt 288message fsize_fmt
289{ rozmiar fragmentu: %9d bajtow} 289{ rozmiar fragmentu: %9d bajtow}
290 290
291message isize_fmt 291message isize_fmt
292{ Sredni rozm. pliku: %9d bajtow} 292{ Sredni rozm. pliku: %9d bajtow}
293message isize_fmt_dflt 293message isize_fmt_dflt
294{ Sredni rozm. pliku: 4 fragmenty} 294{ Sredni rozm. pliku: 4 fragmenty}
295 295
296message newfs_fmt 296message newfs_fmt
297{ newfs: %9s} 297{ newfs: %9s}
298 298
299message mount_fmt 299message mount_fmt
300{ montowanie: %9s} 300{ montowanie: %9s}
301 301
302message mount_options_fmt 302message mount_options_fmt
303{ opcje montowania: } 303{ opcje montowania: }
304 304
305message mountpt_fmt 305message mountpt_fmt
306{ punkt montowania: %9s} 306{ punkt montowania: %9s}
307 307
308message toggle 308message toggle
309{Przelacz} 309{Przelacz}
310 310
311message restore 311message restore
312{Odzyskaj oryginalne wartosci} 312{Odzyskaj oryginalne wartosci}
313 313
314message Select_the_type 314message Select_the_type
315{Wybierz typ} 315{Wybierz typ}
316 316
317message other_types 317message other_types
318{inne typy} 318{inne typy}
319 319
320message label_size 320message label_size
321{%s 321{%s
322Specjalne wartosci, ktore moga byc podane jako wartosci rozmiaru: 322Specjalne wartosci, ktore moga byc podane jako wartosci rozmiaru:
323 -1: az do konca czesci dysku NetBSD 323 -1: az do konca czesci dysku NetBSD
324 a-%c: zakoncz ta partycje tam gdzie partycja X sie zaczyna 324 a-%c: zakoncz ta partycje tam gdzie partycja X sie zaczyna
325 325
326rozmiar (%s)} 326rozmiar (%s)}
327 327
328message label_offset 328message label_offset
329{%s 329{%s
330Specjalne wartosci, ktore moga byc podane jako wartosci przesuniecia: 330Specjalne wartosci, ktore moga byc podane jako wartosci przesuniecia:
331 -1: zacznij na poczatku czesci dysku NetBSD 331 -1: zacznij na poczatku czesci dysku NetBSD
332 a-%c: zacznij na koncu partycji X (a, b, ... %c) 332 a-%c: zacznij na koncu partycji X (a, b, ... %c)
333 333
334poczatek (%s)} 334poczatek (%s)}
335 335
336message invalid_sector_number 336message invalid_sector_number
337{Zle uformowany numer sektora 337{Zle uformowany numer sektora
338} 338}
339 339
340message Select_file_system_block_size 340message Select_file_system_block_size
341{Wybierz rozmiar bloku dla systemu plikow} 341{Wybierz rozmiar bloku dla systemu plikow}
342 342
343message Select_file_system_fragment_size 343message Select_file_system_fragment_size
344{Wybierz rozmiar fragmentu dla systemu plikow} 344{Wybierz rozmiar fragmentu dla systemu plikow}
345 345
346message packname 346message packname
347{Podaj nazwe dla swojego dysku NetBSD} 347{Podaj nazwe dla swojego dysku NetBSD}
348 348
349message lastchance 349message lastchance
350{Ok, jestesmy teraz gotowi zainstalowac NetBSD na twoim dysku (%s). Nic 350{Ok, jestesmy teraz gotowi zainstalowac NetBSD na twoim dysku (%s). Nic
351nie zostalo jeszcze zapisane. Masz teraz ostatnia szanse na przerwanie tego 351nie zostalo jeszcze zapisane. Masz teraz ostatnia szanse na przerwanie tego
352procesu poki nic nie zostalo jeszcze zmienione. 352procesu poki nic nie zostalo jeszcze zmienione.
353 353
354Czy kontynuowac? 354Czy kontynuowac?
355} 355}
356 356
357message disksetupdone 357message disksetupdone
358{Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal 358{Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal
359disklabel na dysk doceloway, oraz utworzyl system plikow i sprawdzil 359disklabel na dysk doceloway, oraz utworzyl system plikow i sprawdzil
360nowe partycje, ktore podales jako docelowe. 360nowe partycje, ktore podales jako docelowe.
361} 361}
362 362
363message disksetupdoneupdate 363message disksetupdoneupdate
364{Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal 364{Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal
365disklabel na dysk docelowy, oraz sprawdzil nowe partycje, ktore 365disklabel na dysk docelowy, oraz sprawdzil nowe partycje, ktore
366podales jako docelowe. 366podales jako docelowe.
367} 367}
368 368
369message openfail 369message openfail
370{Nie moglem otworzyc %s, blad: %s. 370{Nie moglem otworzyc %s, blad: %s.
371} 371}
372 372
373message mountfail 373message mountfail
374{zamontowanie urzadzenia /dev/%s%c na %s nie powiodlo sie. 374{zamontowanie urzadzenia /dev/%s%c na %s nie powiodlo sie.
375} 375}
376 376
377message extractcomplete 377message extractcomplete
378{Rozpakowywanie wybranych pakietow dla NetBSD-@@VERSION@@ zakonczone. 378{Rozpakowywanie wybranych pakietow dla NetBSD-@@VERSION@@ zakonczone.
379System moze sie teraz uruchomic z wybranego twardego dysku. Aby zakonczyc 379System moze sie teraz uruchomic z wybranego twardego dysku. Aby zakonczyc
380instalacje, sysinst da ci mozliwosc skonfigurowania kilku istotnych rzeczy. 380instalacje, sysinst da ci mozliwosc skonfigurowania kilku istotnych rzeczy.
381} 381}
382 382
383message instcomplete 383message instcomplete
384{Instalacja NetBSD-@@VERSION@@ zostala zakonczona. System powinien 384{Instalacja NetBSD-@@VERSION@@ zostala zakonczona. System powinien
385uruchomic sie z twardego dysku. Wykonaj polecenia zawarte w pliku 385uruchomic sie z twardego dysku. Wykonaj polecenia zawarte w pliku
386INSTALL o koncowej konfiguracji systemu. 386INSTALL o koncowej konfiguracji systemu.
387 387
388Przynajmniej powinienes wyedytowac /etc/rc.conf aby odpowiadal twoim 388Przynajmniej powinienes wyedytowac /etc/rc.conf aby odpowiadal twoim
389potrzebom. Przegladnij /etc/defaults/rc.conf aby poznac domyslne wartosci. 389potrzebom. Przegladnij /etc/defaults/rc.conf aby poznac domyslne wartosci.
390} 390}
391 391
392message upgrcomplete 392message upgrcomplete
393{Aktualizacja NetBSD-@@VERSION@@ zostala zakonczona. Bedziesz teraz 393{Aktualizacja NetBSD-@@VERSION@@ zostala zakonczona. Bedziesz teraz
394musial wykonac polecenia zawarte w pliku INSTALL, aby uzyskac system 394musial wykonac polecenia zawarte w pliku INSTALL, aby uzyskac system
395odpowiadajacy twoim potrzebom. 395odpowiadajacy twoim potrzebom.
396 396
397Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska 397Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska
398i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu 398i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu
399zatrzyma sie na trybie jednego-uzytkownika, oraz skopiowac spowrotem 399zatrzyma sie na trybie jednego-uzytkownika, oraz skopiowac spowrotem
400pliki z haslami (biorac pod uwage nowe konta systemowe ktore mogly 400pliki z haslami (biorac pod uwage nowe konta systemowe ktore mogly
401zostac utworzone dla tej wersji), jesli uzywales lokalnych plikow hasel. 401zostac utworzone dla tej wersji), jesli uzywales lokalnych plikow hasel.
402} 402}
403 403
404 404
405message unpackcomplete 405message unpackcomplete
406{Rozpakowywanie dodatkowych pakietow NetBSD-@@VERSION@@ zostalo zakonczone.  406{Rozpakowywanie dodatkowych pakietow NetBSD-@@VERSION@@ zostalo zakonczone.
407Musisz teraz wykonac 407Musisz teraz wykonac
408polecenia zawarte w pliku INSTALL aby przekonfigurowac system do swoich 408polecenia zawarte w pliku INSTALL aby przekonfigurowac system do swoich
409potrzeb. 409potrzeb.
410 410
411Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska 411Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska
412i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu 412i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu
413zatrzyma sie na trybie jednego-uzytkownika. 413zatrzyma sie na trybie jednego-uzytkownika.
414} 414}
415 415
416message distmedium 416message distmedium
417{Twoj dysk jest teraz gotowy na zainstalowanie jadra oraz pakietow 417{Twoj dysk jest teraz gotowy na zainstalowanie jadra oraz pakietow
418dystrybucyjnych. Jak napisano w pliku INSTALL masz terz kilka opcji. Dla 418dystrybucyjnych. Jak napisano w pliku INSTALL masz terz kilka opcji. Dla
419ftp lub nfs, musisz byc podlaczony do sieci z dostepem do odpowidnich maszyn. 419ftp lub nfs, musisz byc podlaczony do sieci z dostepem do odpowidnich maszyn.
420 420
421Pakietow wybranych %d, zainstalowanych %d. Nastepnym pakietem jest %s. 421Pakietow wybranych %d, zainstalowanych %d. Nastepnym pakietem jest %s.
422 422
423} 423}
424 424
425message distset 425message distset
426{Dystrybucja NetBSD jest rozbita w kolekcje pakietow dystrybucyjnych. 426{Dystrybucja NetBSD jest rozbita w kolekcje pakietow dystrybucyjnych.
427Czesc z nich to pakiety podstawowe wymagane przez wszystkie instalacje, 427Czesc z nich to pakiety podstawowe wymagane przez wszystkie instalacje,
428a czesc nie jest przez wszystkie wymagana. Mozesz zainstalowac je 428a czesc nie jest przez wszystkie wymagana. Mozesz zainstalowac je
429wszystkie (Pelna instalacja) lub wybrac z opcjonalnych pakietow. 429wszystkie (Pelna instalacja) lub wybrac z opcjonalnych pakietow.
430} /* XXX add 'minimal installation' */ 430} /* XXX add 'minimal installation' */
431 431
432message ftpsource 432message ftpsource
433{Ponizej masz site %s, katalog, uzytkownika, oraz haslo gotowe do uzycia. 433{Ponizej masz site %s, katalog, uzytkownika, oraz haslo gotowe do uzycia.
434Jesli "uzytkownik" to "ftp", wtedy haslo nie jest wymagane. 434Jesli "uzytkownik" to "ftp", wtedy haslo nie jest wymagane.
435 435
436} 436}
437 437
438message email 438message email
439{adres e-mail} 439{adres e-mail}
440 440
441message dev 441message dev
442{urzadzenie} 442{urzadzenie}
443 443
444message nfssource 444message nfssource
445{Wprowadz hosta NFS oraz katalog gdzie znajduje sie dystrybucja.  445{Wprowadz hosta NFS oraz katalog gdzie znajduje sie dystrybucja.
446Pamietaj, ze katalog musi zawierac pliki .tgz oraz, ze musi byc 446Pamietaj, ze katalog musi zawierac pliki .tgz oraz, ze musi byc
447dostepny przez NFS. 447dostepny przez NFS.
448 448
449} 449}
450 450
451message floppysource 451message floppysource
452{Podaj urzadzenie bedace stacja dyskietek oraz katalog pomocniczy 452{Podaj urzadzenie bedace stacja dyskietek oraz katalog pomocniczy
453w docelowym systemie plikow. Pliki z pakietami instalacyjnymi musza 453w docelowym systemie plikow. Pliki z pakietami instalacyjnymi musza
454znajdowac sie w glownym katalogu dyskietki. 454znajdowac sie w glownym katalogu dyskietki.
455 455
456} 456}
457 457
458message cdromsource 458message cdromsource
459{Podaj urzadzenie CDROM oraz katalog na CDROMie, w ktorym znajduje sie 459{Podaj urzadzenie CDROM oraz katalog na CDROMie, w ktorym znajduje sie
460dystrybucja.  460dystrybucja.
461Pamietaj, ze katalog musi zawierac pliki .tgz. 461Pamietaj, ze katalog musi zawierac pliki .tgz.
462 462
463} 463}
464 464
465message Available_cds 465message Available_cds
466{Dostepne CD} 466{Dostepne CD}
467 467
468message ask_cd 468message ask_cd
469{Znaleziono kilka CD, prosze wybrac CD zawierajcy instalacje.} 469{Znaleziono kilka CD, prosze wybrac CD zawierajcy instalacje.}
470 470
471message cd_path_not_found 471message cd_path_not_found
472{Zbiory instalacyjne nie zostaly znalezione w domyslnym polozeniu na tym 472{Zbiory instalacyjne nie zostaly znalezione w domyslnym polozeniu na tym
473CD. Prosze sprawdzic urzadzenie i sciezke.} 473CD. Prosze sprawdzic urzadzenie i sciezke.}
474 474
475message localfssource 475message localfssource
476{Podaj niezamountowane lokalne urzadzenie oraz katalog na nim, gdzie 476{Podaj niezamountowane lokalne urzadzenie oraz katalog na nim, gdzie
477znajduje sie dystrybucja.  477znajduje sie dystrybucja.
478Pamietaj, ze katalog musi zawierac pliki .tgz. 478Pamietaj, ze katalog musi zawierac pliki .tgz.
479 479
480} 480}
481 481
482message localdir 482message localdir
483{Podaj aktualnie zamountowany lokalny katalog, gdzie znajduje sie dystrybucja.  483{Podaj aktualnie zamountowany lokalny katalog, gdzie znajduje sie dystrybucja.
484Pamietaj, ze katalog musi zawierac pliki .tgz. 484Pamietaj, ze katalog musi zawierac pliki .tgz.
485 485
486} 486}
487 487
488message filesys 488message filesys
489{system plikow} 489{system plikow}
490 490
491message nonet 491message nonet
492{Nie znalazlem zadnych interfejsow sieciowych do uzycia z NetBSD. 492{Nie znalazlem zadnych interfejsow sieciowych do uzycia z NetBSD.
493Zostaniesz przeniesiony do glownego menu. 493Zostaniesz przeniesiony do glownego menu.
494} 494}
495 495
496message netup 496message netup
497{Nastepujace interfejsy sieciowe sa aktywne: %s 497{Nastepujace interfejsy sieciowe sa aktywne: %s
498Czy ktorys z nich jest podlaczony do serwera?} 498Czy ktorys z nich jest podlaczony do serwera?}
499 499
500message asknetdev 500message asknetdev
501{Ktorego urzadzenia mam uzyc?} 501{Ktorego urzadzenia mam uzyc?}
502 502
503message netdevs 503message netdevs
504{Dost?pne interfejsy} 504{Dost?pne interfejsy}
505 505
506message netinfo 506message netinfo
507{Aby mozna bylo uzywac sieci, potrzebujemy odpowiedzi na ponizsze pytania: 507{Aby mozna bylo uzywac sieci, potrzebujemy odpowiedzi na ponizsze pytania:
508 508
509} 509}
510 510
511message net_domain 511message net_domain
512{Twoja domena DNS} 512{Twoja domena DNS}
513 513
514message net_host 514message net_host
515{Twoja nazwa hosta} 515{Twoja nazwa hosta}
516 516
517message net_ip 517message net_ip
518{Twoj adres IPv4} 518{Twoj adres IPv4}
519 519
520message net_srv_ip 520message net_srv_ip
521{Server IPv4 address} 521{Server IPv4 address}
522 522
523message net_mask 523message net_mask
524{Maska podsieci IPv4} 524{Maska podsieci IPv4}
525 525
526message net_namesrv 526message net_namesrv
527{Serwer nazw IPv4} 527{Serwer nazw IPv4}
528 528
529message net_defroute 529message net_defroute
530{bramka IPv4} 530{bramka IPv4}
531 531
532message net_media 532message net_media
533{Typ medium sieciowego} 533{Typ medium sieciowego}
534 534
535message netok 535message netok
536{Ponizej sa wartosci, ktore wprowadziles. 536{Ponizej sa wartosci, ktore wprowadziles.
537 537
538Domena DNS: %s  538Domena DNS: %s
539Nazwa hosta: %s  539Nazwa hosta: %s
540Serwer nazw: %s  540Serwer nazw: %s
541Podstawowy interfejs: %s  541Podstawowy interfejs: %s
542Medium sieciowe: %s 542Medium sieciowe: %s
543Twoj adres IP: %s  543Twoj adres IP: %s
544Maska podsieci: %s  544Maska podsieci: %s
545Bramka IPv4: %s  545Bramka IPv4: %s
546} 546}
547 547
548message netok_slip 548message netok_slip
549{Ponizej sa wartosci, ktore wprowadziles. Czy sa poprawne? 549{Ponizej sa wartosci, ktore wprowadziles. Czy sa poprawne?
550 550
551Domena DNS: %s  551Domena DNS: %s
552Nazwa hosta: %s  552Nazwa hosta: %s
553Serwer nazw: %s  553Serwer nazw: %s
554Podstawowy interfejs: %s  554Podstawowy interfejs: %s
555Medium sieciowe: %s 555Medium sieciowe: %s
556Twoj adres IP: %s  556Twoj adres IP: %s
557Adres IP serwera: %s 557Adres IP serwera: %s
558Maska podsieci: %s  558Maska podsieci: %s
559Bramka IPv4: %s  559Bramka IPv4: %s
560} 560}
561 561
562message netokv6 562message netokv6
563{Autkonfiguracja IPv6: %s  563{Autkonfiguracja IPv6: %s
564} 564}
565 565
566message netok_ok 566message netok_ok
567{Czy sa poprawne?} 567{Czy sa poprawne?}
568 568
569message slattach { 569message slattach {
570Podaja parametry dla polecenia 'slattach' 570Podaja parametry dla polecenia 'slattach'
571} 571}
572 572
573message wait_network 573message wait_network
574{ 574{
575Poczekaj, az interfejs sieciowy zostanie uaktywniony. 575Poczekaj, az interfejs sieciowy zostanie uaktywniony.
576} 576}
577 577
578message resolv 578message resolv
579{Nie moglem utworzyc /etc/resolv.conf. Instalacja przerwana. 579{Nie moglem utworzyc /etc/resolv.conf. Instalacja przerwana.
580} 580}
581 581
582message realdir 582message realdir
583{Nie moglem przejsc do katalogu %s: %s. Instalacja przerwana. 583{Nie moglem przejsc do katalogu %s: %s. Instalacja przerwana.
584} 584}
585 585
586message delete_xfer_file 586message delete_xfer_file
587{Usun po zakonczeniu instalacji} 587{Usun po zakonczeniu instalacji}
588 588
589message notarfile 589message notarfile
590{Pakiet %s nie istnieje.} 590{Pakiet %s nie istnieje.}
591 591
592message endtarok 592message endtarok
593{Wszystkie wybrane pakiety dystrybucji zostaly rozpakowane.} 593{Wszystkie wybrane pakiety dystrybucji zostaly rozpakowane.}
594 594
595message endtar 595message endtar
596{Wystapil blad w trackie rozpakowywania pakietow. 596{Wystapil blad w trackie rozpakowywania pakietow.
597Twoja instalacja jest niekompletna. 597Twoja instalacja jest niekompletna.
598 598
599Wybrales %d pakietow dystrybucyjnych. %d pakiety nie zostaly znalezione 599Wybrales %d pakietow dystrybucyjnych. %d pakiety nie zostaly znalezione
600i %d zostalo pominietych z powodu bledow. Z %d wyprobowanych, 600i %d zostalo pominietych z powodu bledow. Z %d wyprobowanych,
601%d rozpakowalo sie bez bledow i %d z bledami. 601%d rozpakowalo sie bez bledow i %d z bledami.
602 602
603Instalacja zostala przerwana. Sprawdz zrodlo swojej dystrybucji i rozwaz 603Instalacja zostala przerwana. Sprawdz zrodlo swojej dystrybucji i rozwaz
604reinstalacje pakietow z glownego menu.} 604reinstalacje pakietow z glownego menu.}
605 605
606message abort 606message abort
607{Wybrane przez ciebie opcje spowodowaly, ze zainstalowanie NetBSD jest 607{Wybrane przez ciebie opcje spowodowaly, ze zainstalowanie NetBSD jest
608nie mozliwe. Instalacja zostala przerwana. 608nie mozliwe. Instalacja zostala przerwana.
609} 609}
610 610
611message abortinst 611message abortinst
612{Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. 612{Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie.
613Instalacja zostala przerwana. 613Instalacja zostala przerwana.
614} 614}
615 615
616message abortupgr 616message abortupgr
617{Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. 617{Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie.
618Aktualizacja zostala przerwana. 618Aktualizacja zostala przerwana.
619} 619}
620 620
621message abortunpack 621message abortunpack
622{Rozpakowanie dodatkowych pakietow nie udalo sie. Bedziesz musial 622{Rozpakowanie dodatkowych pakietow nie udalo sie. Bedziesz musial
623to zrobic recznie, albo wybierz inne zrodlo pakietow i sprobuj ponownie. 623to zrobic recznie, albo wybierz inne zrodlo pakietow i sprobuj ponownie.
624} 624}
625 625
626message createfstab 626message createfstab
627{Pojawil sie powazny problem! Nie mozna utworzyc /mnt/etc/fstab. Spadamy! 627{Pojawil sie powazny problem! Nie mozna utworzyc /mnt/etc/fstab. Spadamy!
628} 628}
629 629
630 630
631message noetcfstab 631message noetcfstab
632{Pomocy! Na dysku docelowym %s nie ma /etc/fstab. Przerywamy aktualizacje.  632{Pomocy! Na dysku docelowym %s nie ma /etc/fstab. Przerywamy aktualizacje.
633} 633}
634 634
635message badetcfstab 635message badetcfstab
636{Pomocy! Nie moge przeczytac /etc/fstab na dysku %s. Przerywamy aktualizacje. 636{Pomocy! Nie moge przeczytac /etc/fstab na dysku %s. Przerywamy aktualizacje.
637} 637}
638 638
639message X_oldexists 639message X_oldexists
640{Nie moge zapisac %s/bin/X jako %s/bin/X.old, poniewaz 640{Nie moge zapisac %s/bin/X jako %s/bin/X.old, poniewaz
641na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja. 641na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja.
642 642
643Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic 643Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic
644docelowe %s/bin/X oraz %s/bin/X.old. Jesli 644docelowe %s/bin/X oraz %s/bin/X.old. Jesli
645%s/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac 645%s/bin/X.old pochodzi z zakonczonej aktualizacji, mozesz usunac
646%s/bin/X.old i zrobic restart. Albo jesli %s/bin/X.old 646%s/bin/X.old i zrobic restart. Albo jesli %s/bin/X.old
647pochodzi z aktualnej niekompletnej aktualizacji, mozesz usunac 647pochodzi z aktualnej niekompletnej aktualizacji, mozesz usunac
648%s/bin/X i przeniesc %s/bin/X.old na %s/bin/X. 648%s/bin/X i przeniesc %s/bin/X.old na %s/bin/X.
649 649
650Przerywamy aktualizacje.} 650Przerywamy aktualizacje.}
651 651
652message netnotup 652message netnotup
653{Pojawil sie problem z konfiguracja twojej sieci. Albo twoja bramka 653{Pojawil sie problem z konfiguracja twojej sieci. Albo twoja bramka
654albo serwer nazw nie byl osiagalny przez ping. Czy chcesz skonfigurowac 654albo serwer nazw nie byl osiagalny przez ping. Czy chcesz skonfigurowac
655siec jeszcze raz? (Nie pozwala ci kontynuowac lub przerwac instalacje.) 655siec jeszcze raz? (Nie pozwala ci kontynuowac lub przerwac instalacje.)
656} 656}
657 657
658message netnotup_continueanyway 658message netnotup_continueanyway
659{Czy chcesz kontynuowac proces instalacji i zalozyc, ze twoja siec dziala? 659{Czy chcesz kontynuowac proces instalacji i zalozyc, ze twoja siec dziala?
660(Nie przerywa procesu instalacji.) 660(Nie przerywa procesu instalacji.)
661} 661}
662 662
663message makedev 663message makedev
664{Tworzenie plikow urzadzen ... 664{Tworzenie plikow urzadzen ...
665} 665}
666 666
667/* XXX: Translate: 667/* XXX: Translate:
668* -not successful. The upgrade has been aborted. (Error number %d.) 668* -not successful. The upgrade has been aborted. (Error number %d.)
669* +not successful (Error number %d.). Try mounting it anyway? 669* +not successful (Error number %d.). Try mounting it anyway?
670*/ 670*/
671message badfs 671message badfs
672{Wyglada na to, ze /dev/%s%c nie jest systemem plikow BSD ewentualnie 672{Wyglada na to, ze /dev/%s%c nie jest systemem plikow BSD ewentualnie
673fsck dysku nie powiodlo sie. Zamontowac dysk pomimo tego? (Numer 673fsck dysku nie powiodlo sie. Zamontowac dysk pomimo tego? (Numer
674bledu %d.)} 674bledu %d.)}
675 675
676message rootmissing 676message rootmissing
677{ docelowy / jest zagubiony %s. 677{ docelowy / jest zagubiony %s.
678} 678}
679 679
680message badroot 680message badroot
681{Kompletny nowy system plikow nie przeszedl podstawowych testow. 681{Kompletny nowy system plikow nie przeszedl podstawowych testow.
682 Jestes pewien, ze zainstalowales wszystkie wymagane pakiety?  682 Jestes pewien, ze zainstalowales wszystkie wymagane pakiety?
683} 683}
684 684
685message fd_type 685message fd_type
686{System plikow na dyskietce} 686{System plikow na dyskietce}
687 687
688message fdnotfound 688message fdnotfound
689{Nie moglem znalezc pliku na dysku. 689{Nie moglem znalezc pliku na dysku.
690} 690}
691 691
692message fdremount 692message fdremount
693{Dyskietka nie zostala pomyslnie zamountowana. 693{Dyskietka nie zostala pomyslnie zamountowana.
694} 694}
695 695
696message fdmount 696message fdmount
697{Wloz dyskietke zawierajaca plik "%s.%s". 697{Wloz dyskietke zawierajaca plik "%s.%s".
698 698
699Jezeli nie masz juz wiecej dyskietek, wybierz "Pakiet kompletny" 699Jezeli nie masz juz wiecej dyskietek, wybierz "Pakiet kompletny"
700aby rozpoczac proces jego instalacji. Wybierz "Przerwij pobieranie" 700aby rozpoczac proces jego instalacji. Wybierz "Przerwij pobieranie"
701zeby wybrac inne zrodlo oprogramowania. 701zeby wybrac inne zrodlo oprogramowania.
702} 702}
703 703
704message mntnetconfig 704message mntnetconfig
705{Czy informacje o sieci, ktore podales sa prawidlowe dla tej maszyny 705{Czy informacje o sieci, ktore podales sa prawidlowe dla tej maszyny
706w reguralnej pracy i czy chcesz aby je zapisac w /etc? } 706w reguralnej pracy i czy chcesz aby je zapisac w /etc? }
707 707
708message cur_distsets 708message cur_distsets
709{Ponizej jest lista pakietow dystrybucyjnych, ktore zostana uzyte. 709{Ponizej jest lista pakietow dystrybucyjnych, ktore zostana uzyte.
710 710
711} 711}
712 712
713message cur_distsets_header 713message cur_distsets_header
714{Pakiet dystryb. Uzyc? 714{Pakiet dystryb. Uzyc?
715--------------------------------- ----- 715--------------------------------- -----
716} 716}
717 717
718message set_base 718message set_base
719{Base} 719{Base}
720 720
721message set_system 721message set_system
722{System (/etc)} 722{System (/etc)}
723 723
724message set_compiler 724message set_compiler
725{Narzedzia Kompilacyjne} 725{Narzedzia Kompilacyjne}
726 726
727message set_games 727message set_games
728{Gry} 728{Gry}
729 729
730message set_man_pages 730message set_man_pages
731{Strony Podrecznika} 731{Strony Podrecznika}
732 732
733message set_misc 733message set_misc
734{Inne} 734{Inne}
735 735
736message set_modules 736message set_modules
737{Moduly kernela} 737{Moduly kernela}
738 738
739message set_tests 739message set_tests
740{Programy testujace} 740{Programy testujace}
741 741
742message set_text_tools 742message set_text_tools
743{Narzedzia Przetwarzania Tekstu} 743{Narzedzia Przetwarzania Tekstu}
744 744
745message set_X11 745message set_X11
746{Pakiety X11} 746{Pakiety X11}
747 747
748message set_X11_base 748message set_X11_base
749{X11 base oraz klienci} 749{X11 base oraz klienci}
750 750
751message set_X11_etc 751message set_X11_etc
752{Konfiguracja X11} 752{Konfiguracja X11}
753 753
754message set_X11_fonts 754message set_X11_fonts
755{Czcionki X11} 755{Czcionki X11}
756 756
757message set_X11_servers 757message set_X11_servers
758{Serwery X11} 758{Serwery X11}
759 759
760message set_X11_prog 760message set_X11_prog
761{Programowanie X11} 761{Programowanie X11}
762 762
763message set_source 763message set_source
764{Source and debug sets} 764{Source and debug sets}
765 765
766message set_syssrc 766message set_syssrc
767{Kernel sources} 767{Kernel sources}
768 768
769message set_src 769message set_src
770{Base sources} 770{Base sources}
771 771
772message set_sharesrc 772message set_sharesrc
773{Share sources} 773{Share sources}
774 774
775message set_gnusrc 775message set_gnusrc
776{GNU sources} 776{GNU sources}
777 777
778message set_xsrc 778message set_xsrc
779{X11 sources} 779{X11 sources}
780 780
781message set_debug 781message set_debug
782{Debug symbols} 782{Debug symbols}
783 783
784message set_xdebug 784message set_xdebug
785{X11 debug symbols} 785{X11 debug symbols}
786 786
787message cur_distsets_row 787message cur_distsets_row
788{%-30s %3s} 788{%-30s %3s}
789 789
790message select_all 790message select_all
791{Wybierz wszystkie powyzsze pakiety} 791{Wybierz wszystkie powyzsze pakiety}
792 792
793message select_none 793message select_none
794{Odznasz wszystkie powyzsze pakiety} 794{Odznasz wszystkie powyzsze pakiety}
795 795
796message install_selected_sets 796message install_selected_sets
797{Zainstaluj wybrane pakiety} 797{Zainstaluj wybrane pakiety}
798 798
799message tarerror 799message tarerror
800{Pojawil sie blad w trakcie rozpakowywanie pliku %s. To znaczy, ze 800{Pojawil sie blad w trakcie rozpakowywanie pliku %s. To znaczy, ze
801pewne pliki nie zostaly prawidlowo rozpakowane i twoj system 801pewne pliki nie zostaly prawidlowo rozpakowane i twoj system
802nie bedzie kompletny. 802nie bedzie kompletny.
803 803
804Kontynuowac rozpakowywanie pakietow?} 804Kontynuowac rozpakowywanie pakietow?}
805 805
806message must_be_one_root 806message must_be_one_root
807{Musi byc tylko jedna partycja do zamontowania pod '/'.} 807{Musi byc tylko jedna partycja do zamontowania pod '/'.}
808 808
809message partitions_overlap 809message partitions_overlap
810{partycje %c i %c pokrycia.} 810{partycje %c i %c pokrycia.}
811 811
812message No_Bootcode 812message No_Bootcode
813{Brak kodu startowego dla glownej partycji} 813{Brak kodu startowego dla glownej partycji}
814 814
815message cannot_ufs2_root 815message cannot_ufs2_root
816{Glowny system plikow nie moze byc FFSv2 poniewaz nie ma kodu startowego dla 816{Glowny system plikow nie moze byc FFSv2 poniewaz nie ma kodu startowego dla
817tej platformy.} 817tej platformy.}
818 818
819message edit_partitions_again 819message edit_partitions_again
820{ 820{
821 821
822Mozesz albo wyedytowac tablice partycji recznie, albo poddac sie 822Mozesz albo wyedytowac tablice partycji recznie, albo poddac sie
823i powrocic do glownego menu. 823i powrocic do glownego menu.
824 824
825Edytowac tablice partycji ponownie ?} 825Edytowac tablice partycji ponownie ?}
826 826
827message config_open_error 827message config_open_error
828{Nie moglem otworzyc pliku konfiguracyjnego %s\n} 828{Nie moglem otworzyc pliku konfiguracyjnego %s\n}
829 829
830message choose_timezone 830message choose_timezone
831{Wybierz strefe czasowa, ktora najlepiej ci odpowiada z ponizszej listy.  831{Wybierz strefe czasowa, ktora najlepiej ci odpowiada z ponizszej listy.
832Nacisnij ENTER aby wybrac.  832Nacisnij ENTER aby wybrac.
833Nacisnij 'x' a potem ENTER aby wyjsc. 833Nacisnij 'x' a potem ENTER aby wyjsc.
834 834
835 Domyslna: %s  835 Domyslna: %s
836 Wybrana: %s  836 Wybrana: %s
837 Lokalny czas: %s %s  837 Lokalny czas: %s %s
838} 838}
839 839
840message tz_back 840message tz_back
841{Powroc do glownej listy stref} 841{Powroc do glownej listy stref}
842 842
843message swapactive 843message swapactive
844{Dysk, ktory wybrales posiada partycje wymiany, ktora moze byc aktualnie 844{Dysk, ktory wybrales posiada partycje wymiany, ktora moze byc aktualnie
845w uzyciu jesli twoj system ma malo pamieci. Poniewaz chcesz zmienic uklad 845w uzyciu jesli twoj system ma malo pamieci. Poniewaz chcesz zmienic uklad
846partycji, partycja wymiany zostanie teraz wylaczona. Moze to spowodowac 846partycji, partycja wymiany zostanie teraz wylaczona. Moze to spowodowac
847pojawienie sie bledow. Jesli zuwazysz takie bledy zrestartuj komputer, 847pojawienie sie bledow. Jesli zuwazysz takie bledy zrestartuj komputer,
848a nastepnie sprobuj jeszcze raz.} 848a nastepnie sprobuj jeszcze raz.}
849 849
850message swapdelfailed 850message swapdelfailed
851{Sysinst nie mogl deaktywowac partycji wymiany na dysku, ktory wybrales 851{Sysinst nie mogl deaktywowac partycji wymiany na dysku, ktory wybrales
852do instalacji. Zrestartuj komputer i sprobuj jeszcze raz.} 852do instalacji. Zrestartuj komputer i sprobuj jeszcze raz.}
853 853
854message rootpw 854message rootpw
855{Haslo root'a w nowo zainstalowanym systemie nie zostalo jeszcze ustawione, 855{Haslo root'a w nowo zainstalowanym systemie nie zostalo jeszcze ustawione,
856i dlatego jest puste. Czy chcesz ustawic haslo dla root'a teraz?} 856i dlatego jest puste. Czy chcesz ustawic haslo dla root'a teraz?}
857 857
858message rootsh 858message rootsh
859{Mozesz teraz wybrac, ktorej powloki ma uzywac uzytkownik root. Domyslnie 859{Mozesz teraz wybrac, ktorej powloki ma uzywac uzytkownik root. Domyslnie
860jest to /bin/sh, ale moze preferujesz inna.} 860jest to /bin/sh, ale moze preferujesz inna.}
861 861
862message no_root_fs 862message no_root_fs
863{ 863{
864Nie zdefiniowano glownego systemu plikow. Musisz zdefiniowac przynajmniej 864Nie zdefiniowano glownego systemu plikow. Musisz zdefiniowac przynajmniej
865jeden mountpoint z "/". 865jeden mountpoint z "/".
866 866
867Nacisnij <enter> aby kontynuowac. 867Nacisnij <enter> aby kontynuowac.
868} 868}
869 869
870message Pick_an_option {Wybierz opcje aby je wlaczyc lub wylaczyc.} 870message Pick_an_option {Wybierz opcje aby je wlaczyc lub wylaczyc.}
871message Scripting {Skrypty} 871message Scripting {Skrypty}
872message Logging {Logowanie} 872message Logging {Logowanie}
873 873
874message Status { Status: } 874message Status { Status: }
875message Command {Polecenie: } 875message Command {Polecenie: }
876message Running {Uruchamianie} 876message Running {Uruchamianie}
877message Finished {Zakonczone} 877message Finished {Zakonczone}
878message Command_failed {Polecenie nie powiodlo sie} 878message Command_failed {Polecenie nie powiodlo sie}
879message Command_ended_on_signal {Polecenie zakonczylo sie sygnalem} 879message Command_ended_on_signal {Polecenie zakonczylo sie sygnalem}
880 880
881message NetBSD_VERSION_Install_System {System Instalacyjny NetBSD-@@VERSION@@} 881message NetBSD_VERSION_Install_System {System Instalacyjny NetBSD-@@VERSION@@}
882message Exit_Install_System {Wyjdz z Systemu Instalacyjnego} 882message Exit_Install_System {Wyjdz z Systemu Instalacyjnego}
883message Install_NetBSD_to_hard_disk {Zainstaluj NetBSD na twardym dysku} 883message Install_NetBSD_to_hard_disk {Zainstaluj NetBSD na twardym dysku}
884message Upgrade_NetBSD_on_a_hard_disk {Zaktualizuj NetBSD na twardym dysku} 884message Upgrade_NetBSD_on_a_hard_disk {Zaktualizuj NetBSD na twardym dysku}
885message Re_install_sets_or_install_additional_sets {Przeinstaluj albo zainstaluj dodatkowe pakiety} 885message Re_install_sets_or_install_additional_sets {Przeinstaluj albo zainstaluj dodatkowe pakiety}
886message Reboot_the_computer {Zrestartuj komputer} 886message Reboot_the_computer {Zrestartuj komputer}
887message Utility_menu {Menu Narzedziowe} 887message Utility_menu {Menu Narzedziowe}
888message Config_menu {Menu konfiguracji} 888message Config_menu {Menu konfiguracji}
889message exit_menu_generic {Nazad} 889message exit_menu_generic {Nazad}
890message exit_utility_menu {Exit} 890message exit_utility_menu {Exit}
891message NetBSD_VERSION_Utilities {Narzedzia NetBSD-@@VERSION@@} 891message NetBSD_VERSION_Utilities {Narzedzia NetBSD-@@VERSION@@}
892message Run_bin_sh {Uruchom /bin/sh} 892message Run_bin_sh {Uruchom /bin/sh}
893message Set_timezone {Ustaw strefe czasowa} 893message Set_timezone {Ustaw strefe czasowa}
894message Configure_network {Skonfiguruj siec} 894message Configure_network {Skonfiguruj siec}
895message Partition_a_disk {Skonfiguruj dysk} 895message Partition_a_disk {Skonfiguruj dysk}
896message Logging_functions {Funkcje logowania} 896message Logging_functions {Funkcje logowania}
897message Halt_the_system {Zatrzymaj system} 897message Halt_the_system {Zatrzymaj system}
898message yes_or_no {tak lub nie?} 898message yes_or_no {tak lub nie?}
899message Hit_enter_to_continue {Nacisnij enter aby kontynuowac} 899message Hit_enter_to_continue {Nacisnij enter aby kontynuowac}
900message Choose_your_installation {Wybierz swoja instalacje} 900message Choose_your_installation {Wybierz swoja instalacje}
901message Set_Sizes {Ustaw rozmiary partycji NetBSD} 901message Set_Sizes {Ustaw rozmiary partycji NetBSD}
902message Use_Existing {Uzyj istniejacych romiarow partycji} 902message Use_Existing {Uzyj istniejacych romiarow partycji}
903message Megabytes {Megabajty} 903message Megabytes {Megabajty}
904message Cylinders {Cylindry} 904message Cylinders {Cylindry}
905message Sectors {Sektory} 905message Sectors {Sektory}
906message Select_medium {Wybierz medium} 906message Select_medium {Wybierz medium}
907message ftp {FTP} 907message ftp {FTP}
908message http {HTTP} 908message http {HTTP}
909message nfs {NFS} 909message nfs {NFS}
910.if HAVE_INSTALL_IMAGE 910.if HAVE_INSTALL_IMAGE
911message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ 911message cdrom {CD-ROM / DVD / install image media} /* XXX translation */
912.else 912.else
913message cdrom {CD-ROM / DVD} 913message cdrom {CD-ROM / DVD}
914.endif 914.endif
915message floppy {Dyskietka} 915message floppy {Dyskietka}
916message local_fs {Niezamontowany SP} 916message local_fs {Niezamontowany SP}
917message local_dir {Lokalny katalog} 917message local_dir {Lokalny katalog}
918message Select_your_distribution {Wybierz swoja dystrybucje} 918message Select_your_distribution {Wybierz swoja dystrybucje}
919message Full_installation {Pelna instalacja} 919message Full_installation {Pelna instalacja}
920message Full_installation_nox {Instalacja bez X11} 920message Full_installation_nox {Instalacja bez X11}
921message Minimal_installation {Minimalna instalacja} 921message Minimal_installation {Minimalna instalacja}
922message Custom_installation {Inna instalacja} 922message Custom_installation {Inna instalacja}
923message hidden {** ukryte **} 923message hidden {** ukryte **}
924message Host {Host} 924message Host {Host}
925message Base_dir {Katalog} 925message Base_dir {Katalog}
926message Set_dir_src {Katalog pakiet binary} /* fix XLAT */ 926message Set_dir_src {Katalog pakiet binary} /* fix XLAT */
927message Set_dir_bin {Katalog pakiet source} /* fix XLAT */ 927message Set_dir_bin {Katalog pakiet source} /* fix XLAT */
928message Xfer_dir {Transfer Katalog} /* fix XLAT */ 928message Xfer_dir {Transfer Katalog} /* fix XLAT */
929message User {Uzytkownik} 929message User {Uzytkownik}
930message Password {Haslo} 930message Password {Haslo}
931message Proxy {Proxy} 931message Proxy {Proxy}
932message Get_Distribution {Sciagnij Dystrybucje} 932message Get_Distribution {Sciagnij Dystrybucje}
933message Continue {Kontynuuj} 933message Continue {Kontynuuj}
934message What_do_you_want_to_do {Co chcesz zrobic?} 934message What_do_you_want_to_do {Co chcesz zrobic?}
935message Try_again {Sprobowac jeszcze raz} 935message Try_again {Sprobowac jeszcze raz}
936message Set_finished {Pakiet kompletny} 936message Set_finished {Pakiet kompletny}
937message Skip_set {Pomin pakiet} 937message Skip_set {Pomin pakiet}
938message Skip_group {Pomin grupe pakietow} 938message Skip_group {Pomin grupe pakietow}
939message Abandon {Przerwij instalacje} 939message Abandon {Przerwij instalacje}
940message Abort_fetch {Przerwij pobieranie} 940message Abort_fetch {Przerwij pobieranie}
941message Device {Urzadzenie} 941message Device {Urzadzenie}
942message File_system {SystemPlikow} 942message File_system {SystemPlikow}
943message Select_DNS_server { Wybierz serwer nazw} 943message Select_DNS_server { Wybierz serwer nazw}
944message other {inny } 944message other {inny }
945message Perform_autoconfiguration {Wykonac autkonfiguracje?} 945message Perform_autoconfiguration {Wykonac autkonfiguracje?}
946message Root_shell {Powloka root'a} 946message Root_shell {Powloka root'a}
947message Color_scheme {Kolorystyka} 947message Color_scheme {Kolorystyka}
948message White_on_black {Bia³y na czarnym} 948message White_on_black {Bia³y na czarnym}
949message Black_on_white {Czarno na bia³ym} 949message Black_on_white {Czarno na bia³ym}
950message White_on_blue {Bia³y na niebieskim} 950message White_on_blue {Bia³y na niebieskim}
951message Green_on_black {Zielony na czarnym} 951message Green_on_black {Zielony na czarnym}
952message User_shell {Powloka user'a} 952message User_shell {Powloka user'a}
953 953
954.if AOUT2ELF 954.if AOUT2ELF
955message aoutfail 955message aoutfail
956{Katalog do ktorego stare a.out wspoldzielone biblioteki powinny byc 956{Katalog do ktorego stare a.out wspoldzielone biblioteki powinny byc
957przeniesione nie moze zostac utworzony. Sproboj jeszcze raz procedury 957przeniesione nie moze zostac utworzony. Sproboj jeszcze raz procedury
958aktualizacji i upewnij sie, ze zamountowales wszystkie systemy plikow.} 958aktualizacji i upewnij sie, ze zamountowales wszystkie systemy plikow.}
959 959
960message emulbackup 960message emulbackup
961{Albo /emul/aout albo /emul w twoim systemie byl symbolicznym linkiem 961{Albo /emul/aout albo /emul w twoim systemie byl symbolicznym linkiem
962wskazujacym na niezamontowany system. Zostalo mu dodane rozszerzenie '.old'. 962wskazujacym na niezamontowany system. Zostalo mu dodane rozszerzenie '.old'.
963Kiedy juz uruchomisz swoj zaktualizowany system, mozliwe ze bedziesz musial 963Kiedy juz uruchomisz swoj zaktualizowany system, mozliwe ze bedziesz musial
964zajac sie polaczeniem nowo utworzonego /emul/aout ze starym. 964zajac sie polaczeniem nowo utworzonego /emul/aout ze starym.
965} 965}
966.endif 966.endif
967 967
968message oldsendmail 968message oldsendmail
969{Sendmail nie jest dostepny w tym wydaniu NetBSD. Domyslnym MTA jest 969{Sendmail nie jest dostepny w tym wydaniu NetBSD. Domyslnym MTA jest
970postfix. Plik /etc/mailer.conf ciagle wskazuje usuniety program 970postfix. Plik /etc/mailer.conf ciagle wskazuje usuniety program
971sendmail. Chcesz automatycznie uaktualnic /etc/mailer.conf dla 971sendmail. Chcesz automatycznie uaktualnic /etc/mailer.conf dla
972postfix? Jesli wybierzesz "Nie", trzeba bedzie recznie zmienic 972postfix? Jesli wybierzesz "Nie", trzeba bedzie recznie zmienic
973/etc/mailer.conf, aby dzialalo dostarczanie poczty.} 973/etc/mailer.conf, aby dzialalo dostarczanie poczty.}
974 974
975message license 975message license
976{Aby uzywac interfejsu sieciowego %s, musisz zgodzic sie na licencje 976{Aby uzywac interfejsu sieciowego %s, musisz zgodzic sie na licencje
977zawarta w pliku %s. 977zawarta w pliku %s.
978Aby obejrzec ten plik, mozesz wpisac ^Z, przejrzec jego zawartosc, 978Aby obejrzec ten plik, mozesz wpisac ^Z, przejrzec jego zawartosc,
979a nastepnie wpisac "fg".} 979a nastepnie wpisac "fg".}
980 980
981message binpkg 981message binpkg
982{Aby skonfigurowac binarny system pakietow, wybierz lokalizacje siecowa, z 982{Aby skonfigurowac binarny system pakietow, wybierz lokalizacje siecowa, z
983ktorej nalezy pobrac pakiety. Gdy system wstanie, mozesz wykorzystac 'pkgin' do 983ktorej nalezy pobrac pakiety. Gdy system wstanie, mozesz wykorzystac 'pkgin' do
984zainstalowania albo odinstalowania dodatkowych pakietow.} 984zainstalowania albo odinstalowania dodatkowych pakietow.}
985 985
986message pkgpath 986message pkgpath
987{Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, 987{Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo,
988ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy 988ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy
989nazwa uzytkownika to "ftp". 989nazwa uzytkownika to "ftp".
990 990
991} 991}
992message rcconf_backup_failed {Stworzenie kopii zapasowej rc.conf nie powiodlo 992message rcconf_backup_failed {Stworzenie kopii zapasowej rc.conf nie powiodlo
993sie. Kontynuowac?} 993sie. Kontynuowac?}
994message rcconf_backup_succeeded {Kopia zapasowa rc.conf zostala zapisana do %s.} 994message rcconf_backup_succeeded {Kopia zapasowa rc.conf zostala zapisana do %s.}
995message rcconf_restore_failed {Przywracania kopii zapasowej rc.conf nie powiodlo 995message rcconf_restore_failed {Przywracania kopii zapasowej rc.conf nie powiodlo
996sie.} 996sie.}
997message rcconf_delete_failed {Usuwanie starego wpisu %s nie powiodlo sie.} 997message rcconf_delete_failed {Usuwanie starego wpisu %s nie powiodlo sie.}
998message Pkg_dir {Katalog z pakietami} 998message Pkg_dir {Katalog z pakietami}
999message configure_prior {skonfiguruj przed instalacja} 999message configure_prior {skonfiguruj przed instalacja}
1000message configure {skonfiguruj} 1000message configure {skonfiguruj}
1001message change {zmien} 1001message change {zmien}
1002message password_set {ustawiono haslo} 1002message password_set {ustawiono haslo}
1003message YES {TAK} 1003message YES {TAK}
1004message NO {NIE} 1004message NO {NIE}
1005message DONE {ZAKONCZ} 1005message DONE {ZAKONCZ}
1006message abandoned {Porzucony} 1006message abandoned {Porzucony}
1007message empty {***PUSTE***} 1007message empty {***PUSTE***}
1008message timezone {Strefa czasowa} 1008message timezone {Strefa czasowa}
1009message change_rootpw {Zmien haslo root'a} 1009message change_rootpw {Zmien haslo root'a}
1010message enable_binpkg {Wlacz instalacje pakietow binarnych} 1010message enable_binpkg {Wlacz instalacje pakietow binarnych}
1011message enable_sshd {Wlacz sshd} 1011message enable_sshd {Wlacz sshd}
1012message enable_ntpd {Wlacz ntpd} 1012message enable_ntpd {Wlacz ntpd}
1013message run_ntpdate {uruchom ntpdate podczas startu systemu} 1013message run_ntpdate {uruchom ntpdate podczas startu systemu}
1014message enable_mdnsd {Wlacz mdnsd} 1014message enable_mdnsd {Wlacz mdnsd}
1015message enable_xdm {Enable xdm} 1015message enable_xdm {Enable xdm}
1016message enable_cgd {Enable cgd} 1016message enable_cgd {Enable cgd}
1017message enable_lvm {Enable lvm} 1017message enable_lvm {Enable lvm}
1018message enable_raid {Enable raidframe} 1018message enable_raid {Enable raidframe}
1019message add_a_user {Add a user} 1019message add_a_user {Add a user}
1020message configmenu {Skonfiguruj dodatkowe elementy w razie potrzeby.} 1020message configmenu {Skonfiguruj dodatkowe elementy w razie potrzeby.}
1021message doneconfig {Konfiguracja zakonczona} 1021message doneconfig {Konfiguracja zakonczona}
1022message Install_pkgin {Zainstaluj pkgin i uaktualnij podsumowanie pakietow} 1022message Install_pkgin {Zainstaluj pkgin i uaktualnij podsumowanie pakietow}
1023message binpkg_installed  1023message binpkg_installed
1024{Skonfigurowales system tak aby wykorzystywal pkgin do instalacji pakietow 1024{Skonfigurowales system tak aby wykorzystywal pkgin do instalacji pakietow
1025binarnych. Aby zainstalowac pakiet, wykonaj: 1025binarnych. Aby zainstalowac pakiet, wykonaj:
1026 1026
1027pkgin install <packagename> 1027pkgin install <packagename>
1028 1028
1029z powloki root'a. Jesli potrzebujesz wiecej informacji przeczytaj strone 1029z powloki root'a. Jesli potrzebujesz wiecej informacji przeczytaj strone
1030podrecznika pkgin(1).} 1030podrecznika pkgin(1).}
1031message Install_pkgsrc {Pobierz i rozpakuj pkgsrc} 1031message Install_pkgsrc {Pobierz i rozpakuj pkgsrc}
1032message pkgsrc 1032message pkgsrc
1033{Instalacja pkgsrc wymaga rozpakowania archiwum pobranego z sieci. 1033{Instalacja pkgsrc wymaga rozpakowania archiwum pobranego z sieci.
1034Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, 1034Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo,
1035ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy 1035ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy
1036nazwa uzytkownika to "ftp". 1036nazwa uzytkownika to "ftp".
1037 1037
1038} 1038}
1039message Pkgsrc_dir {katalog pkgsrc} 1039message Pkgsrc_dir {katalog pkgsrc}
1040message get_pkgsrc {Pobierz i rozpakuj pkgsrc w celu tworzenia pakietow ze 1040message get_pkgsrc {Pobierz i rozpakuj pkgsrc w celu tworzenia pakietow ze
1041zrodel} 1041zrodel}
1042message retry_pkgsrc_network {Konfiguracja sieci nie powiodla sie. Sprobowac 1042message retry_pkgsrc_network {Konfiguracja sieci nie powiodla sie. Sprobowac
1043ponownie?} 1043ponownie?}
1044message quit_pkgsrc {Zakoncz bez zainstalowania pkgsrc} 1044message quit_pkgsrc {Zakoncz bez zainstalowania pkgsrc}
1045message quit_pkgs_install {Zakoncz bez zainstalowania bin pkg} 1045message quit_pkgs_install {Zakoncz bez zainstalowania bin pkg}
1046message pkgin_failed  1046message pkgin_failed
1047{Instalacja pkgin nie powiodla sie, prawdopodobnie dlatego ze nie znaleziono  1047{Instalacja pkgin nie powiodla sie, prawdopodobnie dlatego ze nie znaleziono
1048pakietow binarnych. 1048pakietow binarnych.
1049Sprawdz sciezke pakietow i sprobuj ponownie.} 1049Sprawdz sciezke pakietow i sprobuj ponownie.}
1050message failed {Nie powiodlo sie} 1050message failed {Nie powiodlo sie}
1051 1051
1052message notsupported {Operacja nie jest obs³ugiwana!} 1052message notsupported {Operacja nie jest obs³ugiwana!}
1053message askfsmountadv {Montowania lub "raid" lub "cgd" lub "lvm"?} 1053message askfsmountadv {Montowania lub "raid" lub "cgd" lub "lvm"?}
1054message partman {Partycje rozszerzone} 1054message partman {Partycje rozszerzone}
1055message editbsdpart {Edytuj partycje BSD} 1055message editbsdpart {Edytuj partycje BSD}
1056message editmbr {Edytowaæ i zapisywaæ MBR} 1056message editmbr {Edytowaæ i zapisywaæ MBR}
1057message switchgpt {Prze³±cz na GPT} 1057message switchgpt {Prze³±cz na GPT}
1058message switchmbr {Prze³±cz na MBR} 1058message switchmbr {Prze³±cz na MBR}
1059message renamedisk {Ustaw nazwê dysku} 1059message renamedisk {Ustaw nazwê dysku}
1060message fmtasraid {Format jak RAID} 1060message fmtasraid {Format jak RAID}
1061message fmtaslvm {Format jak LVM PV} 1061message fmtaslvm {Format jak LVM PV}
1062message encrypt {Szyfrowanie} 1062message encrypt {Szyfrowanie}
1063message setbootable {Bootable flaga} 1063message setbootable {Bootable flaga}
1064message erase {Bezpieczne kasowanie} 1064message erase {Bezpieczne kasowanie}
1065message undo {Cofanie zmian} 1065message undo {Cofanie zmian}
1066message unconfig {Zdekonfigurowanie} 1066message unconfig {Zdekonfigurowanie}
1067message edit {Edytuj} 1067message edit {Edytuj}
1068message doumount {Si³a umount} 1068message doumount {Si³a umount}
1069message fillzeros {Wype³nij zerami} 1069message fillzeros {Wype³nij zerami}
1070message fillrandom {Wype³nij losowymi danymi} 1070message fillrandom {Wype³nij losowymi danymi}
1071message fillcrypto {Wype³nij przez crypto danych} 1071message fillcrypto {Wype³nij przez crypto danych}
1072message raid0 {0 - brak parzysto¶ci, tylko proste rozk³adanie.} 1072message raid0 {0 - brak parzysto¶ci, tylko proste rozk³adanie.}
1073message raid1 {1 - Mirroring. Parytet jest lustro.} 1073message raid1 {1 - Mirroring. Parytet jest lustro.}
1074message raid4 {4 - Malowanie z parytetu przechowywanych w ostatniej czê¶ci.} 1074message raid4 {4 - Malowanie z parytetu przechowywanych w ostatniej czê¶ci.}
1075message raid5 {5 - Malowanie z parytetu w tych wszystkich elementów.} 1075message raid5 {5 - Malowanie z parytetu w tych wszystkich elementów.}
1076 1076
1077message fremove {USUÑ} 1077message fremove {USUÑ}
1078message remove {Usun±æ} 1078message remove {Usun±æ}
1079message add {Dodaæ} 1079message add {Dodaæ}
1080message auto {auto} 1080message auto {auto}
1081 1081
1082message removepartswarn {To usun±æ wszystkie partycje na dysku. Czy chcesz kontynuowaæ?} 1082message removepartswarn {To usun±æ wszystkie partycje na dysku. Czy chcesz kontynuowaæ?}
1083message saveprompt {Zapisz zmiany przed zakoñczeniem?} 1083message saveprompt {Zapisz zmiany przed zakoñczeniem?}
1084message cantsave {Zmiany nie mog± byæ zbawieni.} 1084message cantsave {Zmiany nie mog± byæ zbawieni.}
1085message noroot {No partycja zdefiniowana, nie mo¿e kontynuowaæ \n} 1085message noroot {No partycja zdefiniowana, nie mo¿e kontynuowaæ \n}
1086message wannaunblock {Urz±dzenie jest zablokowane. Czy chcesz, aby zmusiæ go odblokowaæ i kontynuowaæ?} 1086message wannaunblock {Urz±dzenie jest zablokowane. Czy chcesz, aby zmusiæ go odblokowaæ i kontynuowaæ?}
1087message wannatry {Czy chcesz spróbowaæ?} 1087message wannatry {Czy chcesz spróbowaæ?}
1088message create_cgd {Utwórz wolumen kryptograficznych (CGD)} 1088message create_cgd {Utwórz wolumen kryptograficznych (CGD)}
1089message create_cnd {Utwórz wirtualnego obraz dysku (VND)} 1089message create_cnd {Utwórz wirtualnego obraz dysku (VND)}
1090message create_vg {Utwórz grupê woluminów (LVM VG)} 1090message create_vg {Utwórz grupê woluminów (LVM VG)}
1091message create_lv { Utwórz wolumin logiczny} 1091message create_lv { Utwórz wolumin logiczny}
1092message create_raid {Utwórz oprogramowania RAID} 1092message create_raid {Utwórz oprogramowania RAID}
1093message updpmlist {Aktualizuj listê urz±dzeñ} 1093message updpmlist {Aktualizuj listê urz±dzeñ}
1094message savepm {Zapisz zmiany} 1094message savepm {Zapisz zmiany}
1095message pmblocked {ZABLOK.} 1095message pmblocked {ZABLOK.}
1096message pmunchanged {BEZ ZMIAN} 1096message pmunchanged {BEZ ZMIAN}
1097message pmsetboot {BOOT} 1097message pmsetboot {BOOT}
1098message pmused {U¯YWANE} 1098message pmused {U¯YWANE}
1099message pmmounted {(zamontowany)} 1099message pmmounted {(zamontowany)}
1100message pmunused {(nieu¿ywany)} 1100message pmunused {(nieu¿ywany)}
1101message pmgptdisk {Dysku z GPT} 1101message pmgptdisk {Dysku z GPT}
1102 1102
1103message finishpm {Zakoñcz partycjonowanie} 1103message finishpm {Zakoñcz partycjonowanie}
1104message limitcount {Limit liczby urz±dzeñ zosta³ osi±gniêty!} 1104message limitcount {Limit liczby urz±dzeñ zosta³ osi±gniêty!}
1105message invaliddev {Nieprawid³owy urz±dzenie!} 1105message invaliddev {Nieprawid³owy urz±dzenie!}
1106message avdisks {Dostêpne dysków:} 1106message avdisks {Dostêpne dysków:}
1107message nofreedev {Nie mo¿na przydzieliæ wêze³!} 1107message nofreedev {Nie mo¿na przydzieliæ wêze³!}
1108message partman_header 1108message partman_header
1109{Partition Manager. Wszystkie dyski, partycje oraz itp. tam wy¶wietlane. 1109{Partition Manager. Wszystkie dyski, partycje oraz itp. tam wy¶wietlane.
1110Pocz±tkowo sprawiaj± partycji MBR, a nastêpnie dokonaæ BSD etykietê. 1110Pocz±tkowo sprawiaj± partycji MBR, a nastêpnie dokonaæ BSD etykietê.
1111Je¶li chcesz korzystaæ z RAID, LVM lub CGD, wykonaj nastêpuj±ce kroki: 1111Je¶li chcesz korzystaæ z RAID, LVM lub CGD, wykonaj nastêpuj±ce kroki:
11121) Tworzenie partycji BSD z potrzebnego typu; 11121) Tworzenie partycji BSD z potrzebnego typu;
11132) Utwórz RAID / LVM VG / CGD korzystania z tych partycji; 3) Zapisz go; 11132) Utwórz RAID / LVM VG / CGD korzystania z tych partycji; 3) Zapisz go;
11144) Tworzenie partycji dla RAID / CGD lub Logical Volumes dla LVM.} 11144) Tworzenie partycji dla RAID / CGD lub Logical Volumes dla LVM.}
1115 1115
1116message raid_menufmt { raid%d (level %1d) on %-34s %11uM} 1116message raid_menufmt { raid%d (level %1d) on %-34s %11uM}
1117message raid_err_menufmt { EMPTY RAID!} 1117message raid_err_menufmt { EMPTY RAID!}
1118message raid_disks_fmt {Dyski: %33s} 1118message raid_disks_fmt {Dyski: %33s}
1119message raid_spares_fmt {Czê¶ci zamienne: %23s} 1119message raid_spares_fmt {Czê¶ci zamienne: %23s}
1120message raid_level_fmt {Poziom RAID: %23d} 1120message raid_level_fmt {Poziom RAID: %23d}
1121message raid_numrow_fmt {numRow: %23d} 1121message raid_numrow_fmt {numRow: %23d}
1122message raid_numcol_fmt {numCol: %23d} 1122message raid_numcol_fmt {numCol: %23d}
1123message raid_numspare_fmt {numSpare: %23d} 1123message raid_numspare_fmt {numSpare: %23d}
1124message raid_sectpersu_fmt {sectPerSU: %22d} 1124message raid_sectpersu_fmt {sectPerSU: %22d}
1125message raid_superpar_fmt {SUsPerParityUnit: %22d} 1125message raid_superpar_fmt {SUsPerParityUnit: %22d}
1126message raid_superrec_fmt {SUsPerReconUnit: %22d} 1126message raid_superrec_fmt {SUsPerReconUnit: %22d}
1127message raid_nomultidim {Tablice wielowymiarowe nie s± obs³ugiwane!} 1127message raid_nomultidim {Tablice wielowymiarowe nie s± obs³ugiwane!}
1128message raid_numrow_ask {numRow?} 1128message raid_numrow_ask {numRow?}
1129message raid_numcol_ask {numCol?} 1129message raid_numcol_ask {numCol?}
1130message raid_numspare_ask {numSpare?} 1130message raid_numspare_ask {numSpare?}
1131message raid_sectpersu_ask {sectPerSU?} 1131message raid_sectpersu_ask {sectPerSU?}
1132message raid_superpar_ask {SUsPerParityUnit?} 1132message raid_superpar_ask {SUsPerParityUnit?}
1133message raid_superrec_ask {SUsPerReconUnit?} 1133message raid_superrec_ask {SUsPerReconUnit?}
1134message raid_disks {Dyski w RAID:} 1134message raid_disks {Dyski w RAID:}
1135message vnd_err_menufmt { ¦CIE¯KA NIE ZDEFINIOWANE!} 1135message vnd_err_menufmt { ¦CIE¯KA NIE ZDEFINIOWANE!}
1136message vnd_assgn_menufmt { vnd%1d na %-51s ASSIGN} 1136message vnd_assgn_menufmt { vnd%1d na %-51s ASSIGN}
1137message vnd_menufmt { vnd%1d na %-45s %11uM} 1137message vnd_menufmt { vnd%1d na %-45s %11uM}
1138message vnd_path_fmt {¦cie¿ka: %31s} 1138message vnd_path_fmt {¦cie¿ka: %31s}
1139message vnd_assgn_fmt {Create new image: %11s} 1139message vnd_assgn_fmt {Create new image: %11s}
1140message vnd_size_fmt {Rozmiar: %30sM} 1140message vnd_size_fmt {Rozmiar: %30sM}
1141message vnd_ro_fmt {Tylko do odczytu: %20s} 1141message vnd_ro_fmt {Tylko do odczytu: %20s}
1142message vnd_geom_fmt {Ustaw geometriê rêcznie: %15s} 1142message vnd_geom_fmt {Ustaw geometriê rêcznie: %15s}
1143message vnd_bps_fmt {Bajtów na sektorów: %20s} 1143message vnd_bps_fmt {Bajtów na sektorów: %20s}
1144message vnd_spt_fmt {Sektory na ¶cie¿ki: %20s} 1144message vnd_spt_fmt {Sektory na ¶cie¿ki: %20s}
1145message vnd_tpc_fmt {Utwory na cylinder: %20s} 1145message vnd_tpc_fmt {Utwory na cylinder: %20s}
1146message vnd_cyl_fmt {Si³owniki: %20s} 1146message vnd_cyl_fmt {Si³owniki: %20s}
1147message vnd_path_ask {File Path?} 1147message vnd_path_ask {File Path?}
1148message vnd_size_ask {Rozmiar (MB)?} 1148message vnd_size_ask {Rozmiar (MB)?}
1149message vnd_bps_ask {Bajtów na sektor?} 1149message vnd_bps_ask {Bajtów na sektor?}
1150message vnd_spt_ask {Sektory na ¶cie¿kê?} 1150message vnd_spt_ask {Sektory na ¶cie¿kê?}
1151message vnd_tpc_ask {Utwory na cylinder?} 1151message vnd_tpc_ask {Utwory na cylinder?}
1152message vnd_cyl_ask {Cylindry} 1152message vnd_cyl_ask {Cylindry}
1153message cgd_err_menufmt { DISK NIE ZDEFINIOWANE!} 1153message cgd_err_menufmt { DISK NIE ZDEFINIOWANE!}
1154message cgd_menufmt { cgd%1d %-48s %11uM} 1154message cgd_menufmt { cgd%1d %-48s %11uM}
1155message cgd_dev_fmt {Urz±dzenie podstawy: %19s} 1155message cgd_dev_fmt {Urz±dzenie podstawy: %19s}
1156message cgd_enc_fmt {Encryption: %19s} 1156message cgd_enc_fmt {Encryption: %19s}
1157message cgd_key_fmt {Rozmiar klucza: %19d} 1157message cgd_key_fmt {Rozmiar klucza: %19d}
1158message cgd_iv_fmt {Algorytm IV: %27s} 1158message cgd_iv_fmt {Algorytm IV: %27s}
1159message cgd_keygen_fmt {Generowanie kluczy: %20s} 1159message cgd_keygen_fmt {Generowanie kluczy: %20s}
1160message cgd_verif_fmt {Metoda weryfikacji: %20s} 1160message cgd_verif_fmt {Metoda weryfikacji: %20s}
1161message lvm_disks {Dyski w VG:} 1161message lvm_disks {Dyski w VG:}
1162message lvm_menufmt { %-44s %20sM} 1162message lvm_menufmt { %-44s %20sM}
1163message lvm_err_menufmt { EMPTY VG!} 1163message lvm_err_menufmt { EMPTY VG!}
1164message lvm_disks_fmt {PV's: %34s} 1164message lvm_disks_fmt {PV's: %34s}
1165message lvm_name_fmt {Nazwa: %33s} 1165message lvm_name_fmt {Nazwa: %33s}
1166message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} 1166message lvm_maxlv_fmt {MaxLogicalVolumes: %20s}
1167message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} 1167message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s}
1168message lvm_extsiz_fmt {PhysicalExtentSize: %20s} 1168message lvm_extsiz_fmt {PhysicalExtentSize: %20s}
1169message lvm_name_ask {Nazwa?} 1169message lvm_name_ask {Nazwa?}
1170message lvm_maxlv_ask {MaxLogicalVolumes?} 1170message lvm_maxlv_ask {MaxLogicalVolumes?}
1171message lvm_maxpv_ask {MaxPhysicalVolumes?} 1171message lvm_maxpv_ask {MaxPhysicalVolumes?}
1172message lvm_extsiz_ask {PhysicalExtentSize (MB)?} 1172message lvm_extsiz_ask {PhysicalExtentSize (MB)?}
1173message lvmlv_menufmt { Wolumin logiczny%-34s %11uM} 1173message lvmlv_menufmt { Wolumin logiczny%-34s %11uM}
1174message lvmlv_name_fmt {Nazwa: %33s} 1174message lvmlv_name_fmt {Nazwa: %33s}
1175message lvmlv_size_fmt {Rozmiar: %30dM} 1175message lvmlv_size_fmt {Rozmiar: %30dM}
1176message lvmlv_ro_fmt {Read-only: %23s} 1176message lvmlv_ro_fmt {Read-only: %23s}
1177message lvmlv_cont_fmt {S±siaduj±cy: %23s} 1177message lvmlv_cont_fmt {S±siaduj±cy: %23s}
1178message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} 1178message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s}
1179message lvmlv_minor_fmt {Mniejsza liczba: %23s} 1179message lvmlv_minor_fmt {Mniejsza liczba: %23s}
1180message lvmlv_mirrors_fmt {Mirrors: %27d} 1180message lvmlv_mirrors_fmt {Mirrors: %27d}
1181message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} 1181message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s}
1182message lvmlv_pers_fmt {Trwa³e drobne numer: %18s} 1182message lvmlv_pers_fmt {Trwa³e drobne numer: %18s}
1183message lvmlv_readahsect_fmt {ReadAheadSectors ceny: %17s} 1183message lvmlv_readahsect_fmt {ReadAheadSectors ceny: %17s}
1184message lvmlv_stripes_fmt {Stripes: %27s} 1184message lvmlv_stripes_fmt {Stripes: %27s}
1185message lvmlv_stripesiz_fmt {StripeSize: %27s} 1185message lvmlv_stripesiz_fmt {StripeSize: %27s}
1186message lvmlv_zero_fmt {Zerowanie pierwszej KB: %16s} 1186message lvmlv_zero_fmt {Zerowanie pierwszej KB: %16s}
1187message lvmlv_name_ask {Nazwa?} 1187message lvmlv_name_ask {Nazwa?}
1188message lvmlv_size_ask {Rozmiar (MB)?} 1188message lvmlv_size_ask {Rozmiar (MB)?}
1189message lvmlv_extnum_ask {LogicalExtentsNumber?} 1189message lvmlv_extnum_ask {LogicalExtentsNumber?}
1190message lvmlv_minor_ask {Mniejsza liczba?} 1190message lvmlv_minor_ask {Mniejsza liczba?}
1191message lvmlv_mirrors_ask {Mirrors?} 1191message lvmlv_mirrors_ask {Mirrors?}
1192message lvmlv_regsiz_ask {MirrorLogRegionSize?} 1192message lvmlv_regsiz_ask {MirrorLogRegionSize?}
1193message lvmlv_readahsect_ask {ReadAheadSectors?} 1193message lvmlv_readahsect_ask {ReadAheadSectors?}
1194message lvmlv_stripes_ask {Stripes?} 1194message lvmlv_stripes_ask {Stripes?}
1195 1195
1196message addusername {8 character username to add} 1196message addusername {8 character username to add}
1197message addusertowheel {Do you wish to add this user to group wheel?} 1197message addusertowheel {Do you wish to add this user to group wheel?}
1198message Delete_partition 1198message Delete_partition
1199{Usun partycje} 1199{Usun partycje}
1200 1200
 1201
 1202message No_filesystem_newfs
 1203{The selected partition does not seem to have a valid file system.
 1204Do you want to newfs (format) it?}
 1205
 1206message Auto_add_swap_part
 1207{A swap partition (named %s) seems to exist on %s.
 1208Do you want to use that?}
 1209
 1210

cvs diff -r1.8 -r1.9 src/usr.sbin/sysinst/arch/i386/md.c (switch to unified diff)

--- src/usr.sbin/sysinst/arch/i386/md.c 2018/05/18 12:23:22 1.8
+++ src/usr.sbin/sysinst/arch/i386/md.c 2018/06/03 13:16:30 1.9
@@ -1,629 +1,633 @@ @@ -1,629 +1,633 @@
1/* $NetBSD: md.c,v 1.8 2018/05/18 12:23:22 joerg Exp $ */ 1/* $NetBSD: md.c,v 1.9 2018/06/03 13:16:30 martin Exp $ */
2 2
3/* 3/*
4 * Copyright 1997 Piermont Information Systems Inc. 4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Based on code written by Philip A. Nelson for Piermont Information 7 * Based on code written by Philip A. Nelson for Piermont Information
8 * Systems Inc. 8 * Systems Inc.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the 16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution. 17 * documentation and/or other materials provided with the distribution.
18 * 3. The name of Piermont Information Systems Inc. may not be used to endorse 18 * 3. The name of Piermont Information Systems Inc. may not be used to endorse
19 * or promote products derived from this software without specific prior 19 * or promote products derived from this software without specific prior
20 * written permission. 20 * written permission.
21 * 21 *
22 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS'' 22 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS''
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 25 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE. 32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */ 33 */
34 34
35/* md.c -- i386 machine specific routines - also used by amd64 */ 35/* md.c -- i386 machine specific routines - also used by amd64 */
36 36
37#include <sys/param.h> 37#include <sys/param.h>
38#include <sys/sysctl.h> 38#include <sys/sysctl.h>
39#include <sys/exec.h> 39#include <sys/exec.h>
40#include <sys/utsname.h> 40#include <sys/utsname.h>
41#include <sys/types.h> 41#include <sys/types.h>
42#include <sys/stat.h> 42#include <sys/stat.h>
43#include <machine/cpu.h> 43#include <machine/cpu.h>
44#include <stdio.h> 44#include <stdio.h>
45#include <stddef.h> 45#include <stddef.h>
46#include <util.h> 46#include <util.h>
47#include <dirent.h> 47#include <dirent.h>
48#include <termios.h> 48#include <termios.h>
49 49
50#include "defs.h" 50#include "defs.h"
51#include "md.h" 51#include "md.h"
52#include "endian.h" 52#include "endian.h"
53#include "msg_defs.h" 53#include "msg_defs.h"
54#include "menu_defs.h" 54#include "menu_defs.h"
55 55
56#ifdef NO_LBA_READS /* for testing */ 56#ifdef NO_LBA_READS /* for testing */
57#undef BIFLAG_EXTINT13 57#undef BIFLAG_EXTINT13
58#define BIFLAG_EXTINT13 0 58#define BIFLAG_EXTINT13 0
59#endif 59#endif
60 60
61static struct biosdisk_info *biosdisk = NULL; 61static struct biosdisk_info *biosdisk = NULL;
62 62
63/* prototypes */ 63/* prototypes */
64 64
65static int get_bios_info(char *); 65static int get_bios_info(char *);
66static int mbr_root_above_chs(void); 66static int mbr_root_above_chs(void);
67static void md_upgrade_mbrtype(void); 67static void md_upgrade_mbrtype(void);
68static int md_read_bootcode(const char *, struct mbr_sector *); 68static int md_read_bootcode(const char *, struct mbr_sector *);
69static unsigned int get_bootmodel(void); 69static unsigned int get_bootmodel(void);
70 70
71void 71void
72md_init(void) 72md_init(void)
73{ 73{
74} 74}
75 75
76void 76void
77md_init_set_status(int flags) 77md_init_set_status(int flags)
78{ 78{
79 (void)flags; 79 (void)flags;
80 80
81 /* Default to install same type of kernel as we are running */ 81 /* Default to install same type of kernel as we are running */
82 set_kernel_set(get_bootmodel()); 82 set_kernel_set(get_bootmodel());
83} 83}
84 84
85int 85int
86md_get_info(void) 86md_get_info(void)
87{ 87{
88 mbr_info_t *ext; 88 mbr_info_t *ext;
89 struct mbr_partition *p; 89 struct mbr_partition *p;
90 const char *bootcode; 90 const char *bootcode;
91 int i; 91 int i;
92 int names, fl, ofl; 92 int names, fl, ofl;
93#define ACTIVE_FOUND 0x0100 93#define ACTIVE_FOUND 0x0100
94#define NETBSD_ACTIVE 0x0200 94#define NETBSD_ACTIVE 0x0200
95#define NETBSD_NAMED 0x0400 95#define NETBSD_NAMED 0x0400
96#define ACTIVE_NAMED 0x0800 96#define ACTIVE_NAMED 0x0800
97 97
98 if (pm->no_mbr) 98 if (pm->no_mbr)
99 return 1; 99 return 1;
100 100
101 if (read_mbr(pm->diskdev, &mbr) < 0) 101 if (read_mbr(pm->diskdev, &mbr) < 0)
102 memset(&mbr.mbr, 0, sizeof mbr.mbr - 2); 102 memset(&mbr.mbr, 0, sizeof mbr.mbr - 2);
103 get_bios_info(pm->diskdev); 103 get_bios_info(pm->diskdev);
104 104
105edit: 105edit:
106 if (edit_mbr(&mbr) == 0) 106 if (edit_mbr(&mbr) == 0)
107 return 0; 107 return 0;
108 108
109 root_limit = 0; 109 root_limit = 0;
110 if (biosdisk != NULL && (biosdisk->bi_flags & BIFLAG_EXTINT13) == 0) { 110 if (biosdisk != NULL && (biosdisk->bi_flags & BIFLAG_EXTINT13) == 0) {
111 if (mbr_root_above_chs()) { 111 if (mbr_root_above_chs()) {
112 msg_display(MSG_partabovechs); 112 msg_display(MSG_partabovechs);
113 if (!ask_noyes(NULL)) 113 if (!ask_noyes(NULL))
114 goto edit; 114 goto edit;
115 /* The user is shooting themselves in the foot here...*/ 115 /* The user is shooting themselves in the foot here...*/
116 } else 116 } else
117 root_limit = bcyl * bhead * bsec; 117 root_limit = bcyl * bhead * bsec;
118 } 118 }
119 119
120 /* 120 /*
121 * Ensure the install partition (at sector pm->ptstart) and the active 121 * Ensure the install partition (at sector pm->ptstart) and the active
122 * partition are bootable. 122 * partition are bootable.
123 * Determine whether the bootselect code is needed. 123 * Determine whether the bootselect code is needed.
124 * Note that MBR_BS_NEWMBR is always set, so we ignore it! 124 * Note that MBR_BS_NEWMBR is always set, so we ignore it!
125 */ 125 */
126 fl = 0; 126 fl = 0;
127 names = 0; 127 names = 0;
128 for (ext = &mbr; ext != NULL; ext = ext->extended) { 128 for (ext = &mbr; ext != NULL; ext = ext->extended) {
129 p = ext->mbr.mbr_parts; 129 p = ext->mbr.mbr_parts;
130 for (i = 0; i < MBR_PART_COUNT; p++, i++) { 130 for (i = 0; i < MBR_PART_COUNT; p++, i++) {
131 if (p->mbrp_flag == MBR_PFLAG_ACTIVE) { 131 if (p->mbrp_flag == MBR_PFLAG_ACTIVE) {
132 fl |= ACTIVE_FOUND; 132 fl |= ACTIVE_FOUND;
133 if (ext->sector + p->mbrp_start == pm->ptstart) 133 if (ext->sector + p->mbrp_start == pm->ptstart)
134 fl |= NETBSD_ACTIVE; 134 fl |= NETBSD_ACTIVE;
135 } 135 }
136 if (ext->mbrb.mbrbs_nametab[i][0] == 0) { 136 if (ext->mbrb.mbrbs_nametab[i][0] == 0) {
137 /* No bootmenu label... */ 137 /* No bootmenu label... */
138 if (ext->sector == 0) 138 if (ext->sector == 0)
139 continue; 139 continue;
140 if (ext->sector + p->mbrp_start == pm->ptstart) 140 if (ext->sector + p->mbrp_start == pm->ptstart)
141 /* 141 /*
142 * Have installed into an extended ptn 142 * Have installed into an extended ptn
143 * force name & bootsel... 143 * force name & bootsel...
144 */ 144 */
145 names++; 145 names++;
146 continue; 146 continue;
147 } 147 }
148 /* Partition has a bootmenu label... */ 148 /* Partition has a bootmenu label... */
149 if (ext->sector != 0) 149 if (ext->sector != 0)
150 fl |= MBR_BS_EXTLBA; 150 fl |= MBR_BS_EXTLBA;
151 if (ext->sector + p->mbrp_start == pm->ptstart) 151 if (ext->sector + p->mbrp_start == pm->ptstart)
152 fl |= NETBSD_NAMED; 152 fl |= NETBSD_NAMED;
153 else if (p->mbrp_flag == MBR_PFLAG_ACTIVE) 153 else if (p->mbrp_flag == MBR_PFLAG_ACTIVE)
154 fl |= ACTIVE_NAMED; 154 fl |= ACTIVE_NAMED;
155 else 155 else
156 names++; 156 names++;
157 } 157 }
158 } 158 }
159 if (!(fl & ACTIVE_FOUND)) 159 if (!(fl & ACTIVE_FOUND))
160 fl |= NETBSD_ACTIVE; 160 fl |= NETBSD_ACTIVE;
161 if (fl & NETBSD_NAMED && fl & NETBSD_ACTIVE) 161 if (fl & NETBSD_NAMED && fl & NETBSD_ACTIVE)
162 fl |= ACTIVE_NAMED; 162 fl |= ACTIVE_NAMED;
163 163
164 if ((names > 0 || !(fl & NETBSD_ACTIVE)) && 164 if ((names > 0 || !(fl & NETBSD_ACTIVE)) &&
165 (!(fl & NETBSD_NAMED) || !(fl & ACTIVE_NAMED))) { 165 (!(fl & NETBSD_NAMED) || !(fl & ACTIVE_NAMED))) {
166 /* 166 /*
167 * There appear to be multiple bootable partitions, but they 167 * There appear to be multiple bootable partitions, but they
168 * don't all have bootmenu texts. 168 * don't all have bootmenu texts.
169 */ 169 */
170 msg_display(MSG_missing_bootmenu_text); 170 msg_display(MSG_missing_bootmenu_text);
171 if (ask_yesno(NULL)) 171 if (ask_yesno(NULL))
172 goto edit; 172 goto edit;
173 } 173 }
174 174
175 if ((fl & MBR_BS_EXTLBA) && 175 if ((fl & MBR_BS_EXTLBA) &&
176 (biosdisk == NULL || !(biosdisk->bi_flags & BIFLAG_EXTINT13))) { 176 (biosdisk == NULL || !(biosdisk->bi_flags & BIFLAG_EXTINT13))) {
177 /* Need unsupported LBA reads to read boot sectors */ 177 /* Need unsupported LBA reads to read boot sectors */
178 msg_display(MSG_no_extended_bootmenu); 178 msg_display(MSG_no_extended_bootmenu);
179 if (!ask_noyes(NULL)) 179 if (!ask_noyes(NULL))
180 goto edit; 180 goto edit;
181 } 181 }
182 182
183 /* Sort out the name of the mbr code we need */ 183 /* Sort out the name of the mbr code we need */
184 if (names > 0 || fl & (NETBSD_NAMED | ACTIVE_NAMED)) { 184 if (names > 0 || fl & (NETBSD_NAMED | ACTIVE_NAMED)) {
185 /* Need bootselect code */ 185 /* Need bootselect code */
186 fl |= MBR_BS_ACTIVE; 186 fl |= MBR_BS_ACTIVE;
187 bootcode = fl & MBR_BS_EXTLBA ? _PATH_BOOTEXT : _PATH_BOOTSEL; 187 bootcode = fl & MBR_BS_EXTLBA ? _PATH_BOOTEXT : _PATH_BOOTSEL;
188 } else 188 } else
189 bootcode = _PATH_MBR; 189 bootcode = _PATH_MBR;
190 190
191 fl &= MBR_BS_ACTIVE | MBR_BS_EXTLBA; 191 fl &= MBR_BS_ACTIVE | MBR_BS_EXTLBA;
192 192
193 /* Look at what is installed */ 193 /* Look at what is installed */
194 ofl = mbr.mbrb.mbrbs_flags; 194 ofl = mbr.mbrb.mbrbs_flags;
195 if (ofl == 0) { 195 if (ofl == 0) {
196 /* Check there is some bootcode at all... */ 196 /* Check there is some bootcode at all... */
197 if (mbr.mbr.mbr_magic != htole16(MBR_MAGIC) || 197 if (mbr.mbr.mbr_magic != htole16(MBR_MAGIC) ||
198 mbr.mbr.mbr_jmpboot[0] == 0 || 198 mbr.mbr.mbr_jmpboot[0] == 0 ||
199 mbr_root_above_chs()) 199 mbr_root_above_chs())
200 /* Existing won't do, force update */ 200 /* Existing won't do, force update */
201 fl |= MBR_BS_NEWMBR; 201 fl |= MBR_BS_NEWMBR;
202 } 202 }
203 ofl = mbr.oflags & (MBR_BS_ACTIVE | MBR_BS_EXTLBA); 203 ofl = mbr.oflags & (MBR_BS_ACTIVE | MBR_BS_EXTLBA);
204 204
205 if (fl & ~ofl || (fl == 0 && ofl & MBR_BS_ACTIVE)) { 205 if (fl & ~ofl || (fl == 0 && ofl & MBR_BS_ACTIVE)) {
206 /* Existing boot code isn't the right one... */ 206 /* Existing boot code isn't the right one... */
207 if (fl & MBR_BS_ACTIVE) 207 if (fl & MBR_BS_ACTIVE)
208 msg_display(MSG_installbootsel); 208 msg_display(MSG_installbootsel);
209 else 209 else
210 msg_display(MSG_installmbr); 210 msg_display(MSG_installmbr);
211 } else 211 } else
212 /* Existing code would (probably) be ok */ 212 /* Existing code would (probably) be ok */
213 msg_display(MSG_updatembr); 213 msg_display(MSG_updatembr);
214 214
215 if (!ask_yesno(NULL)) 215 if (!ask_yesno(NULL))
216 /* User doesn't want to update mbr code */ 216 /* User doesn't want to update mbr code */
217 return 1; 217 return 1;
218 218
219 if (md_read_bootcode(bootcode, &mbr.mbr) == 0) 219 if (md_read_bootcode(bootcode, &mbr.mbr) == 0)
220 /* update suceeded - to memory copy */ 220 /* update suceeded - to memory copy */
221 return 1; 221 return 1;
222 222
223 /* This shouldn't happen since the files are in the floppy fs... */ 223 /* This shouldn't happen since the files are in the floppy fs... */
224 msg_display("Can't find %s", bootcode); 224 msg_display("Can't find %s", bootcode);
225 ask_yesno(NULL); 225 ask_yesno(NULL);
226 226
227 return 1; 227 return 1;
228} 228}
229 229
230/* 230/*
231 * md back-end code for menu-driven BSD disklabel editor. 231 * md back-end code for menu-driven BSD disklabel editor.
232 */ 232 */
233int 233int
234md_make_bsd_partitions(void) 234md_make_bsd_partitions(void)
235{ 235{
236 return make_bsd_partitions(); 236 return make_bsd_partitions();
237} 237}
238 238
239/* 239/*
240 * any additional partition validation 240 * any additional partition validation
241 */ 241 */
242int 242int
243md_check_partitions(void) 243md_check_partitions(void)
244{ 244{
245 int rval; 245 int rval;
246 char *bootxx; 246 char *bootxx;
247 247
248 /* check we have boot code for the root partition type */ 248 /* check we have boot code for the root partition type */
249 bootxx = bootxx_name(); 249 bootxx = bootxx_name();
250 rval = access(bootxx, R_OK); 250 rval = access(bootxx, R_OK);
251 free(bootxx); 251 free(bootxx);
252 if (rval == 0) 252 if (rval == 0)
253 return 1; 253 return 1;
254 process_menu(MENU_ok, __UNCONST(MSG_No_Bootcode)); 254 process_menu(MENU_ok, __UNCONST(MSG_No_Bootcode));
255 return 0; 255 return 0;
256} 256}
257 257
258/* 258/*
259 * hook called before writing new disklabel. 259 * hook called before writing new disklabel.
260 */ 260 */
261int 261int
262md_pre_disklabel(void) 262md_pre_disklabel(void)
263{ 263{
264 if (pm->no_mbr) 264 if (pm->no_mbr)
265 return 0; 265 return 0;
266 266
267 msg_display(MSG_dofdisk); 267 msg_display(MSG_dofdisk);
268 268
269 /* write edited MBR onto disk. */ 269 /* write edited MBR onto disk. */
270 if (write_mbr(pm->diskdev, &mbr, 1) != 0) { 270 if (write_mbr(pm->diskdev, &mbr, 1) != 0) {
271 msg_display(MSG_wmbrfail); 271 msg_display(MSG_wmbrfail);
272 process_menu(MENU_ok, NULL); 272 process_menu(MENU_ok, NULL);
273 return 1; 273 return 1;
274 } 274 }
275 return 0; 275 return 0;
276} 276}
277 277
278/* 278/*
279 * hook called after writing disklabel to new target disk. 279 * hook called after writing disklabel to new target disk.
280 */ 280 */
281int 281int
282md_post_disklabel(void) 282md_post_disklabel(void)
283{ 283{
284 return 0; 284 return 0;
285} 285}
286 286
287/* 287/*
288 * hook called after upgrade() or install() has finished setting 288 * hook called after upgrade() or install() has finished setting
289 * up the target disk but immediately before the user is given the 289 * up the target disk but immediately before the user is given the
290 * ``disks are now set up'' message. 290 * ``disks are now set up'' message.
291 */ 291 */
292int 292int
293md_post_newfs(void) 293md_post_newfs(void)
294{ 294{
295 int ret; 295 int ret;
296 size_t len; 296 size_t len;
297 char boot_options[1024]; 297 char boot_options[1024];
298 char *bootxx_filename; 298 char *bootxx_filename;
299 /* 299 /*
300 * XXX - this code retains a lot of cruft from when we went 300 * XXX - this code retains a lot of cruft from when we went
301 * to great pains to exclude installboot from the ramdisk 301 * to great pains to exclude installboot from the ramdisk
302 * for size reasons and should be rewritten. 302 * for size reasons and should be rewritten.
303 */ 303 */
304 static const char *consoles[]={ 304 static const char *consoles[]={
305 "pc", /* CONSDEV_PC */ 305 "pc", /* CONSDEV_PC */
306 "com0", /* CONSDEV_COM0 */ 306 "com0", /* CONSDEV_COM0 */
307 "com1", /* CONSDEV_COM1 */ 307 "com1", /* CONSDEV_COM1 */
308 "com2", /* CONSDEV_COM2 */ 308 "com2", /* CONSDEV_COM2 */
309 "com3", /* CONSDEV_COM3 */ 309 "com3", /* CONSDEV_COM3 */
310 "com0kbd", /* CONSDEV_COM0KBD */ 310 "com0kbd", /* CONSDEV_COM0KBD */
311 "com1kbd", /* CONSDEV_COM1KBD */ 311 "com1kbd", /* CONSDEV_COM1KBD */
312 "com2kbd", /* CONSDEV_COM2KBD */ 312 "com2kbd", /* CONSDEV_COM2KBD */
313 "com3kbd" /* CONSDEV_COM3KBD */ }; 313 "com3kbd" /* CONSDEV_COM3KBD */ };
314 static struct x86_boot_params boottype = 314 static struct x86_boot_params boottype =
315 {sizeof boottype, 0, 5, 0, 9600, { '\0' }, "", 0}; 315 {sizeof boottype, 0, 5, 0, 9600, { '\0' }, "", 0};
316 static int conmib[] = {CTL_MACHDEP, CPU_CONSDEV}; 316 static int conmib[] = {CTL_MACHDEP, CPU_CONSDEV};
317 struct termios t; 317 struct termios t;
318 dev_t condev; 318 dev_t condev;
319 319
320 /* 320 if (pm == NULL || !pm->no_part) {
321 * Get console device, should either be ttyE0 or tty0n. 321 /*
322 * Too hard to double check, so just 'know' the device numbers. 322 * Get console device, should either be ttyE0 or tty0n.
323 */ 323 * Too hard to double check, so just 'know' the device numbers.
324 len = sizeof condev; 324 */
325 if (sysctl(conmib, nelem(conmib), &condev, &len, NULL, 0) != -1 325 len = sizeof condev;
326 && (condev & ~3) == 0x800) { 326 if (sysctl(conmib, nelem(conmib), &condev, &len, NULL, 0) != -1
327 /* Motherboard serial port */ 327 && (condev & ~3) == 0x800) {
328 boottype.bp_consdev = (condev & 3) + 1; 328 /* Motherboard serial port */
329 /* Defaulting the baud rate to that of stdin should suffice */ 329 boottype.bp_consdev = (condev & 3) + 1;
330 if (tcgetattr(0, &t) != -1) 330 /* Defaulting the baud rate to that of stdin should suffice */
331 boottype.bp_conspeed = t.c_ispeed; 331 if (tcgetattr(0, &t) != -1)
332 } 332 boottype.bp_conspeed = t.c_ispeed;
 333 }
333 334
334 process_menu(MENU_getboottype, &boottype); 335 process_menu(MENU_getboottype, &boottype);
335 msg_display(MSG_dobootblks, pm->diskdev); 336 msg_display(MSG_dobootblks, pm->diskdev);
336 if (boottype.bp_consdev == ~0u) 337 if (boottype.bp_consdev == ~0u)
337 /* Use existing bootblocks */ 338 /* Use existing bootblocks */
338 return 0; 339 return 0;
 340 }
339 341
340 ret = cp_to_target("/usr/mdec/boot", "/boot"); 342 ret = cp_to_target("/usr/mdec/boot", "/boot");
341 if (ret) 343 if (ret)
342 return ret; 344 return ret;
 345 if (pm && pm->no_part)
 346 return 0;
343 347
344 bootxx_filename = bootxx_name();  348 bootxx_filename = bootxx_name();
345 if (bootxx_filename != NULL) {  349 if (bootxx_filename != NULL) {
346 snprintf(boot_options, sizeof boot_options, 350 snprintf(boot_options, sizeof boot_options,
347 "console=%s,speed=%u", consoles[boottype.bp_consdev], 351 "console=%s,speed=%u", consoles[boottype.bp_consdev],
348 boottype.bp_conspeed); 352 boottype.bp_conspeed);
349 if (pm->isspecial) { 353 if (pm->isspecial) {
350 ret = run_program(RUN_DISPLAY, 354 ret = run_program(RUN_DISPLAY,
351 "/usr/sbin/installboot -o %s /dev/r%s %s", 355 "/usr/sbin/installboot -o %s /dev/r%s %s",
352 boot_options, pm->diskdev, bootxx_filename);  356 boot_options, pm->diskdev, bootxx_filename);
353 } else { 357 } else {
354 ret = run_program(RUN_DISPLAY, 358 ret = run_program(RUN_DISPLAY,
355 "/usr/sbin/installboot -o %s /dev/r%s%c %s", 359 "/usr/sbin/installboot -o %s /dev/r%s%c %s",
356 boot_options, pm->diskdev, 'a' + pm->rootpart, 360 boot_options, pm->diskdev, 'a' + pm->rootpart,
357 bootxx_filename);  361 bootxx_filename);
358 } 362 }
359 free(bootxx_filename);  363 free(bootxx_filename);
360 } else  364 } else
361 ret = -1;  365 ret = -1;
362  366
363 if (ret != 0)  367 if (ret != 0)
364 process_menu(MENU_ok,  368 process_menu(MENU_ok,
365 __UNCONST("Warning: disk is probably not bootable"));  369 __UNCONST("Warning: disk is probably not bootable"));
366 370
367 return ret; 371 return ret;
368} 372}
369 373
370int 374int
371md_post_extract(void) 375md_post_extract(void)
372{ 376{
373 return 0; 377 return 0;
374} 378}
375 379
376void 380void
377md_cleanup_install(void) 381md_cleanup_install(void)
378{ 382{
379#ifndef DEBUG 383#ifndef DEBUG
380 enable_rc_conf(); 384 enable_rc_conf();
381 add_rc_conf("wscons=YES\n"); 385 add_rc_conf("wscons=YES\n");
382 386
383# if defined(__i386__) && defined(SET_KERNEL_TINY) 387# if defined(__i386__) && defined(SET_KERNEL_TINY)
384 /* 388 /*
385 * For GENERIC_TINY, do not enable any extra screens or wsmux. 389 * For GENERIC_TINY, do not enable any extra screens or wsmux.
386 * Otherwise, run getty on 4 VTs. 390 * Otherwise, run getty on 4 VTs.
387 */ 391 */
388 if (get_kernel_set() == SET_KERNEL_TINY) 392 if (get_kernel_set() == SET_KERNEL_TINY)
389 run_program(RUN_CHROOT, 393 run_program(RUN_CHROOT,
390 "sed -an -e '/^screen/s/^/#/;/^mux/s/^/#/;" 394 "sed -an -e '/^screen/s/^/#/;/^mux/s/^/#/;"
391 "H;$!d;g;w /etc/wscons.conf' /etc/wscons.conf"); 395 "H;$!d;g;w /etc/wscons.conf' /etc/wscons.conf");
392 else 396 else
393# endif 397# endif
394 run_program(RUN_CHROOT, 398 run_program(RUN_CHROOT,
395 "sed -an -e '/^ttyE[1-9]/s/off/on/;" 399 "sed -an -e '/^ttyE[1-9]/s/off/on/;"
396 "H;$!d;g;w /etc/ttys' /etc/ttys"); 400 "H;$!d;g;w /etc/ttys' /etc/ttys");
397 401
398#endif 402#endif
399} 403}
400 404
401int 405int
402md_pre_update(void) 406md_pre_update(void)
403{ 407{
404 return 1; 408 return 1;
405} 409}
406 410
407/* Upgrade support */ 411/* Upgrade support */
408int 412int
409md_update(void) 413md_update(void)
410{ 414{
411 md_post_newfs(); 415 md_post_newfs();
412 md_upgrade_mbrtype(); 416 md_upgrade_mbrtype();
413 return 1; 417 return 1;
414} 418}
415 419
416int 420int
417md_check_mbr(mbr_info_t *mbri) 421md_check_mbr(mbr_info_t *mbri)
418{ 422{
419 return 2; 423 return 2;
420} 424}
421 425
422int 426int
423md_mbr_use_wholedisk(mbr_info_t *mbri) 427md_mbr_use_wholedisk(mbr_info_t *mbri)
424{ 428{
425 return mbr_use_wholedisk(mbri); 429 return mbr_use_wholedisk(mbri);
426} 430}
427 431
428static int 432static int
429get_bios_info(char *dev) 433get_bios_info(char *dev)
430{ 434{
431 static struct disklist *disklist = NULL; 435 static struct disklist *disklist = NULL;
432 static int mib[2] = {CTL_MACHDEP, CPU_DISKINFO}; 436 static int mib[2] = {CTL_MACHDEP, CPU_DISKINFO};
433 int i; 437 int i;
434 size_t len; 438 size_t len;
435 struct biosdisk_info *bip; 439 struct biosdisk_info *bip;
436 struct nativedisk_info *nip = NULL, *nat; 440 struct nativedisk_info *nip = NULL, *nat;
437 int cyl, head; 441 int cyl, head;
438 daddr_t sec; 442 daddr_t sec;
439 443
440 if (disklist == NULL) { 444 if (disklist == NULL) {
441 if (sysctl(mib, 2, NULL, &len, NULL, 0) < 0) 445 if (sysctl(mib, 2, NULL, &len, NULL, 0) < 0)
442 goto nogeom; 446 goto nogeom;
443 disklist = malloc(len); 447 disklist = malloc(len);
444 if (disklist == NULL) { 448 if (disklist == NULL) {
445 fprintf(stderr, "Out of memory\n"); 449 fprintf(stderr, "Out of memory\n");
446 return -1; 450 return -1;
447 } 451 }
448 sysctl(mib, 2, disklist, &len, NULL, 0); 452 sysctl(mib, 2, disklist, &len, NULL, 0);
449 } 453 }
450 454
451 for (i = 0; i < disklist->dl_nnativedisks; i++) { 455 for (i = 0; i < disklist->dl_nnativedisks; i++) {
452 nat = &disklist->dl_nativedisks[i]; 456 nat = &disklist->dl_nativedisks[i];
453 if (!strcmp(dev, nat->ni_devname)) { 457 if (!strcmp(dev, nat->ni_devname)) {
454 nip = nat; 458 nip = nat;
455 break; 459 break;
456 } 460 }
457 } 461 }
458 if (nip == NULL || nip->ni_nmatches == 0) { 462 if (nip == NULL || nip->ni_nmatches == 0) {
459nogeom: 463nogeom:
460 if (nip != NULL) 464 if (nip != NULL)
461 msg_display(MSG_nobiosgeom, pm->dlcyl, pm->dlhead, pm->dlsec); 465 msg_display(MSG_nobiosgeom, pm->dlcyl, pm->dlhead, pm->dlsec);
462 if (guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec) >= 0 466 if (guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec) >= 0
463 && nip != NULL) 467 && nip != NULL)
464 msg_display_add(MSG_biosguess, cyl, head, sec); 468 msg_display_add(MSG_biosguess, cyl, head, sec);
465 biosdisk = NULL; 469 biosdisk = NULL;
466 } else { 470 } else {
467 guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec); 471 guess_biosgeom_from_mbr(&mbr, &cyl, &head, &sec);
468 if (nip->ni_nmatches == 1) { 472 if (nip->ni_nmatches == 1) {
469 bip = &disklist->dl_biosdisks[nip->ni_biosmatches[0]]; 473 bip = &disklist->dl_biosdisks[nip->ni_biosmatches[0]];
470 msg_display(MSG_onebiosmatch); 474 msg_display(MSG_onebiosmatch);
471 msg_table_add(MSG_onebiosmatch_header); 475 msg_table_add(MSG_onebiosmatch_header);
472 msg_table_add(MSG_onebiosmatch_row, bip->bi_dev, 476 msg_table_add(MSG_onebiosmatch_row, bip->bi_dev,
473 bip->bi_cyl, bip->bi_head, bip->bi_sec, 477 bip->bi_cyl, bip->bi_head, bip->bi_sec,
474 (unsigned)bip->bi_lbasecs, 478 (unsigned)bip->bi_lbasecs,
475 (unsigned)(bip->bi_lbasecs / (1000000000 / 512))); 479 (unsigned)(bip->bi_lbasecs / (1000000000 / 512)));
476 msg_display_add(MSG_biosgeom_advise); 480 msg_display_add(MSG_biosgeom_advise);
477 biosdisk = bip; 481 biosdisk = bip;
478 process_menu(MENU_biosonematch, &biosdisk); 482 process_menu(MENU_biosonematch, &biosdisk);
479 } else { 483 } else {
480 msg_display(MSG_biosmultmatch); 484 msg_display(MSG_biosmultmatch);
481 msg_table_add(MSG_biosmultmatch_header); 485 msg_table_add(MSG_biosmultmatch_header);
482 for (i = 0; i < nip->ni_nmatches; i++) { 486 for (i = 0; i < nip->ni_nmatches; i++) {
483 bip = &disklist->dl_biosdisks[ 487 bip = &disklist->dl_biosdisks[
484 nip->ni_biosmatches[i]]; 488 nip->ni_biosmatches[i]];
485 msg_table_add(MSG_biosmultmatch_row, i, 489 msg_table_add(MSG_biosmultmatch_row, i,
486 bip->bi_dev, bip->bi_cyl, bip->bi_head, 490 bip->bi_dev, bip->bi_cyl, bip->bi_head,
487 bip->bi_sec, (unsigned)bip->bi_lbasecs, 491 bip->bi_sec, (unsigned)bip->bi_lbasecs,
488 (unsigned)bip->bi_lbasecs/(1000000000/512)); 492 (unsigned)bip->bi_lbasecs/(1000000000/512));
489 } 493 }
490 process_menu(MENU_biosmultmatch, &i); 494 process_menu(MENU_biosmultmatch, &i);
491 if (i == -1) 495 if (i == -1)
492 biosdisk = NULL; 496 biosdisk = NULL;
493 else 497 else
494 biosdisk = &disklist->dl_biosdisks[ 498 biosdisk = &disklist->dl_biosdisks[
495 nip->ni_biosmatches[i]]; 499 nip->ni_biosmatches[i]];
496 } 500 }
497 } 501 }
498 if (biosdisk == NULL) { 502 if (biosdisk == NULL) {
499 if (nip != NULL) { 503 if (nip != NULL) {
500 set_bios_geom(cyl, head, sec); 504 set_bios_geom(cyl, head, sec);
501 } else { 505 } else {
502 bcyl = cyl; 506 bcyl = cyl;
503 bhead = head; 507 bhead = head;
504 bsec = sec; 508 bsec = sec;
505 } 509 }
506 } else { 510 } else {
507 bcyl = biosdisk->bi_cyl; 511 bcyl = biosdisk->bi_cyl;
508 bhead = biosdisk->bi_head; 512 bhead = biosdisk->bi_head;
509 bsec = biosdisk->bi_sec; 513 bsec = biosdisk->bi_sec;
510 } 514 }
511 return 0; 515 return 0;
512} 516}
513 517
514static int 518static int
515mbr_root_above_chs(void) 519mbr_root_above_chs(void)
516{ 520{
517 return pm->ptstart + DEFROOTSIZE * (MEG / 512) >= bcyl * bhead * bsec; 521 return pm->ptstart + DEFROOTSIZE * (MEG / 512) >= bcyl * bhead * bsec;
518} 522}
519 523
520static void 524static void
521md_upgrade_mbrtype(void) 525md_upgrade_mbrtype(void)
522{ 526{
523 struct mbr_partition *mbrp; 527 struct mbr_partition *mbrp;
524 int i, netbsdpart = -1, oldbsdpart = -1, oldbsdcount = 0; 528 int i, netbsdpart = -1, oldbsdpart = -1, oldbsdcount = 0;
525 529
526 if (pm->no_mbr) 530 if (pm->no_mbr)
527 return; 531 return;
528 532
529 if (read_mbr(pm->diskdev, &mbr) < 0) 533 if (read_mbr(pm->diskdev, &mbr) < 0)
530 return; 534 return;
531 535
532 mbrp = &mbr.mbr.mbr_parts[0]; 536 mbrp = &mbr.mbr.mbr_parts[0];
533 537
534 for (i = 0; i < MBR_PART_COUNT; i++) { 538 for (i = 0; i < MBR_PART_COUNT; i++) {
535 if (mbrp[i].mbrp_type == MBR_PTYPE_386BSD) { 539 if (mbrp[i].mbrp_type == MBR_PTYPE_386BSD) {
536 oldbsdpart = i; 540 oldbsdpart = i;
537 oldbsdcount++; 541 oldbsdcount++;
538 } else if (mbrp[i].mbrp_type == MBR_PTYPE_NETBSD) 542 } else if (mbrp[i].mbrp_type == MBR_PTYPE_NETBSD)
539 netbsdpart = i; 543 netbsdpart = i;
540 } 544 }
541 545
542 if (netbsdpart == -1 && oldbsdcount == 1) { 546 if (netbsdpart == -1 && oldbsdcount == 1) {
543 mbrp[oldbsdpart].mbrp_type = MBR_PTYPE_NETBSD; 547 mbrp[oldbsdpart].mbrp_type = MBR_PTYPE_NETBSD;
544 write_mbr(pm->diskdev, &mbr, 0); 548 write_mbr(pm->diskdev, &mbr, 0);
545 } 549 }
546} 550}
547 551
548/* 552/*
549 * Read MBR code from a file. 553 * Read MBR code from a file.
550 * The existing partition table and bootselect configuration is kept. 554 * The existing partition table and bootselect configuration is kept.
551 */ 555 */
552static int 556static int
553md_read_bootcode(const char *path, struct mbr_sector *mbrs) 557md_read_bootcode(const char *path, struct mbr_sector *mbrs)
554{ 558{
555 int fd; 559 int fd;
556 struct stat st; 560 struct stat st;
557 size_t len; 561 size_t len;
558 struct mbr_sector new_mbr; 562 struct mbr_sector new_mbr;
559 uint32_t dsn; 563 uint32_t dsn;
560 564
561 fd = open(path, O_RDONLY); 565 fd = open(path, O_RDONLY);
562 if (fd < 0) 566 if (fd < 0)
563 return -1; 567 return -1;
564 568
565 if (fstat(fd, &st) < 0 || st.st_size != sizeof *mbrs) { 569 if (fstat(fd, &st) < 0 || st.st_size != sizeof *mbrs) {
566 close(fd); 570 close(fd);
567 return -1; 571 return -1;
568 } 572 }
569 573
570 if (read(fd, &new_mbr, sizeof new_mbr) != sizeof new_mbr) { 574 if (read(fd, &new_mbr, sizeof new_mbr) != sizeof new_mbr) {
571 close(fd); 575 close(fd);
572 return -1; 576 return -1;
573 } 577 }
574 close(fd); 578 close(fd);
575 579
576 if (new_mbr.mbr_bootsel_magic != htole16(MBR_BS_MAGIC)) 580 if (new_mbr.mbr_bootsel_magic != htole16(MBR_BS_MAGIC))
577 return -1; 581 return -1;
578 582
579 if (mbrs->mbr_bootsel_magic == htole16(MBR_BS_MAGIC)) { 583 if (mbrs->mbr_bootsel_magic == htole16(MBR_BS_MAGIC)) {
580 len = offsetof(struct mbr_sector, mbr_bootsel); 584 len = offsetof(struct mbr_sector, mbr_bootsel);
581 } else 585 } else
582 len = offsetof(struct mbr_sector, mbr_parts); 586 len = offsetof(struct mbr_sector, mbr_parts);
583 587
584 /* Preserve the 'drive serial number' - especially for Vista */ 588 /* Preserve the 'drive serial number' - especially for Vista */
585 dsn = mbrs->mbr_dsn; 589 dsn = mbrs->mbr_dsn;
586 memcpy(mbrs, &new_mbr, len); 590 memcpy(mbrs, &new_mbr, len);
587 mbrs->mbr_dsn = dsn; 591 mbrs->mbr_dsn = dsn;
588 592
589 /* Keep flags from object file - indicate the properties */ 593 /* Keep flags from object file - indicate the properties */
590 mbrs->mbr_bootsel.mbrbs_flags = new_mbr.mbr_bootsel.mbrbs_flags; 594 mbrs->mbr_bootsel.mbrbs_flags = new_mbr.mbr_bootsel.mbrbs_flags;
591 mbrs->mbr_magic = htole16(MBR_MAGIC); 595 mbrs->mbr_magic = htole16(MBR_MAGIC);
592 596
593 return 0; 597 return 0;
594} 598}
595 599
596static unsigned int 600static unsigned int
597get_bootmodel(void) 601get_bootmodel(void)
598{ 602{
599#if defined(__i386__) 603#if defined(__i386__)
600 struct utsname ut; 604 struct utsname ut;
601#ifdef DEBUG 605#ifdef DEBUG
602 char *envstr; 606 char *envstr;
603 607
604 envstr = getenv("BOOTMODEL"); 608 envstr = getenv("BOOTMODEL");
605 if (envstr != NULL) 609 if (envstr != NULL)
606 return atoi(envstr); 610 return atoi(envstr);
607#endif 611#endif
608 612
609 if (uname(&ut) < 0) 613 if (uname(&ut) < 0)
610 ut.version[0] = 0; 614 ut.version[0] = 0;
611 615
612#if defined(SET_KERNEL_TINY) 616#if defined(SET_KERNEL_TINY)
613 if (strstr(ut.version, "TINY") != NULL) 617 if (strstr(ut.version, "TINY") != NULL)
614 return SET_KERNEL_TINY; 618 return SET_KERNEL_TINY;
615#endif 619#endif
616#if defined(SET_KERNEL_PS2) 620#if defined(SET_KERNEL_PS2)
617 if (strstr(ut.version, "PS2") != NULL) 621 if (strstr(ut.version, "PS2") != NULL)
618 return SET_KERNEL_PS2; 622 return SET_KERNEL_PS2;
619#endif 623#endif
620#endif 624#endif
621 return SET_KERNEL_GENERIC; 625 return SET_KERNEL_GENERIC;
622} 626}
623 627
624 628
625int 629int
626md_pre_mount() 630md_pre_mount()
627{ 631{
628 return 0; 632 return 0;
629} 633}