Add an option to install onto a pre-configured wedge. Greatly simmplifies (U)EFI setups (but does not fully automate them yet).diff -r1.3 -r1.4 src/usr.sbin/sysinst/bsddisklabel.c
(martin)
--- 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 | |||
86 | int | 86 | int | |
87 | save_ptn(int ptn, daddr_t start, daddr_t size, int fstype, const char *mountpt) | 87 | save_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 | |||
151 | void | 151 | void | |
152 | set_ptn_titles(menudesc *m, int opt, void *arg) | 152 | set_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 | |||
176 | void | 176 | void | |
177 | set_ptn_menu(struct ptn_info *pi) | 177 | set_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 | |||
210 | int | 210 | int | |
211 | set_ptn_size(menudesc *m, void *arg) | 211 | set_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 */ | |
348 | void | 348 | void | |
349 | get_ptn_sizes(daddr_t part_start, daddr_t sectors, int no_swap) | 349 | get_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 | */ | |
557 | int | 557 | int | |
558 | make_bsd_partitions(void) | 558 | make_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 | */ | |
783 | int | 786 | int | |
784 | check_partitions(void) | 787 | check_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 | } |
--- 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 | |||
46 | const char *getfslabelname(uint8_t); | 46 | const 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 */ | |
83 | enum { LY_SETNEW, LY_NEWRAID, LY_NEWCGD, LY_NEWLVM, LY_USEEXIST }; | 83 | enum { LY_SETNEW, LY_NEWRAID, LY_NEWCGD, LY_NEWLVM, LY_USEEXIST }; | |
84 | 84 | |||
85 | /* Installation sets */ | 85 | /* Installation sets */ | |
86 | enum { | 86 | enum { | |
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 */ | |
187 | typedef struct arg_rv { | 187 | typedef struct arg_rv { | |
188 | void *arg; | 188 | void *arg; | |
189 | int rv; | 189 | int rv; | |
190 | } arg_rv; | 190 | } arg_rv; | |
191 | 191 | |||
192 | typedef struct distinfo { | 192 | typedef 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 | |
200 | typedef struct _partinfo { | 200 | typedef 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 | |||
230 | struct ptn_info { | 230 | struct 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 | |||
249 | int debug; /* set by -D option */ | 249 | int debug; /* set by -D option */ | |
250 | 250 | |||
251 | char rel[SSTRSIZE]; | 251 | char rel[SSTRSIZE]; | |
252 | char machine[SSTRSIZE]; | 252 | char machine[SSTRSIZE]; | |
253 | 253 | |||
254 | int ignorerror; | 254 | int ignorerror; | |
255 | int ttysig_ignore; | 255 | int ttysig_ignore; | |
256 | pid_t ttysig_forward; | 256 | pid_t ttysig_forward; | |
257 | int layoutkind; | 257 | int layoutkind; | |
258 | int sizemult; | 258 | int sizemult; | |
259 | const char *multname; | 259 | const char *multname; | |
260 | int partman_go; /* run extended partition manager */ | 260 | int partman_go; /* run extended partition manager */ | |
261 | 261 | |||
262 | /* logging variables */ | 262 | /* logging variables */ | |
263 | 263 | |||
264 | FILE *logfp; | 264 | FILE *logfp; | |
265 | FILE *script; | 265 | FILE *script; | |
266 | 266 | |||
267 | /* Information for the NetBSD disklabel */ | 267 | /* Information for the NetBSD disklabel */ | |
268 | 268 | |||
269 | enum DLTR { PART_A, PART_B, PART_C, PART_D, PART_E, PART_F, PART_G, PART_H, | 269 | enum 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)) | |
272 | daddr_t tmp_ramdisk_size; | 272 | daddr_t tmp_ramdisk_size; | |
273 | #define MAX_DISKS 15 | 273 | #define MAX_DISKS 15 | |
274 | 274 | |||
275 | unsigned int root_limit; /* BIOS (etc) read limit */ | 275 | unsigned int root_limit; /* BIOS (etc) read limit */ | |
276 | 276 | |||
277 | enum SHRED_T { SHRED_NONE=0, SHRED_ZEROS, SHRED_RANDOM, SHRED_CRYPTO }; | 277 | enum 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 */ | |
280 | SLIST_HEAD(pm_head_t, pm_devs_t) pm_head; | 280 | SLIST_HEAD(pm_head_t, pm_devs_t) pm_head; | |
281 | 281 | |||
282 | typedef struct pm_devs_t { | 282 | typedef 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; | |
310 | pm_devs_t *pm; /* Pointer to currend device with which we work */ | 311 | pm_devs_t *pm; /* Pointer to currend device with which we work */ | |
311 | pm_devs_t *pm_new; /* Pointer for next allocating device in find_disks() */ | 312 | pm_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 */ | |
314 | typedef struct pm_wedge_t { | 315 | typedef 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; | |
320 | pm_wedge_t wedges[MAX_WEDGES]; | 321 | pm_wedge_t wedges[MAX_WEDGES]; | |
321 | 322 | |||
322 | /* Generic structure for partman */ | 323 | /* Generic structure for partman */ | |
323 | typedef struct { | 324 | typedef 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. */ | |
335 | char xfer_dir[STRSIZE]; | 336 | char xfer_dir[STRSIZE]; | |
336 | int clean_xfer_dir; | 337 | int 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 */ | |
359 | char ext_dir_bin[STRSIZE]; | 360 | char ext_dir_bin[STRSIZE]; | |
360 | 361 | |||
361 | /* Abs. path we extract source sets from */ | 362 | /* Abs. path we extract source sets from */ | |
362 | char ext_dir_src[STRSIZE]; | 363 | char ext_dir_src[STRSIZE]; | |
363 | 364 | |||
364 | /* Abs. path we extract pkgsrc from */ | 365 | /* Abs. path we extract pkgsrc from */ | |
365 | char ext_dir_pkgsrc[STRSIZE]; | 366 | char 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 */ | |
368 | char set_dir_bin[STRSIZE]; | 369 | char 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 */ | |
371 | char set_dir_src[STRSIZE]; | 372 | char 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 */ | |
374 | char pkg_dir[STRSIZE]; | 375 | char 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 */ | |
377 | char pkgsrc_dir[STRSIZE]; | 378 | char pkgsrc_dir[STRSIZE]; | |
378 | 379 | |||
379 | /* User shell */ | 380 | /* User shell */ | |
380 | const char *ushell; | 381 | const char *ushell; | |
381 | 382 | |||
382 | struct ftpinfo { | 383 | struct 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 */ | |
392 | struct ftpinfo ftp, pkg, pkgsrc; | 393 | struct ftpinfo ftp, pkg, pkgsrc; | |
393 | 394 | |||
394 | int (*fetch_fn)(const char *); | 395 | int (*fetch_fn)(const char *); | |
395 | char nfs_host[STRSIZE]; | 396 | char nfs_host[STRSIZE]; | |
396 | char nfs_dir[STRSIZE]; | 397 | char nfs_dir[STRSIZE]; | |
397 | 398 | |||
398 | char cdrom_dev[SSTRSIZE]; /* Typically "cd0a" */ | 399 | char cdrom_dev[SSTRSIZE]; /* Typically "cd0a" */ | |
399 | char fd_dev[SSTRSIZE]; /* Typically "/dev/fd0a" */ | 400 | char fd_dev[SSTRSIZE]; /* Typically "/dev/fd0a" */ | |
400 | const char *fd_type; /* "msdos", "ffs" or maybe "ados" */ | 401 | const char *fd_type; /* "msdos", "ffs" or maybe "ados" */ | |
401 | 402 | |||
402 | char localfs_dev[SSTRSIZE]; | 403 | char localfs_dev[SSTRSIZE]; | |
403 | char localfs_fs[SSTRSIZE]; | 404 | char localfs_fs[SSTRSIZE]; | |
404 | char localfs_dir[STRSIZE]; | 405 | char localfs_dir[STRSIZE]; | |
405 | 406 | |||
406 | char targetroot_mnt[SSTRSIZE]; | 407 | char targetroot_mnt[SSTRSIZE]; | |
407 | 408 | |||
408 | int mnt2_mounted; | 409 | int mnt2_mounted; | |
409 | 410 | |||
410 | char dist_postfix[SSTRSIZE]; | 411 | char dist_postfix[SSTRSIZE]; | |
411 | 412 | |||
412 | /* needed prototypes */ | 413 | /* needed prototypes */ | |
413 | void set_menu_numopts(int, int); | 414 | void set_menu_numopts(int, int); | |
414 | void remove_color_options(void); | 415 | void remove_color_options(void); | |
415 | void remove_raid_options(void); | 416 | void remove_raid_options(void); | |
416 | void remove_lvm_options(void); | 417 | void remove_lvm_options(void); | |
417 | void remove_cgd_options(void); | 418 | void remove_cgd_options(void); | |
418 | void remove_gpt_options(void); | 419 | void remove_gpt_options(void); | |
419 | 420 | |||
420 | /* Machine dependent functions .... */ | 421 | /* Machine dependent functions .... */ | |
421 | void md_init(void); | 422 | void md_init(void); | |
422 | void md_prelim_menu(void); | 423 | void md_prelim_menu(void); | |
423 | void md_init_set_status(int); /* SFLAG_foo */ | 424 | void 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 */ | |
426 | int md_get_info(void); | 427 | int md_get_info(void); | |
427 | int md_make_bsd_partitions(void); | 428 | int md_make_bsd_partitions(void); | |
428 | int md_check_partitions(void); | 429 | int md_check_partitions(void); | |
429 | int md_pre_disklabel(void); | 430 | int md_pre_disklabel(void); | |
430 | int md_post_disklabel(void); | 431 | int md_post_disklabel(void); | |
431 | int md_pre_mount(void); | 432 | int md_pre_mount(void); | |
432 | int md_post_newfs(void); | 433 | int md_post_newfs(void); | |
433 | int md_post_extract(void); | 434 | int md_post_extract(void); | |
434 | void md_cleanup_install(void); | 435 | void 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 */ | |
437 | int md_pre_update(void); | 438 | int md_pre_update(void); | |
438 | int md_update(void); | 439 | int 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 */ | |
442 | void toplevel(void); | 443 | void toplevel(void); | |
443 | 444 | |||
444 | /* from disks.c */ | 445 | /* from disks.c */ | |
445 | const char *get_default_cdrom(void); | 446 | const char *get_default_cdrom(void); | |
446 | int find_disks(const char *); | 447 | int find_disks(const char *); | |
447 | struct menudesc; | 448 | struct menudesc; | |
448 | void fmt_fspart(struct menudesc *, int, void *); | 449 | void fmt_fspart(struct menudesc *, int, void *); | |
449 | void disp_cur_fspart(int, int); | 450 | void disp_cur_fspart(int, int); | |
450 | int write_disklabel(void); | 451 | int write_disklabel(void); | |
451 | int make_filesystems(void); | 452 | int make_filesystems(void); | |
452 | int make_fstab(void); | 453 | int make_fstab(void); | |
453 | int mount_disks(void); | 454 | int mount_disks(void); | |
454 | int set_swap_if_low_ram(const char *, partinfo *); | 455 | int set_swap_if_low_ram(const char *, partinfo *); | |
455 | int set_swap(const char *, partinfo *); | 456 | int set_swap(const char *, partinfo *); | |
456 | int check_swap(const char *, int); | 457 | int check_swap(const char *, int); | |
457 | char *bootxx_name(void); | 458 | char *bootxx_name(void); | |
458 | void label_read(void); | 459 | void label_read(void); | |
459 | int get_dkwedges(struct dkwedge_info **, const char *); | 460 | int get_dkwedges(struct dkwedge_info **, const char *); | |
460 | const char *get_gptfs_by_id(int); | 461 | const char *get_gptfs_by_id(int); | |
461 | 462 | |||
462 | 463 | |||
463 | /* from disks_lfs.c */ | 464 | /* from disks_lfs.c */ | |
464 | int fs_is_lfs(void *); | 465 | int fs_is_lfs(void *); | |
465 | 466 | |||
466 | /* from label.c */ | 467 | /* from label.c */ | |
467 | const char *get_last_mounted(int, int, partinfo *); | 468 | const char *get_last_mounted(int, int, partinfo *); | |
468 | int savenewlabel(partinfo *, int); | 469 | int savenewlabel(partinfo *, int); | |
469 | int incorelabel(const char *, partinfo *); | 470 | int incorelabel(const char *, partinfo *); | |
470 | int edit_and_check_label(partinfo *, int, int, int); | 471 | int edit_and_check_label(partinfo *, int, int, int); | |
471 | void set_bsize(partinfo *, int); | 472 | void set_bsize(partinfo *, int); | |
472 | void set_fsize(partinfo *, int); | 473 | void set_fsize(partinfo *, int); | |
473 | void set_ptype(partinfo *, int, int); | 474 | void set_ptype(partinfo *, int, int); | |
474 | int edit_ptn(menudesc *, void *); | 475 | int edit_ptn(menudesc *, void *); | |
475 | int checkoverlap(partinfo *, int, int, int); | 476 | int checkoverlap(partinfo *, int, int, int); | |
476 | 477 | |||
477 | /* from install.c */ | 478 | /* from install.c */ | |
478 | void do_install(void); | 479 | void do_install(void); | |
479 | 480 | |||
480 | /* from factor.c */ | 481 | /* from factor.c */ | |
481 | void factor(long, long *, int, int *); | 482 | void factor(long, long *, int, int *); | |
482 | 483 | |||
483 | /* from fdisk.c */ | 484 | /* from fdisk.c */ | |
484 | void get_disk_info(char *); | 485 | void get_disk_info(char *); | |
485 | void set_disk_info(char *); | 486 | void set_disk_info(char *); | |
486 | 487 | |||
487 | /* from geom.c */ | 488 | /* from geom.c */ | |
488 | int get_geom(const char *, struct disklabel *); | 489 | int get_geom(const char *, struct disklabel *); | |
489 | int get_real_geom(const char *, struct disklabel *); | 490 | int get_real_geom(const char *, struct disklabel *); | |
490 | 491 | |||
491 | /* from net.c */ | 492 | /* from net.c */ | |
492 | extern int network_up; | 493 | extern int network_up; | |
493 | extern char net_namesvr[STRSIZE]; | 494 | extern char net_namesvr[STRSIZE]; | |
494 | int get_via_ftp(const char *); | 495 | int get_via_ftp(const char *); | |
495 | int get_via_nfs(void); | 496 | int get_via_nfs(void); | |
496 | int config_network(void); | 497 | int config_network(void); | |
497 | void mnt_net_config(void); | 498 | void mnt_net_config(void); | |
498 | void make_url(char *, struct ftpinfo *, const char *); | 499 | void make_url(char *, struct ftpinfo *, const char *); | |
499 | int get_pkgsrc(void); | 500 | int get_pkgsrc(void); | |
500 | 501 | |||
501 | /* From run.c */ | 502 | /* From run.c */ | |
502 | int collect(int, char **, const char *, ...) __printflike(3, 4); | 503 | int collect(int, char **, const char *, ...) __printflike(3, 4); | |
503 | int run_program(int, const char *, ...) __printflike(2, 3); | 504 | int run_program(int, const char *, ...) __printflike(2, 3); | |
504 | void do_logging(void); | 505 | void do_logging(void); | |
505 | int do_system(const char *); | 506 | int do_system(const char *); | |
506 | 507 | |||
507 | /* from upgrade.c */ | 508 | /* from upgrade.c */ | |
508 | void do_upgrade(void); | 509 | void do_upgrade(void); | |
509 | void do_reinstall_sets(void); | 510 | void do_reinstall_sets(void); | |
510 | void restore_etc(void); | 511 | void restore_etc(void); | |
511 | 512 | |||
512 | /* from util.c */ | 513 | /* from util.c */ | |
513 | int ask_yesno(const char *); | 514 | int ask_yesno(const char *); | |
514 | int ask_noyes(const char *); | 515 | int ask_noyes(const char *); | |
515 | int dir_exists_p(const char *); | 516 | int dir_exists_p(const char *); | |
516 | int file_exists_p(const char *); | 517 | int file_exists_p(const char *); | |
517 | int file_mode_match(const char *, unsigned int); | 518 | int file_mode_match(const char *, unsigned int); | |
518 | uint get_ramsize(void); | 519 | uint get_ramsize(void); | |
519 | void ask_sizemult(int); | 520 | void ask_sizemult(int); | |
520 | void run_makedev(void); | 521 | void run_makedev(void); | |
521 | int boot_media_still_needed(void); | 522 | int boot_media_still_needed(void); | |
522 | int get_via_floppy(void); | 523 | int get_via_floppy(void); | |
523 | int get_via_cdrom(void); | 524 | int get_via_cdrom(void); | |
524 | int get_via_localfs(void); | 525 | int get_via_localfs(void); | |
525 | int get_via_localdir(void); | 526 | int get_via_localdir(void); | |
526 | void show_cur_distsets(void); | 527 | void show_cur_distsets(void); | |
527 | void make_ramdisk_dir(const char *); | 528 | void make_ramdisk_dir(const char *); | |
528 | void set_kernel_set(unsigned int); | 529 | void set_kernel_set(unsigned int); | |
529 | unsigned int get_kernel_set(void); | 530 | unsigned int get_kernel_set(void); | |
530 | unsigned int set_X11_selected(void); | 531 | unsigned int set_X11_selected(void); | |
531 | int get_and_unpack_sets(int, msg, msg, msg); | 532 | int get_and_unpack_sets(int, msg, msg, msg); | |
532 | int sanity_check(void); | 533 | int sanity_check(void); | |
533 | int set_timezone(void); | 534 | int set_timezone(void); | |
534 | void scripting_fprintf(FILE *, const char *, ...) __printflike(2, 3); | 535 | void scripting_fprintf(FILE *, const char *, ...) __printflike(2, 3); | |
535 | void scripting_vfprintf(FILE *, const char *, va_list) __printflike(2, 0); | 536 | void scripting_vfprintf(FILE *, const char *, va_list) __printflike(2, 0); | |
536 | void add_rc_conf(const char *, ...); | 537 | void add_rc_conf(const char *, ...); | |
537 | int del_rc_conf(const char *); | 538 | int del_rc_conf(const char *); | |
538 | void add_sysctl_conf(const char *, ...) __printflike(1, 2); | 539 | void add_sysctl_conf(const char *, ...) __printflike(1, 2); | |
539 | void enable_rc_conf(void); | 540 | void enable_rc_conf(void); | |
540 | void set_sizemultname_cyl(void); | 541 | void set_sizemultname_cyl(void); | |
541 | void set_sizemultname_meg(void); | 542 | void set_sizemultname_meg(void); | |
542 | int binary_available(const char *); | 543 | int binary_available(const char *); | |
543 | int check_lfs_progs(void); | 544 | int check_lfs_progs(void); | |
544 | void init_set_status(int); | 545 | void init_set_status(int); | |
545 | void customise_sets(void); | 546 | void customise_sets(void); | |
546 | void umount_mnt2(void); | 547 | void umount_mnt2(void); | |
547 | int set_is_source(const char *); | 548 | int set_is_source(const char *); | |
548 | const char *set_dir_for_set(const char *); | 549 | const char *set_dir_for_set(const char *); | |
549 | const char *ext_dir_for_set(const char *); | 550 | const char *ext_dir_for_set(const char *); | |
550 | void replace(const char *, const char *, ...); | 551 | void replace(const char *, const char *, ...); | |
551 | void get_tz_default(void); | 552 | void get_tz_default(void); | |
552 | int extract_file(distinfo *, int); | 553 | int extract_file(distinfo *, int); | |
553 | void do_coloring (unsigned int, unsigned int); | 554 | void do_coloring (unsigned int, unsigned int); | |
554 | int set_menu_select(menudesc *, void *); | 555 | int set_menu_select(menudesc *, void *); | |
555 | const char *safectime(time_t *); | 556 | const 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) | |
559 | void backtowin(void); | 560 | void backtowin(void); | |
560 | #endif | 561 | #endif | |
561 | const char *concat_paths(const char *, const char *); | 562 | const char *concat_paths(const char *, const char *); | |
562 | const char *target_expand(const char *); | 563 | const char *target_expand(const char *); | |
563 | void make_target_dir(const char *); | 564 | void make_target_dir(const char *); | |
564 | void append_to_target_file(const char *, const char *); | 565 | void append_to_target_file(const char *, const char *); | |
565 | void echo_to_target_file(const char *, const char *); | 566 | void echo_to_target_file(const char *, const char *); | |
566 | void sprintf_to_target_file(const char *, const char *, ...) | 567 | void sprintf_to_target_file(const char *, const char *, ...) | |
567 | __printflike(2, 3); | 568 | __printflike(2, 3); | |
568 | void trunc_target_file(const char *); | 569 | void trunc_target_file(const char *); | |
569 | const char *target_prefix(void); | 570 | const char *target_prefix(void); | |
570 | int target_chdir(const char *); | 571 | int target_chdir(const char *); | |
571 | void target_chdir_or_die(const char *); | 572 | void target_chdir_or_die(const char *); | |
572 | int target_already_root(void); | 573 | int target_already_root(void); | |
573 | FILE *target_fopen(const char *, const char *); | 574 | FILE *target_fopen(const char *, const char *); | |
574 | int target_collect_file(int, char **, const char *); | 575 | int target_collect_file(int, char **, const char *); | |
575 | int is_active_rootpart(const char *, int); | 576 | int is_active_rootpart(const char *, int); | |
576 | int cp_to_target(const char *, const char *); | 577 | int cp_to_target(const char *, const char *); | |
577 | void dup_file_into_target(const char *); | 578 | void dup_file_into_target(const char *); | |
578 | void mv_within_target_or_die(const char *, const char *); | 579 | void mv_within_target_or_die(const char *, const char *); | |
579 | int cp_within_target(const char *, const char *, int); | 580 | int cp_within_target(const char *, const char *, int); | |
580 | int target_mount(const char *, const char *, int, const char *); | 581 | int target_mount(const char *, const char *, int, const char *); | |
581 | int target_mount_do(const char *, const char *, const char *); | 582 | int target_mount_do(const char *, const char *, const char *); | |
582 | int target_test(unsigned int, const char *); | 583 | int target_test(unsigned int, const char *); | |
583 | int target_dir_exists_p(const char *); | 584 | int target_dir_exists_p(const char *); | |
584 | int target_file_exists_p(const char *); | 585 | int target_file_exists_p(const char *); | |
585 | int target_symlink_exists_p(const char *); | 586 | int target_symlink_exists_p(const char *); | |
586 | void unwind_mounts(void); | 587 | void unwind_mounts(void); | |
587 | int target_mounted(void); | 588 | int target_mounted(void); | |
588 | 589 | |||
589 | /* from partman.c */ | 590 | /* from partman.c */ | |
590 | int partman(void); | 591 | int partman(void); | |
591 | int pm_partusage(pm_devs_t *, int, int); | 592 | int pm_partusage(pm_devs_t *, int, int); | |
592 | int pm_getrefdev(pm_devs_t *); | 593 | int pm_getrefdev(pm_devs_t *); | |
593 | void pm_setfstype(pm_devs_t *, int, int); | 594 | void pm_setfstype(pm_devs_t *, int, int); | |
594 | int pm_editpart(int); | 595 | int pm_editpart(int); | |
595 | void pm_rename(pm_devs_t *); | 596 | void pm_rename(pm_devs_t *); | |
596 | int pm_shred(pm_devs_t *, int, int); | 597 | int pm_shred(pm_devs_t *, int, int); | |
597 | void pm_umount(pm_devs_t *, int); | 598 | void pm_umount(pm_devs_t *, int); | |
598 | int pm_unconfigure(pm_devs_t *); | 599 | int pm_unconfigure(pm_devs_t *); | |
599 | int pm_cgd_edit(void *, part_entry_t *); | 600 | int pm_cgd_edit(void *, part_entry_t *); | |
600 | int pm_gpt_convert(pm_devs_t *); | 601 | int pm_gpt_convert(pm_devs_t *); | |
601 | void pm_wedges_fill(pm_devs_t *); | 602 | void pm_wedges_fill(pm_devs_t *); | |
602 | void pm_make_bsd_partitions(pm_devs_t *); | 603 | void pm_make_bsd_partitions(pm_devs_t *); | |
603 | void update_wedges(const char *); | 604 | void 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 */ | |
607 | int have_raid, have_vnd, have_cgd, have_lvm, have_gpt, have_dk; | 608 | int have_raid, have_vnd, have_cgd, have_lvm, have_gpt, have_dk; | |
608 | /* initialize above variables */ | 609 | /* initialize above variables */ | |
609 | void check_available_binaries(void); | 610 | void check_available_binaries(void); | |
610 | 611 | |||
611 | /* from bsddisklabel.c */ | 612 | /* from bsddisklabel.c */ | |
612 | int make_bsd_partitions(void); | 613 | int make_bsd_partitions(void); | |
613 | int save_ptn(int, daddr_t, daddr_t, int, const char *); | 614 | int save_ptn(int, daddr_t, daddr_t, int, const char *); | |
614 | void set_ptn_titles(menudesc *, int, void *); | 615 | void set_ptn_titles(menudesc *, int, void *); | |
615 | void set_ptn_menu(struct ptn_info *); | 616 | void set_ptn_menu(struct ptn_info *); | |
616 | int set_ptn_size(menudesc *, void *); | 617 | int set_ptn_size(menudesc *, void *); | |
617 | void get_ptn_sizes(daddr_t, daddr_t, int); | 618 | void get_ptn_sizes(daddr_t, daddr_t, int); | |
618 | int check_partitions(void); | 619 | int check_partitions(void); | |
619 | 620 | |||
620 | /* from aout2elf.c */ | 621 | /* from aout2elf.c */ | |
621 | int move_aout_libs(void); | 622 | int move_aout_libs(void); | |
622 | 623 | |||
623 | #ifdef WSKBD | 624 | #ifdef WSKBD | |
624 | void get_kb_encoding(void); | 625 | void get_kb_encoding(void); | |
625 | void save_kb_encoding(void); | 626 | void 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 */ | |
632 | void do_configmenu(void); | 633 | void do_configmenu(void); | |
633 | 634 | |||
634 | /* from checkrc.c */ | 635 | /* from checkrc.c */ | |
635 | int check_rcvar(const char *); | 636 | int check_rcvar(const char *); | |
636 | int check_rcdefault(const char *); | 637 | int check_rcdefault(const char *); | |
637 | WINDOW *mainwin; | 638 | WINDOW *mainwin; | |
638 | 639 | |||
639 | #endif /* _DEFS_H_ */ | 640 | #endif /* _DEFS_H_ */ |
--- 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 | |||
37 | message usage | 37 | message 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 | |||
41 | message sysinst_message_language | 41 | message sysinst_message_language | |
42 | {Installation messages in English} | 42 | {Installation messages in English} | |
43 | 43 | |||
44 | message sysinst_message_locale | 44 | message sysinst_message_locale | |
45 | {en_US.ISO8859-1} | 45 | {en_US.ISO8859-1} | |
46 | 46 | |||
47 | message Yes {Yes} | 47 | message Yes {Yes} | |
48 | message No {No} | 48 | message No {No} | |
49 | message All {All} | 49 | message All {All} | |
50 | message Some {Some} | 50 | message Some {Some} | |
51 | message None {None} | 51 | message None {None} | |
52 | message none {none} | 52 | message none {none} | |
53 | message OK {OK} | 53 | message OK {OK} | |
54 | message ok {ok} | 54 | message ok {ok} | |
55 | message On {On} | 55 | message On {On} | |
56 | message Off {Off} | 56 | message Off {Off} | |
57 | message unchanged {unchanged} | 57 | message unchanged {unchanged} | |
58 | message Delete {Delete?} | 58 | message Delete {Delete?} | |
59 | 59 | |||
60 | message install | 60 | message install | |
61 | {install} | 61 | {install} | |
62 | 62 | |||
63 | message reinstall | 63 | message reinstall | |
64 | {reinstall sets for} | 64 | {reinstall sets for} | |
65 | 65 | |||
66 | message upgrade | 66 | message upgrade | |
67 | {upgrade} | 67 | {upgrade} | |
68 | 68 | |||
69 | message hello | 69 | message hello | |
70 | {NetBSD/@@MACHINE@@ @@VERSION@@ | 70 | {NetBSD/@@MACHINE@@ @@VERSION@@ | |
71 | 71 | |||
72 | This menu-driven tool is designed to help you install NetBSD to a hard | 72 | This menu-driven tool is designed to help you install NetBSD to a hard | |
73 | disk, or upgrade an existing NetBSD system, with a minimum of work. | 73 | disk, or upgrade an existing NetBSD system, with a minimum of work. | |
74 | In the following menus type the reference letter (a, b, c, ...) to | 74 | In the following menus type the reference letter (a, b, c, ...) to | |
75 | select an item, or type CTRL+N/CTRL+P to select the next/previous item. | 75 | select an item, or type CTRL+N/CTRL+P to select the next/previous item. | |
76 | The arrow keys and Page-up/Page-down may also work. | 76 | The arrow keys and Page-up/Page-down may also work. | |
77 | Activate the current selection from the menu by typing the enter key. | 77 | Activate the current selection from the menu by typing the enter key. | |
78 | } | 78 | } | |
79 | 79 | |||
80 | message thanks | 80 | message thanks | |
81 | {Thank you for using NetBSD! | 81 | {Thank you for using NetBSD! | |
82 | } | 82 | } | |
83 | 83 | |||
84 | message installusure | 84 | message 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 | |
86 | information on your hard disk. You should have made a full backup | 86 | information on your hard disk. You should have made a full backup | |
87 | before this procedure! This procedure will do the following things: | 87 | before 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 | |
94 | changed, you will have the opportunity to quit this procedure.) | 94 | changed, you will have the opportunity to quit this procedure.) | |
95 | 95 | |||
96 | Shall we continue? | 96 | Shall we continue? | |
97 | } | 97 | } | |
98 | 98 | |||
99 | message upgradeusure | 99 | message 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 | |
101 | change information on your hard disk. You should have made a full backup | 101 | change information on your hard disk. You should have made a full backup | |
102 | before this procedure! Do you really want to upgrade NetBSD? | 102 | before 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 | |
104 | disks.) | 104 | disks.) | |
105 | } | 105 | } | |
106 | 106 | |||
107 | message reinstallusure | 107 | message 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. | |
109 | This procedure just fetches and unpacks sets onto a pre-partitioned | 109 | This procedure just fetches and unpacks sets onto a pre-partitioned | |
110 | bootable disk. It does not label disks, upgrade bootblocks, or save | 110 | bootable disk. It does not label disks, upgrade bootblocks, or save | |
111 | any existing configuration info. (Quit and choose `install' or | 111 | any 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 | |||
115 | Do you really want to reinstall NetBSD distribution sets? | 115 | Do 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 | |
117 | disks.) | 117 | disks.) | |
118 | } | 118 | } | |
119 | 119 | |||
120 | message mount_failed | 120 | message mount_failed | |
121 | {Mounting %s failed. Continue? | 121 | {Mounting %s failed. Continue? | |
122 | } | 122 | } | |
123 | 123 | |||
124 | message nodisk | 124 | message 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 | |
126 | returned to the original menu. | 126 | returned to the original menu. | |
127 | } | 127 | } | |
128 | 128 | |||
129 | message onedisk | 129 | message onedisk | |
130 | {I found only one disk, %s. | 130 | {I found only one disk, %s. | |
131 | Therefore I assume you want to %s NetBSD on it. | 131 | Therefore I assume you want to %s NetBSD on it. | |
132 | } | 132 | } | |
133 | 133 | |||
134 | message ask_disk | 134 | message ask_disk | |
135 | {On which disk do you want to %s NetBSD? } | 135 | {On which disk do you want to %s NetBSD? } | |
136 | 136 | |||
137 | message Available_disks | 137 | message Available_disks | |
138 | {Available disks} | 138 | {Available disks} | |
139 | 139 | |||
140 | message heads | 140 | message heads | |
141 | {heads} | 141 | {heads} | |
142 | 142 | |||
143 | message sectors | 143 | message sectors | |
144 | {sectors} | 144 | {sectors} | |
145 | 145 | |||
146 | message fs_isize | 146 | message fs_isize | |
147 | {average file size (bytes)} | 147 | {average file size (bytes)} | |
148 | 148 | |||
149 | message mountpoint | 149 | message mountpoint | |
150 | {mount point (or 'none')} | 150 | {mount point (or 'none')} | |
151 | 151 | |||
152 | message cylname | 152 | message cylname | |
153 | {cyl} | 153 | {cyl} | |
154 | 154 | |||
155 | message secname | 155 | message secname | |
156 | {sec} | 156 | {sec} | |
157 | 157 | |||
158 | message megname | 158 | message megname | |
159 | {MB} | 159 | {MB} | |
160 | 160 | |||
161 | message layout | 161 | message 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 | |
163 | into multiple BSD partitions. You must now set up your BSD disklabel. | 163 | into multiple BSD partitions. You must now set up your BSD disklabel. | |
164 | 164 | |||
165 | You can use a simple editor to set the sizes of the NetBSD partitions, | 165 | You can use a simple editor to set the sizes of the NetBSD partitions, | |
166 | or keep the existing partition sizes and contents. | 166 | or keep the existing partition sizes and contents. | |
167 | 167 | |||
168 | You will then be given the opportunity to change any of the disklabel | 168 | You will then be given the opportunity to change any of the disklabel | |
169 | fields. | 169 | fields. | |
170 | 170 | |||
171 | The NetBSD part of your disk is %d Megabytes. | 171 | The NetBSD part of your disk is %d Megabytes. | |
172 | A full installation requires at least %d Megabytes without X and | 172 | A full installation requires at least %d Megabytes without X and | |
173 | at least %d Megabytes if the X sets are included. | 173 | at least %d Megabytes if the X sets are included. | |
174 | } | 174 | } | |
175 | 175 | |||
176 | message Choose_your_size_specifier | 176 | message 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, | |
178 | but aligned to cylinder boundaries. Choosing sectors will allow you | 178 | but aligned to cylinder boundaries. Choosing sectors will allow you | |
179 | to more accurately specify the sizes. On most disks, there is little | 179 | to more accurately specify the sizes. On most disks, there is little | |
180 | to gain from cylinder alignment. On very old disks, it is most efficient | 180 | to gain from cylinder alignment. On very old disks, it is most efficient | |
181 | to choose partition sizes that are exact multiples of your actual | 181 | to choose partition sizes that are exact multiples of your actual | |
182 | cylinder size. | 182 | cylinder size. | |
183 | 183 | |||
184 | Choose your size specifier} | 184 | Choose your size specifier} | |
185 | 185 | |||
186 | message ptnsizes | 186 | message 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 | |
188 | to allocate all the space to the root file system. However, you may wish | 188 | to allocate all the space to the root file system. However, you may wish | |
189 | to have separate /usr (additional system files), /var (log files etc) | 189 | to have separate /usr (additional system files), /var (log files etc) | |
190 | or /home (users' home directories) file systems. | 190 | or /home (users' home directories) file systems. | |
191 | 191 | |||
192 | Free space will be added to the partition marked with a '+'. | 192 | Free space will be added to the partition marked with a '+'. | |
193 | } | 193 | } | |
194 | 194 | |||
195 | message ptnheaders | 195 | message ptnheaders | |
196 | { | 196 | { | |
197 | MB Cylinders Sectors Filesystem | 197 | MB Cylinders Sectors Filesystem | |
198 | } | 198 | } | |
199 | 199 | |||
200 | message askfsmount | 200 | message askfsmount | |
201 | {Mount point?} | 201 | {Mount point?} | |
202 | 202 | |||
203 | message askfssize | 203 | message askfssize | |
204 | {Size for %s in %s?} | 204 | {Size for %s in %s?} | |
205 | 205 | |||
206 | message askunits | 206 | message askunits | |
207 | {Change input units (sectors/cylinders/MB)} | 207 | {Change input units (sectors/cylinders/MB)} | |
208 | 208 | |||
209 | message NetBSD_partition_cant_change | 209 | message NetBSD_partition_cant_change | |
210 | {NetBSD partition} | 210 | {NetBSD partition} | |
211 | 211 | |||
212 | message Whole_disk_cant_change | 212 | message Whole_disk_cant_change | |
213 | {Whole disk} | 213 | {Whole disk} | |
214 | 214 | |||
215 | message Boot_partition_cant_change | 215 | message Boot_partition_cant_change | |
216 | {Boot partition} | 216 | {Boot partition} | |
217 | 217 | |||
218 | message add_another_ptn | 218 | message add_another_ptn | |
219 | {Add a user defined partition} | 219 | {Add a user defined partition} | |
220 | 220 | |||
221 | message fssizesok | 221 | message 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 | |||
224 | message fssizesbad | 224 | message fssizesbad | |
225 | {Reduce partition sizes by %d %s (%u sectors).} | 225 | {Reduce partition sizes by %d %s (%u sectors).} | |
226 | 226 | |||
227 | message startoutsidedisk | 227 | message 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 | |||
231 | message endoutsidedisk | 231 | message 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. | |
233 | Your partition size has been truncated to %d %s. | 233 | Your partition size has been truncated to %d %s. | |
234 | 234 | |||
235 | Type enter to continue | 235 | Type enter to continue | |
236 | } | 236 | } | |
237 | 237 | |||
238 | message toobigdisklabel | 238 | message toobigdisklabel | |
239 | { | 239 | { | |
240 | This disk is too large for a disklabel partition table to be used | 240 | This disk is too large for a disklabel partition table to be used | |
241 | and hence cannot be used as a bootable disk or to hold the root | 241 | and hence cannot be used as a bootable disk or to hold the root | |
242 | partition. | 242 | partition. | |
243 | } | 243 | } | |
244 | 244 | |||
245 | message fspart | 245 | message fspart | |
246 | {We now have your BSD disklabel partitions as: | 246 | {We now have your BSD disklabel partitions as: | |
247 | This is your last chance to change them. | 247 | This is your last chance to change them. | |
248 | 248 | |||
249 | } | 249 | } | |
250 | 250 | |||
251 | message fspart_header | 251 | message 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 | |||
256 | message fspart_row | 256 | message fspart_row | |
257 | {%9lu %9lu %9lu %-10s %-5s %-5s %s} | 257 | {%9lu %9lu %9lu %-10s %-5s %-5s %s} | |
258 | 258 | |||
259 | message show_all_unused_partitions | 259 | message show_all_unused_partitions | |
260 | {Show all unused partitions} | 260 | {Show all unused partitions} | |
261 | 261 | |||
262 | message partition_sizes_ok | 262 | message partition_sizes_ok | |
263 | {Partition sizes ok} | 263 | {Partition sizes ok} | |
264 | 264 | |||
265 | message edfspart | 265 | message edfspart | |
266 | {The current values for partition `%c' are, | 266 | {The current values for partition `%c' are, | |
267 | Select the field you wish to change: | 267 | Select the field you wish to change: | |
268 | 268 | |||
269 | MB cylinders sectors | 269 | MB cylinders sectors | |
270 | ------- --------- --------- | 270 | ------- --------- --------- | |
271 | } | 271 | } | |
272 | 272 | |||
273 | message fstype_fmt | 273 | message fstype_fmt | |
274 | { FStype: %9s} | 274 | { FStype: %9s} | |
275 | 275 | |||
276 | message start_fmt | 276 | message start_fmt | |
277 | { start: %9u %8u%c %9u} | 277 | { start: %9u %8u%c %9u} | |
278 | 278 | |||
279 | message size_fmt | 279 | message size_fmt | |
280 | { size: %9u %8u%c %9u} | 280 | { size: %9u %8u%c %9u} | |
281 | 281 | |||
282 | message end_fmt | 282 | message end_fmt | |
283 | { end: %9u %8u%c %9u} | 283 | { end: %9u %8u%c %9u} | |
284 | 284 | |||
285 | message bsize_fmt | 285 | message bsize_fmt | |
286 | { block size: %9d bytes} | 286 | { block size: %9d bytes} | |
287 | 287 | |||
288 | message fsize_fmt | 288 | message fsize_fmt | |
289 | { fragment size: %9d bytes} | 289 | { fragment size: %9d bytes} | |
290 | 290 | |||
291 | message isize_fmt | 291 | message isize_fmt | |
292 | { avg file size: %9d bytes (for number of inodes)} | 292 | { avg file size: %9d bytes (for number of inodes)} | |
293 | message isize_fmt_dflt | 293 | message isize_fmt_dflt | |
294 | { avg file size: 4 fragments} | 294 | { avg file size: 4 fragments} | |
295 | 295 | |||
296 | message newfs_fmt | 296 | message newfs_fmt | |
297 | { newfs: %9s} | 297 | { newfs: %9s} | |
298 | 298 | |||
299 | message mount_fmt | 299 | message mount_fmt | |
300 | { mount: %9s} | 300 | { mount: %9s} | |
301 | 301 | |||
302 | message mount_options_fmt | 302 | message mount_options_fmt | |
303 | { mount options: } | 303 | { mount options: } | |
304 | 304 | |||
305 | message mountpt_fmt | 305 | message mountpt_fmt | |
306 | { mount point: %9s} | 306 | { mount point: %9s} | |
307 | 307 | |||
308 | message toggle | 308 | message toggle | |
309 | {Toggle} | 309 | {Toggle} | |
310 | 310 | |||
311 | message restore | 311 | message restore | |
312 | {Restore original values} | 312 | {Restore original values} | |
313 | 313 | |||
314 | message Select_the_type | 314 | message Select_the_type | |
315 | {Select the type} | 315 | {Select the type} | |
316 | 316 | |||
317 | message other_types | 317 | message other_types | |
318 | {other types} | 318 | {other types} | |
319 | 319 | |||
320 | message label_size | 320 | message label_size | |
321 | {%s | 321 | {%s | |
322 | Special values that can be entered for the size value: | 322 | Special 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 | |||
326 | size (%s)} | 326 | size (%s)} | |
327 | 327 | |||
328 | message label_offset | 328 | message label_offset | |
329 | {%s | 329 | {%s | |
330 | Special values that can be entered for the offset value: | 330 | Special 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 | |||
334 | start (%s)} | 334 | start (%s)} | |
335 | 335 | |||
336 | message invalid_sector_number | 336 | message invalid_sector_number | |
337 | {Badly formed sector number | 337 | {Badly formed sector number | |
338 | } | 338 | } | |
339 | 339 | |||
340 | message Select_file_system_block_size | 340 | message Select_file_system_block_size | |
341 | {Select file system block size} | 341 | {Select file system block size} | |
342 | 342 | |||
343 | message Select_file_system_fragment_size | 343 | message Select_file_system_fragment_size | |
344 | {Select file system fragment size} | 344 | {Select file system fragment size} | |
345 | 345 | |||
346 | message packname | 346 | message packname | |
347 | {Please enter a name for your NetBSD disk} | 347 | {Please enter a name for your NetBSD disk} | |
348 | 348 | |||
349 | message lastchance | 349 | message 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 | |
351 | written yet. This is your last chance to quit this process before anything | 351 | written yet. This is your last chance to quit this process before anything | |
352 | gets changed. | 352 | gets changed. | |
353 | 353 | |||
354 | Shall we continue? | 354 | Shall we continue? | |
355 | } | 355 | } | |
356 | 356 | |||
357 | message disksetupdone | 357 | message 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 | |
359 | written a disklabel to the target disk, and newfs'ed and fsck'ed | 359 | written a disklabel to the target disk, and newfs'ed and fsck'ed | |
360 | the new partitions you specified for the target disk. | 360 | the new partitions you specified for the target disk. | |
361 | } | 361 | } | |
362 | 362 | |||
363 | message disksetupdoneupdate | 363 | message 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 | |
365 | written a disklabel to the target disk, and fsck'ed the new | 365 | written a disklabel to the target disk, and fsck'ed the new | |
366 | partitions you specified for the target disk. | 366 | partitions you specified for the target disk. | |
367 | } | 367 | } | |
368 | 368 | |||
369 | message openfail | 369 | message openfail | |
370 | {Could not open %s, error message was: %s. | 370 | {Could not open %s, error message was: %s. | |
371 | } | 371 | } | |
372 | 372 | |||
373 | message mountfail | 373 | message 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 | |||
377 | message extractcomplete | 377 | message 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. | |
379 | The system is now able to boot from the selected hard disk. To complete | 379 | The system is now able to boot from the selected hard disk. To complete | |
380 | the installation, sysinst will give you the opportunity to configure | 380 | the installation, sysinst will give you the opportunity to configure | |
381 | some essential things first. | 381 | some essential things first. | |
382 | } | 382 | } | |
383 | 383 | |||
384 | message instcomplete | 384 | message instcomplete | |
385 | {The installation of NetBSD-@@VERSION@@ is now complete. The system | 385 | {The installation of NetBSD-@@VERSION@@ is now complete. The system | |
386 | should boot from hard disk. Follow the instructions in the INSTALL | 386 | should boot from hard disk. Follow the instructions in the INSTALL | |
387 | document about final configuration of your system. We also recommend | 387 | document about final configuration of your system. We also recommend | |
388 | reading the afterboot(8) manpage; it contains a list of things to be | 388 | reading the afterboot(8) manpage; it contains a list of things to be | |
389 | checked after the first complete boot. | 389 | checked after the first complete boot. | |
390 | 390 | |||
391 | At a minimum, you should edit /etc/rc.conf to match your needs. See | 391 | At 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 | |||
395 | message upgrcomplete | 395 | message upgrcomplete | |
396 | {The upgrade to NetBSD-@@VERSION@@ is now complete. You will | 396 | {The upgrade to NetBSD-@@VERSION@@ is now complete. You will | |
397 | now need to follow the instructions in the INSTALL document as to | 397 | now need to follow the instructions in the INSTALL document as to | |
398 | what you need to do to get your system reconfigured for your situation. | 398 | what you need to do to get your system reconfigured for your situation. | |
399 | Remember to (re)read the afterboot(8) manpage as it may contain new | 399 | Remember to (re)read the afterboot(8) manpage as it may contain new | |
400 | items since your last upgrade. | 400 | items since your last upgrade. | |
401 | } | 401 | } | |
402 | 402 | |||
403 | 403 | |||
404 | message unpackcomplete | 404 | message unpackcomplete | |
405 | {Unpacking additional release sets of NetBSD-@@VERSION@@ is now complete. | 405 | {Unpacking additional release sets of NetBSD-@@VERSION@@ is now complete. | |
406 | You will now need to follow the instructions in the INSTALL document | 406 | You will now need to follow the instructions in the INSTALL document | |
407 | to get your system reconfigured for your situation. | 407 | to get your system reconfigured for your situation. | |
408 | The afterboot(8) manpage can also be of some help. | 408 | The afterboot(8) manpage can also be of some help. | |
409 | 409 | |||
410 | If you unpacked the etc set, you will need to edit /etc/rc.conf to get a | 410 | If you unpacked the etc set, you will need to edit /etc/rc.conf to get a | |
411 | multi-user system. At a minimum, you will need to change rc_configured=NO | 411 | multi-user system. At a minimum, you will need to change rc_configured=NO | |
412 | to rc_configured=YES. | 412 | to rc_configured=YES. | |
413 | } | 413 | } | |
414 | 414 | |||
415 | message distmedium | 415 | message 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 | |
417 | sets. As noted in your INSTALL notes, you have several options. For | 417 | sets. As noted in your INSTALL notes, you have several options. For | |
418 | ftp or nfs, you must be connected to a network with access to the proper | 418 | ftp or nfs, you must be connected to a network with access to the proper | |
419 | machines. | 419 | machines. | |
420 | 420 | |||
421 | Sets selected %d, processed %d, Next set %s. | 421 | Sets selected %d, processed %d, Next set %s. | |
422 | 422 | |||
423 | } | 423 | } | |
424 | 424 | |||
425 | message distset | 425 | message distset | |
426 | {The NetBSD distribution is broken into a collection of distribution | 426 | {The NetBSD distribution is broken into a collection of distribution | |
427 | sets. There are some basic sets that are needed by all installations | 427 | sets. There are some basic sets that are needed by all installations | |
428 | and there are some other sets that are optional. You may choose to install | 428 | and there are some other sets that are optional. You may choose to install | |
429 | a core set (Minimal installation), all of them (Full installation), or a custom | 429 | a core set (Minimal installation), all of them (Full installation), or a custom | |
430 | group of sets (Custom installation). | 430 | group of sets (Custom installation). | |
431 | } | 431 | } | |
432 | 432 | |||
433 | message ftpsource | 433 | message 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 | |
435 | will be used. If "user" is "ftp", then the password is not needed. | 435 | will be used. If "user" is "ftp", then the password is not needed. | |
436 | 436 | |||
437 | } | 437 | } | |
438 | 438 | |||
439 | message email | 439 | message email | |
440 | {e-mail address} | 440 | {e-mail address} | |
441 | 441 | |||
442 | message dev | 442 | message dev | |
443 | {device} | 443 | {device} | |
444 | 444 | |||
445 | message nfssource | 445 | message 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. | |
447 | Remember, the directory should contain the .tgz files and | 447 | Remember, the directory should contain the .tgz files and | |
448 | must be nfs mountable. | 448 | must be nfs mountable. | |
449 | 449 | |||
450 | } | 450 | } | |
451 | 451 | |||
452 | message floppysource | 452 | message 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 | |
454 | file system. The set files must be in the root directory of the floppies. | 454 | file system. The set files must be in the root directory of the floppies. | |
455 | 455 | |||
456 | } | 456 | } | |
457 | 457 | |||
458 | message cdromsource | 458 | message 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 | |
460 | the distribution is located. | 460 | the distribution is located. | |
461 | Remember, the directory should contain the .tgz files. | 461 | Remember, the directory should contain the .tgz files. | |
462 | 462 | |||
463 | } | 463 | } | |
464 | 464 | |||
465 | message Available_cds | 465 | message Available_cds | |
466 | {Available CDs } | 466 | {Available CDs } | |
467 | 467 | |||
468 | message ask_cd | 468 | message 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 | |||
471 | message cd_path_not_found | 471 | message 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 | |
473 | CD. Please check the device and path name.} | 473 | CD. Please check the device and path name.} | |
474 | 474 | |||
475 | message localfssource | 475 | message 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 | |
477 | the distribution is located. | 477 | the distribution is located. | |
478 | Remember, the directory should contain the .tgz files. | 478 | Remember, the directory should contain the .tgz files. | |
479 | 479 | |||
480 | } | 480 | } | |
481 | 481 | |||
482 | message localdir | 482 | message 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. | |
484 | Remember, the directory should contain the .tgz files. | 484 | Remember, the directory should contain the .tgz files. | |
485 | 485 | |||
486 | } | 486 | } | |
487 | 487 | |||
488 | message filesys | 488 | message filesys | |
489 | {file system} | 489 | {file system} | |
490 | 490 | |||
491 | message nonet | 491 | message 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 | |
493 | returned to the previous menu. | 493 | returned to the previous menu. | |
494 | } | 494 | } | |
495 | 495 | |||
496 | message netup | 496 | message netup | |
497 | {The following network interfaces are active: %s | 497 | {The following network interfaces are active: %s | |
498 | Does one of them connect to the required server?} | 498 | Does one of them connect to the required server?} | |
499 | 499 | |||
500 | message asknetdev | 500 | message asknetdev | |
501 | {Which network device would you like to use?} | 501 | {Which network device would you like to use?} | |
502 | 502 | |||
503 | message netdevs | 503 | message netdevs | |
504 | {Available interfaces} | 504 | {Available interfaces} | |
505 | 505 | |||
506 | message netinfo | 506 | message 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 | |||
511 | message net_domain | 511 | message net_domain | |
512 | {Your DNS domain} | 512 | {Your DNS domain} | |
513 | 513 | |||
514 | message net_host | 514 | message net_host | |
515 | {Your host name} | 515 | {Your host name} | |
516 | 516 | |||
517 | message net_ip | 517 | message net_ip | |
518 | {Your IPv4 address} | 518 | {Your IPv4 address} | |
519 | 519 | |||
520 | message net_srv_ip | 520 | message net_srv_ip | |
521 | {Server IPv4 address} | 521 | {Server IPv4 address} | |
522 | 522 | |||
523 | message net_mask | 523 | message net_mask | |
524 | {IPv4 Netmask} | 524 | {IPv4 Netmask} | |
525 | 525 | |||
526 | message net_namesrv | 526 | message net_namesrv | |
527 | {Your name server} | 527 | {Your name server} | |
528 | 528 | |||
529 | message net_defroute | 529 | message net_defroute | |
530 | {IPv4 gateway} | 530 | {IPv4 gateway} | |
531 | 531 | |||
532 | message net_media | 532 | message net_media | |
533 | {Network media type} | 533 | {Network media type} | |
534 | 534 | |||
535 | message netok | 535 | message netok | |
536 | {The following are the values you entered. | 536 | {The following are the values you entered. | |
537 | 537 | |||
538 | DNS Domain: %s | 538 | DNS Domain: %s | |
539 | Host Name: %s | 539 | Host Name: %s | |
540 | Nameserver: %s | 540 | Nameserver: %s | |
541 | Primary Interface: %s | 541 | Primary Interface: %s | |
542 | Media type: %s | 542 | Media type: %s | |
543 | Host IP: %s | 543 | Host IP: %s | |
544 | Netmask: %s | 544 | Netmask: %s | |
545 | IPv4 Gateway: %s | 545 | IPv4 Gateway: %s | |
546 | } | 546 | } | |
547 | 547 | |||
548 | message netok_slip | 548 | message 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 | |||
551 | DNS Domain: %s | 551 | DNS Domain: %s | |
552 | Host Name: %s | 552 | Host Name: %s | |
553 | Nameserver: %s | 553 | Nameserver: %s | |
554 | Primary Interface: %s | 554 | Primary Interface: %s | |
555 | Media type: %s | 555 | Media type: %s | |
556 | Host IP: %s | 556 | Host IP: %s | |
557 | Server IP: %s | 557 | Server IP: %s | |
558 | Netmask: %s | 558 | Netmask: %s | |
559 | IPv4 Gateway: %s | 559 | IPv4 Gateway: %s | |
560 | } | 560 | } | |
561 | 561 | |||
562 | message netokv6 | 562 | message netokv6 | |
563 | {IPv6 autoconf: %s | 563 | {IPv6 autoconf: %s | |
564 | } | 564 | } | |
565 | 565 | |||
566 | message netok_ok | 566 | message netok_ok | |
567 | {Are they OK?} | 567 | {Are they OK?} | |
568 | 568 | |||
569 | message wait_network | 569 | message wait_network | |
570 | { | 570 | { | |
571 | Waiting while network interface comes up. | 571 | Waiting while network interface comes up. | |
572 | } | 572 | } | |
573 | 573 | |||
574 | message resolv | 574 | message resolv | |
575 | {Could not create /etc/resolv.conf. Install aborted. | 575 | {Could not create /etc/resolv.conf. Install aborted. | |
576 | } | 576 | } | |
577 | 577 | |||
578 | message realdir | 578 | message 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 | |||
582 | message delete_xfer_file | 582 | message delete_xfer_file | |
583 | {Delete after install} | 583 | {Delete after install} | |
584 | 584 | |||
585 | message notarfile | 585 | message notarfile | |
586 | {Release set %s does not exist.} | 586 | {Release set %s does not exist.} | |
587 | 587 | |||
588 | message endtarok | 588 | message endtarok | |
589 | {All selected distribution sets unpacked successfully.} | 589 | {All selected distribution sets unpacked successfully.} | |
590 | 590 | |||
591 | message endtar | 591 | message endtar | |
592 | {There were problems unpacking distribution sets. | 592 | {There were problems unpacking distribution sets. | |
593 | Your installation is incomplete. | 593 | Your installation is incomplete. | |
594 | 594 | |||
595 | You selected %d distribution sets. %d sets couldn't be found | 595 | You selected %d distribution sets. %d sets couldn't be found | |
596 | and %d were skipped after an error occurred. Of the %d | 596 | and %d were skipped after an error occurred. Of the %d | |
597 | that were attempted, %d unpacked without errors and %d with errors. | 597 | that were attempted, %d unpacked without errors and %d with errors. | |
598 | 598 | |||
599 | Aborting installation. Please recheck your distribution source | 599 | Aborting installation. Please recheck your distribution source | |
600 | and consider reinstalling sets from the main menu.} | 600 | and consider reinstalling sets from the main menu.} | |
601 | 601 | |||
602 | message abort | 602 | message 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 | |||
606 | message abortinst | 606 | message 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 | |
608 | by hand. Installation aborted. | 608 | by hand. Installation aborted. | |
609 | } | 609 | } | |
610 | 610 | |||
611 | message abortupgr | 611 | message 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 | |
613 | by hand. Upgrade aborted. | 613 | by hand. Upgrade aborted. | |
614 | } | 614 | } | |
615 | 615 | |||
616 | message abortunpack | 616 | message abortunpack | |
617 | {Unpacking additional sets was not successful. You will need to | 617 | {Unpacking additional sets was not successful. You will need to | |
618 | proceed by hand, or choose a different source for release sets and try | 618 | proceed by hand, or choose a different source for release sets and try | |
619 | again. | 619 | again. | |
620 | } | 620 | } | |
621 | 621 | |||
622 | message createfstab | 622 | message 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 | |||
627 | message noetcfstab | 627 | message 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 | |||
631 | message badetcfstab | 631 | message 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 | |||
635 | message X_oldexists | 635 | message 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 | |
637 | target disk already has an %s/bin/X.old. Please fix this before | 637 | target disk already has an %s/bin/X.old. Please fix this before | |
638 | continuing. | 638 | continuing. | |
639 | 639 | |||
640 | One way is to start a shell from the Utilities menu, examine the | 640 | One way is to start a shell from the Utilities menu, examine the | |
641 | target %s/bin/X and %s/bin/X.old. If | 641 | target %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 | |
644 | a recent, incomplete upgrade, you can rm -f %s/bin/X and mv | 644 | a 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 | |||
647 | Aborting upgrade.} | 647 | Aborting upgrade.} | |
648 | 648 | |||
649 | message netnotup | 649 | message 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 | |
651 | or your nameserver was not reachable by a ping. Do you want to | 651 | or your nameserver was not reachable by a ping. Do you want to | |
652 | configure your network again? ("No" allows you to continue anyway | 652 | configure your network again? ("No" allows you to continue anyway | |
653 | or abort the install process.) | 653 | or abort the install process.) | |
654 | } | 654 | } | |
655 | 655 | |||
656 | message netnotup_continueanyway | 656 | message 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 | |
658 | that the network is working? ("No" aborts the install process.) | 658 | that the network is working? ("No" aborts the install process.) | |
659 | } | 659 | } | |
660 | 660 | |||
661 | message makedev | 661 | message makedev | |
662 | {Making device nodes ... | 662 | {Making device nodes ... | |
663 | } | 663 | } | |
664 | 664 | |||
665 | message badfs | 665 | message 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 | |
667 | not successful. Try mounting it anyway? (Error number %d.) | 667 | not successful. Try mounting it anyway? (Error number %d.) | |
668 | } | 668 | } | |
669 | 669 | |||
670 | message rootmissing | 670 | message rootmissing | |
671 | { target root is missing %s. | 671 | { target root is missing %s. | |
672 | } | 672 | } | |
673 | 673 | |||
674 | message badroot | 674 | message 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. | |
676 | Are you sure you installed all the required sets? | 676 | Are you sure you installed all the required sets? | |
677 | } | 677 | } | |
678 | 678 | |||
679 | message fd_type | 679 | message fd_type | |
680 | {Floppy file system type} | 680 | {Floppy file system type} | |
681 | 681 | |||
682 | message fdnotfound | 682 | message fdnotfound | |
683 | {Could not find the file on the floppy. | 683 | {Could not find the file on the floppy. | |
684 | } | 684 | } | |
685 | 685 | |||
686 | message fdremount | 686 | message fdremount | |
687 | {The floppy was not mounted successfully. | 687 | {The floppy was not mounted successfully. | |
688 | } | 688 | } | |
689 | 689 | |||
690 | message fdmount | 690 | message 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 | |||
693 | If the set has no more disks, select "Set finished" to install the set. | 693 | If the set has no more disks, select "Set finished" to install the set. | |
694 | Select "Abort fetch" to return to the install media selection menu. | 694 | Select "Abort fetch" to return to the install media selection menu. | |
695 | } | 695 | } | |
696 | 696 | |||
697 | message mntnetconfig | 697 | message mntnetconfig | |
698 | {Is the network information you entered accurate for this machine | 698 | {Is the network information you entered accurate for this machine | |
699 | in regular operation and do you want it installed in /etc? } | 699 | in regular operation and do you want it installed in /etc? } | |
700 | 700 | |||
701 | message cur_distsets | 701 | message 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 | |||
706 | message cur_distsets_header | 706 | message cur_distsets_header | |
707 | { Distribution set Selected | 707 | { Distribution set Selected | |
708 | ------------------------ -------- | 708 | ------------------------ -------- | |
709 | } | 709 | } | |
710 | 710 | |||
711 | message set_base | 711 | message set_base | |
712 | {Base} | 712 | {Base} | |
713 | 713 | |||
714 | message set_system | 714 | message set_system | |
715 | {Configuration files (/etc)} | 715 | {Configuration files (/etc)} | |
716 | 716 | |||
717 | message set_compiler | 717 | message set_compiler | |
718 | {Compiler tools} | 718 | {Compiler tools} | |
719 | 719 | |||
720 | message set_games | 720 | message set_games | |
721 | {Games} | 721 | {Games} | |
722 | 722 | |||
723 | message set_man_pages | 723 | message set_man_pages | |
724 | {Manual pages} | 724 | {Manual pages} | |
725 | 725 | |||
726 | message set_misc | 726 | message set_misc | |
727 | {Miscellaneous} | 727 | {Miscellaneous} | |
728 | 728 | |||
729 | message set_modules | 729 | message set_modules | |
730 | {Kernel modules} | 730 | {Kernel modules} | |
731 | 731 | |||
732 | message set_tests | 732 | message set_tests | |
733 | {Test programs} | 733 | {Test programs} | |
734 | 734 | |||
735 | message set_text_tools | 735 | message set_text_tools | |
736 | {Text processing tools} | 736 | {Text processing tools} | |
737 | 737 | |||
738 | message set_X11 | 738 | message set_X11 | |
739 | {X11 sets} | 739 | {X11 sets} | |
740 | 740 | |||
741 | message set_X11_base | 741 | message set_X11_base | |
742 | {X11 base and clients} | 742 | {X11 base and clients} | |
743 | 743 | |||
744 | message set_X11_etc | 744 | message set_X11_etc | |
745 | {X11 configuration} | 745 | {X11 configuration} | |
746 | 746 | |||
747 | message set_X11_fonts | 747 | message set_X11_fonts | |
748 | {X11 fonts} | 748 | {X11 fonts} | |
749 | 749 | |||
750 | message set_X11_servers | 750 | message set_X11_servers | |
751 | {X11 servers} | 751 | {X11 servers} | |
752 | 752 | |||
753 | message set_X11_prog | 753 | message set_X11_prog | |
754 | {X11 programming} | 754 | {X11 programming} | |
755 | 755 | |||
756 | message set_source | 756 | message set_source | |
757 | {Source and debug sets} | 757 | {Source and debug sets} | |
758 | 758 | |||
759 | message set_syssrc | 759 | message set_syssrc | |
760 | {Kernel sources} | 760 | {Kernel sources} | |
761 | 761 | |||
762 | message set_src | 762 | message set_src | |
763 | {Base sources} | 763 | {Base sources} | |
764 | 764 | |||
765 | message set_sharesrc | 765 | message set_sharesrc | |
766 | {Share sources} | 766 | {Share sources} | |
767 | 767 | |||
768 | message set_gnusrc | 768 | message set_gnusrc | |
769 | {GNU sources} | 769 | {GNU sources} | |
770 | 770 | |||
771 | message set_xsrc | 771 | message set_xsrc | |
772 | {X11 sources} | 772 | {X11 sources} | |
773 | 773 | |||
774 | message set_debug | 774 | message set_debug | |
775 | {Debug symbols} | 775 | {Debug symbols} | |
776 | 776 | |||
777 | message set_xdebug | 777 | message set_xdebug | |
778 | {X11 debug symbols} | 778 | {X11 debug symbols} | |
779 | 779 | |||
780 | message cur_distsets_row | 780 | message cur_distsets_row | |
781 | {%-27s %3s} | 781 | {%-27s %3s} | |
782 | 782 | |||
783 | message select_all | 783 | message select_all | |
784 | {Select all the above sets} | 784 | {Select all the above sets} | |
785 | 785 | |||
786 | message select_none | 786 | message select_none | |
787 | {Deselect all the above sets} | 787 | {Deselect all the above sets} | |
788 | 788 | |||
789 | message install_selected_sets | 789 | message install_selected_sets | |
790 | {Install selected sets} | 790 | {Install selected sets} | |
791 | 791 | |||
792 | message tarerror | 792 | message 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 | |
794 | some files were not extracted correctly and your system will not be | 794 | some files were not extracted correctly and your system will not be | |
795 | complete. | 795 | complete. | |
796 | 796 | |||
797 | Continue extracting sets?} | 797 | Continue extracting sets?} | |
798 | 798 | |||
799 | message must_be_one_root | 799 | message 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 | |||
802 | message partitions_overlap | 802 | message partitions_overlap | |
803 | {partitions %c and %c overlap.} | 803 | {partitions %c and %c overlap.} | |
804 | 804 | |||
805 | message No_Bootcode | 805 | message No_Bootcode | |
806 | {No bootcode for specified FS type of root partition} | 806 | {No bootcode for specified FS type of root partition} | |
807 | 807 | |||
808 | message cannot_ufs2_root | 808 | message 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 | |
810 | on this port.} | 810 | on this port.} | |
811 | 811 | |||
812 | message edit_partitions_again | 812 | message edit_partitions_again | |
813 | { | 813 | { | |
814 | 814 | |||
815 | You can either edit the partition table by hand, or give up and return | 815 | You can either edit the partition table by hand, or give up and return | |
816 | to the main menu. | 816 | to the main menu. | |
817 | 817 | |||
818 | Edit the partition table again?} | 818 | Edit the partition table again?} | |
819 | 819 | |||
820 | message config_open_error | 820 | message config_open_error | |
821 | {Could not open config file %s\n} | 821 | {Could not open config file %s\n} | |
822 | 822 | |||
823 | message choose_timezone | 823 | message 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. | |
825 | Press RETURN to select an entry. | 825 | Press RETURN to select an entry. | |
826 | Press 'x' followed by RETURN to quit the timezone selection. | 826 | Press '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 | |||
833 | message tz_back | 833 | message tz_back | |
834 | { Back to main timezone list} | 834 | { Back to main timezone list} | |
835 | 835 | |||
836 | message swapactive | 836 | message 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 | |
838 | in use if your system is low on memory. Because you are going to | 838 | in use if your system is low on memory. Because you are going to | |
839 | repartition this disk, this swap partition will be disabled now. Please | 839 | repartition this disk, this swap partition will be disabled now. Please | |
840 | beware that this might lead to out of swap errors. Should you get such | 840 | beware that this might lead to out of swap errors. Should you get such | |
841 | an error, please restart the system and try again.} | 841 | an error, please restart the system and try again.} | |
842 | 842 | |||
843 | message swapdelfailed | 843 | message 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 | |
845 | chose for installation. Please reboot and try again.} | 845 | chose for installation. Please reboot and try again.} | |
846 | 846 | |||
847 | message rootpw | 847 | message 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, | |
849 | and is thus empty. Do you want to set a root password for the system now?} | 849 | and is thus empty. Do you want to set a root password for the system now?} | |
850 | 850 | |||
851 | message rootsh | 851 | message 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 | |||
855 | message no_root_fs | 855 | message no_root_fs | |
856 | { | 856 | { | |
857 | There is no defined root file system. You need to define at least | 857 | There is no defined root file system. You need to define at least | |
858 | one mount point with "/". | 858 | one mount point with "/". | |
859 | 859 | |||
860 | Press <return> to continue. | 860 | Press <return> to continue. | |
861 | } | 861 | } | |
862 | 862 | |||
863 | message slattach { | 863 | message slattach { | |
864 | Enter slattach flags | 864 | Enter slattach flags | |
865 | } | 865 | } | |
866 | 866 | |||
867 | message Pick_an_option {Pick an option to turn on or off.} | 867 | message Pick_an_option {Pick an option to turn on or off.} | |
868 | message Scripting {Scripting} | 868 | message Scripting {Scripting} | |
869 | message Logging {Logging} | 869 | message Logging {Logging} | |
870 | 870 | |||
871 | message Status { Status: } | 871 | message Status { Status: } | |
872 | message Command {Command: } | 872 | message Command {Command: } | |
873 | message Running {Running} | 873 | message Running {Running} | |
874 | message Finished {Finished} | 874 | message Finished {Finished} | |
875 | message Command_failed {Command failed} | 875 | message Command_failed {Command failed} | |
876 | message Command_ended_on_signal {Command ended on signal} | 876 | message Command_ended_on_signal {Command ended on signal} | |
877 | 877 | |||
878 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Install System} | 878 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Install System} | |
879 | message Exit_Install_System {Exit Install System} | 879 | message Exit_Install_System {Exit Install System} | |
880 | message Install_NetBSD_to_hard_disk {Install NetBSD to hard disk} | 880 | message Install_NetBSD_to_hard_disk {Install NetBSD to hard disk} | |
881 | message Upgrade_NetBSD_on_a_hard_disk {Upgrade NetBSD on a hard disk} | 881 | message Upgrade_NetBSD_on_a_hard_disk {Upgrade NetBSD on a hard disk} | |
882 | message Re_install_sets_or_install_additional_sets {Re-install sets or install additional sets} | 882 | message Re_install_sets_or_install_additional_sets {Re-install sets or install additional sets} | |
883 | message Reboot_the_computer {Reboot the computer} | 883 | message Reboot_the_computer {Reboot the computer} | |
884 | message Utility_menu {Utility menu} | 884 | message Utility_menu {Utility menu} | |
885 | message Config_menu {Config menu} | 885 | message Config_menu {Config menu} | |
886 | message exit_utility_menu {Back to main menu} | 886 | message exit_utility_menu {Back to main menu} | |
887 | message exit_menu_generic {Exit} | 887 | message exit_menu_generic {Exit} | |
888 | message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Utilities} | 888 | message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Utilities} | |
889 | message Run_bin_sh {Run /bin/sh} | 889 | message Run_bin_sh {Run /bin/sh} | |
890 | message Set_timezone {Set timezone} | 890 | message Set_timezone {Set timezone} | |
891 | message Configure_network {Configure network} | 891 | message Configure_network {Configure network} | |
892 | message Partition_a_disk {Partition a disk} | 892 | message Partition_a_disk {Partition a disk} | |
893 | message Logging_functions {Logging functions} | 893 | message Logging_functions {Logging functions} | |
894 | message Halt_the_system {Halt the system} | 894 | message Halt_the_system {Halt the system} | |
895 | message yes_or_no {yes or no?} | 895 | message yes_or_no {yes or no?} | |
896 | message Hit_enter_to_continue {Hit enter to continue} | 896 | message Hit_enter_to_continue {Hit enter to continue} | |
897 | message Choose_your_installation {Choose your installation} | 897 | message Choose_your_installation {Choose your installation} | |
898 | message Set_Sizes {Set sizes of NetBSD partitions} | 898 | message Set_Sizes {Set sizes of NetBSD partitions} | |
899 | message Use_Existing {Use existing partition sizes} | 899 | message Use_Existing {Use existing partition sizes} | |
900 | message Megabytes {Megabytes} | 900 | message Megabytes {Megabytes} | |
901 | message Cylinders {Cylinders} | 901 | message Cylinders {Cylinders} | |
902 | message Sectors {Sectors} | 902 | message Sectors {Sectors} | |
903 | message Select_medium {Install from} | 903 | message Select_medium {Install from} | |
904 | message ftp {FTP} | 904 | message ftp {FTP} | |
905 | message http {HTTP} | 905 | message http {HTTP} | |
906 | message nfs {NFS} | 906 | message nfs {NFS} | |
907 | .if HAVE_INSTALL_IMAGE | 907 | .if HAVE_INSTALL_IMAGE | |
908 | message cdrom {CD-ROM / DVD / install image media} | 908 | message cdrom {CD-ROM / DVD / install image media} | |
909 | .else | 909 | .else | |
910 | message cdrom {CD-ROM / DVD} | 910 | message cdrom {CD-ROM / DVD} | |
911 | .endif | 911 | .endif | |
912 | message floppy {Floppy} | 912 | message floppy {Floppy} | |
913 | message local_fs {Unmounted fs} | 913 | message local_fs {Unmounted fs} | |
914 | message local_dir {Local directory} | 914 | message local_dir {Local directory} | |
915 | message Select_your_distribution {Select your distribution} | 915 | message Select_your_distribution {Select your distribution} | |
916 | message Full_installation {Full installation} | 916 | message Full_installation {Full installation} | |
917 | message Full_installation_nox {Installation without X11} | 917 | message Full_installation_nox {Installation without X11} | |
918 | message Minimal_installation {Minimal installation} | 918 | message Minimal_installation {Minimal installation} | |
919 | message Custom_installation {Custom installation} | 919 | message Custom_installation {Custom installation} | |
920 | message hidden {** hidden **} | 920 | message hidden {** hidden **} | |
921 | message Host {Host} | 921 | message Host {Host} | |
922 | message Base_dir {Base directory} | 922 | message Base_dir {Base directory} | |
923 | message Set_dir_bin {Binary set directory} | 923 | message Set_dir_bin {Binary set directory} | |
924 | message Set_dir_src {Source set directory} | 924 | message Set_dir_src {Source set directory} | |
925 | message Xfer_dir {Transfer directory} | 925 | message Xfer_dir {Transfer directory} | |
926 | message User {User} | 926 | message User {User} | |
927 | message Password {Password} | 927 | message Password {Password} | |
928 | message Proxy {Proxy} | 928 | message Proxy {Proxy} | |
929 | message Get_Distribution {Get Distribution} | 929 | message Get_Distribution {Get Distribution} | |
930 | message Continue {Continue} | 930 | message Continue {Continue} | |
931 | message What_do_you_want_to_do {What do you want to do?} | 931 | message What_do_you_want_to_do {What do you want to do?} | |
932 | message Try_again {Try again} | 932 | message Try_again {Try again} | |
933 | message Set_finished {Set finished} | 933 | message Set_finished {Set finished} | |
934 | message Skip_set {Skip set} | 934 | message Skip_set {Skip set} | |
935 | message Skip_group {Skip set group} | 935 | message Skip_group {Skip set group} | |
936 | message Abandon {Abandon installation} | 936 | message Abandon {Abandon installation} | |
937 | message Abort_fetch {Abort fetch} | 937 | message Abort_fetch {Abort fetch} | |
938 | message Device {Device} | 938 | message Device {Device} | |
939 | message File_system {File system} | 939 | message File_system {File system} | |
940 | message Select_DNS_server { Select DNS server} | 940 | message Select_DNS_server { Select DNS server} | |
941 | message other {other } | 941 | message other {other } | |
942 | message Perform_autoconfiguration {Perform autoconfiguration?} | 942 | message Perform_autoconfiguration {Perform autoconfiguration?} | |
943 | message Root_shell {Root shell} | 943 | message Root_shell {Root shell} | |
944 | message User_shell {User shell} | 944 | message User_shell {User shell} | |
945 | message Color_scheme {Color scheme} | 945 | message Color_scheme {Color scheme} | |
946 | message White_on_black {White on black} | 946 | message White_on_black {White on black} | |
947 | message Black_on_white {Black on white} | 947 | message Black_on_white {Black on white} | |
948 | message White_on_blue {White on blue} | 948 | message White_on_blue {White on blue} | |
949 | message Green_on_black {Green on black} | 949 | message Green_on_black {Green on black} | |
950 | 950 | |||
951 | .if AOUT2ELF | 951 | .if AOUT2ELF | |
952 | message aoutfail | 952 | message 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 | |
954 | not be created. Please try the upgrade procedure again and make sure you | 954 | not be created. Please try the upgrade procedure again and make sure you | |
955 | have mounted all file systems.} | 955 | have mounted all file systems.} | |
956 | 956 | |||
957 | message emulbackup | 957 | message 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 | |
959 | pointing to an unmounted file system. It has been given a '.old' extension. | 959 | pointing to an unmounted file system. It has been given a '.old' extension. | |
960 | Once you bring your upgraded system back up, you may need to take care | 960 | Once you bring your upgraded system back up, you may need to take care | |
961 | of merging the newly created /emul/aout directory with the old one. | 961 | of merging the newly created /emul/aout directory with the old one. | |
962 | } | 962 | } | |
963 | .endif | 963 | .endif | |
964 | 964 | |||
965 | message oldsendmail | 965 | message 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 | |
967 | postfix. The file /etc/mailer.conf still chooses the removed | 967 | postfix. The file /etc/mailer.conf still chooses the removed | |
968 | sendmail. Do you want to upgrade /etc/mailer.conf automatically for | 968 | sendmail. Do you want to upgrade /etc/mailer.conf automatically for | |
969 | postfix? If you choose "No" you will have to update /etc/mailer.conf | 969 | postfix? If you choose "No" you will have to update /etc/mailer.conf | |
970 | yourself to ensure proper email delivery.} | 970 | yourself to ensure proper email delivery.} | |
971 | 971 | |||
972 | message license | 972 | message 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 | |
974 | file %s. To view this file now, you can type ^Z, look at the contents of | 974 | file %s. To view this file now, you can type ^Z, look at the contents of | |
975 | the file and then type "fg" to resume.} | 975 | the file and then type "fg" to resume.} | |
976 | 976 | |||
977 | message binpkg | 977 | message 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 | |
979 | to fetch packages from. Once your system comes up, you can use 'pkgin' | 979 | to fetch packages from. Once your system comes up, you can use 'pkgin' | |
980 | to install additional packages, or remove packages.} | 980 | to install additional packages, or remove packages.} | |
981 | 981 | |||
982 | message pkgpath | 982 | message pkgpath | |
983 | {Enabling binary packages with pkgin requires setting up the repository. | 983 | {Enabling binary packages with pkgin requires setting up the repository. | |
984 | The following are the host, directory, user, and password that | 984 | The following are the host, directory, user, and password that | |
985 | will be used. If "user" is "ftp", then the password is not needed. | 985 | will be used. If "user" is "ftp", then the password is not needed. | |
986 | 986 | |||
987 | } | 987 | } | |
988 | message rcconf_backup_failed {Making backup of rc.conf failed. Continue?} | 988 | message rcconf_backup_failed {Making backup of rc.conf failed. Continue?} | |
989 | message rcconf_backup_succeeded {rc.conf backup saved to %s.} | 989 | message rcconf_backup_succeeded {rc.conf backup saved to %s.} | |
990 | message rcconf_restore_failed {Restoring backup rc.conf failed.} | 990 | message rcconf_restore_failed {Restoring backup rc.conf failed.} | |
991 | message rcconf_delete_failed {Deleting old %s entry failed.} | 991 | message rcconf_delete_failed {Deleting old %s entry failed.} | |
992 | message Pkg_dir {Package directory} | 992 | message Pkg_dir {Package directory} | |
993 | message configure_prior {configure a prior installation of} | 993 | message configure_prior {configure a prior installation of} | |
994 | message configure {configure} | 994 | message configure {configure} | |
995 | message change {change} | 995 | message change {change} | |
996 | message password_set {password set} | 996 | message password_set {password set} | |
997 | message YES {YES} | 997 | message YES {YES} | |
998 | message NO {NO} | 998 | message NO {NO} | |
999 | message DONE {DONE} | 999 | message DONE {DONE} | |
1000 | message abandoned {Abandoned} | 1000 | message abandoned {Abandoned} | |
1001 | message empty {***EMPTY***} | 1001 | message empty {***EMPTY***} | |
1002 | message timezone {Timezone} | 1002 | message timezone {Timezone} | |
1003 | message change_rootpw {Change root password} | 1003 | message change_rootpw {Change root password} | |
1004 | message enable_binpkg {Enable installation of binary packages} | 1004 | message enable_binpkg {Enable installation of binary packages} | |
1005 | message enable_sshd {Enable sshd} | 1005 | message enable_sshd {Enable sshd} | |
1006 | message enable_ntpd {Enable ntpd} | 1006 | message enable_ntpd {Enable ntpd} | |
1007 | message run_ntpdate {Run ntpdate at boot} | 1007 | message run_ntpdate {Run ntpdate at boot} | |
1008 | message enable_mdnsd {Enable mdnsd} | 1008 | message enable_mdnsd {Enable mdnsd} | |
1009 | message enable_xdm {Enable xdm} | 1009 | message enable_xdm {Enable xdm} | |
1010 | message enable_cgd {Enable cgd} | 1010 | message enable_cgd {Enable cgd} | |
1011 | message enable_lvm {Enable lvm} | 1011 | message enable_lvm {Enable lvm} | |
1012 | message enable_raid {Enable raidframe} | 1012 | message enable_raid {Enable raidframe} | |
1013 | message add_a_user {Add a user} | 1013 | message add_a_user {Add a user} | |
1014 | message configmenu {Configure the additional items as needed.} | 1014 | message configmenu {Configure the additional items as needed.} | |
1015 | message doneconfig {Finished configuring} | 1015 | message doneconfig {Finished configuring} | |
1016 | message Install_pkgin {Install pkgin and update package summary} | 1016 | message Install_pkgin {Install pkgin and update package summary} | |
1017 | message binpkg_installed | 1017 | message 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 | |
1019 | install a package, run: | 1019 | install a package, run: | |
1020 | 1020 | |||
1021 | pkgin install <packagename> | 1021 | pkgin install <packagename> | |
1022 | 1022 | |||
1023 | from a root shell. Read the pkgin(1) manual page for further information.} | 1023 | from a root shell. Read the pkgin(1) manual page for further information.} | |
1024 | message Install_pkgsrc {Fetch and unpack pkgsrc} | 1024 | message Install_pkgsrc {Fetch and unpack pkgsrc} | |
1025 | message pkgsrc | 1025 | message pkgsrc | |
1026 | {Installing pkgsrc requires unpacking an archive retrieved over the network. | 1026 | {Installing pkgsrc requires unpacking an archive retrieved over the network. | |
1027 | The following are the host, directory, user, and password that | 1027 | The following are the host, directory, user, and password that | |
1028 | will be used. If "user" is "ftp", then the password is not needed. | 1028 | will be used. If "user" is "ftp", then the password is not needed. | |
1029 | 1029 | |||
1030 | } | 1030 | } | |
1031 | message Pkgsrc_dir {pkgsrc directory} | 1031 | message Pkgsrc_dir {pkgsrc directory} | |
1032 | message get_pkgsrc {Fetch and unpack pkgsrc for building from source} | 1032 | message get_pkgsrc {Fetch and unpack pkgsrc for building from source} | |
1033 | message retry_pkgsrc_network {Network configuration failed. Retry?} | 1033 | message retry_pkgsrc_network {Network configuration failed. Retry?} | |
1034 | message quit_pkgsrc {Quit without installing pkgsrc} | 1034 | message quit_pkgsrc {Quit without installing pkgsrc} | |
1035 | message quit_pkgs_install {Quit installing binary pkgs} | 1035 | message quit_pkgs_install {Quit installing binary pkgs} | |
1036 | message pkgin_failed | 1036 | message pkgin_failed | |
1037 | {Installation of pkgin failed, possibly because no binary packages | 1037 | {Installation of pkgin failed, possibly because no binary packages | |
1038 | exist. Please check the package path and try again.} | 1038 | exist. Please check the package path and try again.} | |
1039 | message failed {Failed} | 1039 | message failed {Failed} | |
1040 | 1040 | |||
1041 | message notsupported {Operation not supported!} | 1041 | message notsupported {Operation not supported!} | |
1042 | message askfsmountadv {Mountpoint (or 'raid', 'cgd', 'lvm')?} | 1042 | message askfsmountadv {Mountpoint (or 'raid', 'cgd', 'lvm')?} | |
1043 | message partman {Extended partitioning} | 1043 | message partman {Extended partitioning} | |
1044 | message editbsdpart {Edit BSD partitions} | 1044 | message editbsdpart {Edit BSD partitions} | |
1045 | message editmbr {Edit and save MBR} | 1045 | message editmbr {Edit and save MBR} | |
1046 | message switchgpt {Switch to GPT} | 1046 | message switchgpt {Switch to GPT} | |
1047 | message switchmbr {Switch to MBR} | 1047 | message switchmbr {Switch to MBR} | |
1048 | message renamedisk {Set disk name} | 1048 | message renamedisk {Set disk name} | |
1049 | message fmtasraid {Format as RAID} | 1049 | message fmtasraid {Format as RAID} | |
1050 | message fmtaslvm {Format as LVM PV} | 1050 | message fmtaslvm {Format as LVM PV} | |
1051 | message encrypt {Encrypt} | 1051 | message encrypt {Encrypt} | |
1052 | message setbootable {Bootable flag} | 1052 | message setbootable {Bootable flag} | |
1053 | message erase {Safe erase} | 1053 | message erase {Safe erase} | |
1054 | message undo {Undo changes} | 1054 | message undo {Undo changes} | |
1055 | message unconfig {Unconfigure} | 1055 | message unconfig {Unconfigure} | |
1056 | message edit {Edit} | 1056 | message edit {Edit} | |
1057 | message doumount {Force umount} | 1057 | message doumount {Force umount} | |
1058 | message fillzeros {Fill with zeros} | 1058 | message fillzeros {Fill with zeros} | |
1059 | message fillrandom {Fill with random data} | 1059 | message fillrandom {Fill with random data} | |
1060 | message fillcrypto {Fill with crypto data} | 1060 | message fillcrypto {Fill with crypto data} | |
1061 | message raid0 {0 - No parity, simple striping.} | 1061 | message raid0 {0 - No parity, simple striping.} | |
1062 | message raid1 {1 - Mirroring. The parity is the mirror.} | 1062 | message raid1 {1 - Mirroring. The parity is the mirror.} | |
1063 | message raid4 {4 - Striping with parity stored on the last component.} | 1063 | message raid4 {4 - Striping with parity stored on the last component.} | |
1064 | message raid5 {5 - Striping with distributed parity.} | 1064 | message raid5 {5 - Striping with distributed parity.} | |
1065 | 1065 | |||
1066 | message fremove {REMOVE} | 1066 | message fremove {REMOVE} | |
1067 | message remove {Remove} | 1067 | message remove {Remove} | |
1068 | message add {Add} | 1068 | message add {Add} | |
1069 | message auto {auto} | 1069 | message auto {auto} | |
1070 | 1070 | |||
1071 | message removepartswarn {This removes all partitions on the disk. Do you want to continue?} | 1071 | message removepartswarn {This removes all partitions on the disk. Do you want to continue?} | |
1072 | message saveprompt {Save changes before finishing?} | 1072 | message saveprompt {Save changes before finishing?} | |
1073 | message cantsave {Changes cannot be saved.} | 1073 | message cantsave {Changes cannot be saved.} | |
1074 | message noroot {No root partition defined. Cannot continue\n} | 1074 | message noroot {No root partition defined. Cannot continue\n} | |
1075 | message wannaunblock { | 1075 | message wannaunblock { | |
1076 | Device is blocked. Editing it may cause problems. | 1076 | Device is blocked. Editing it may cause problems. | |
1077 | Do you want to force unblock it and continue?} | 1077 | Do you want to force unblock it and continue?} | |
1078 | message wannatry {Do you want to try?} | 1078 | message wannatry {Do you want to try?} | |
1079 | message create_cgd {Create cryptographic volume (CGD)} | 1079 | message create_cgd {Create cryptographic volume (CGD)} | |
1080 | message create_cnd {Create virtual disk image (VND)} | 1080 | message create_cnd {Create virtual disk image (VND)} | |
1081 | message create_vg {Create volume group (LVM VG)} | 1081 | message create_vg {Create volume group (LVM VG)} | |
1082 | message create_lv { Create logical volume} | 1082 | message create_lv { Create logical volume} | |
1083 | message create_raid {Create software RAID} | 1083 | message create_raid {Create software RAID} | |
1084 | message updpmlist {Update device list} | 1084 | message updpmlist {Update device list} | |
1085 | message savepm {Save changes} | 1085 | message savepm {Save changes} | |
1086 | message pmblocked {BLOCKED} | 1086 | message pmblocked {BLOCKED} | |
1087 | message pmunchanged {UNCHANGED} | 1087 | message pmunchanged {UNCHANGED} | |
1088 | message pmsetboot {BOOT} | 1088 | message pmsetboot {BOOT} | |
1089 | message pmused {USED} | 1089 | message pmused {USED} | |
1090 | message pmmounted {(mounted)} | 1090 | message pmmounted {(mounted)} | |
1091 | message pmunused {(unused)} | 1091 | message pmunused {(unused)} | |
1092 | message pmgptdisk {GPT-labeled disk} | 1092 | message pmgptdisk {GPT-labeled disk} | |
1093 | 1093 | |||
1094 | message finishpm {Finish partitioning} | 1094 | message finishpm {Finish partitioning} | |
1095 | message limitcount {Limit for the device count was reached!} | 1095 | message limitcount {Limit for the device count was reached!} | |
1096 | message invaliddev {Invalid device!} | 1096 | message invaliddev {Invalid device!} | |
1097 | message avdisks {Available disks:} | 1097 | message avdisks {Available disks:} | |
1098 | message nofreedev {Cannot allocate device node!} | 1098 | message nofreedev {Cannot allocate device node!} | |
1099 | message partman_header | 1099 | message 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 | |
1101 | listed below. MBR partitions, if desired, must be created before editing | 1101 | listed below. MBR partitions, if desired, must be created before editing | |
1102 | the disklabel. To use RAID, LVM, or CGD: 1) Create BSD partitions with the | 1102 | the disklabel. To use RAID, LVM, or CGD: 1) Create BSD partitions with the | |
1103 | appropriate type; 2) Create RAID/LVM VG/CGD using these partitions; 3) Save | 1103 | appropriate type; 2) Create RAID/LVM VG/CGD using these partitions; 3) Save | |
1104 | changes; 4) Create partitions for RAID/CGD or Logical Volumes for LVM.} | 1104 | changes; 4) Create partitions for RAID/CGD or Logical Volumes for LVM.} | |
1105 | 1105 | |||
1106 | message raid_menufmt { raid%d (level %1d) on %-34s %11uM} | 1106 | message raid_menufmt { raid%d (level %1d) on %-34s %11uM} | |
1107 | message raid_err_menufmt { EMPTY RAID!} | 1107 | message raid_err_menufmt { EMPTY RAID!} | |
1108 | message raid_disks_fmt {Disks: %33s} | 1108 | message raid_disks_fmt {Disks: %33s} | |
1109 | message raid_spares_fmt {Spares: %32s} | 1109 | message raid_spares_fmt {Spares: %32s} | |
1110 | message raid_level_fmt {RAID level: %22d} | 1110 | message raid_level_fmt {RAID level: %22d} | |
1111 | message raid_numrow_fmt {numRow: %22d} | 1111 | message raid_numrow_fmt {numRow: %22d} | |
1112 | message raid_numcol_fmt {numCol: %22d} | 1112 | message raid_numcol_fmt {numCol: %22d} | |
1113 | message raid_numspare_fmt {numSpare: %22d} | 1113 | message raid_numspare_fmt {numSpare: %22d} | |
1114 | message raid_sectpersu_fmt {sectPerSU: %22d} | 1114 | message raid_sectpersu_fmt {sectPerSU: %22d} | |
1115 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | 1115 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | |
1116 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | 1116 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | |
1117 | message raid_nomultidim {Multi-dimensional arrays are NOT supported!} | 1117 | message raid_nomultidim {Multi-dimensional arrays are NOT supported!} | |
1118 | message raid_numrow_ask {numRow?} | 1118 | message raid_numrow_ask {numRow?} | |
1119 | message raid_numcol_ask {numCol?} | 1119 | message raid_numcol_ask {numCol?} | |
1120 | message raid_numspare_ask {numSpare?} | 1120 | message raid_numspare_ask {numSpare?} | |
1121 | message raid_sectpersu_ask {sectPerSU?} | 1121 | message raid_sectpersu_ask {sectPerSU?} | |
1122 | message raid_superpar_ask {SUsPerParityUnit?} | 1122 | message raid_superpar_ask {SUsPerParityUnit?} | |
1123 | message raid_superrec_ask {SUsPerReconUnit?} | 1123 | message raid_superrec_ask {SUsPerReconUnit?} | |
1124 | message raid_disks {Disks in RAID:} | 1124 | message raid_disks {Disks in RAID:} | |
1125 | message vnd_err_menufmt { PATH NOT DEFINED!} | 1125 | message vnd_err_menufmt { PATH NOT DEFINED!} | |
1126 | message vnd_assgn_menufmt { vnd%1d on %-51s ASSIGN} | 1126 | message vnd_assgn_menufmt { vnd%1d on %-51s ASSIGN} | |
1127 | message vnd_menufmt { vnd%1d on %-45s %11uM} | 1127 | message vnd_menufmt { vnd%1d on %-45s %11uM} | |
1128 | message vnd_path_fmt {File path: %29s} | 1128 | message vnd_path_fmt {File path: %29s} | |
1129 | message vnd_assgn_fmt {Create new image: %20s} | 1129 | message vnd_assgn_fmt {Create new image: %20s} | |
1130 | message vnd_size_fmt {Size: %22sM} | 1130 | message vnd_size_fmt {Size: %22sM} | |
1131 | message vnd_ro_fmt {Read-only: %22s} | 1131 | message vnd_ro_fmt {Read-only: %22s} | |
1132 | message vnd_geom_fmt {Set geometry by hand: %18s} | 1132 | message vnd_geom_fmt {Set geometry by hand: %18s} | |
1133 | message vnd_bps_fmt {Bytes per Sector: %18s} | 1133 | message vnd_bps_fmt {Bytes per Sector: %18s} | |
1134 | message vnd_spt_fmt {Sectors per Track: %18s} | 1134 | message vnd_spt_fmt {Sectors per Track: %18s} | |
1135 | message vnd_tpc_fmt {Tracks per Cylinder: %18s} | 1135 | message vnd_tpc_fmt {Tracks per Cylinder: %18s} | |
1136 | message vnd_cyl_fmt {Cylinders: %22s} | 1136 | message vnd_cyl_fmt {Cylinders: %22s} | |
1137 | message vnd_path_ask {File path?} | 1137 | message vnd_path_ask {File path?} | |
1138 | message vnd_size_ask {Size (MB)?} | 1138 | message vnd_size_ask {Size (MB)?} | |
1139 | message vnd_bps_ask {Bytes per Sector?} | 1139 | message vnd_bps_ask {Bytes per Sector?} | |
1140 | message vnd_spt_ask {Sectors per Track?} | 1140 | message vnd_spt_ask {Sectors per Track?} | |
1141 | message vnd_tpc_ask {Tracks per Cylinder?} | 1141 | message vnd_tpc_ask {Tracks per Cylinder?} | |
1142 | message vnd_cyl_ask {Cylinders?} | 1142 | message vnd_cyl_ask {Cylinders?} | |
1143 | message cgd_err_menufmt { DISK NOT DEFINED!} | 1143 | message cgd_err_menufmt { DISK NOT DEFINED!} | |
1144 | message cgd_menufmt { cgd%1d %-48s %11uM} | 1144 | message cgd_menufmt { cgd%1d %-48s %11uM} | |
1145 | message cgd_dev_fmt {Base device: %24s} | 1145 | message cgd_dev_fmt {Base device: %24s} | |
1146 | message cgd_enc_fmt {Encryption: %24s} | 1146 | message cgd_enc_fmt {Encryption: %24s} | |
1147 | message cgd_key_fmt {Key size: %24d} | 1147 | message cgd_key_fmt {Key size: %24d} | |
1148 | message cgd_iv_fmt {IV algorithm: %24s} | 1148 | message cgd_iv_fmt {IV algorithm: %24s} | |
1149 | message cgd_keygen_fmt {Key generation: %24s} | 1149 | message cgd_keygen_fmt {Key generation: %24s} | |
1150 | message cgd_verif_fmt {Verification method: %17s} | 1150 | message cgd_verif_fmt {Verification method: %17s} | |
1151 | message lvm_disks {Disks in VG:} | 1151 | message lvm_disks {Disks in VG:} | |
1152 | message lvm_menufmt { %-44s %20sM} | 1152 | message lvm_menufmt { %-44s %20sM} | |
1153 | message lvm_err_menufmt { EMPTY VG!} | 1153 | message lvm_err_menufmt { EMPTY VG!} | |
1154 | message lvm_disks_fmt {PV's: %34s} | 1154 | message lvm_disks_fmt {PV's: %34s} | |
1155 | message lvm_name_fmt {Name: %34s} | 1155 | message lvm_name_fmt {Name: %34s} | |
1156 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | 1156 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | |
1157 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | 1157 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | |
1158 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | 1158 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | |
1159 | message lvm_name_ask {Name?} | 1159 | message lvm_name_ask {Name?} | |
1160 | message lvm_maxlv_ask {MaxLogicalVolumes?} | 1160 | message lvm_maxlv_ask {MaxLogicalVolumes?} | |
1161 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | 1161 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | |
1162 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | 1162 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | |
1163 | message lvmlv_menufmt { Logical volume %-35s %11uM} | 1163 | message lvmlv_menufmt { Logical volume %-35s %11uM} | |
1164 | message lvmlv_name_fmt {Name: %34s} | 1164 | message lvmlv_name_fmt {Name: %34s} | |
1165 | message lvmlv_size_fmt {Size: %33dM} | 1165 | message lvmlv_size_fmt {Size: %33dM} | |
1166 | message lvmlv_ro_fmt {Read-only: %27s} | 1166 | message lvmlv_ro_fmt {Read-only: %27s} | |
1167 | message lvmlv_cont_fmt {Contiguous: %27s} | 1167 | message lvmlv_cont_fmt {Contiguous: %27s} | |
1168 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | 1168 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | |
1169 | message lvmlv_minor_fmt {Minor number: %26s} | 1169 | message lvmlv_minor_fmt {Minor number: %26s} | |
1170 | message lvmlv_mirrors_fmt {Mirrors: %27d} | 1170 | message lvmlv_mirrors_fmt {Mirrors: %27d} | |
1171 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | 1171 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | |
1172 | message lvmlv_pers_fmt {Persistent minor number: %14s} | 1172 | message lvmlv_pers_fmt {Persistent minor number: %14s} | |
1173 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | 1173 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | |
1174 | message lvmlv_stripes_fmt {Stripes: %27s} | 1174 | message lvmlv_stripes_fmt {Stripes: %27s} | |
1175 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | 1175 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | |
1176 | message lvmlv_zero_fmt {Zeroing of the first KB: %13s} | 1176 | message lvmlv_zero_fmt {Zeroing of the first KB: %13s} | |
1177 | message lvmlv_name_ask {Name?} | 1177 | message lvmlv_name_ask {Name?} | |
1178 | message lvmlv_size_ask {Size (MB)?} | 1178 | message lvmlv_size_ask {Size (MB)?} | |
1179 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | 1179 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | |
1180 | message lvmlv_minor_ask {Minor number?} | 1180 | message lvmlv_minor_ask {Minor number?} | |
1181 | message lvmlv_mirrors_ask {Mirrors?} | 1181 | message lvmlv_mirrors_ask {Mirrors?} | |
1182 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | 1182 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | |
1183 | message lvmlv_readahsect_ask {ReadAheadSectors?} | 1183 | message lvmlv_readahsect_ask {ReadAheadSectors?} | |
1184 | message lvmlv_stripes_ask {Stripes?} | 1184 | message lvmlv_stripes_ask {Stripes?} | |
1185 | 1185 | |||
1186 | message addusername {8 character username to add} | 1186 | message addusername {8 character username to add} | |
1187 | message addusertowheel {Do you wish to add this user to group wheel?} | 1187 | message addusertowheel {Do you wish to add this user to group wheel?} | |
1188 | 1188 | |||
1189 | message Delete_partition | 1189 | message Delete_partition | |
1190 | {Delete partition} | 1190 | {Delete partition} | |
1191 | 1191 | |||
1192 | message No_filesystem_newfs | |||
1193 | {The selected partition does not seem to have a valid file system. | |||
1194 | Do you want to newfs (format) it?} | |||
1195 | ||||
1196 | message Auto_add_swap_part | |||
1197 | {A swap partition (named %s) seems to exist on %s. | |||
1198 | Do you want to use that?} | |||
1199 |
--- 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 */ | |
68 | struct disk_desc { | 68 | struct 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 */ | |
81 | struct gptfs_t { | 81 | struct 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 | }; | |
86 | static const struct gptfs_t gpt_filesystems[] = { | 86 | static 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 */ | |
103 | static int foundffs(struct data *, size_t); | 103 | static int foundffs(struct data *, size_t); | |
104 | #ifdef USE_SYSVBFS | 104 | #ifdef USE_SYSVBFS | |
105 | static int foundsysvbfs(struct data *, size_t); | 105 | static int foundsysvbfs(struct data *, size_t); | |
106 | #endif | 106 | #endif | |
107 | static int fsck_preen(const char *, int, const char *); | 107 | static int fsck_preen(const char *, int, const char *, bool silent); | |
108 | static void fixsb(const char *, const char *, char); | 108 | static void fixsb(const char *, const char *, char); | |
109 | static bool is_gpt(const char *); | 109 | static bool is_gpt(const char *); | |
110 | static int incoregpt(pm_devs_t *, partinfo *); | 110 | static 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 | |||
116 | static const char *disk_names[] = { DISK_NAMES, "vnd", "cgd", NULL }; | 116 | static const char *disk_names[] = { DISK_NAMES, | |
117 | "vnd", "cgd", "dk:no_part", NULL }; | |||
117 | 118 | |||
118 | static bool tmpfs_on_var_shm(void); | 119 | static bool tmpfs_on_var_shm(void); | |
119 | 120 | |||
120 | const char * | 121 | const char * | |
121 | getfslabelname(uint8_t f) | 122 | getfslabelname(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 | */ | |
133 | static bool | 134 | static bool | |
134 | tmpfs_on_var_shm() | 135 | tmpfs_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 | */ | |
151 | static void | 152 | static void | |
152 | ata_extract_string(char *buf, size_t bufmax, | 153 | ata_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 | |||
184 | static void | 185 | static void | |
185 | scsi_strvis(char *sdst, size_t dlen, const char *ssrc, size_t slen) | 186 | scsi_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 | |||
226 | static int | 227 | static int | |
227 | get_descr_scsi(struct disk_desc *dd, int fd) | 228 | get_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 | |||
275 | static int | 276 | static int | |
276 | get_descr_ata(struct disk_desc *dd, int fd) | 277 | get_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 | |||
330 | static void | 331 | static void | |
331 | get_descr(struct disk_desc *dd) | 332 | get_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 | |||
350 | done: | 351 | done: | |
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 | */ | |
362 | const char * | 363 | const char * | |
363 | get_default_cdrom(void) | 364 | get_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 | |||
400 | static void | |||
401 | get_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 | ||||
419 | static bool | |||
420 | get_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 | ||||
440 | static bool | |||
441 | find_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 | ||||
489 | static bool | |||
490 | is_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 | ||||
399 | static int | 510 | static int | |
400 | get_disks(struct disk_desc *dd) | 511 | get_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 | |||
451 | int | 582 | int | |
452 | find_disks(const char *doingwhat) | 583 | find_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 | |||
583 | void | 729 | void | |
584 | label_read(void) | 730 | label_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 | |||
602 | void | 752 | void | |
603 | fmt_fspart(menudesc *m, int ptn, void *arg) | 753 | fmt_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 | */ | |
657 | int | 807 | int | |
658 | write_disklabel (void) | 808 | write_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 | |||
673 | static int | 826 | static int | |
674 | ptn_sort(const void *a, const void *b) | 827 | ptn_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 | |||
680 | int | 833 | int | |
681 | make_filesystems(void) | 834 | make_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 | |||
830 | int | 1009 | int | |
831 | make_fstab(void) | 1010 | make_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 | } | |
1163 | done_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 | |||
1004 | static int | 1206 | static int | |
1005 | /*ARGSUSED*/ | 1207 | /*ARGSUSED*/ | |
1006 | foundffs(struct data *list, size_t num) | 1208 | foundffs(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 | |
1028 | static int | 1230 | static int | |
1029 | /*ARGSUSED*/ | 1231 | /*ARGSUSED*/ | |
1030 | foundsysvbfs(struct data *list, size_t num) | 1232 | foundsysvbfs(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 | */ | |
1050 | static int | 1252 | static int | |
1051 | fsck_preen(const char *disk, int ptn, const char *fsname) | 1253 | fsck_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 | */ | |
1088 | static void | 1290 | static void | |
1089 | fixsb(const char *prog, const char *disk, char ptn) | 1291 | fixsb(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 | */ | |
1137 | static int | 1339 | static int | |
1138 | mount_root(void) | 1340 | mount_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 | |||
1163 | int | 1365 | int | |
1164 | mount_disks(void) | 1366 | mount_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 | |||
1213 | int | 1415 | int | |
1214 | set_swap_if_low_ram(const char *disk, partinfo *pp) | 1416 | set_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 | |||
1221 | int | 1423 | int | |
1222 | set_swap(const char *disk, partinfo *pp) | 1424 | set_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 | |||
1244 | int | 1446 | int | |
1245 | check_swap(const char *disk, int remove_swap) | 1447 | check_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 | |
1297 | char * | 1499 | char * | |
1298 | bootxx_name(void) | 1500 | bootxx_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 | |||
1342 | static int | 1544 | static int | |
1343 | get_fsid_by_gptuuid(const char *str) | 1545 | get_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 | |||
1358 | const char * | 1560 | const char * | |
1359 | get_gptfs_by_id(int filesystem) | 1561 | get_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 */ | |
1369 | static int | 1571 | static int | |
1370 | get_dkwedges_sort(const void *a, const void *b) | 1572 | get_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 | |||
1377 | int | 1579 | int | |
1378 | get_dkwedges(struct dkwedge_info **dkw, const char *diskdev) | 1580 | get_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 */ | |
1415 | static int | 1617 | static int | |
1416 | incoregpt(pm_devs_t *pm_cur, partinfo *lp) | 1618 | incoregpt(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 | |||
1480 | static bool | 1682 | static bool | |
1481 | is_gpt(const char *dev) | 1683 | is_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 | } |
--- 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 | |||
86 | struct part_id { | 86 | struct 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 | |||
112 | static int get_mapping(struct mbr_partition *, int, int *, int *, int *, | 112 | static int get_mapping(struct mbr_partition *, int, int *, int *, int *, | |
113 | daddr_t *); | 113 | daddr_t *); | |
114 | static void convert_mbr_chs(int, int, int, uint8_t *, uint8_t *, | 114 | static void convert_mbr_chs(int, int, int, uint8_t *, uint8_t *, | |
115 | uint8_t *, uint32_t); | 115 | uint8_t *, uint32_t); | |
116 | static void get_ptn_alignment(struct mbr_partition *); | 116 | static void get_ptn_alignment(struct mbr_partition *); | |
117 | 117 | |||
118 | static unsigned int ptn_alignment; | 118 | static unsigned int ptn_alignment; | |
119 | static unsigned int ptn_0_offset; | 119 | static 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 | |
168 | void | 168 | void | |
169 | dump_mbr(mbr_info_t *mbr, const char *msg) | 169 | dump_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 | */ | |
193 | int | 193 | int | |
194 | set_bios_geom_with_mbr_guess(void) | 194 | set_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 | */ | |
211 | void | 211 | void | |
212 | set_bios_geom(int cyl, int head, int sec) | 212 | set_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 | |
236 | void | 236 | void | |
237 | disp_cur_geom(void) | 237 | disp_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 | */ | |
254 | static void | 254 | static void | |
255 | remove_old_partitions(uint start, int64_t size) | 255 | remove_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 | |||
277 | static int | 277 | static int | |
278 | find_mbr_space(struct mbr_sector *mbrs, uint *start, uint *size, uint from, int ignore) | 278 | find_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 | |||
307 | static struct mbr_partition * | 307 | static struct mbr_partition * | |
308 | get_mbrp(mbr_info_t **mbrip, int opt) | 308 | get_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 | |||
320 | static int | 320 | static int | |
321 | err_msg_win(const char *errmsg) | 321 | err_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 | |||
339 | static int | 339 | static int | |
340 | set_mbr_type(menudesc *m, void *arg) | 340 | set_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 | |||
478 | static void | 478 | static void | |
479 | set_type_label(menudesc *m, int opt, void *arg) | 479 | set_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 | |||
497 | static int | 497 | static int | |
498 | edit_mbr_type(menudesc *m, void *arg) | 498 | edit_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 | |||
522 | static int | 522 | static int | |
523 | edit_mbr_start(menudesc *m, void *arg) | 523 | edit_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 | |||
677 | static int | 677 | static int | |
678 | edit_mbr_size(menudesc *m, void *arg) | 678 | edit_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 | |||
863 | static int | 863 | static int | |
864 | edit_mbr_active(menudesc *m, void *arg) | 864 | edit_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 | |||
889 | static int | 889 | static int | |
890 | edit_mbr_install(menudesc *m, void *arg) | 890 | edit_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 | |
912 | static int | 912 | static int | |
913 | edit_mbr_bootmenu(menudesc *m, void *arg) | 913 | edit_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 | |||
936 | static int | 936 | static int | |
937 | edit_mbr_bootdefault(menudesc *m, void *arg) | 937 | edit_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 | |||
950 | static void set_ptn_label(menudesc *m, int line, void *arg); | 950 | static void set_ptn_label(menudesc *m, int line, void *arg); | |
951 | static void set_ptn_header(menudesc *m, void *arg); | 951 | static void set_ptn_header(menudesc *m, void *arg); | |
952 | 952 | |||
953 | static int | 953 | static int | |
954 | edit_mbr_entry(menudesc *m, void *arg) | 954 | edit_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 | |||
995 | static void | 995 | static void | |
996 | set_ptn_label(menudesc *m, int line, void *arg) | 996 | set_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 | |||
1058 | static void | 1058 | static void | |
1059 | set_ptn_header(menudesc *m, void *arg) | 1059 | set_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 | |||
1107 | static void | 1107 | static void | |
1108 | set_mbr_label(menudesc *m, int opt, void *arg) | 1108 | set_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 | |||
1163 | static void | 1163 | static void | |
1164 | set_mbr_header(menudesc *m, void *arg) | 1164 | set_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 | |||
1226 | int | 1226 | int | |
1227 | mbr_use_wholedisk(mbr_info_t *mbri) | 1227 | mbr_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 | */ | |
1256 | int | 1256 | int | |
1257 | edit_mbr(mbr_info_t *mbri) | 1257 | edit_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 | |||
1385 | const char * | 1388 | const char * | |
1386 | get_partname(int typ) | 1389 | get_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 | |
1400 | static int | 1403 | static int | |
1401 | validate_and_set_names(mbr_info_t *mbri, const struct mbr_bootsel *src, | 1404 | validate_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 | |||
1438 | int | 1441 | int | |
1439 | read_mbr(const char *disk, mbr_info_t *mbri) | 1442 | read_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 | |||
1605 | int | 1608 | int | |
1606 | write_mbr(const char *disk, mbr_info_t *mbri, int convert) | 1609 | write_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 | |||
1713 | int | 1716 | int | |
1714 | valid_mbr(struct mbr_sector *mbrs) | 1717 | valid_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 | |||
1720 | static void | 1723 | static void | |
1721 | convert_mbr_chs(int cyl, int head, int sec, | 1724 | convert_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 | |||
1752 | int | 1755 | int | |
1753 | guess_biosgeom_from_mbr(mbr_info_t *mbri, int *cyl, int *head, daddr_t *sec) | 1756 | guess_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 | |||
1843 | static int | 1846 | static int | |
1844 | get_mapping(struct mbr_partition *parts, int i, | 1847 | get_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 | */ | |
1874 | static void | 1877 | static void | |
1875 | get_ptn_alignment(struct mbr_partition *mbrp0) | 1878 | get_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 | } |
--- 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 | |||
37 | message usage | 37 | message 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 | */ | |
45 | message sysinst_message_language | 45 | message sysinst_message_language | |
46 | {Installation auf Deutsch} | 46 | {Installation auf Deutsch} | |
47 | 47 | |||
48 | message sysinst_message_locale | 48 | message sysinst_message_locale | |
49 | {de_DE.ISO8859-15} | 49 | {de_DE.ISO8859-15} | |
50 | 50 | |||
51 | message Yes {Ja} | 51 | message Yes {Ja} | |
52 | message No {Nein} | 52 | message No {Nein} | |
53 | message All {Alle(s)} | 53 | message All {Alle(s)} | |
54 | message Some {Einige} | 54 | message Some {Einige} | |
55 | message None {Kein(e)} | 55 | message None {Kein(e)} | |
56 | message none {kein(e)} | 56 | message none {kein(e)} | |
57 | message OK {OK} | 57 | message OK {OK} | |
58 | message ok {ok} | 58 | message ok {ok} | |
59 | message On {An} | 59 | message On {An} | |
60 | message Off {Aus} | 60 | message Off {Aus} | |
61 | message unchanged {unverändert} | 61 | message unchanged {unverändert} | |
62 | message Delete {Löschen?} | 62 | message Delete {Löschen?} | |
63 | message install | 63 | message install | |
64 | {installieren} | 64 | {installieren} | |
65 | 65 | |||
66 | message reinstall | 66 | message reinstall | |
67 | {Sets erneut installieren für} | 67 | {Sets erneut installieren für} | |
68 | 68 | |||
69 | message upgrade | 69 | message upgrade | |
70 | {Aktualisierung} | 70 | {Aktualisierung} | |
71 | 71 | |||
72 | message hello | 72 | message hello | |
73 | {Willkommen bei Sysinst, dem Installationsprogramm von NetBSD-@@VERSION@@. | 73 | {Willkommen bei Sysinst, dem Installationsprogramm von NetBSD-@@VERSION@@. | |
74 | Dieses Programm wird Ihnen helfen, NetBSD auf eine Festplatte zu installieren | 74 | Dieses Programm wird Ihnen helfen, NetBSD auf eine Festplatte zu installieren | |
75 | oder aber eine bereits bestehende Installation von NetBSD zu aktualisieren. | 75 | oder aber eine bereits bestehende Installation von NetBSD zu aktualisieren. | |
76 | In den folgenden Menüs können Sie mit den Buchstaben (a, b, c, ...) | 76 | In den folgenden Menüs können Sie mit den Buchstaben (a, b, c, ...) | |
77 | die verschiedenen Menüeinträge wählen oder durch Drücken von Strg-N/Strg-P | 77 | die verschiedenen Menüeinträge wählen oder durch Drücken von Strg-N/Strg-P | |
78 | die Markierung auf- oder abbewegen. Die Cursor- und Bildlauftasten | 78 | die Markierung auf- oder abbewegen. Die Cursor- und Bildlauftasten | |
79 | (Seite vor/zurück) sollten ebenfalls funktionieren. | 79 | (Seite vor/zurück) sollten ebenfalls funktionieren. | |
80 | Durch Betätigen der Eingabetaste aktivieren Sie die gegenwärtige Auswahl. | 80 | Durch Betätigen der Eingabetaste aktivieren Sie die gegenwärtige Auswahl. | |
81 | } | 81 | } | |
82 | 82 | |||
83 | message thanks | 83 | message thanks | |
84 | {Danke, dass Sie NetBSD benutzen! | 84 | {Danke, dass Sie NetBSD benutzen! | |
85 | } | 85 | } | |
86 | 86 | |||
87 | message installusure | 87 | message 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. | |
89 | Dieser Vorgang verändert Informationen auf Ihrer Festplatte. Zu diesem | 89 | Dieser Vorgang verändert Informationen auf Ihrer Festplatte. Zu diesem | |
90 | Zeitpunkt sollten Sie sicherheitshalber eine vollständige Datensicherung | 90 | Zeitpunkt sollten Sie sicherheitshalber eine vollständige Datensicherung | |
91 | gemacht haben! Die Installation durchläuft die folgenden Schritte: | 91 | gemacht 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 - | |
98 | aber noch bevor die Festplatte verändert wird - erhalten Sie die Möglichkeit | 98 | aber noch bevor die Festplatte verändert wird - erhalten Sie die Möglichkeit | |
99 | die Installation abzubrechen.) | 99 | die Installation abzubrechen.) | |
100 | 100 | |||
101 | Wollen Sie fortfahren? | 101 | Wollen Sie fortfahren? | |
102 | } | 102 | } | |
103 | 103 | |||
104 | message upgradeusure | 104 | message 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. | |
106 | Zu diesem Zeitpunkt sollten Sie bereits eine vollständige | 106 | Zu diesem Zeitpunkt sollten Sie bereits eine vollständige | |
107 | Datensicherung durchgeführt haben! Wollen Sie NetBSD wirklich aktualisieren? | 107 | Datensicherung 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 | |||
111 | message reinstallusure | 111 | message reinstallusure | |
112 | {Im folgenden werden die NetBSD Distributionssets (Kernel + Basissystem) | 112 | {Im folgenden werden die NetBSD Distributionssets (Kernel + Basissystem) | |
113 | auf eine vorbereitete Festplatte ausgepackt. Diese Prozedur lädt und entpackt | 113 | auf eine vorbereitete Festplatte ausgepackt. Diese Prozedur lädt und entpackt | |
114 | die Sets auf eine im Vorfeld partitionierte und bootfähige Festplatte aus. | 114 | die Sets auf eine im Vorfeld partitionierte und bootfähige Festplatte aus. | |
115 | Es werden weder Festplatten gelabelt, Bootblöcke aktualisiert noch bestehende | 115 | Es werden weder Festplatten gelabelt, Bootblöcke aktualisiert noch bestehende | |
116 | Konfigurationen gesichert. | 116 | Konfigurationen gesichert. | |
117 | 117 | |||
118 | Beenden Sie jetzt und wählen Sie dann 'Installation' oder 'Aktualisierung', | 118 | Beenden Sie jetzt und wählen Sie dann 'Installation' oder 'Aktualisierung', | |
119 | falls Ihre Festplatte nicht entsprechend vorbereitet ist oder Sie das System | 119 | falls Ihre Festplatte nicht entsprechend vorbereitet ist oder Sie das System | |
120 | neu installieren oder aber ein bestehendes aktualisieren möchten! | 120 | neu installieren oder aber ein bestehendes aktualisieren möchten! | |
121 | 121 | |||
122 | Wollen Sie die NetBSD Distributionssets wirklich erneut installieren? | 122 | Wollen 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 | |||
127 | message mount_failed | 127 | message mount_failed | |
128 | {Versuch, %s zu mounten ist fehlgeschlagen. Fortfahren? | 128 | {Versuch, %s zu mounten ist fehlgeschlagen. Fortfahren? | |
129 | } | 129 | } | |
130 | 130 | |||
131 | message nodisk | 131 | message nodisk | |
132 | {Ich kann keine für NetBSD nutzbaren Festplatten finden. | 132 | {Ich kann keine für NetBSD nutzbaren Festplatten finden. | |
133 | Zurück zum Hauptmenü... | 133 | Zurück zum Hauptmenü... | |
134 | } | 134 | } | |
135 | 135 | |||
136 | message onedisk | 136 | message 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 | |
138 | Sie NetBSD darauf %s möchten. | 138 | Sie NetBSD darauf %s möchten. | |
139 | } | 139 | } | |
140 | 140 | |||
141 | message ask_disk | 141 | message ask_disk | |
142 | {Auf welcher Festplatte möchten Sie NetBSD %s? } | 142 | {Auf welcher Festplatte möchten Sie NetBSD %s? } | |
143 | 143 | |||
144 | message Available_disks | 144 | message Available_disks | |
145 | {Verfügbare Festplatten} | 145 | {Verfügbare Festplatten} | |
146 | 146 | |||
147 | message heads | 147 | message heads | |
148 | {Köpfe} | 148 | {Köpfe} | |
149 | 149 | |||
150 | message sectors | 150 | message sectors | |
151 | {Sektoren} | 151 | {Sektoren} | |
152 | 152 | |||
153 | message fs_isize | 153 | message fs_isize | |
154 | {Durchschnittliche Dateigröße (in Bytes)} | 154 | {Durchschnittliche Dateigröße (in Bytes)} | |
155 | 155 | |||
156 | message mountpoint | 156 | message mountpoint | |
157 | {Mountpoint (oder 'kein(e)'))} | 157 | {Mountpoint (oder 'kein(e)'))} | |
158 | 158 | |||
159 | message cylname | 159 | message cylname | |
160 | {Zyl} | 160 | {Zyl} | |
161 | 161 | |||
162 | message secname | 162 | message secname | |
163 | {Sek} | 163 | {Sek} | |
164 | 164 | |||
165 | message megname | 165 | message megname | |
166 | {MB} | 166 | {MB} | |
167 | 167 | |||
168 | message layout | 168 | message 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 | |
170 | mehrere BSD Partitionen zu unterteilen. Sie müssen jetzt das BSD-Disklabel | 170 | mehrere BSD Partitionen zu unterteilen. Sie müssen jetzt das BSD-Disklabel | |
171 | erstellen. | 171 | erstellen. | |
172 | 172 | |||
173 | Sie können einen Texteditor verwenden, um die Größe der NetBSD- | 173 | Sie können einen Texteditor verwenden, um die Größe der NetBSD- | |
174 | Partitionen zu definieren oder aber die bestehenden Partitionen mit Größe | 174 | Partitionen zu definieren oder aber die bestehenden Partitionen mit Größe | |
175 | und Inhalt belassen. | 175 | und Inhalt belassen. | |
176 | 176 | |||
177 | Sie haben gleich die Möglichkeit, alle Felder des Disklabels zu verändern. | 177 | Sie haben gleich die Möglichkeit, alle Felder des Disklabels zu verändern. | |
178 | 178 | |||
179 | Der NetBSD-Teil Ihrer Festplatte ist %d Megabytes groß. | 179 | Der NetBSD-Teil Ihrer Festplatte ist %d Megabytes groß. | |
180 | Eine volle Installation benötigt mindestens %d Megabytes - ohne X11 (grafische | 180 | Eine volle Installation benötigt mindestens %d Megabytes - ohne X11 (grafische | |
181 | Oberfläche) - und %d Megabytes, wenn Sie X11 ebenfalls installieren. | 181 | Oberfläche) - und %d Megabytes, wenn Sie X11 ebenfalls installieren. | |
182 | } | 182 | } | |
183 | 183 | |||
184 | message Choose_your_size_specifier | 184 | message Choose_your_size_specifier | |
185 | {Wählen Sie Megabytes, so werden effektive Partitionsgrößen | 185 | {Wählen Sie Megabytes, so werden effektive Partitionsgrößen | |
186 | festgesetzt, die nahe Ihrer Größenangabe liegen - ausgerichtet | 186 | festgesetzt, die nahe Ihrer Größenangabe liegen - ausgerichtet | |
187 | nach Zylindergrenzen. Bei modernen ZBR Festplatten variieren die | 187 | nach Zylindergrenzen. Bei modernen ZBR Festplatten variieren die | |
188 | Zylindergrößen durchgehend, so daß kein großer Verlass auf die | 188 | Zylindergrößen durchgehend, so daß kein großer Verlass auf die | |
189 | genauen Grenzen der Zylinder besteht. Bei älteren Festplatten dagegen | 189 | genauen Grenzen der Zylinder besteht. Bei älteren Festplatten dagegen | |
190 | ist es am effizientesten, sich Partitionsgrößen auszusuchen, die exakt | 190 | ist es am effizientesten, sich Partitionsgrößen auszusuchen, die exakt | |
191 | ein Vielfaches der aktuellen Zylindergröße ausmachen. | 191 | ein Vielfaches der aktuellen Zylindergröße ausmachen. | |
192 | 192 | |||
193 | Wählen Sie Ihre Einheit.} | 193 | Wählen Sie Ihre Einheit.} | |
194 | 194 | |||
195 | message ptnsizes | 195 | message 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 | |
197 | wird der gesamte Speicherplatz der Rootpartition zugeordnet. Wenn Sie | 197 | wird der gesamte Speicherplatz der Rootpartition zugeordnet. Wenn Sie | |
198 | wollen, können Sie separate Partitionen definieren, z.B. /usr (zusätzliche | 198 | wollen, können Sie separate Partitionen definieren, z.B. /usr (zusätzliche | |
199 | Systemdateien), /var (Log- bzw. Protokolldateien und anderes) oder /home | 199 | Systemdateien), /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 | |||
202 | Verbleibender freier Speicherplatz wird der mit '+' markierten Partition | 202 | Verbleibender freier Speicherplatz wird der mit '+' markierten Partition | |
203 | hinzugefügt. | 203 | hinzugefügt. | |
204 | } | 204 | } | |
205 | 205 | |||
206 | message ptnheaders | 206 | message ptnheaders | |
207 | { | 207 | { | |
208 | MB Zylinder Sektoren Dateisystem | 208 | MB Zylinder Sektoren Dateisystem | |
209 | } | 209 | } | |
210 | 210 | |||
211 | message askfsmount | 211 | message askfsmount | |
212 | {Mount-Verzeichnis?} | 212 | {Mount-Verzeichnis?} | |
213 | 213 | |||
214 | message askfssize | 214 | message askfssize | |
215 | {Größe für %s in %s?} | 215 | {Größe für %s in %s?} | |
216 | 216 | |||
217 | message askunits | 217 | message askunits | |
218 | {Verändern der Größeneinheiten (Sektoren/Zylinder/MB)} | 218 | {Verändern der Größeneinheiten (Sektoren/Zylinder/MB)} | |
219 | 219 | |||
220 | message NetBSD_partition_cant_change | 220 | message NetBSD_partition_cant_change | |
221 | {NetBSD-Partition} | 221 | {NetBSD-Partition} | |
222 | 222 | |||
223 | message Whole_disk_cant_change | 223 | message Whole_disk_cant_change | |
224 | {Ganze Festplatte} | 224 | {Ganze Festplatte} | |
225 | 225 | |||
226 | message Boot_partition_cant_change | 226 | message Boot_partition_cant_change | |
227 | {Boot-Partition} | 227 | {Boot-Partition} | |
228 | 228 | |||
229 | message add_another_ptn | 229 | message add_another_ptn | |
230 | {Hinzufügen einer benutzerdefinierten Partition} | 230 | {Hinzufügen einer benutzerdefinierten Partition} | |
231 | 231 | |||
232 | message fssizesok | 232 | message fssizesok | |
233 | {Akzeptieren. Freier Speicherplatz: %d %s, %d freie Partitionen.} | 233 | {Akzeptieren. Freier Speicherplatz: %d %s, %d freie Partitionen.} | |
234 | 234 | |||
235 | message fssizesbad | 235 | message fssizesbad | |
236 | {Reduzieren der Partitionsgrößen um %d %s (%u Sektoren).} | 236 | {Reduzieren der Partitionsgrößen um %d %s (%u Sektoren).} | |
237 | 237 | |||
238 | message startoutsidedisk | 238 | message 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 | |
240 | Festplatte. | 240 | Festplatte. | |
241 | } | 241 | } | |
242 | 242 | |||
243 | message endoutsidedisk | 243 | message 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 | |
245 | Festplatte. | 245 | Festplatte. | |
246 | Die Größe Ihrer Partition wurde auf %d %s verringert. | 246 | Die Größe Ihrer Partition wurde auf %d %s verringert. | |
247 | 247 | |||
248 | Drücken Sie die Eingabetaste um fortzufahren. | 248 | Drücken Sie die Eingabetaste um fortzufahren. | |
249 | } | 249 | } | |
250 | 250 | |||
251 | message toobigdisklabel | 251 | message toobigdisklabel | |
252 | { | 252 | { | |
253 | Diese Platte ist zu groß für eine | 253 | Diese Platte ist zu groß für eine | |
254 | disklabel-Partitionstabelle und kann deswegen weder für | 254 | disklabel-Partitionstabelle und kann deswegen weder für | |
255 | boot- noch für root-Partitionen benutzt werden} | 255 | boot- noch für root-Partitionen benutzt werden} | |
256 | 256 | |||
257 | message fspart | 257 | message 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 | |||
263 | message fspart_header | 263 | message 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 | |||
268 | message fspart_row | 268 | message fspart_row | |
269 | {%9lu %9lu %10lu %-10s %-5s %-5s %s} | 269 | {%9lu %9lu %10lu %-10s %-5s %-5s %s} | |
270 | 270 | |||
271 | message show_all_unused_partitions | 271 | message show_all_unused_partitions | |
272 | {Alle unbenutzten Partitionen anzeigen} | 272 | {Alle unbenutzten Partitionen anzeigen} | |
273 | 273 | |||
274 | message partition_sizes_ok | 274 | message partition_sizes_ok | |
275 | {Partitionsgrößen OK} | 275 | {Partitionsgrößen OK} | |
276 | 276 | |||
277 | message edfspart | 277 | message 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. | |
279 | Wählen Sie das Feld, das Sie ändern möchten: | 279 | Wä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 | |||
285 | message fstype_fmt | 285 | message fstype_fmt | |
286 | {Dateisystemtyp: %9s} | 286 | {Dateisystemtyp: %9s} | |
287 | 287 | |||
288 | message start_fmt | 288 | message start_fmt | |
289 | { Start: %9u %8u%c %9u} | 289 | { Start: %9u %8u%c %9u} | |
290 | 290 | |||
291 | message size_fmt | 291 | message size_fmt | |
292 | { Größe: %9u %8u%c %9u} | 292 | { Größe: %9u %8u%c %9u} | |
293 | 293 | |||
294 | message end_fmt | 294 | message end_fmt | |
295 | { Ende: %9u %8u%c %9u} | 295 | { Ende: %9u %8u%c %9u} | |
296 | 296 | |||
297 | message bsize_fmt | 297 | message bsize_fmt | |
298 | { Blockgröße: %9d bytes} | 298 | { Blockgröße: %9d bytes} | |
299 | 299 | |||
300 | message fsize_fmt | 300 | message fsize_fmt | |
301 | {Fragmentgröße: %9d bytes} | 301 | {Fragmentgröße: %9d bytes} | |
302 | 302 | |||
303 | message isize_fmt | 303 | message isize_fmt | |
304 | { Durchschnittliche Dateigröße: %d Bytes (zur Inode-Bestimmung) } | 304 | { Durchschnittliche Dateigröße: %d Bytes (zur Inode-Bestimmung) } | |
305 | message isize_fmt_dflt | 305 | message isize_fmt_dflt | |
306 | { Durchschnittliche Dateigröße: 4 Fragmente} | 306 | { Durchschnittliche Dateigröße: 4 Fragmente} | |
307 | 307 | |||
308 | message newfs_fmt | 308 | message newfs_fmt | |
309 | {Neues Dateisystem (newfs): %8s} | 309 | {Neues Dateisystem (newfs): %8s} | |
310 | 310 | |||
311 | message mount_fmt | 311 | message mount_fmt | |
312 | { Mount: %9s} | 312 | { Mount: %9s} | |
313 | 313 | |||
314 | message mount_options_fmt | 314 | message mount_options_fmt | |
315 | { Mountoptionen: } | 315 | { Mountoptionen: } | |
316 | 316 | |||
317 | message mountpt_fmt | 317 | message mountpt_fmt | |
318 | { Mount-Verz.: %9s} | 318 | { Mount-Verz.: %9s} | |
319 | 319 | |||
320 | message toggle | 320 | message toggle | |
321 | {Wählen Sie} | 321 | {Wählen Sie} | |
322 | 322 | |||
323 | message restore | 323 | message restore | |
324 | {Ursprüngliche Werte wiederherstellen} | 324 | {Ursprüngliche Werte wiederherstellen} | |
325 | 325 | |||
326 | message Select_the_type | 326 | message Select_the_type | |
327 | {Wählen Sie den Dateisystemtyp aus} | 327 | {Wählen Sie den Dateisystemtyp aus} | |
328 | 328 | |||
329 | message other_types | 329 | message other_types | |
330 | {Andere Dateisystemtypen} | 330 | {Andere Dateisystemtypen} | |
331 | 331 | |||
332 | message label_size | 332 | message label_size | |
333 | {%s | 333 | {%s | |
334 | Spezielle Werte, die für die Größenangaben eingegeben werden können: | 334 | Spezielle 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 | |||
338 | Größe (%s)} | 338 | Größe (%s)} | |
339 | 339 | |||
340 | message label_offset | 340 | message label_offset | |
341 | {%s | 341 | {%s | |
342 | Spezielle Werte, die für den Start angegeben werden können: | 342 | Spezielle 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 | |||
346 | start (%s)} | 346 | start (%s)} | |
347 | 347 | |||
348 | message invalid_sector_number | 348 | message invalid_sector_number | |
349 | {Ungültige Sektornummer | 349 | {Ungültige Sektornummer | |
350 | } | 350 | } | |
351 | 351 | |||
352 | message Select_file_system_block_size | 352 | message 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 | |||
355 | message Select_file_system_fragment_size | 355 | message 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 | |||
358 | message packname | 358 | message packname | |
359 | {Bitte geben Sie Ihrer NetBSD-Festplatte einen Namen} | 359 | {Bitte geben Sie Ihrer NetBSD-Festplatte einen Namen} | |
360 | 360 | |||
361 | message lastchance | 361 | message 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 | |
363 | geschrieben. Dies ist Ihre letzte Chance, diesen Prozess abzubrechen. | 363 | geschrieben. Dies ist Ihre letzte Chance, diesen Prozess abzubrechen. | |
364 | 364 | |||
365 | Möchten Sie fortfahren? | 365 | Möchten Sie fortfahren? | |
366 | 366 | |||
367 | } | 367 | } | |
368 | 368 | |||
369 | message disksetupdone | 369 | message disksetupdone | |
370 | {Der erste Teil der Installation ist nun abgeschlossen. | 370 | {Der erste Teil der Installation ist nun abgeschlossen. | |
371 | Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und | 371 | Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und | |
372 | auf allen von Ihnen gewählten Partitionen ein Dateisystem initialisiert | 372 | auf allen von Ihnen gewählten Partitionen ein Dateisystem initialisiert | |
373 | und geprüft. | 373 | und geprüft. | |
374 | } | 374 | } | |
375 | 375 | |||
376 | message disksetupdoneupdate | 376 | message disksetupdoneupdate | |
377 | {Der erste Teil der Prozedur ist nun abgeschlossen. | 377 | {Der erste Teil der Prozedur ist nun abgeschlossen. | |
378 | Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und | 378 | Sysinst hat das von Ihnen gewählte Ziellaufwerk partitioniert und | |
379 | und alle gewählten Dateisysteme auf Fehler überprüft. | 379 | und alle gewählten Dateisysteme auf Fehler überprüft. | |
380 | } | 380 | } | |
381 | 381 | |||
382 | message openfail | 382 | message 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 | |||
387 | message mountfail | 387 | message 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 | |||
391 | message extractcomplete | 391 | message 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. | |
393 | Das System ist somit fähig, von der ausgewählten Partition zu starten. Um die | 393 | Das System ist somit fähig, von der ausgewählten Partition zu starten. Um die | |
394 | Installation zu vervollständigen, gibt Ihnen sysinst die Möglichkeit, eine | 394 | Installation zu vervollständigen, gibt Ihnen sysinst die Möglichkeit, eine | |
395 | grundlegende Konfiguration vorzunehmen. | 395 | grundlegende Konfiguration vorzunehmen. | |
396 | } | 396 | } | |
397 | 397 | |||
398 | message instcomplete | 398 | message instcomplete | |
399 | {Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Das System | 399 | {Die Installation von NetBSD-@@VERSION@@ ist jetzt fertiggestellt. Das System | |
400 | sollte von der Festplatte starten können. Beachten Sie die INSTALL-Anleitung, | 400 | sollte von der Festplatte starten können. Beachten Sie die INSTALL-Anleitung, | |
401 | um sich über die weitere Konfiguration zu informieren. | 401 | um sich über die weitere Konfiguration zu informieren. | |
402 | Auch die afterboot(8) Manpage ist weiterzuempfehlen; Sie enthält eine Liste | 402 | Auch die afterboot(8) Manpage ist weiterzuempfehlen; Sie enthält eine Liste | |
403 | mit Punkten, die nach dem ersten vollständigen Start geprüft werden sollten. | 403 | mit Punkten, die nach dem ersten vollständigen Start geprüft werden sollten. | |
404 | 404 | |||
405 | Zumindest aber sollten Sie die /etc/rc.conf entsprechend Ihren Bedürfnissen | 405 | Zumindest aber sollten Sie die /etc/rc.conf entsprechend Ihren Bedürfnissen | |
406 | konfigurieren. Werfen Sie einen Blick in /etc/defaults/rc.conf rein, wo Sie | 406 | konfigurieren. Werfen Sie einen Blick in /etc/defaults/rc.conf rein, wo Sie | |
407 | die Vorgaben für diese Datei finden. | 407 | die Vorgaben für diese Datei finden. | |
408 | } | 408 | } | |
409 | 409 | |||
410 | message upgrcomplete | 410 | message 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 | |
412 | nun die Anweisungen im INSTALL-Dokument beachten, damit Ihr System - | 412 | nun die Anweisungen im INSTALL-Dokument beachten, damit Ihr System - | |
413 | entsprechend Ihrer Situation - neu konfiguriert werden kann. | 413 | entsprechend Ihrer Situation - neu konfiguriert werden kann. | |
414 | Lesen Sie (erneut) die afterboot(8) Manpage, da diese seit Ihrer letzten | 414 | Lesen Sie (erneut) die afterboot(8) Manpage, da diese seit Ihrer letzten | |
415 | Aktualisierung bzw. Installation zusätzliche Angaben enthalten kann. | 415 | Aktualisierung bzw. Installation zusätzliche Angaben enthalten kann. | |
416 | 416 | |||
417 | Sie sollten wenigstens rc.conf ändern; dort gilt es rc_configured=NO auf | 417 | Sie sollten wenigstens rc.conf ändern; dort gilt es rc_configured=NO auf | |
418 | rc_configured=YES umzustellen, da das System sonst nur bis zum Single User | 418 | rc_configured=YES umzustellen, da das System sonst nur bis zum Single User | |
419 | Modus (Einbenutzermodus) startet. | 419 | Modus (Einbenutzermodus) startet. | |
420 | } | 420 | } | |
421 | 421 | |||
422 | 422 | |||
423 | message unpackcomplete | 423 | message 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 | |
425 | beendet. | 425 | beendet. | |
426 | Sie sollten nun die Anweisungen im INSTALL Dokument beachten, um | 426 | Sie sollten nun die Anweisungen im INSTALL Dokument beachten, um | |
427 | Ihr System Ihrer Konfiguration entsprechend einzurichten. Die afterboot(8) | 427 | Ihr System Ihrer Konfiguration entsprechend einzurichten. Die afterboot(8) | |
428 | Manpage kann ebenfalls nützlich sein. | 428 | Manpage kann ebenfalls nützlich sein. | |
429 | 429 | |||
430 | Zumindest müssen Sie die Datei rc.conf editieren, so daß die gewünschten | 430 | Zumindest müssen Sie die Datei rc.conf editieren, so daß die gewünschten | |
431 | Dienste gestartet werden. Vergessen Sie nicht, rc_configured=NO auf | 431 | Dienste gestartet werden. Vergessen Sie nicht, rc_configured=NO auf | |
432 | rc_configured=YES umzustellen. | 432 | rc_configured=YES umzustellen. | |
433 | } | 433 | } | |
434 | 434 | |||
435 | message distmedium | 435 | message 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 | |
437 | Distributionspakete. Wie im INSTALL-Dokument beschrieben, haben Sie nun | 437 | Distributionspakete. Wie im INSTALL-Dokument beschrieben, haben Sie nun | |
438 | mehrere Optionen. | 438 | mehrere Optionen. | |
439 | Für FTP oder NFS müssen Sie mit einem Netzwerk verbunden sein und | 439 | Für FTP oder NFS müssen Sie mit einem Netzwerk verbunden sein und | |
440 | Zugriff auf die entsprechenden Server haben. | 440 | Zugriff auf die entsprechenden Server haben. | |
441 | 441 | |||
442 | Insgesamt %d Pakete ausgewählt, %d installiert. Nächstes Set: %s. | 442 | Insgesamt %d Pakete ausgewählt, %d installiert. Nächstes Set: %s. | |
443 | 443 | |||
444 | } | 444 | } | |
445 | 445 | |||
446 | message distset | 446 | message distset | |
447 | {Die NetBSD Distribution ist in verschiedene Pakete (Sets) aufgeteilt. | 447 | {Die NetBSD Distribution ist in verschiedene Pakete (Sets) aufgeteilt. | |
448 | Es gibt einige grundlegende Pakete, die auf jeden Fall benötigt werden, | 448 | Es gibt einige grundlegende Pakete, die auf jeden Fall benötigt werden, | |
449 | sowie optionale. | 449 | sowie optionale. | |
450 | Es bleibt Ihnen überlassen, ein Basissystem (Minimale Installation) oder | 450 | Es bleibt Ihnen überlassen, ein Basissystem (Minimale Installation) oder | |
451 | alle Pakete (volle Installation) zu installieren bzw. einen benutzer- | 451 | alle Pakete (volle Installation) zu installieren bzw. einen benutzer- | |
452 | definierten Satz auszuwählen. | 452 | definierten Satz auszuwählen. | |
453 | } | 453 | } | |
454 | 454 | |||
455 | message ftpsource | 455 | message ftpsource | |
456 | {Dies sind die Daten zum Aufbau einer %s-Verbindung. | 456 | {Dies sind die Daten zum Aufbau einer %s-Verbindung. | |
457 | Falls der Benutzer "ftp" ist, benötigen Sie kein Passwort. | 457 | Falls der Benutzer "ftp" ist, benötigen Sie kein Passwort. | |
458 | 458 | |||
459 | } | 459 | } | |
460 | 460 | |||
461 | message email | 461 | message email | |
462 | {E-Mail-Adresse} | 462 | {E-Mail-Adresse} | |
463 | 463 | |||
464 | message dev | 464 | message dev | |
465 | {Laufwerk} | 465 | {Laufwerk} | |
466 | 466 | |||
467 | message nfssource | 467 | message 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 | |
469 | finden ist. | 469 | finden 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 | |||
474 | message floppysource | 474 | message floppysource | |
475 | {Geben Sie das Diskettenlaufwerk und das Transfer-Verzeichnis auf dem | 475 | {Geben Sie das Diskettenlaufwerk und das Transfer-Verzeichnis auf dem | |
476 | Zieldateisystem an. Das Installationspaket muß direkt im obersten | 476 | Zieldateisystem an. Das Installationspaket muß direkt im obersten | |
477 | Verzeichnis der Diskette liegen. | 477 | Verzeichnis der Diskette liegen. | |
478 | 478 | |||
479 | } | 479 | } | |
480 | 480 | |||
481 | message cdromsource | 481 | message 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 | |
483 | die Distribution zu finden ist. | 483 | die Distribution zu finden ist. | |
484 | (Das Verzeichnis muss .tgz Dateien enthalten.) | 484 | (Das Verzeichnis muss .tgz Dateien enthalten.) | |
485 | 485 | |||
486 | } | 486 | } | |
487 | 487 | |||
488 | message Available_cds | 488 | message Available_cds | |
489 | {Verfügbare CDs} | 489 | {Verfügbare CDs} | |
490 | 490 | |||
491 | message ask_cd | 491 | message 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 | |||
494 | message cd_path_not_found | 494 | message 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 | |
496 | prüfen Sie den Gerätenamen und Pfad der Installationsdateien.} | 496 | prüfen Sie den Gerätenamen und Pfad der Installationsdateien.} | |
497 | 497 | |||
498 | message localfssource | 498 | message 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 | |
500 | Verzeichnis an, in dem die Distribution zu finden ist. | 500 | Verzeichnis 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 | |||
505 | message localdir | 505 | message 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 | |
507 | die Distribution zu finden ist. | 507 | die Distribution zu finden ist. | |
508 | (Das Verzeichnis muss .tgz Dateien enthalten.) | 508 | (Das Verzeichnis muss .tgz Dateien enthalten.) | |
509 | 509 | |||
510 | } | 510 | } | |
511 | 511 | |||
512 | message filesys | 512 | message filesys | |
513 | {Dateisystem} | 513 | {Dateisystem} | |
514 | 514 | |||
515 | message nonet | 515 | message nonet | |
516 | {NetBSD hat keinen bekannten Netzwerkadapter gefunden. | 516 | {NetBSD hat keinen bekannten Netzwerkadapter gefunden. | |
517 | Zurück zum vorigen Menü. | 517 | Zurück zum vorigen Menü. | |
518 | } | 518 | } | |
519 | 519 | |||
520 | message netup | 520 | message netup | |
521 | {Die folgenden Netzwerkadapter sind verfügbar: %s | 521 | {Die folgenden Netzwerkadapter sind verfügbar: %s | |
522 | Hat einer davon Zugriff auf die benötigten Server?} | 522 | Hat einer davon Zugriff auf die benötigten Server?} | |
523 | 523 | |||
524 | message asknetdev | 524 | message asknetdev | |
525 | {Welchen Netzwerkadapter möchten Sie benutzen?} | 525 | {Welchen Netzwerkadapter möchten Sie benutzen?} | |
526 | 526 | |||
527 | message netdevs | 527 | message netdevs | |
528 | {Verfügbare schnittstellen} | 528 | {Verfügbare schnittstellen} | |
529 | 529 | |||
530 | message netinfo | 530 | message 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 | |||
535 | message net_domain | 535 | message net_domain | |
536 | {DNS-Domain} | 536 | {DNS-Domain} | |
537 | 537 | |||
538 | message net_host | 538 | message net_host | |
539 | {Hostname} | 539 | {Hostname} | |
540 | 540 | |||
541 | message net_ip | 541 | message net_ip | |
542 | {IPv4-Adresse} | 542 | {IPv4-Adresse} | |
543 | 543 | |||
544 | message net_srv_ip | 544 | message net_srv_ip | |
545 | {IPv4-Adressse des Servers} | 545 | {IPv4-Adressse des Servers} | |
546 | 546 | |||
547 | message net_mask | 547 | message net_mask | |
548 | {IPv4-Netzmaske} | 548 | {IPv4-Netzmaske} | |
549 | 549 | |||
550 | message net_namesrv | 550 | message net_namesrv | |
551 | {IPv4-Nameserver} | 551 | {IPv4-Nameserver} | |
552 | 552 | |||
553 | message net_defroute | 553 | message net_defroute | |
554 | {IPv4-Gateway} | 554 | {IPv4-Gateway} | |
555 | 555 | |||
556 | message net_media | 556 | message net_media | |
557 | {Art der Netzwerkverbindung} | 557 | {Art der Netzwerkverbindung} | |
558 | 558 | |||
559 | message netok | 559 | message netok | |
560 | {Nachfolgend sehen Sie die aktuellen Netzwerkeinstellungen. | 560 | {Nachfolgend sehen Sie die aktuellen Netzwerkeinstellungen. | |
561 | 561 | |||
562 | DNS-Domain: %s | 562 | DNS-Domain: %s | |
563 | Hostname: %s | 563 | Hostname: %s | |
564 | Nameserver: %s | 564 | Nameserver: %s | |
565 | Netzwerkadapter: %s | 565 | Netzwerkadapter: %s | |
566 | Verbindungstyp: %s | 566 | Verbindungstyp: %s | |
567 | IP-Adresse: %s | 567 | IP-Adresse: %s | |
568 | Netzmaske: %s | 568 | Netzmaske: %s | |
569 | IPv4-Gateway: %s | 569 | IPv4-Gateway: %s | |
570 | } | 570 | } | |
571 | 571 | |||
572 | message netok_slip | 572 | message 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 | |||
575 | DNS-Domain: %s | 575 | DNS-Domain: %s | |
576 | Hostname: %s | 576 | Hostname: %s | |
577 | Nameserver: %s | 577 | Nameserver: %s | |
578 | Netzwerkadapter: %s | 578 | Netzwerkadapter: %s | |
579 | Verbindungstyp: %s | 579 | Verbindungstyp: %s | |
580 | IP-Adresse: %s | 580 | IP-Adresse: %s | |
581 | IP-Adresse des Servers: %s | 581 | IP-Adresse des Servers: %s | |
582 | Netzmaske: %s | 582 | Netzmaske: %s | |
583 | IPv4-Gateway: %s | 583 | IPv4-Gateway: %s | |
584 | } | 584 | } | |
585 | 585 | |||
586 | message netokv6 | 586 | message netokv6 | |
587 | { | 587 | { | |
588 | IPv6-Autokonfiguration: %s | 588 | IPv6-Autokonfiguration: %s | |
589 | } | 589 | } | |
590 | 590 | |||
591 | message netok_ok | 591 | message netok_ok | |
592 | {Sind diese OK?} | 592 | {Sind diese OK?} | |
593 | 593 | |||
594 | message slattach { | 594 | message slattach { | |
595 | Flags für slattach | 595 | Flags für slattach | |
596 | } | 596 | } | |
597 | 597 | |||
598 | message wait_network | 598 | message wait_network | |
599 | { | 599 | { | |
600 | Bitte warten Sie, während die Netzwerkgeräte initialisiert werden. | 600 | Bitte warten Sie, während die Netzwerkgeräte initialisiert werden. | |
601 | } | 601 | } | |
602 | 602 | |||
603 | message resolv | 603 | message resolv | |
604 | {Konnte /etc/resolv.conf nicht erstellen. Installation abgebrochen. | 604 | {Konnte /etc/resolv.conf nicht erstellen. Installation abgebrochen. | |
605 | } | 605 | } | |
606 | 606 | |||
607 | message realdir | 607 | message 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 | |||
611 | message delete_xfer_file | 611 | message delete_xfer_file | |
612 | {Nach der Installation löschen} | 612 | {Nach der Installation löschen} | |
613 | 613 | |||
614 | message notarfile | 614 | message notarfile | |
615 | {Das Release-Paket %s existiert nicht.} | 615 | {Das Release-Paket %s existiert nicht.} | |
616 | 616 | |||
617 | message endtarok | 617 | message endtarok | |
618 | {Alle Distributionspakete wurden erfolgreich entpackt.} | 618 | {Alle Distributionspakete wurden erfolgreich entpackt.} | |
619 | 619 | |||
620 | message endtar | 620 | message endtar | |
621 | {Beim Entpacken der Distributionspakete sind Probleme aufgetreten. | 621 | {Beim Entpacken der Distributionspakete sind Probleme aufgetreten. | |
622 | Ihre Installation ist daher unvollständig. | 622 | Ihre Installation ist daher unvollständig. | |
623 | 623 | |||
624 | Sie haben %d Distributionssets ausgewählt. %d davon wurden nicht | 624 | Sie haben %d Distributionssets ausgewählt. %d davon wurden nicht | |
625 | gefunden und %d wegen eines Fehlers übersprungen. | 625 | gefunden und %d wegen eines Fehlers übersprungen. | |
626 | Von %d zu entpackenden Paketen sind %d erfolgreich und %d | 626 | Von %d zu entpackenden Paketen sind %d erfolgreich und %d | |
627 | mit Fehler entpackt worden. | 627 | mit Fehler entpackt worden. | |
628 | 628 | |||
629 | Die Installation wird abgebrochen. Bitte prüfen Sie die Bezugsquellen Ihrer | 629 | Die Installation wird abgebrochen. Bitte prüfen Sie die Bezugsquellen Ihrer | |
630 | Distribution und installieren Sie gegebenfalls die Pakete erneut.} | 630 | Distribution und installieren Sie gegebenfalls die Pakete erneut.} | |
631 | 631 | |||
632 | message abort | 632 | message 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 | |||
636 | message abortinst | 636 | message 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. | |
638 | Installation abgebrochen. | 638 | Installation abgebrochen. | |
639 | } | 639 | } | |
640 | 640 | |||
641 | message abortupgr | 641 | message 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. | |
643 | Aktualisierung abgebrochen. | 643 | Aktualisierung abgebrochen. | |
644 | } | 644 | } | |
645 | 645 | |||
646 | message abortunpack | 646 | message 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 | |
648 | entweder manuell fortfahren oder eine andere Bezugsquelle für die Release- | 648 | entweder manuell fortfahren oder eine andere Bezugsquelle für die Release- | |
649 | Pakete angeben und es erneut versuchen. | 649 | Pakete angeben und es erneut versuchen. | |
650 | } | 650 | } | |
651 | 651 | |||
652 | message createfstab | 652 | message 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 | |
654 | werden. Der Vorgang wird abgebrochen. | 654 | werden. Der Vorgang wird abgebrochen. | |
655 | } | 655 | } | |
656 | 656 | |||
657 | 657 | |||
658 | message noetcfstab | 658 | message 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 | |
660 | werden. Die Aktualisierung wird abgebrochen. | 660 | werden. Die Aktualisierung wird abgebrochen. | |
661 | } | 661 | } | |
662 | 662 | |||
663 | message badetcfstab | 663 | message 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 | |
665 | Aktualisierung wird abgebrochen. | 665 | Aktualisierung wird abgebrochen. | |
666 | } | 666 | } | |
667 | 667 | |||
668 | message X_oldexists | 668 | message 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 | |
670 | gesichert werden, da eine Datei mit diesem Namen bereits existiert. | 670 | gesichert werden, da eine Datei mit diesem Namen bereits existiert. | |
671 | Bitte korrigieren Sie dies, bevor Sie fortfahren. | 671 | Bitte korrigieren Sie dies, bevor Sie fortfahren. | |
672 | 672 | |||
673 | Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten, | 673 | Eine Möglichkeit ist es, im Extras-Menü eine Shell zu starten, | |
674 | wodurch Sie %s/bin/X.old überprüfen können. Gehört diese Datei zu | 674 | wodurch Sie %s/bin/X.old überprüfen können. Gehört diese Datei zu | |
675 | einer früheren Aktualisierung, so können Sie diese mit rm -f | 675 | einer 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. | |
677 | Gehört die Datei %s/bin/X.old aber zu einer aktuellen, | 677 | Gehört die Datei %s/bin/X.old aber zu einer aktuellen, | |
678 | abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit | 678 | abgebrochenen Aktualisierung, so können Sie die Datei %s/bin/X mit | |
679 | mv %s/bin/X.old %s/bin/X wieder herstellen und die | 679 | mv %s/bin/X.old %s/bin/X wieder herstellen und die | |
680 | unvollständige Aktualisierung fortsetzen. %0s%0s%0s | 680 | unvollständige Aktualisierung fortsetzen. %0s%0s%0s | |
681 | 681 | |||
682 | Aktualisierung wird abgebrochen.} | 682 | Aktualisierung wird abgebrochen.} | |
683 | 683 | |||
684 | message netnotup | 684 | message netnotup | |
685 | {Beim Testen des Netzwerks ist ein Problem aufgetreten. Entweder Ihr | 685 | {Beim Testen des Netzwerks ist ein Problem aufgetreten. Entweder Ihr | |
686 | Gateway oder Ihr Nameserver hat nicht auf "ping" reagiert. Wollen Sie Ihre | 686 | Gateway oder Ihr Nameserver hat nicht auf "ping" reagiert. Wollen Sie Ihre | |
687 | Netzwerkkonfiguration überarbeiten? | 687 | Netzwerkkonfiguration ü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 | |||
692 | message netnotup_continueanyway | 692 | message 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 | |
694 | später um das Netzwerk kümmern. ("Nein" bricht die Installation ab.) | 694 | später um das Netzwerk kümmern. ("Nein" bricht die Installation ab.) | |
695 | } | 695 | } | |
696 | 696 | |||
697 | message makedev | 697 | message makedev | |
698 | {Erstelle Gerätedateien in /dev ... | 698 | {Erstelle Gerätedateien in /dev ... | |
699 | } | 699 | } | |
700 | 700 | |||
701 | message badfs | 701 | message 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, | |
703 | die Prüfung des Dateisystems (fsck) ist fehlgeschlagen (Fehler %d). | 703 | die Prüfung des Dateisystems (fsck) ist fehlgeschlagen (Fehler %d). | |
704 | 704 | |||
705 | Die Aktualisierung trotzdem fortsetzen? | 705 | Die Aktualisierung trotzdem fortsetzen? | |
706 | } | 706 | } | |
707 | 707 | |||
708 | message rootmissing | 708 | message rootmissing | |
709 | {Das Zielverzeichnis %s existiert nicht. | 709 | {Das Zielverzeichnis %s existiert nicht. | |
710 | } | 710 | } | |
711 | 711 | |||
712 | message badroot | 712 | message badroot | |
713 | {Das neu installierte root Dateisystem scheint unvollständig zu sein. | 713 | {Das neu installierte root Dateisystem scheint unvollständig zu sein. | |
714 | Sind Sie sicher, dass Sie alle benötigten Sets installiert haben? | 714 | Sind Sie sicher, dass Sie alle benötigten Sets installiert haben? | |
715 | } | 715 | } | |
716 | 716 | |||
717 | message fd_type | 717 | message fd_type | |
718 | {Floppy Dateisystem-Typ} | 718 | {Floppy Dateisystem-Typ} | |
719 | 719 | |||
720 | message fdnotfound | 720 | message fdnotfound | |
721 | {Ich konnte die Datei nicht finden. | 721 | {Ich konnte die Datei nicht finden. | |
722 | } | 722 | } | |
723 | 723 | |||
724 | message fdremount | 724 | message fdremount | |
725 | {Die Diskette konnte nicht gemountet werden. | 725 | {Die Diskette konnte nicht gemountet werden. | |
726 | } | 726 | } | |
727 | 727 | |||
728 | message fdmount | 728 | message 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 | |||
731 | Falls das Paket keine weiteren Disketten enthält, wählen Sie | 731 | Falls 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 | |
734 | zurückzukehren. | 734 | zurückzukehren. | |
735 | } | 735 | } | |
736 | 736 | |||
737 | .if 0 | 737 | .if 0 | |
738 | message fdmount | 738 | message 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 | |||
741 | message fdnotfound | 741 | message 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 | |
743 | Diskette ein. | 743 | Diskette ein. | |
744 | Wenn dies die letzte Diskette des Paketes war, wählen Sie "Paket fertig", | 744 | Wenn dies die letzte Diskette des Paketes war, wählen Sie "Paket fertig", | |
745 | um zum nächsten Paket überzugehen - falls ein weiteres Paket folgt.} | 745 | um zum nächsten Paket überzugehen - falls ein weiteres Paket folgt.} | |
746 | 746 | |||
747 | message fdremount | 747 | message fdremount | |
748 | {Die Diskette konnte nicht gemountet werden. | 748 | {Die Diskette konnte nicht gemountet werden. | |
749 | 749 | |||
750 | Sie sollten: | 750 | Sie sollten: | |
751 | 751 | |||
752 | Erneut probieren, die Diskette mit der Datei "%s.%s" einzulegen. | 752 | Erneut probieren, die Diskette mit der Datei "%s.%s" einzulegen. | |
753 | 753 | |||
754 | Keine weiteren Disketten für dieses Paket laden, und stattdessen mit dem | 754 | Keine weiteren Disketten für dieses Paket laden, und stattdessen mit dem | |
755 | nächsten Paket fortfahren - falls ein weiteres existiert. | 755 | nächsten Paket fortfahren - falls ein weiteres existiert. | |
756 | 756 | |||
757 | Keine weiteren Pakete mehr vom dem Diskettenlaufwerk laden und die Installation | 757 | Keine weiteren Pakete mehr vom dem Diskettenlaufwerk laden und die Installation | |
758 | abbrechen. | 758 | abbrechen. | |
759 | } | 759 | } | |
760 | .endif | 760 | .endif | |
761 | 761 | |||
762 | message mntnetconfig | 762 | message mntnetconfig | |
763 | {Möchten Sie die aktuellen Netzwerkeinstellungen für den allgemeinen | 763 | {Möchten Sie die aktuellen Netzwerkeinstellungen für den allgemeinen | |
764 | Gebrauch in /etc speichern?} | 764 | Gebrauch in /etc speichern?} | |
765 | 765 | |||
766 | message cur_distsets | 766 | message cur_distsets | |
767 | {Die folgenden Distributionspakete werden verwendet: | 767 | {Die folgenden Distributionspakete werden verwendet: | |
768 | 768 | |||
769 | } | 769 | } | |
770 | 770 | |||
771 | message cur_distsets_header | 771 | message cur_distsets_header | |
772 | { Distributionspaket Ausgewählt | 772 | { Distributionspaket Ausgewählt | |
773 | ------------------------ ---------- | 773 | ------------------------ ---------- | |
774 | } | 774 | } | |
775 | 775 | |||
776 | message set_base | 776 | message set_base | |
777 | {Basispaket} | 777 | {Basispaket} | |
778 | 778 | |||
779 | message set_system | 779 | message set_system | |
780 | {Systemkonfiguration (/etc)} | 780 | {Systemkonfiguration (/etc)} | |
781 | 781 | |||
782 | message set_compiler | 782 | message set_compiler | |
783 | {Compiler} | 783 | {Compiler} | |
784 | 784 | |||
785 | message set_games | 785 | message set_games | |
786 | {Spiele} | 786 | {Spiele} | |
787 | 787 | |||
788 | message set_man_pages | 788 | message set_man_pages | |
789 | {Handbuchseiten (man pages)} | 789 | {Handbuchseiten (man pages)} | |
790 | 790 | |||
791 | message set_misc | 791 | message set_misc | |
792 | {Verschiedenes} | 792 | {Verschiedenes} | |
793 | 793 | |||
794 | message set_modules | 794 | message set_modules | |
795 | {Kernel Modules} | 795 | {Kernel Modules} | |
796 | 796 | |||
797 | message set_tests | 797 | message set_tests | |
798 | {Testprogramme} | 798 | {Testprogramme} | |
799 | 799 | |||
800 | message set_text_tools | 800 | message set_text_tools | |
801 | {Textbearbeitung} | 801 | {Textbearbeitung} | |
802 | 802 | |||
803 | message set_X11 | 803 | message set_X11 | |
804 | {X11 Sets} | 804 | {X11 Sets} | |
805 | 805 | |||
806 | message set_X11_base | 806 | message set_X11_base | |
807 | {X11 Basis und Clients} | 807 | {X11 Basis und Clients} | |
808 | 808 | |||
809 | message set_X11_etc | 809 | message set_X11_etc | |
810 | {X11 Konfiguration} | 810 | {X11 Konfiguration} | |
811 | 811 | |||
812 | message set_X11_fonts | 812 | message set_X11_fonts | |
813 | {X11 Schriftarten} | 813 | {X11 Schriftarten} | |
814 | 814 | |||
815 | message set_X11_servers | 815 | message set_X11_servers | |
816 | {X11 Server} | 816 | {X11 Server} | |
817 | 817 | |||
818 | message set_X11_prog | 818 | message set_X11_prog | |
819 | {X11 Programmierung} | 819 | {X11 Programmierung} | |
820 | 820 | |||
821 | message set_source | 821 | message set_source | |
822 | {Quelltexte und Debug-Info} | 822 | {Quelltexte und Debug-Info} | |
823 | 823 | |||
824 | message set_syssrc | 824 | message set_syssrc | |
825 | {Kernel Quelltexte} | 825 | {Kernel Quelltexte} | |
826 | 826 | |||
827 | message set_src | 827 | message set_src | |
828 | {Basissystem Quelltexte} | 828 | {Basissystem Quelltexte} | |
829 | 829 | |||
830 | message set_sharesrc | 830 | message set_sharesrc | |
831 | {Share Quelltexte} | 831 | {Share Quelltexte} | |
832 | 832 | |||
833 | message set_gnusrc | 833 | message set_gnusrc | |
834 | {GNU Quelltexte} | 834 | {GNU Quelltexte} | |
835 | 835 | |||
836 | message set_xsrc | 836 | message set_xsrc | |
837 | {X11 Quelltexte} | 837 | {X11 Quelltexte} | |
838 | 838 | |||
839 | message set_debug | 839 | message set_debug | |
840 | {Debug-Information} | 840 | {Debug-Information} | |
841 | 841 | |||
842 | message set_xdebug | 842 | message set_xdebug | |
843 | {X11 Debug-Information} | 843 | {X11 Debug-Information} | |
844 | 844 | |||
845 | message cur_distsets_row | 845 | message cur_distsets_row | |
846 | {%-27s %3s} | 846 | {%-27s %3s} | |
847 | 847 | |||
848 | message select_all | 848 | message select_all | |
849 | {Alle oben angezeigten Pakete auswählen} | 849 | {Alle oben angezeigten Pakete auswählen} | |
850 | 850 | |||
851 | message select_none | 851 | message select_none | |
852 | {Kein Paket wählen} | 852 | {Kein Paket wählen} | |
853 | 853 | |||
854 | message install_selected_sets | 854 | message install_selected_sets | |
855 | {Installieren der ausgewählten Pakete} | 855 | {Installieren der ausgewählten Pakete} | |
856 | 856 | |||
857 | message tarerror | 857 | message 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 | |
859 | nicht alle Dateien korrekt extrahiert wurden und Ihr System somit nicht | 859 | nicht alle Dateien korrekt extrahiert wurden und Ihr System somit nicht | |
860 | vollständig sein wird. | 860 | vollständig sein wird. | |
861 | 861 | |||
862 | Möchten Sie mit dem Extrahieren der Pakete fortfahren?} | 862 | Möchten Sie mit dem Extrahieren der Pakete fortfahren?} | |
863 | 863 | |||
864 | message must_be_one_root | 864 | message 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 | |||
867 | message partitions_overlap | 867 | message partitions_overlap | |
868 | {Die Partitionen %c und %c überlappen sich.} | 868 | {Die Partitionen %c und %c überlappen sich.} | |
869 | 869 | |||
870 | message No_Bootcode | 870 | message No_Bootcode | |
871 | {Kein Bootcode für die Rootpartition vorhanden} | 871 | {Kein Bootcode für die Rootpartition vorhanden} | |
872 | 872 | |||
873 | message cannot_ufs2_root | 873 | message 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, | |
875 | daher kann das Root-Dateisystem nicht im FFSv2 Format angelegt werden.} | 875 | daher kann das Root-Dateisystem nicht im FFSv2 Format angelegt werden.} | |
876 | 876 | |||
877 | message edit_partitions_again | 877 | message edit_partitions_again | |
878 | { | 878 | { | |
879 | 879 | |||
880 | Sie können entweder die Partitionstabelle noch einmal editieren oder aber zum | 880 | Sie können entweder die Partitionstabelle noch einmal editieren oder aber zum | |
881 | Hauptmenü zurückkehren. | 881 | Hauptmenü zurückkehren. | |
882 | 882 | |||
883 | Wollen Sie die Partitionstabelle erneut editieren?} | 883 | Wollen Sie die Partitionstabelle erneut editieren?} | |
884 | 884 | |||
885 | 885 | |||
886 | message config_open_error | 886 | message config_open_error | |
887 | {Konnte Konfigurationsdatei %s nicht öffnen.\n} | 887 | {Konnte Konfigurationsdatei %s nicht öffnen.\n} | |
888 | 888 | |||
889 | message choose_timezone | 889 | message 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. | |
891 | Drücken Sie die Eingabetaste, um einen Eintrag anzuwählen. Betätigen Sie danach | 891 | Drücken Sie die Eingabetaste, um einen Eintrag anzuwählen. Betätigen Sie danach | |
892 | die Taste 'x' gefolgt von der Eingabetaste, um das Menü zu verlassen. | 892 | die 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 | |||
899 | message tz_back | 899 | message tz_back | |
900 | { Zurück zum Zeitzonenmenü.} | 900 | { Zurück zum Zeitzonenmenü.} | |
901 | 901 | |||
902 | message swapactive | 902 | message 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 | |
904 | gegenwärtig auch benutzt wird. | 904 | gegenwärtig auch benutzt wird. | |
905 | Da Sie dabei sind, dieses Laufwerk erneut zu partitionieren, wird diese | 905 | Da Sie dabei sind, dieses Laufwerk erneut zu partitionieren, wird diese | |
906 | Swappartition jetzt deaktiviert, weshalb eventuell Speicherprobleme auftreten | 906 | Swappartition jetzt deaktiviert, weshalb eventuell Speicherprobleme auftreten | |
907 | können. Sollte solch ein Fehler auftreten, starten Sie bitte Ihr System neu und | 907 | können. Sollte solch ein Fehler auftreten, starten Sie bitte Ihr System neu und | |
908 | probieren es erneut.} | 908 | probieren es erneut.} | |
909 | 909 | |||
910 | message swapdelfailed | 910 | message 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 | |
912 | von NetBSD ausgewählt haben, zu deaktivieren, ist ein Fehler | 912 | von NetBSD ausgewählt haben, zu deaktivieren, ist ein Fehler | |
913 | aufgetreten. Bitte starten Sie das System neu.} | 913 | aufgetreten. Bitte starten Sie das System neu.} | |
914 | 914 | |||
915 | message rootpw | 915 | message 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 | |
917 | und ist somit leer. Möchten Sie jetzt ein Rootpasswort für das System setzen?} | 917 | und ist somit leer. Möchten Sie jetzt ein Rootpasswort für das System setzen?} | |
918 | 918 | |||
919 | message rootsh | 919 | message 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. | |
921 | Die Vorgabe dafür ist /bin/sh, aber vielleicht bevorzugen Sie eine andere | 921 | Die Vorgabe dafür ist /bin/sh, aber vielleicht bevorzugen Sie eine andere | |
922 | Shell.} | 922 | Shell.} | |
923 | 923 | |||
924 | message no_root_fs | 924 | message no_root_fs | |
925 | { | 925 | { | |
926 | Für kein Dateisystem ist '/' als Mountverzeichnis gewählt. Sie müssen ein | 926 | Für kein Dateisystem ist '/' als Mountverzeichnis gewählt. Sie müssen ein | |
927 | Dateisystem als '/' konfigurieren. | 927 | Dateisystem als '/' konfigurieren. | |
928 | 928 | |||
929 | Drücken Sie die Eingabetaste um fortzufahren. | 929 | Drücken Sie die Eingabetaste um fortzufahren. | |
930 | } | 930 | } | |
931 | 931 | |||
932 | message Pick_an_option {Wählen Sie eine an- oder abzuschaltende Option.} | 932 | message Pick_an_option {Wählen Sie eine an- oder abzuschaltende Option.} | |
933 | message Scripting {Skripting} | 933 | message Scripting {Skripting} | |
934 | message Logging {Logging} | 934 | message Logging {Logging} | |
935 | 935 | |||
936 | message Status { Status: } | 936 | message Status { Status: } | |
937 | message Command {Kommando: } | 937 | message Command {Kommando: } | |
938 | message Running {ausführen} | 938 | message Running {ausführen} | |
939 | message Finished {fertig} | 939 | message Finished {fertig} | |
940 | message Command_failed {fehlgeschlagen} | 940 | message Command_failed {fehlgeschlagen} | |
941 | message Command_ended_on_signal {abgebrochen} | 941 | message Command_ended_on_signal {abgebrochen} | |
942 | 942 | |||
943 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Installationsprogramm} | 943 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Installationsprogramm} | |
944 | message Exit_Install_System {Installationsprogramm beenden} | 944 | message Exit_Install_System {Installationsprogramm beenden} | |
945 | message Install_NetBSD_to_hard_disk {NetBSD auf die Festplatte installieren} | 945 | message Install_NetBSD_to_hard_disk {NetBSD auf die Festplatte installieren} | |
946 | message Upgrade_NetBSD_on_a_hard_disk {Aktualisierung einer bestehenden NetBSD-Installation} | 946 | message Upgrade_NetBSD_on_a_hard_disk {Aktualisierung einer bestehenden NetBSD-Installation} | |
947 | message Re_install_sets_or_install_additional_sets {Erneute Installation oder zusätzliche Pakete installieren} | 947 | message Re_install_sets_or_install_additional_sets {Erneute Installation oder zusätzliche Pakete installieren} | |
948 | message Reboot_the_computer {Computer neu starten} | 948 | message Reboot_the_computer {Computer neu starten} | |
949 | message Utility_menu {Extras} | 949 | message Utility_menu {Extras} | |
950 | message Config_menu {Konfigurationsmenü} | 950 | message Config_menu {Konfigurationsmenü} | |
951 | message exit_utility_menu {Zurück zum Hauptmenü} | 951 | message exit_utility_menu {Zurück zum Hauptmenü} | |
952 | message exit_menu_generic {Zurück} | 952 | message exit_menu_generic {Zurück} | |
953 | message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Extras} | 953 | message NetBSD_VERSION_Utilities {NetBSD-@@VERSION@@ Extras} | |
954 | message Run_bin_sh {Ausführen von /bin/sh} | 954 | message Run_bin_sh {Ausführen von /bin/sh} | |
955 | message Set_timezone {Setzen der Zeitzone} | 955 | message Set_timezone {Setzen der Zeitzone} | |
956 | message Configure_network {Netzwerkkonfiguration} | 956 | message Configure_network {Netzwerkkonfiguration} | |
957 | message Partition_a_disk {Partitionieren eines Laufwerks} | 957 | message Partition_a_disk {Partitionieren eines Laufwerks} | |
958 | message Logging_functions {Protokollierungsfunktionen (Logging)} | 958 | message Logging_functions {Protokollierungsfunktionen (Logging)} | |
959 | message Halt_the_system {System herunterfahren} | 959 | message Halt_the_system {System herunterfahren} | |
960 | message yes_or_no {Ja oder Nein?} | 960 | message yes_or_no {Ja oder Nein?} | |
961 | message Hit_enter_to_continue {Drücken Sie die Eingabetaste um fortzufahren.} | 961 | message Hit_enter_to_continue {Drücken Sie die Eingabetaste um fortzufahren.} | |
962 | message Choose_your_installation {Wählen Sie Ihre Installation} | 962 | message Choose_your_installation {Wählen Sie Ihre Installation} | |
963 | message Set_Sizes {Größen der NetBSD-Partitionen festlegen} | 963 | message Set_Sizes {Größen der NetBSD-Partitionen festlegen} | |
964 | message Use_Existing {Bereits bestehende Partitionsgrößen beibehalten} | 964 | message Use_Existing {Bereits bestehende Partitionsgrößen beibehalten} | |
965 | message Megabytes {Megabytes} | 965 | message Megabytes {Megabytes} | |
966 | message Cylinders {Zylinder} | 966 | message Cylinders {Zylinder} | |
967 | message Sectors {Sektoren} | 967 | message Sectors {Sektoren} | |
968 | message Select_medium {Medium auswählen} | 968 | message Select_medium {Medium auswählen} | |
969 | message ftp {FTP} | 969 | message ftp {FTP} | |
970 | message http {HTTP} | 970 | message http {HTTP} | |
971 | message nfs {NFS} | 971 | message nfs {NFS} | |
972 | .if HAVE_INSTALL_IMAGE | 972 | .if HAVE_INSTALL_IMAGE | |
973 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | 973 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | |
974 | .else | 974 | .else | |
975 | message cdrom {CD-ROM / DVD} | 975 | message cdrom {CD-ROM / DVD} | |
976 | .endif | 976 | .endif | |
977 | message floppy {Diskette} | 977 | message floppy {Diskette} | |
978 | message local_fs {Ungemountetes Dateisysytem} | 978 | message local_fs {Ungemountetes Dateisysytem} | |
979 | message local_dir {Lokales Verzeichnis} | 979 | message local_dir {Lokales Verzeichnis} | |
980 | message Select_your_distribution {Wählen Sie Ihre Pakete} | 980 | message Select_your_distribution {Wählen Sie Ihre Pakete} | |
981 | message Full_installation {Volle Installation} | 981 | message Full_installation {Volle Installation} | |
982 | message Full_installation_nox {Grundinstallation ohne X11} | 982 | message Full_installation_nox {Grundinstallation ohne X11} | |
983 | message Minimal_installation {Minimale Installation} | 983 | message Minimal_installation {Minimale Installation} | |
984 | message Custom_installation {Benutzerdefinierte Installation} | 984 | message Custom_installation {Benutzerdefinierte Installation} | |
985 | message hidden {** versteckt **} | 985 | message hidden {** versteckt **} | |
986 | message Host {Host} | 986 | message Host {Host} | |
987 | message Base_dir {Basispfad} | 987 | message Base_dir {Basispfad} | |
988 | message Set_dir_bin {Binärpaket-Verzeichnis} | 988 | message Set_dir_bin {Binärpaket-Verzeichnis} | |
989 | message Set_dir_src {Quelltext-Verzeichnis} | 989 | message Set_dir_src {Quelltext-Verzeichnis} | |
990 | message Xfer_dir {Zwischenspeicher} | 990 | message Xfer_dir {Zwischenspeicher} | |
991 | message User {Benutzer} | 991 | message User {Benutzer} | |
992 | message Password {Passwort} | 992 | message Password {Passwort} | |
993 | message Proxy {Proxy} | 993 | message Proxy {Proxy} | |
994 | message Get_Distribution {Distribution herunterladen} | 994 | message Get_Distribution {Distribution herunterladen} | |
995 | message Continue {Weiter} | 995 | message Continue {Weiter} | |
996 | message What_do_you_want_to_do {Was möchten Sie tun?} | 996 | message What_do_you_want_to_do {Was möchten Sie tun?} | |
997 | message Try_again {Versuchen Sie es erneut} | 997 | message Try_again {Versuchen Sie es erneut} | |
998 | message Set_finished {Paket fertig} | 998 | message Set_finished {Paket fertig} | |
999 | message Skip_set {Paket überspringen} | 999 | message Skip_set {Paket überspringen} | |
1000 | message Skip_group {Paketgruppe überspringen} | 1000 | message Skip_group {Paketgruppe überspringen} | |
1001 | message Abandon {Installation abbrechen} | 1001 | message Abandon {Installation abbrechen} | |
1002 | message Abort_fetch {Holen abbrechen} | 1002 | message Abort_fetch {Holen abbrechen} | |
1003 | message Device {Gerät} | 1003 | message Device {Gerät} | |
1004 | message File_system {Dateisystem} | 1004 | message File_system {Dateisystem} | |
1005 | message Select_DNS_server { Auswählen eines DNS Servers} | 1005 | message Select_DNS_server { Auswählen eines DNS Servers} | |
1006 | message other {andere } | 1006 | message other {andere } | |
1007 | message Perform_autoconfiguration {Führen Sie die automatische Konfiguration?} | 1007 | message Perform_autoconfiguration {Führen Sie die automatische Konfiguration?} | |
1008 | message Root_shell {Root-Shell} | 1008 | message Root_shell {Root-Shell} | |
1009 | message User_shell {User-Shell} | 1009 | message User_shell {User-Shell} | |
1010 | message Color_scheme {Farbschema} | 1010 | message Color_scheme {Farbschema} | |
1011 | message White_on_black {Weiß auf schwarz} | 1011 | message White_on_black {Weiß auf schwarz} | |
1012 | message Black_on_white {Schwarz auf weiß} | 1012 | message Black_on_white {Schwarz auf weiß} | |
1013 | message White_on_blue {Weiß auf Blau} | 1013 | message White_on_blue {Weiß auf Blau} | |
1014 | message Green_on_black {Grün auf schwarz} | 1014 | message Green_on_black {Grün auf schwarz} | |
1015 | 1015 | |||
1016 | .if AOUT2ELF | 1016 | .if AOUT2ELF | |
1017 | message aoutfail | 1017 | message aoutfail | |
1018 | {Das Verzeichnis, in das die alten a.out-Bibliotheken gesichert | 1018 | {Das Verzeichnis, in das die alten a.out-Bibliotheken gesichert | |
1019 | werden sollten, konnte nicht erstellt werden. Bitte starten Sie | 1019 | werden sollten, konnte nicht erstellt werden. Bitte starten Sie | |
1020 | die Aktualisierung erneut und stellen Sie sicher, dass alle Dateisysteme | 1020 | die Aktualisierung erneut und stellen Sie sicher, dass alle Dateisysteme | |
1021 | gemountet sind.} | 1021 | gemountet sind.} | |
1022 | 1022 | |||
1023 | message emulbackup | 1023 | message emulbackup | |
1024 | {Eins der Verzeichnisse /emul/aout oder /emul war ein symbolischer | 1024 | {Eins der Verzeichnisse /emul/aout oder /emul war ein symbolischer | |
1025 | Link, der auf ein nicht-gemountetes Dateisystem verwies. Der Link wurde | 1025 | Link, der auf ein nicht-gemountetes Dateisystem verwies. Der Link wurde | |
1026 | mit einer '.old' Erweiterung versehen. Sobald Ihr aktualisiertes | 1026 | mit einer '.old' Erweiterung versehen. Sobald Ihr aktualisiertes | |
1027 | System gestartet ist, müssen Sie das neu erstellte /emul/aout mit dem alten | 1027 | System gestartet ist, müssen Sie das neu erstellte /emul/aout mit dem alten | |
1028 | Verzeichnis abgleichen. | 1028 | Verzeichnis abgleichen. | |
1029 | } | 1029 | } | |
1030 | .endif | 1030 | .endif | |
1031 | 1031 | |||
1032 | message oldsendmail | 1032 | message oldsendmail | |
1033 | {Sendmail ist nicht länger integrierter Bestandteil von NetBSD. | 1033 | {Sendmail ist nicht länger integrierter Bestandteil von NetBSD. | |
1034 | Der Standard MTA ist nun Postfix. Ihr System benutzt derzeit | 1034 | Der Standard MTA ist nun Postfix. Ihr System benutzt derzeit | |
1035 | eine Konfiguration in /etc/mailer.conf, die auf das nicht mehr | 1035 | eine Konfiguration in /etc/mailer.conf, die auf das nicht mehr | |
1036 | vorhandene Sendmail-Programm verweist. | 1036 | vorhandene Sendmail-Programm verweist. | |
1037 | Möchten Sie /etc/mailer.conf automatisch auf eine Version für | 1037 | Möchten Sie /etc/mailer.conf automatisch auf eine Version für | |
1038 | Postfix umstellen? Falls Sie "Nein" wählen, müssen Sie anschließend | 1038 | Postfix umstellen? Falls Sie "Nein" wählen, müssen Sie anschließend | |
1039 | manuell /etc/mailer.conf korrigieren, um funktionierende Mailauslieferung | 1039 | manuell /etc/mailer.conf korrigieren, um funktionierende Mailauslieferung | |
1040 | zu gewährleisten.} | 1040 | zu gewährleisten.} | |
1041 | 1041 | |||
1042 | message license | 1042 | message 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 | |
1044 | der Datei %s zustimmen. | 1044 | der Datei %s zustimmen. | |
1045 | Um den Lizenztext zu lesen, geben Sie ^Z ein, schauen den Inhalt | 1045 | Um den Lizenztext zu lesen, geben Sie ^Z ein, schauen den Inhalt | |
1046 | der Datei an und kehren mit dem Befehl "fg" zu sysinst zurück.} | 1046 | der Datei an und kehren mit dem Befehl "fg" zu sysinst zurück.} | |
1047 | 1047 | |||
1048 | message binpkg | 1048 | message binpkg | |
1049 | {Um Binärpakete zu installieren, muss erst eine Netzwerkverbindung konfiguriert | 1049 | {Um Binärpakete zu installieren, muss erst eine Netzwerkverbindung konfiguriert | |
1050 | werden, über die die Pakete heruntergeladen werden. Nach einem ersten Start in | 1050 | werden, über die die Pakete heruntergeladen werden. Nach einem ersten Start in | |
1051 | das installierte System können mit dem Kommando 'pkgin' zusätzliche Pakete | 1051 | das installierte System können mit dem Kommando 'pkgin' zusätzliche Pakete | |
1052 | installiert oder entfernt werden.} | 1052 | installiert oder entfernt werden.} | |
1053 | 1053 | |||
1054 | message pkgpath | 1054 | message pkgpath | |
1055 | {Zur Konfiguration von pkgin muss zuerst das Repository konfiguriert werden. | 1055 | {Zur Konfiguration von pkgin muss zuerst das Repository konfiguriert werden. | |
1056 | Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort | 1056 | Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort | |
1057 | sollen zum Herunterladen verwendet werden? Wenn der User auf "ftp" gesetzt wird, | 1057 | sollen zum Herunterladen verwendet werden? Wenn der User auf "ftp" gesetzt wird, | |
1058 | dann wird kein Passwort benötigt. | 1058 | dann wird kein Passwort benötigt. | |
1059 | 1059 | |||
1060 | } | 1060 | } | |
1061 | message rcconf_backup_failed {rc.conf-Backup fehlgeschlagen. Trotzdem fortfahren?} | 1061 | message rcconf_backup_failed {rc.conf-Backup fehlgeschlagen. Trotzdem fortfahren?} | |
1062 | message rcconf_backup_succeeded {rc.conf-Backup nach %s gespeichert.} | 1062 | message rcconf_backup_succeeded {rc.conf-Backup nach %s gespeichert.} | |
1063 | message rcconf_restore_failed {rc.conf-Restore ist fehlgeschlagen.} | 1063 | message rcconf_restore_failed {rc.conf-Restore ist fehlgeschlagen.} | |
1064 | message rcconf_delete_failed {Löschen des alten %s-Eintrages ist fehlgeschlagen.} | 1064 | message rcconf_delete_failed {Löschen des alten %s-Eintrages ist fehlgeschlagen.} | |
1065 | message Pkg_dir {Paketverzeichnis} | 1065 | message Pkg_dir {Paketverzeichnis} | |
1066 | message configure_prior {Existierende Installation konfigurieren} | 1066 | message configure_prior {Existierende Installation konfigurieren} | |
1067 | message configure {Konfigurieren} | 1067 | message configure {Konfigurieren} | |
1068 | message change {Ändern} | 1068 | message change {Ändern} | |
1069 | message password_set {Passwort gesetzt} | 1069 | message password_set {Passwort gesetzt} | |
1070 | message YES {JA} | 1070 | message YES {JA} | |
1071 | message NO {NEIN} | 1071 | message NO {NEIN} | |
1072 | message DONE {ERLEDIGT} | 1072 | message DONE {ERLEDIGT} | |
1073 | message abandoned {Abgebrochen} | 1073 | message abandoned {Abgebrochen} | |
1074 | message empty {***LEER***} | 1074 | message empty {***LEER***} | |
1075 | message timezone {Zeitzone} | 1075 | message timezone {Zeitzone} | |
1076 | message change_rootpw {root-Passwort setzen} | 1076 | message change_rootpw {root-Passwort setzen} | |
1077 | message enable_binpkg {Installation von Binärpaketen vorbereiten} | 1077 | message enable_binpkg {Installation von Binärpaketen vorbereiten} | |
1078 | message enable_sshd {sshd aktivieren} | 1078 | message enable_sshd {sshd aktivieren} | |
1079 | message enable_ntpd {ntpd aktivieren} | 1079 | message enable_ntpd {ntpd aktivieren} | |
1080 | message run_ntpdate {ntpdate beim Starten ausführen} | 1080 | message run_ntpdate {ntpdate beim Starten ausführen} | |
1081 | message enable_mdnsd {mdnsd aktivieren} | 1081 | message enable_mdnsd {mdnsd aktivieren} | |
1082 | message enable_xdm {xdm aktivieren} | 1082 | message enable_xdm {xdm aktivieren} | |
1083 | message enable_cgd {cgd aktivieren} | 1083 | message enable_cgd {cgd aktivieren} | |
1084 | message enable_lvm {lvm aktivieren} | 1084 | message enable_lvm {lvm aktivieren} | |
1085 | message enable_raid {raidframe aktivieren} | 1085 | message enable_raid {raidframe aktivieren} | |
1086 | message add_a_user {Add a user} | 1086 | message add_a_user {Add a user} | |
1087 | message configmenu {Zusätzliche Einstellungen konfigurieren.} | 1087 | message configmenu {Zusätzliche Einstellungen konfigurieren.} | |
1088 | message doneconfig {Konfiguration abgeschlossen.} | 1088 | message doneconfig {Konfiguration abgeschlossen.} | |
1089 | message Install_pkgin {pkgin installieren und Datenbank initialisieren} | 1089 | message Install_pkgin {pkgin installieren und Datenbank initialisieren} | |
1090 | message binpkg_installed | 1090 | message 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 | |
1092 | installieren, muss man folenden Befehl von einer root-Shell ausführen: | 1092 | installieren, muss man folenden Befehl von einer root-Shell ausführen: | |
1093 | 1093 | |||
1094 | pkgin install <packagename> | 1094 | pkgin install <packagename> | |
1095 | 1095 | |||
1096 | Weitere Informationen finden sich in der pkgin(1)-Manpage.} | 1096 | Weitere Informationen finden sich in der pkgin(1)-Manpage.} | |
1097 | message Install_pkgsrc {pkgsrc herunterladen und entpacken} | 1097 | message Install_pkgsrc {pkgsrc herunterladen und entpacken} | |
1098 | message pkgsrc | 1098 | message pkgsrc | |
1099 | {Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort | 1099 | {Welches Protokoll, welcher Host, welches Verzeichnis und welcher User/Passwort | |
1100 | sollen zum Herunterladen von pkgsrc verwendet werden? Wenn der User auf "ftp" | 1100 | sollen zum Herunterladen von pkgsrc verwendet werden? Wenn der User auf "ftp" | |
1101 | gesetzt wird, dann wird kein Passwort benötigt. | 1101 | gesetzt wird, dann wird kein Passwort benötigt. | |
1102 | 1102 | |||
1103 | } | 1103 | } | |
1104 | message Pkgsrc_dir {pkgsrc-Verzeichnis} | 1104 | message Pkgsrc_dir {pkgsrc-Verzeichnis} | |
1105 | message get_pkgsrc {pkgsrc zur Installation von Quellpaketen herunterladen und | 1105 | message get_pkgsrc {pkgsrc zur Installation von Quellpaketen herunterladen und | |
1106 | installieren} | 1106 | installieren} | |
1107 | message retry_pkgsrc_network {Netzwerkkonfiguration fehlgeschlagen. Noch einmal | 1107 | message retry_pkgsrc_network {Netzwerkkonfiguration fehlgeschlagen. Noch einmal | |
1108 | versuchen?} | 1108 | versuchen?} | |
1109 | message quit_pkgsrc {Ohne Installation von pkgsrc beenden.} | 1109 | message quit_pkgsrc {Ohne Installation von pkgsrc beenden.} | |
1110 | message quit_pkgs_install {Installation von binär-Paketen beenden.} | 1110 | message quit_pkgs_install {Installation von binär-Paketen beenden.} | |
1111 | message pkgin_failed | 1111 | message 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 | |
1113 | vorhanden sind. Bitte den Pfad der Pakete überprüfen und noch einmal versuchen.} | 1113 | vorhanden sind. Bitte den Pfad der Pakete überprüfen und noch einmal versuchen.} | |
1114 | message failed {Fehlgeschlagen} | 1114 | message failed {Fehlgeschlagen} | |
1115 | message notsupported {Operation wird nicht unterstützt!} | 1115 | message notsupported {Operation wird nicht unterstützt!} | |
1116 | message askfsmountadv {Mountpoint oder 'raid' oder 'cgd' oder 'lvm'?} | 1116 | message askfsmountadv {Mountpoint oder 'raid' oder 'cgd' oder 'lvm'?} | |
1117 | message partman {Erweiterte Partitionierung} | 1117 | message partman {Erweiterte Partitionierung} | |
1118 | message editbsdpart {Bearbeiten BSD-Partitionen} | 1118 | message editbsdpart {Bearbeiten BSD-Partitionen} | |
1119 | message editmbr {Bearbeiten und speichern MBR} | 1119 | message editmbr {Bearbeiten und speichern MBR} | |
1120 | message switchgpt {Wechseln Sie zu GPT} | 1120 | message switchgpt {Wechseln Sie zu GPT} | |
1121 | message switchmbr {Wechseln Sie zu MBR} | 1121 | message switchmbr {Wechseln Sie zu MBR} | |
1122 | message renamedisk {Stellen Sie Festplatten-Namen} | 1122 | message renamedisk {Stellen Sie Festplatten-Namen} | |
1123 | message fmtasraid {Format als RAID} | 1123 | message fmtasraid {Format als RAID} | |
1124 | message fmtaslvm {Format als LVM-PV} | 1124 | message fmtaslvm {Format als LVM-PV} | |
1125 | message encrypt {Verschlüsseln} | 1125 | message encrypt {Verschlüsseln} | |
1126 | message setbootable {Boot-Flag} | 1126 | message setbootable {Boot-Flag} | |
1127 | message erase {Safe Erase} | 1127 | message erase {Safe Erase} | |
1128 | message undo {Rückgängigmachen von Änderungen} | 1128 | message undo {Rückgängigmachen von Änderungen} | |
1129 | message unconfig {Dekonfigurieren} | 1129 | message unconfig {Dekonfigurieren} | |
1130 | message edit {Bearbeiten} | 1130 | message edit {Bearbeiten} | |
1131 | message doumount {Force-umount} | 1131 | message doumount {Force-umount} | |
1132 | message fillzeros {Füllen von Nullen} | 1132 | message fillzeros {Füllen von Nullen} | |
1133 | message fillrandom {Füllen von zufälligen Daten} | 1133 | message fillrandom {Füllen von zufälligen Daten} | |
1134 | message fillcrypto {Füllen von Crypto-Daten} | 1134 | message fillcrypto {Füllen von Crypto-Daten} | |
1135 | message raid0 {0 - Keine Parität, nur einfache Striping.} | 1135 | message raid0 {0 - Keine Parität, nur einfache Striping.} | |
1136 | message raid1 {1 - Mirroring. Die Parität ist der Spiegel.} | 1136 | message raid1 {1 - Mirroring. Die Parität ist der Spiegel.} | |
1137 | message raid4 {4 - Striping mit Parität auf die letzte Komponente gespeichert.} | 1137 | message raid4 {4 - Striping mit Parität auf die letzte Komponente gespeichert.} | |
1138 | message raid5 {5 - Striping mit Parität an den alle Komponenten.} | 1138 | message raid5 {5 - Striping mit Parität an den alle Komponenten.} | |
1139 | 1139 | |||
1140 | message fremove {ENTFERNEN} | 1140 | message fremove {ENTFERNEN} | |
1141 | message remove {Entfernen} | 1141 | message remove {Entfernen} | |
1142 | message add {Hinzufügen} | 1142 | message add {Hinzufügen} | |
1143 | message auto {auto} | 1143 | message auto {auto} | |
1144 | 1144 | |||
1145 | message removepartswarn {Diese entfernen Sie alle Partitionen auf der Festplatte. Wollen Sie fortsetzen?} | 1145 | message removepartswarn {Diese entfernen Sie alle Partitionen auf der Festplatte. Wollen Sie fortsetzen?} | |
1146 | message saveprompt {Speichern Sie die Änderungen vor dem Abschluss?} | 1146 | message saveprompt {Speichern Sie die Änderungen vor dem Abschluss?} | |
1147 | message cantsave {Änderungen können nicht gespeichert werden.} | 1147 | message cantsave {Änderungen können nicht gespeichert werden.} | |
1148 | message noroot {Kein Root-Partition definiert ist, kann nicht fortgesetzt werden \n} | 1148 | message noroot {Kein Root-Partition definiert ist, kann nicht fortgesetzt werden \n} | |
1149 | message wannaunblock {Das Gerät ist blockiert. Wollen Sie zwingen sie zu entsperren und weiter?} | 1149 | message wannaunblock {Das Gerät ist blockiert. Wollen Sie zwingen sie zu entsperren und weiter?} | |
1150 | message wannatry {Wollen Sie probieren?} | 1150 | message wannatry {Wollen Sie probieren?} | |
1151 | message create_cgd {Erstellen kryptographische Volumen (CGD)} | 1151 | message create_cgd {Erstellen kryptographische Volumen (CGD)} | |
1152 | message create_cnd {Erstellen Sie virtuelle Disk-Image (VND)} | 1152 | message create_cnd {Erstellen Sie virtuelle Disk-Image (VND)} | |
1153 | message create_vg {Erstellen Volume-Gruppe (LVM VG)} | 1153 | message create_vg {Erstellen Volume-Gruppe (LVM VG)} | |
1154 | message create_lv { Erstellen logischer Volumen} | 1154 | message create_lv { Erstellen logischer Volumen} | |
1155 | message create_raid {Erstellen Software-RAID} | 1155 | message create_raid {Erstellen Software-RAID} | |
1156 | message updpmlist {Aktualisieren Sie Geräte-Liste} | 1156 | message updpmlist {Aktualisieren Sie Geräte-Liste} | |
1157 | message savepm {Speichern Sie die Änderungen} | 1157 | message savepm {Speichern Sie die Änderungen} | |
1158 | message pmblocked {GESPERRT} | 1158 | message pmblocked {GESPERRT} | |
1159 | message pmunchanged {NICHTS} | 1159 | message pmunchanged {NICHTS} | |
1160 | message pmsetboot {BOOTEN} | 1160 | message pmsetboot {BOOTEN} | |
1161 | message pmused {BENUTZT} | 1161 | message pmused {BENUTZT} | |
1162 | message pmmounted {(montiert)} | 1162 | message pmmounted {(montiert)} | |
1163 | message pmunused {(unbenutzt)} | 1163 | message pmunused {(unbenutzt)} | |
1164 | message pmgptdisk {Festplatte mit GPT} | 1164 | message pmgptdisk {Festplatte mit GPT} | |
1165 | 1165 | |||
1166 | message finishpm {Partitionierung beenden} | 1166 | message finishpm {Partitionierung beenden} | |
1167 | message limitcount {Grenze für die Anzahl der Geräte erreicht wurde!} | 1167 | message limitcount {Grenze für die Anzahl der Geräte erreicht wurde!} | |
1168 | message invaliddev {Ungültige Gerät!} | 1168 | message invaliddev {Ungültige Gerät!} | |
1169 | message avdisks {Verfügbare Festplatten:} | 1169 | message avdisks {Verfügbare Festplatten:} | |
1170 | message nofreedev {Kann nicht zugewiesen werden Geräteknoten!} | 1170 | message nofreedev {Kann nicht zugewiesen werden Geräteknoten!} | |
1171 | message partman_header | 1171 | message partman_header | |
1172 | {Partition Manager. Alle Festplatten, Partitionen usw. und dort angezeigt. | 1172 | {Partition Manager. Alle Festplatten, Partitionen usw. und dort angezeigt. | |
1173 | Auf den ersten MBR-Partitionen machen, dann machen BSD-Label. | 1173 | Auf den ersten MBR-Partitionen machen, dann machen BSD-Label. | |
1174 | Wenn Sie RAID verwenden, LVM oder CGD, gehen Sie folgendermaßen vor: | 1174 | Wenn Sie RAID verwenden, LVM oder CGD, gehen Sie folgendermaßen vor: | |
1175 | 1) Erstellen BSD-Partitionen mit Typ benötigt; 2) Erstellen Sie RAID / | 1175 | 1) Erstellen BSD-Partitionen mit Typ benötigt; 2) Erstellen Sie RAID / | |
1176 | LVM VG / CGD mit diesen Partitionen; 3) Speichern Sie es; | 1176 | LVM VG / CGD mit diesen Partitionen; 3) Speichern Sie es; | |
1177 | 4) Erstellen Sie Partitionen für RAID / CGD oder Logical Volumes für LVM.} | 1177 | 4) Erstellen Sie Partitionen für RAID / CGD oder Logical Volumes für LVM.} | |
1178 | 1178 | |||
1179 | message raid_menufmt { raid%d (ebene %1d) on %-34s %11uM} | 1179 | message raid_menufmt { raid%d (ebene %1d) on %-34s %11uM} | |
1180 | message raid_err_menufmt { LEER RAID!} | 1180 | message raid_err_menufmt { LEER RAID!} | |
1181 | message raid_disks_fmt {Festplatten: %27s} | 1181 | message raid_disks_fmt {Festplatten: %27s} | |
1182 | message raid_spares_fmt {Ersatzbedarf: %26s} | 1182 | message raid_spares_fmt {Ersatzbedarf: %26s} | |
1183 | message raid_level_fmt {RAID ebene: %22d} | 1183 | message raid_level_fmt {RAID ebene: %22d} | |
1184 | message raid_numrow_fmt {numRow: %22d} | 1184 | message raid_numrow_fmt {numRow: %22d} | |
1185 | message raid_numcol_fmt {numCol: %22d} | 1185 | message raid_numcol_fmt {numCol: %22d} | |
1186 | message raid_numspare_fmt {numSpare: %22d} | 1186 | message raid_numspare_fmt {numSpare: %22d} | |
1187 | message raid_sectpersu_fmt {sectPerSU: %22d} | 1187 | message raid_sectpersu_fmt {sectPerSU: %22d} | |
1188 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | 1188 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | |
1189 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | 1189 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | |
1190 | message raid_nomultidim {Mehrdimensionale Arrays werden nicht unterstützt!} | 1190 | message raid_nomultidim {Mehrdimensionale Arrays werden nicht unterstützt!} | |
1191 | message raid_numrow_ask {numRow?} | 1191 | message raid_numrow_ask {numRow?} | |
1192 | message raid_numcol_ask {numCol?} | 1192 | message raid_numcol_ask {numCol?} | |
1193 | message raid_numspare_ask {numSpare?} | 1193 | message raid_numspare_ask {numSpare?} | |
1194 | message raid_sectpersu_ask {sectPerSU?} | 1194 | message raid_sectpersu_ask {sectPerSU?} | |
1195 | message raid_superpar_ask {SUsPerParityUnit?} | 1195 | message raid_superpar_ask {SUsPerParityUnit?} | |
1196 | message raid_superrec_ask {SUsPerReconUnit?} | 1196 | message raid_superrec_ask {SUsPerReconUnit?} | |
1197 | message raid_disks {Festplatten im RAID:} | 1197 | message raid_disks {Festplatten im RAID:} | |
1198 | message vnd_err_menufmt { PATH nicht definiert!} | 1198 | message vnd_err_menufmt { PATH nicht definiert!} | |
1199 | message vnd_assgn_menufmt { vnd%1d auf %-50s ASSIGN} | 1199 | message vnd_assgn_menufmt { vnd%1d auf %-50s ASSIGN} | |
1200 | message vnd_menufmt { vnd%1d auf %-44s %11uM} | 1200 | message vnd_menufmt { vnd%1d auf %-44s %11uM} | |
1201 | message vnd_path_fmt {Dateipfad: %29s} | 1201 | message vnd_path_fmt {Dateipfad: %29s} | |
1202 | message vnd_assgn_fmt {Neue Image-Datei erstellen: %12s} | 1202 | message vnd_assgn_fmt {Neue Image-Datei erstellen: %12s} | |
1203 | message vnd_size_fmt {Größe: %22sM} | 1203 | message vnd_size_fmt {Größe: %22sM} | |
1204 | message vnd_ro_fmt {Nur lesen: %22s} | 1204 | message vnd_ro_fmt {Nur lesen: %22s} | |
1205 | message vnd_geom_fmt {Manuelle Geometrie: %8s} | 1205 | message vnd_geom_fmt {Manuelle Geometrie: %8s} | |
1206 | message vnd_bps_fmt {Byte pro Sektor: %18s} | 1206 | message vnd_bps_fmt {Byte pro Sektor: %18s} | |
1207 | message vnd_spt_fmt {Sektoren pro Spur: %18s} | 1207 | message vnd_spt_fmt {Sektoren pro Spur: %18s} | |
1208 | message vnd_tpc_fmt {Spuren pro Zylinder: %18s} | 1208 | message vnd_tpc_fmt {Spuren pro Zylinder: %18s} | |
1209 | message vnd_cyl_fmt {Zylinder: %22s} | 1209 | message vnd_cyl_fmt {Zylinder: %22s} | |
1210 | message vnd_path_ask {Dateipfad?} | 1210 | message vnd_path_ask {Dateipfad?} | |
1211 | message vnd_size_ask {Größe (MB)?} | 1211 | message vnd_size_ask {Größe (MB)?} | |
1212 | message vnd_bps_ask {Byte pro Sektor?} | 1212 | message vnd_bps_ask {Byte pro Sektor?} | |
1213 | message vnd_spt_ask {Sektoren pro Spur?} | 1213 | message vnd_spt_ask {Sektoren pro Spur?} | |
1214 | message vnd_tpc_ask {Spuren pro Zylinder?} | 1214 | message vnd_tpc_ask {Spuren pro Zylinder?} | |
1215 | message vnd_cyl_ask {Zylinder?} | 1215 | message vnd_cyl_ask {Zylinder?} | |
1216 | message cgd_err_menufmt { DISK NICHT DEFINIERT!} | 1216 | message cgd_err_menufmt { DISK NICHT DEFINIERT!} | |
1217 | message cgd_menufmt { cgd%1d %-48s %11uM} | 1217 | message cgd_menufmt { cgd%1d %-48s %11uM} | |
1218 | message cgd_dev_fmt {Grundgerät: %24s} | 1218 | message cgd_dev_fmt {Grundgerät: %24s} | |
1219 | message cgd_enc_fmt {Mausklick und: %24s} | 1219 | message cgd_enc_fmt {Mausklick und: %24s} | |
1220 | message cgd_key_fmt {Schlüsselgröße: %24d} | 1220 | message cgd_key_fmt {Schlüsselgröße: %24d} | |
1221 | message cgd_iv_fmt {IV-Algorithmus: %24s} | 1221 | message cgd_iv_fmt {IV-Algorithmus: %24s} | |
1222 | message cgd_keygen_fmt {Schlüsselgenerierung: %18s} | 1222 | message cgd_keygen_fmt {Schlüsselgenerierung: %18s} | |
1223 | message cgd_verif_fmt {Verification Methode: %18s} | 1223 | message cgd_verif_fmt {Verification Methode: %18s} | |
1224 | message lvm_disks {Festplatten im VG:} | 1224 | message lvm_disks {Festplatten im VG:} | |
1225 | message lvm_menufmt { %-44s %20sM} | 1225 | message lvm_menufmt { %-44s %20sM} | |
1226 | message lvm_err_menufmt { VG LEER!} | 1226 | message lvm_err_menufmt { VG LEER!} | |
1227 | message lvm_disks_fmt {PV's: %34s} | 1227 | message lvm_disks_fmt {PV's: %34s} | |
1228 | message lvm_name_fmt {Name: %34s} | 1228 | message lvm_name_fmt {Name: %34s} | |
1229 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | 1229 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | |
1230 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | 1230 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | |
1231 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | 1231 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | |
1232 | message lvm_name_ask {Name?} | 1232 | message lvm_name_ask {Name?} | |
1233 | message lvm_maxlv_ask {MaxLogicalVolumes?} | 1233 | message lvm_maxlv_ask {MaxLogicalVolumes?} | |
1234 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | 1234 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | |
1235 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | 1235 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | |
1236 | message lvmlv_menufmt { Logische Volumen%-35s% 11uM} | 1236 | message lvmlv_menufmt { Logische Volumen%-35s% 11uM} | |
1237 | message lvmlv_name_fmt {Name: %34s} | 1237 | message lvmlv_name_fmt {Name: %34s} | |
1238 | message lvmlv_size_fmt {Größe: %32dM} | 1238 | message lvmlv_size_fmt {Größe: %32dM} | |
1239 | message lvmlv_ro_fmt {Nur lesen: %27s} | 1239 | message lvmlv_ro_fmt {Nur lesen: %27s} | |
1240 | message lvmlv_cont_fmt {Zusammenhängend: %23s} | 1240 | message lvmlv_cont_fmt {Zusammenhängend: %23s} | |
1241 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | 1241 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | |
1242 | message lvmlv_minor_fmt {Minor-Nummer: %26s} | 1242 | message lvmlv_minor_fmt {Minor-Nummer: %26s} | |
1243 | message lvmlv_mirrors_fmt {Mirrors: %27d} | 1243 | message lvmlv_mirrors_fmt {Mirrors: %27d} | |
1244 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | 1244 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | |
1245 | message lvmlv_pers_fmt {Persistent Minor-Nummer: %14s} | 1245 | message lvmlv_pers_fmt {Persistent Minor-Nummer: %14s} | |
1246 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | 1246 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | |
1247 | message lvmlv_stripes_fmt {Stripes: %27s} | 1247 | message lvmlv_stripes_fmt {Stripes: %27s} | |
1248 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | 1248 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | |
1249 | message lvmlv_zero_fmt {Nullsetzen der ersten KB:% 13s} | 1249 | message lvmlv_zero_fmt {Nullsetzen der ersten KB:% 13s} | |
1250 | message lvmlv_name_ask {Name?} | 1250 | message lvmlv_name_ask {Name?} | |
1251 | message lvmlv_size_ask {Größe (MB)?} | 1251 | message lvmlv_size_ask {Größe (MB)?} | |
1252 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | 1252 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | |
1253 | message lvmlv_minor_ask {Minor-Nummer?} | 1253 | message lvmlv_minor_ask {Minor-Nummer?} | |
1254 | message lvmlv_mirrors_ask {Spiegel?} | 1254 | message lvmlv_mirrors_ask {Spiegel?} | |
1255 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | 1255 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | |
1256 | message lvmlv_readahsect_ask {ReadAheadSectors?} | 1256 | message lvmlv_readahsect_ask {ReadAheadSectors?} | |
1257 | message lvmlv_stripes_ask {Stripes?} | 1257 | message lvmlv_stripes_ask {Stripes?} | |
1258 | message addusername {8 character username to add} | 1258 | message addusername {8 character username to add} | |
1259 | message addusertowheel {Do you wish to add this user to group wheel?} | 1259 | message addusertowheel {Do you wish to add this user to group wheel?} | |
1260 | 1260 | |||
1261 | message Delete_partition | 1261 | message Delete_partition | |
1262 | {Partition löschen} | 1262 | {Partition löschen} | |
1263 | 1263 | |||
1264 | ||||
1265 | message No_filesystem_newfs | |||
1266 | {Die ausgewählte Zielpartition scheint kein gültiges Dateisystem zu enthalten. | |||
1267 | Möchten Sie ein neues erstellen (die Partition formatieren)?} | |||
1268 | ||||
1269 | message Auto_add_swap_part | |||
1270 | {Eine Auslagerungspartitons (mit Namen %s) | |||
1271 | scheint bereits auf der Festplatte %s zu existieren. | |||
1272 | Möchten Sie diese benutzen?} | |||
1273 | ||||
1274 |
--- 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 | |||
37 | message usage | 37 | message 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 | */ | |
45 | message sysinst_message_language | 45 | message sysinst_message_language | |
46 | {Mensajes de instalacion en castellano} | 46 | {Mensajes de instalacion en castellano} | |
47 | 47 | |||
48 | message sysinst_message_locale | 48 | message sysinst_message_locale | |
49 | {es_ES.ISO8859-15} | 49 | {es_ES.ISO8859-15} | |
50 | 50 | |||
51 | message Yes {Sí} | 51 | message Yes {Sí} | |
52 | message No {No} | 52 | message No {No} | |
53 | message All {Todo} | 53 | message All {Todo} | |
54 | message Some {Algunos} | 54 | message Some {Algunos} | |
55 | message None {Ninguno} | 55 | message None {Ninguno} | |
56 | message none {ninguno} | 56 | message none {ninguno} | |
57 | message OK {OK} | 57 | message OK {OK} | |
58 | message ok {ok} | 58 | message ok {ok} | |
59 | message On {Activado} | 59 | message On {Activado} | |
60 | message Off {Desactivado} | 60 | message Off {Desactivado} | |
61 | message unchanged {sin cambios} | 61 | message unchanged {sin cambios} | |
62 | message Delete {¿Borrar?} | 62 | message Delete {¿Borrar?} | |
63 | 63 | |||
64 | message install | 64 | message install | |
65 | {instalar} | 65 | {instalar} | |
66 | 66 | |||
67 | message reinstall | 67 | message reinstall | |
68 | {reinstalar conjuntos para} | 68 | {reinstalar conjuntos para} | |
69 | 69 | |||
70 | message upgrade | 70 | message upgrade | |
71 | {actualizar} | 71 | {actualizar} | |
72 | 72 | |||
73 | message hello | 73 | message 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@@. | |
75 | Esta herramienta guiada por menús está diseñada para ayudarle a instalar | 75 | Esta herramienta guiada por menús está diseñada para ayudarle a instalar | |
76 | NetBSD en un disco duro, o actualizar un sistema NetBSD existente con | 76 | NetBSD en un disco duro, o actualizar un sistema NetBSD existente con | |
77 | un trabajo mínimo. | 77 | un trabajo mínimo. | |
78 | En los siguientes menús teclee la letra de referencia (a, b, c, ...) para | 78 | En los siguientes menús teclee la letra de referencia (a, b, c, ...) para | |
79 | seleccionar una opción, o teclee CTRL+N/CTRL+P para seleccionar la opción | 79 | seleccionar una opción, o teclee CTRL+N/CTRL+P para seleccionar la opción | |
80 | siguiente/anterior. | 80 | siguiente/anterior. | |
81 | Las teclas de cursor y AvPág/RePág puede que también funcionen. | 81 | Las teclas de cursor y AvPág/RePág puede que también funcionen. | |
82 | Active la selección actual desde el menú pulsando la tecla Intro. | 82 | Active la selección actual desde el menú pulsando la tecla Intro. | |
83 | } | 83 | } | |
84 | 84 | |||
85 | message thanks | 85 | message thanks | |
86 | {¡Gracias por usar NetBSD! | 86 | {¡Gracias por usar NetBSD! | |
87 | } | 87 | } | |
88 | 88 | |||
89 | message installusure | 89 | message 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 | |
91 | de su disco duro. ¡Debería haber hecho una copia de seguridad completa | 91 | de su disco duro. ¡Debería haber hecho una copia de seguridad completa | |
92 | antes de este procedimiento! Este procedimiento realizará las siguientes | 92 | antes de este procedimiento! Este procedimiento realizará las siguientes | |
93 | operaciones: | 93 | operaciones: | |
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 | |
100 | su disco sea cambiado, tendrá la oportunidad de salir del programa.) | 100 | su disco sea cambiado, tendrá la oportunidad de salir del programa.) | |
101 | 101 | |||
102 | ¿Desea continuar? | 102 | ¿Desea continuar? | |
103 | } | 103 | } | |
104 | 104 | |||
105 | message upgradeusure | 105 | message 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 | |
107 | cambiará información de su disco duro. ¡Debería hacer una copia de seguridad | 107 | cambiará información de su disco duro. ¡Debería hacer una copia de seguridad | |
108 | completa antes de este procedimiento! ¿Realmente desea actualizar NetBSD? | 108 | completa 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 | |
110 | sus discos.) | 110 | sus discos.) | |
111 | } | 111 | } | |
112 | 112 | |||
113 | message reinstallusure | 113 | message 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 | |
115 | a un disco duro marcado como arrancable. Este procedimiento solamente | 115 | a un disco duro marcado como arrancable. Este procedimiento solamente | |
116 | descarga y desempaqueta los conjuntos en un disco arrancable preparticionado. | 116 | descarga y desempaqueta los conjuntos en un disco arrancable preparticionado. | |
117 | No pone nombre a los discos, ni actualiza los bloques de arranque, ni guarda | 117 | No pone nombre a los discos, ni actualiza los bloques de arranque, ni guarda | |
118 | ninguna información de configuración. (Salga y escoja `instalar' o | 118 | ninguna 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 | |
124 | sus discos.) | 124 | sus discos.) | |
125 | } | 125 | } | |
126 | 126 | |||
127 | message mount_failed | 127 | message mount_failed | |
128 | {No se ha podido montar %s. ¿Desea continuar? | 128 | {No se ha podido montar %s. ¿Desea continuar? | |
129 | } | 129 | } | |
130 | 130 | |||
131 | message nodisk | 131 | message 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. | |
133 | Se le volverá a llevar al menú original. | 133 | Se le volverá a llevar al menú original. | |
134 | } | 134 | } | |
135 | 135 | |||
136 | message onedisk | 136 | message onedisk | |
137 | {Solamente se ha encontrado un disco, %s. | 137 | {Solamente se ha encontrado un disco, %s. | |
138 | Por tanto se entiende que quiere %s NetBSD en él. | 138 | Por tanto se entiende que quiere %s NetBSD en él. | |
139 | } | 139 | } | |
140 | 140 | |||
141 | message ask_disk | 141 | message ask_disk | |
142 | {¿En cuál disco quiere %s NetBSD? } | 142 | {¿En cuál disco quiere %s NetBSD? } | |
143 | 143 | |||
144 | message Available_disks | 144 | message Available_disks | |
145 | {Discos disponibles} | 145 | {Discos disponibles} | |
146 | 146 | |||
147 | message heads | 147 | message heads | |
148 | {cabezas} | 148 | {cabezas} | |
149 | 149 | |||
150 | message sectors | 150 | message sectors | |
151 | {sectores} | 151 | {sectores} | |
152 | 152 | |||
153 | message fs_isize | 153 | message fs_isize | |
154 | {tamaño promedio del fichero (bytes)} | 154 | {tamaño promedio del fichero (bytes)} | |
155 | 155 | |||
156 | message mountpoint | 156 | message mountpoint | |
157 | {punto de montaje (o 'ninguno')} | 157 | {punto de montaje (o 'ninguno')} | |
158 | 158 | |||
159 | message cylname | 159 | message cylname | |
160 | {cil} | 160 | {cil} | |
161 | 161 | |||
162 | message secname | 162 | message secname | |
163 | {sec} | 163 | {sec} | |
164 | 164 | |||
165 | message megname | 165 | message megname | |
166 | {MB} | 166 | {MB} | |
167 | 167 | |||
168 | message layout | 168 | message 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 | |
170 | en varias particiones BSD. Ahora debería configurar su etiqueta BSD. | 170 | en varias particiones BSD. Ahora debería configurar su etiqueta BSD. | |
171 | 171 | |||
172 | Puede usar un simple editor para establecer los tamaños de las particiones | 172 | Puede usar un simple editor para establecer los tamaños de las particiones | |
173 | NetBSD, o mantener los tamaños de partición y contenidos actuales. | 173 | NetBSD, o mantener los tamaños de partición y contenidos actuales. | |
174 | 174 | |||
175 | Después se la dará la oportunidad de cambiar cualquier campo de la | 175 | Después se la dará la oportunidad de cambiar cualquier campo de la | |
176 | etiqueta. | 176 | etiqueta. | |
177 | 177 | |||
178 | La parte NetBSD de su disco es de %d megabytes. | 178 | La parte NetBSD de su disco es de %d megabytes. | |
179 | Una instalación completa requiere al menos %d megabytes sin X y | 179 | Una instalación completa requiere al menos %d megabytes sin X y | |
180 | al menos %d megabytes si se incluyen los conjuntos de X. | 180 | al menos %d megabytes si se incluyen los conjuntos de X. | |
181 | } | 181 | } | |
182 | 182 | |||
183 | message Choose_your_size_specifier | 183 | message 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 | |
185 | elección, pero alineados a los limites de los cilindros. | 185 | elección, pero alineados a los limites de los cilindros. | |
186 | Seleccionar sectores le permitirá especificar los tamaños de manera | 186 | Seleccionar sectores le permitirá especificar los tamaños de manera | |
187 | más precisa. En discos ZBR modernos, el tamaño real del cilindro varía | 187 | más precisa. En discos ZBR modernos, el tamaño real del cilindro varía | |
188 | a lo largo del disco y no hay mucha ventaja real en el alineamiento de | 188 | a lo largo del disco y no hay mucha ventaja real en el alineamiento de | |
189 | cilindros. En discos más viejos, lo más eficiente es seleccionar | 189 | cilindros. En discos más viejos, lo más eficiente es seleccionar | |
190 | tamaños de partición que sean multiples exactos del tamaño real del | 190 | tamaños de partición que sean multiples exactos del tamaño real del | |
191 | cilindro. | 191 | cilindro. | |
192 | 192 | |||
193 | Escoja su especificador de tamaño} | 193 | Escoja su especificador de tamaño} | |
194 | 194 | |||
195 | message ptnsizes | 195 | message 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 | |
197 | omisión se asigna todo el espacio al sistema de archivos raíz, sin embargo | 197 | omisión se asigna todo el espacio al sistema de archivos raíz, sin embargo | |
198 | usted podría querer separar /usr (ficheros de sistema adicionales), /var | 198 | usted 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 | |||
201 | El espacio libre sobrante será añadido a la partición marcada con «+». | 201 | El espacio libre sobrante será añadido a la partición marcada con «+». | |
202 | } | 202 | } | |
203 | 203 | |||
204 | message ptnheaders | 204 | message ptnheaders | |
205 | { | 205 | { | |
206 | MB Cilindros Sectores Sistema de archivos | 206 | MB Cilindros Sectores Sistema de archivos | |
207 | } | 207 | } | |
208 | 208 | |||
209 | message askfsmount | 209 | message askfsmount | |
210 | {¿Punto de montaje?} | 210 | {¿Punto de montaje?} | |
211 | 211 | |||
212 | message askfssize | 212 | message askfssize | |
213 | {¿Tamaño de %s en %s?} | 213 | {¿Tamaño de %s en %s?} | |
214 | 214 | |||
215 | message askunits | 215 | message askunits | |
216 | {Cambiar las unidades de entrada (sectores/cilindros/MB)} | 216 | {Cambiar las unidades de entrada (sectores/cilindros/MB)} | |
217 | 217 | |||
218 | message NetBSD_partition_cant_change | 218 | message NetBSD_partition_cant_change | |
219 | {Partición NetBSD} | 219 | {Partición NetBSD} | |
220 | 220 | |||
221 | message Whole_disk_cant_change | 221 | message Whole_disk_cant_change | |
222 | {Todo el disco} | 222 | {Todo el disco} | |
223 | 223 | |||
224 | message Boot_partition_cant_change | 224 | message Boot_partition_cant_change | |
225 | {Partición de arranque} | 225 | {Partición de arranque} | |
226 | 226 | |||
227 | message add_another_ptn | 227 | message 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 | |||
230 | message fssizesok | 230 | message 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 | |||
233 | message fssizesbad | 233 | message 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 | |||
236 | message startoutsidedisk | 236 | message 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 | |||
240 | message endoutsidedisk | 240 | message 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. | |
242 | El tamaño de la partición se ha truncado a %d %s. | 242 | El tamaño de la partición se ha truncado a %d %s. | |
243 | 243 | |||
244 | Presione Intro para continuar | 244 | Presione Intro para continuar | |
245 | } | 245 | } | |
246 | 246 | |||
247 | message toobigdisklabel | 247 | message toobigdisklabel | |
248 | { | 248 | { | |
249 | This disk is too large for a disklabel partition table to be used | 249 | This disk is too large for a disklabel partition table to be used | |
250 | and hence cannot be used as a bootable disk or to hold the root | 250 | and hence cannot be used as a bootable disk or to hold the root | |
251 | partition. | 251 | partition. | |
252 | } | 252 | } | |
253 | 253 | |||
254 | message fspart | 254 | message 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 | |||
260 | message fspart_header | 260 | message 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 | |||
265 | message fspart_row | 265 | message fspart_row | |
266 | {%10lu %9lu %10lu %-10s %-5s %-5s %s} | 266 | {%10lu %9lu %10lu %-10s %-5s %-5s %s} | |
267 | 267 | |||
268 | message show_all_unused_partitions | 268 | message show_all_unused_partitions | |
269 | {Mostrar todas las particiones no usadas} | 269 | {Mostrar todas las particiones no usadas} | |
270 | 270 | |||
271 | message partition_sizes_ok | 271 | message partition_sizes_ok | |
272 | {Tamaños de partición ok} | 272 | {Tamaños de partición ok} | |
273 | 273 | |||
274 | message edfspart | 274 | message edfspart | |
275 | {Los valores actuales de la particion `%c' son, | 275 | {Los valores actuales de la particion `%c' son, | |
276 | Seleccione el campo que desee cambiar: | 276 | Seleccione el campo que desee cambiar: | |
277 | 277 | |||
278 | MB cilindros sectores | 278 | MB cilindros sectores | |
279 | ------- --------- --------- | 279 | ------- --------- --------- | |
280 | } | 280 | } | |
281 | 281 | |||
282 | message fstype_fmt | 282 | message fstype_fmt | |
283 | { FStype: %9s} | 283 | { FStype: %9s} | |
284 | 284 | |||
285 | message start_fmt | 285 | message start_fmt | |
286 | { inicio: %9u %8u%c %9u} | 286 | { inicio: %9u %8u%c %9u} | |
287 | 287 | |||
288 | message size_fmt | 288 | message size_fmt | |
289 | { tamaño: %9u %8u%c %9u} | 289 | { tamaño: %9u %8u%c %9u} | |
290 | 290 | |||
291 | message end_fmt | 291 | message end_fmt | |
292 | { fin: %9u %8u%c %9u} | 292 | { fin: %9u %8u%c %9u} | |
293 | 293 | |||
294 | message bsize_fmt | 294 | message bsize_fmt | |
295 | {tamaño bloque: %9d bytes} | 295 | {tamaño bloque: %9d bytes} | |
296 | 296 | |||
297 | message fsize_fmt | 297 | message fsize_fmt | |
298 | { tamaño frag: %9d bytes} | 298 | { tamaño frag: %9d bytes} | |
299 | 299 | |||
300 | message isize_fmt | 300 | message isize_fmt | |
301 | {tam prom archi: %9d bytes (para número de inodos)} | 301 | {tam prom archi: %9d bytes (para número de inodos)} | |
302 | message isize_fmt_dflt | 302 | message isize_fmt_dflt | |
303 | {tam prom archi: 4 fragmentos} | 303 | {tam prom archi: 4 fragmentos} | |
304 | 304 | |||
305 | message newfs_fmt | 305 | message newfs_fmt | |
306 | { newfs: %9s} | 306 | { newfs: %9s} | |
307 | 307 | |||
308 | message mount_fmt | 308 | message mount_fmt | |
309 | { montar: %9s} | 309 | { montar: %9s} | |
310 | 310 | |||
311 | message mount_options_fmt | 311 | message mount_options_fmt | |
312 | { opc montaje: } | 312 | { opc montaje: } | |
313 | 313 | |||
314 | message mountpt_fmt | 314 | message mountpt_fmt | |
315 | { punto montaje: %9s} | 315 | { punto montaje: %9s} | |
316 | 316 | |||
317 | message toggle | 317 | message toggle | |
318 | {Conmutar} | 318 | {Conmutar} | |
319 | 319 | |||
320 | message restore | 320 | message restore | |
321 | {Restaurar los valores originales} | 321 | {Restaurar los valores originales} | |
322 | 322 | |||
323 | message Select_the_type | 323 | message Select_the_type | |
324 | {Seleccione el tipo} | 324 | {Seleccione el tipo} | |
325 | 325 | |||
326 | message other_types | 326 | message other_types | |
327 | {otros tipos} | 327 | {otros tipos} | |
328 | 328 | |||
329 | message label_size | 329 | message label_size | |
330 | {%s | 330 | {%s | |
331 | Valores especiales que se pueden introducir para el valor del tamaño: | 331 | Valores 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 | |||
335 | tamaño (%s)} | 335 | tamaño (%s)} | |
336 | 336 | |||
337 | message label_offset | 337 | message label_offset | |
338 | {%s | 338 | {%s | |
339 | Valores especiales que se pueden introducir para el valor del desplazamiento: | 339 | Valores 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 | |||
343 | inicio (%s)} | 343 | inicio (%s)} | |
344 | 344 | |||
345 | message invalid_sector_number | 345 | message invalid_sector_number | |
346 | {Número de sector mal formado | 346 | {Número de sector mal formado | |
347 | } | 347 | } | |
348 | 348 | |||
349 | message Select_file_system_block_size | 349 | message 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 | |||
352 | message Select_file_system_fragment_size | 352 | message 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 | |||
355 | message packname | 355 | message packname | |
356 | {Por favor entroduzca un nombre para el disco NetBSD} | 356 | {Por favor entroduzca un nombre para el disco NetBSD} | |
357 | 357 | |||
358 | message lastchance | 358 | message 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). | |
360 | Todavía no se ha escrito nada. Ésta es su última oportunidad para salir | 360 | Todavía no se ha escrito nada. Ésta es su última oportunidad para salir | |
361 | del proceso antes de que se cambie nada. | 361 | del proceso antes de que se cambie nada. | |
362 | 362 | |||
363 | ¿Desea continuar? | 363 | ¿Desea continuar? | |
364 | } | 364 | } | |
365 | 365 | |||
366 | message disksetupdone | 366 | message disksetupdone | |
367 | {De acuerdo, la primera parte del procedimiento ha terminado. | 367 | {De acuerdo, la primera parte del procedimiento ha terminado. | |
368 | Sysinst ha escrito una etiqueta en el disco objetivo, y ha | 368 | Sysinst ha escrito una etiqueta en el disco objetivo, y ha | |
369 | formateado y comprobado las nuevas particiones que ha indicado | 369 | formateado y comprobado las nuevas particiones que ha indicado | |
370 | para el disco objetivo. | 370 | para el disco objetivo. | |
371 | } | 371 | } | |
372 | 372 | |||
373 | message disksetupdoneupdate | 373 | message disksetupdoneupdate | |
374 | {De acuerdo, la primera parte del procedimiento ha terminado. | 374 | {De acuerdo, la primera parte del procedimiento ha terminado. | |
375 | Sysinst ha escrito una etiqueta en el disco objetivo, y | 375 | Sysinst ha escrito una etiqueta en el disco objetivo, y | |
376 | comprobdo las nuevas particiones que ha indicado para el disco objetivo. | 376 | comprobdo las nuevas particiones que ha indicado para el disco objetivo. | |
377 | } | 377 | } | |
378 | 378 | |||
379 | message openfail | 379 | message 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 | |||
383 | message mountfail | 383 | message 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 | |||
387 | message extractcomplete | 387 | message 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 | |
389 | finalizado. El sistema es ahora capaz de arrancar desde el disco duro | 389 | finalizado. El sistema es ahora capaz de arrancar desde el disco duro | |
390 | seleccionado. Para completar la instalación, sysinst le dará la | 390 | seleccionado. Para completar la instalación, sysinst le dará la | |
391 | oportunidad de configurar antes algunos aspectos esenciales. | 391 | oportunidad de configurar antes algunos aspectos esenciales. | |
392 | } | 392 | } | |
393 | 393 | |||
394 | message instcomplete | 394 | message 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 | |
396 | arrancar desde el disco duro. Siga las instrucciones del documento | 396 | arrancar desde el disco duro. Siga las instrucciones del documento | |
397 | INSTALL sobre la configuración final del sistema. La pagina de manual | 397 | INSTALL sobre la configuración final del sistema. La pagina de manual | |
398 | de afterboot(8) es otra lectura recomendada; contiene una lista de | 398 | de afterboot(8) es otra lectura recomendada; contiene una lista de | |
399 | cosas a comprobar despúes del primer arranque completo. | 399 | cosas a comprobar despúes del primer arranque completo. | |
400 | 400 | |||
401 | Como mínimo, debe editar /etc/rc.conf para que cumpla sus necesidades. | 401 | Como mínimo, debe editar /etc/rc.conf para que cumpla sus necesidades. | |
402 | Vea en /etc/defaults/rc.conf los valores predefinidos. | 402 | Vea en /etc/defaults/rc.conf los valores predefinidos. | |
403 | } | 403 | } | |
404 | 404 | |||
405 | message upgrcomplete | 405 | message upgrcomplete | |
406 | {Actualización a NetBSD-@@VERSION@@ completada. Ahora tendrá que | 406 | {Actualización a NetBSD-@@VERSION@@ completada. Ahora tendrá que | |
407 | seguir las instrucciones del documento INSTALL para hacer lo que | 407 | seguir las instrucciones del documento INSTALL para hacer lo que | |
408 | necesite para conseguir tener el sistema configurado para su | 408 | necesite para conseguir tener el sistema configurado para su | |
409 | situación. | 409 | situación. | |
410 | Recuerde (re)leer la página de manual de afterboot(8), ya que puede | 410 | Recuerde (re)leer la página de manual de afterboot(8), ya que puede | |
411 | contener nuevos apartados desde su ultima actualización. | 411 | contener nuevos apartados desde su ultima actualización. | |
412 | 412 | |||
413 | Como mínimo, debe editar rc.conf para su entorno local y cambiar | 413 | Como mínimo, debe editar rc.conf para su entorno local y cambiar | |
414 | rc_configured=NO a rc_configured=YES o los reinicios se detendrán en | 414 | rc_configured=NO a rc_configured=YES o los reinicios se detendrán en | |
415 | single-user, y copie de nuevo los ficheros de contraseñas (teniendo en | 415 | single-user, y copie de nuevo los ficheros de contraseñas (teniendo en | |
416 | cuenta las nuevas cuentas de sistema que se hayan podido crear para esta | 416 | cuenta las nuevas cuentas de sistema que se hayan podido crear para esta | |
417 | versión) si estuviera usando ficheros de contraseñas locales. | 417 | versión) si estuviera usando ficheros de contraseñas locales. | |
418 | } | 418 | } | |
419 | 419 | |||
420 | 420 | |||
421 | message unpackcomplete | 421 | message unpackcomplete | |
422 | {Finalizado el desempaquetamiento de conjuntos adicionales de NetBSD-@@VERSION@@. | 422 | {Finalizado el desempaquetamiento de conjuntos adicionales de NetBSD-@@VERSION@@. | |
423 | Ahora necesitará seguir las instrucciones del documento INSTALL para | 423 | Ahora necesitará seguir las instrucciones del documento INSTALL para | |
424 | tener su sistema reconfigurado para su situación. | 424 | tener su sistema reconfigurado para su situación. | |
425 | La página de manual de afterboot(8) también puede serle de ayuda. | 425 | La página de manual de afterboot(8) también puede serle de ayuda. | |
426 | 426 | |||
427 | Como mínimo, debe editar rc.conf para su entorno local, y cambiar | 427 | Como mínimo, debe editar rc.conf para su entorno local, y cambiar | |
428 | rd_configure=NO a rc_configured=YES, o los reinicios se detendrán | 428 | rd_configure=NO a rc_configured=YES, o los reinicios se detendrán | |
429 | en modo de usuario único. | 429 | en modo de usuario único. | |
430 | } | 430 | } | |
431 | 431 | |||
432 | message distmedium | 432 | message 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 | |
434 | de la distribución. Como se apunta en las notas INSTALL, tiene diversas | 434 | de la distribución. Como se apunta en las notas INSTALL, tiene diversas | |
435 | opciones. Para ftp o nfs, tiene que estar conectado a una red con acceso | 435 | opciones. Para ftp o nfs, tiene que estar conectado a una red con acceso | |
436 | a las maquinas apropiadas. | 436 | a las maquinas apropiadas. | |
437 | 437 | |||
438 | Conjuntos seleccionados: %d, procesados: %d. Siguiente conjunto: %s. | 438 | Conjuntos seleccionados: %d, procesados: %d. Siguiente conjunto: %s. | |
439 | 439 | |||
440 | } | 440 | } | |
441 | 441 | |||
442 | message distset | 442 | message 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 | |
444 | distribución. Hay algunos conjuntos básicos que son necesarios para todas | 444 | distribución. Hay algunos conjuntos básicos que son necesarios para todas | |
445 | las instalaciones, y otros conjuntos que no son necesarios para todas las | 445 | las instalaciones, y otros conjuntos que no son necesarios para todas las | |
446 | instalaciones. Puede escoger para instalar sólo los conjuntos esenciales | 446 | instalaciones. 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 | |
448 | seleccionar de entre los conjuntos de distribución opcionales. | 448 | seleccionar de entre los conjuntos de distribución opcionales. | |
449 | } | 449 | } | |
450 | 450 | |||
451 | message ftpsource | 451 | message 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 | |
453 | usarán. Si «usuario» es «ftp», no se necesita contraseña.. | 453 | usarán. Si «usuario» es «ftp», no se necesita contraseña.. | |
454 | 454 | |||
455 | } | 455 | } | |
456 | 456 | |||
457 | message email | 457 | message email | |
458 | {dirección de correo electrónico} | 458 | {dirección de correo electrónico} | |
459 | 459 | |||
460 | message dev | 460 | message dev | |
461 | {dispositivo} | 461 | {dispositivo} | |
462 | 462 | |||
463 | message nfssource | 463 | message 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 | |
465 | la distribución. Recuerde: el directorio debe contener los archivos .tgz y | 465 | la distribución. Recuerde: el directorio debe contener los archivos .tgz y | |
466 | debe ser montable por nfs. | 466 | debe ser montable por nfs. | |
467 | 467 | |||
468 | } | 468 | } | |
469 | 469 | |||
470 | message floppysource | 470 | message 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 | |
472 | transferencia en el sistema de archivos. Los archivos del conjunto han de estar | 472 | transferencia en el sistema de archivos. Los archivos del conjunto han de estar | |
473 | en el directorio raíz de los disquetes. | 473 | en el directorio raíz de los disquetes. | |
474 | 474 | |||
475 | } | 475 | } | |
476 | 476 | |||
477 | message cdromsource | 477 | message 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 | |
479 | donde se encuentre la distribución. | 479 | donde se encuentre la distribución. | |
480 | Recuerde, el directorio debe contener los archivos .tgz. | 480 | Recuerde, el directorio debe contener los archivos .tgz. | |
481 | 481 | |||
482 | } | 482 | } | |
483 | 483 | |||
484 | message Available_cds | 484 | message Available_cds | |
485 | {Available CDs} | 485 | {Available CDs} | |
486 | 486 | |||
487 | message ask_cd | 487 | message 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 | |||
490 | message cd_path_not_found | 490 | message 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 | |
492 | CD. Please check device and path name.} | 492 | CD. Please check device and path name.} | |
493 | 493 | |||
494 | message localfssource | 494 | message localfssource | |
495 | {Introduzca el dispositivo local desmontado y el directorio de ese | 495 | {Introduzca el dispositivo local desmontado y el directorio de ese | |
496 | dispositivo donde se encuentre la distribución. | 496 | dispositivo donde se encuentre la distribución. | |
497 | Recuerde, el directorio debe contener los archivos .tgz. | 497 | Recuerde, el directorio debe contener los archivos .tgz. | |
498 | 498 | |||
499 | } | 499 | } | |
500 | 500 | |||
501 | message localdir | 501 | message 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. | |
503 | Recuerde, el directorio debe contener los archivos .tgz. | 503 | Recuerde, el directorio debe contener los archivos .tgz. | |
504 | 504 | |||
505 | } | 505 | } | |
506 | 506 | |||
507 | message filesys | 507 | message filesys | |
508 | {sistema de archivos} | 508 | {sistema de archivos} | |
509 | 509 | |||
510 | message nonet | 510 | message 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. | |
512 | Se le devolverá al menú anterior. | 512 | Se le devolverá al menú anterior. | |
513 | } | 513 | } | |
514 | 514 | |||
515 | message netup | 515 | message 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 | |||
519 | message asknetdev | 519 | message asknetdev | |
520 | {¿Cuál interfaces usar?} | 520 | {¿Cuál interfaces usar?} | |
521 | 521 | |||
522 | message netdevs | 522 | message netdevs | |
523 | {Interfaces disponibles} | 523 | {Interfaces disponibles} | |
524 | 524 | |||
525 | message netinfo | 525 | message 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 | |||
530 | message net_domain | 530 | message net_domain | |
531 | {Su dominio DNS} | 531 | {Su dominio DNS} | |
532 | 532 | |||
533 | message net_host | 533 | message net_host | |
534 | {Su nombre de máquina} | 534 | {Su nombre de máquina} | |
535 | 535 | |||
536 | message net_ip | 536 | message net_ip | |
537 | {Su número IPv4} | 537 | {Su número IPv4} | |
538 | 538 | |||
539 | message net_srv_ip | 539 | message net_srv_ip | |
540 | {Número servidor IPv4} | 540 | {Número servidor IPv4} | |
541 | 541 | |||
542 | message net_mask | 542 | message net_mask | |
543 | {Máscara de red IPv4} | 543 | {Máscara de red IPv4} | |
544 | 544 | |||
545 | message net_namesrv | 545 | message net_namesrv | |
546 | {Servidor de nombres IPv4} | 546 | {Servidor de nombres IPv4} | |
547 | 547 | |||
548 | message net_defroute | 548 | message net_defroute | |
549 | {Pasarela IPv4} | 549 | {Pasarela IPv4} | |
550 | 550 | |||
551 | message net_media | 551 | message net_media | |
552 | {Tipo de medio de la red} | 552 | {Tipo de medio de la red} | |
553 | 553 | |||
554 | message netok | 554 | message netok | |
555 | {Ha introducido los siguientes valores. | 555 | {Ha introducido los siguientes valores. | |
556 | 556 | |||
557 | Dominio DNS: %s | 557 | Dominio DNS: %s | |
558 | Nombre de máquina: %s | 558 | Nombre de máquina: %s | |
559 | Serv de nombres: %s | 559 | Serv de nombres: %s | |
560 | Interfaz primaria: %s | 560 | Interfaz primaria: %s | |
561 | Tipo de medio: %s | 561 | Tipo de medio: %s | |
562 | IP de la máquina: %s | 562 | IP de la máquina: %s | |
563 | Máscara de red: %s | 563 | Máscara de red: %s | |
564 | Pasarela IPv4: %s | 564 | Pasarela IPv4: %s | |
565 | } | 565 | } | |
566 | 566 | |||
567 | message netok_slip | 567 | message netok_slip | |
568 | {Ha introducido los siguientes valores. ¿Son correctos? | 568 | {Ha introducido los siguientes valores. ¿Son correctos? | |
569 | 569 | |||
570 | Dominio DNS: %s | 570 | Dominio DNS: %s | |
571 | Nombre de la máquina: %s | 571 | Nombre de la máquina: %s | |
572 | Serv de nombres: %s | 572 | Serv de nombres: %s | |
573 | Interfaz primaria: %s | 573 | Interfaz primaria: %s | |
574 | Tipo de medio: %s | 574 | Tipo de medio: %s | |
575 | IP de la máquina: %s | 575 | IP de la máquina: %s | |
576 | IP del servidor: %s | 576 | IP del servidor: %s | |
577 | Máscara de red: %s | 577 | Máscara de red: %s | |
578 | Pasarela IPv4: %s | 578 | Pasarela IPv4: %s | |
579 | } | 579 | } | |
580 | 580 | |||
581 | message netokv6 | 581 | message netokv6 | |
582 | {IPv6 autoconf: %s | 582 | {IPv6 autoconf: %s | |
583 | } | 583 | } | |
584 | 584 | |||
585 | message netok_ok | 585 | message netok_ok | |
586 | {¿Son correctos?} | 586 | {¿Son correctos?} | |
587 | 587 | |||
588 | message wait_network | 588 | message wait_network | |
589 | { | 589 | { | |
590 | Espere mientras las interfaces de red se levantan. | 590 | Espere mientras las interfaces de red se levantan. | |
591 | } | 591 | } | |
592 | 592 | |||
593 | message resolv | 593 | message 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 | |||
597 | message realdir | 597 | message 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 | |
599 | interrumpida. | 599 | interrumpida. | |
600 | } | 600 | } | |
601 | 601 | |||
602 | message delete_xfer_file | 602 | message delete_xfer_file | |
603 | {A eliminar después de la instalación} | 603 | {A eliminar después de la instalación} | |
604 | 604 | |||
605 | message notarfile | 605 | message notarfile | |
606 | {El conjunto %s no existe.} | 606 | {El conjunto %s no existe.} | |
607 | 607 | |||
608 | message endtarok | 608 | message endtarok | |
609 | {Todos los conjuntos de distribución han sido desempaquetados | 609 | {Todos los conjuntos de distribución han sido desempaquetados | |
610 | correctamente.} | 610 | correctamente.} | |
611 | 611 | |||
612 | message endtar | 612 | message 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. | |
614 | Su instalación está incompleta. | 614 | Su instalación está incompleta. | |
615 | 615 | |||
616 | Ha seleccionado %d conjuntos de distribución. %d conjuntos no han sido | 616 | Ha seleccionado %d conjuntos de distribución. %d conjuntos no han sido | |
617 | encontrados, y %d han sido omitidos después de que ocurriera un | 617 | encontrados, y %d han sido omitidos después de que ocurriera un | |
618 | error. De los %d que se han intentado, %d se han desempaquetado | 618 | error. De los %d que se han intentado, %d se han desempaquetado | |
619 | sin errores y %d con errores. | 619 | sin errores y %d con errores. | |
620 | 620 | |||
621 | La instalación ha sido interrumpida. Por favor, compruebe de nuevo su | 621 | La instalación ha sido interrumpida. Por favor, compruebe de nuevo su | |
622 | fuente de distribución y considere el reinstalar los conjuntos desde | 622 | fuente de distribución y considere el reinstalar los conjuntos desde | |
623 | el menú principal.} | 623 | el menú principal.} | |
624 | 624 | |||
625 | message abort | 625 | message 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 | |||
629 | message abortinst | 629 | message abortinst | |
630 | {La distribución no ha sido cargada correctamente. Necesitará proceder | 630 | {La distribución no ha sido cargada correctamente. Necesitará proceder | |
631 | a mano. Instalación interrumpida. | 631 | a mano. Instalación interrumpida. | |
632 | } | 632 | } | |
633 | 633 | |||
634 | message abortupgr | 634 | message abortupgr | |
635 | {La distribución no ha sido correctamente cargada. Necesitará proceder | 635 | {La distribución no ha sido correctamente cargada. Necesitará proceder | |
636 | a mano. Instalación interrumpida. | 636 | a mano. Instalación interrumpida. | |
637 | } | 637 | } | |
638 | 638 | |||
639 | message abortunpack | 639 | message abortunpack | |
640 | {El desempaquetamiento de los conjuntos adicionales no ha sido satisfactorio. | 640 | {El desempaquetamiento de los conjuntos adicionales no ha sido satisfactorio. | |
641 | Necesitará proceder a mano, o escoger una fuente diferente para los conjuntos | 641 | Necesitará proceder a mano, o escoger una fuente diferente para los conjuntos | |
642 | de esta distribución y volver a intentarlo. | 642 | de esta distribución y volver a intentarlo. | |
643 | } | 643 | } | |
644 | 644 | |||
645 | message createfstab | 645 | message 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 | |||
650 | message noetcfstab | 650 | message noetcfstab | |
651 | {¡Ayuda! No hay /etc/fstab del disco objetivo %s. | 651 | {¡Ayuda! No hay /etc/fstab del disco objetivo %s. | |
652 | Interrumpiendo la actualización. | 652 | Interrumpiendo la actualización. | |
653 | } | 653 | } | |
654 | 654 | |||
655 | message badetcfstab | 655 | message 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. | |
657 | Interrumpiendo la actualización. | 657 | Interrumpiendo la actualización. | |
658 | } | 658 | } | |
659 | 659 | |||
660 | message X_oldexists | 660 | message 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 | |
662 | disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto | 662 | disco objetivo ya tiene un %s/bin/X.old. Por favor, arregle esto | |
663 | antes de continuar. | 663 | antes de continuar. | |
664 | 664 | |||
665 | Una manera es iniciando una shell desde el menú Utilidades, y examinar | 665 | Una manera es iniciando una shell desde el menú Utilidades, y examinar | |
666 | el objetivo %s/bin/X y %s/bin/X.old. Si | 666 | el 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 | |
669 | una actualizacion reciente e incompleta, puede rm -f %s/bin/X | 669 | una actualizacion reciente e incompleta, puede rm -f %s/bin/X | |
670 | y mv %s/bin/X.old a %s/bin/X. | 670 | y mv %s/bin/X.old a %s/bin/X. | |
671 | 671 | |||
672 | Interrumpiendo la actualización.} | 672 | Interrumpiendo la actualización.} | |
673 | 673 | |||
674 | message netnotup | 674 | message 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 | |
676 | de nombres no son alcanzables por un ping. ¿Quiere configurar la red | 676 | de nombres no son alcanzables por un ping. ¿Quiere configurar la red | |
677 | de nuevo? («No» le permite continuar de todos modos o interrumpir el | 677 | de nuevo? («No» le permite continuar de todos modos o interrumpir el | |
678 | proceso de instalación.) | 678 | proceso de instalación.) | |
679 | } | 679 | } | |
680 | 680 | |||
681 | message netnotup_continueanyway | 681 | message 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 | |
683 | suponer que la red está funcionando? («No» interrumpe el proceso de | 683 | suponer que la red está funcionando? («No» interrumpe el proceso de | |
684 | instalación.) | 684 | instalación.) | |
685 | } | 685 | } | |
686 | 686 | |||
687 | message makedev | 687 | message makedev | |
688 | {Creando nodos de dispositivo ... | 688 | {Creando nodos de dispositivo ... | |
689 | } | 689 | } | |
690 | 690 | |||
691 | message badfs | 691 | message 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 | |
693 | fsck ha fallado. ¿Desea montarlo de todos modos? (Código de error: | 693 | fsck ha fallado. ¿Desea montarlo de todos modos? (Código de error: | |
694 | %d.) | 694 | %d.) | |
695 | } | 695 | } | |
696 | 696 | |||
697 | message rootmissing | 697 | message rootmissing | |
698 | { el directorio raíz objetivo no existe %s. | 698 | { el directorio raíz objetivo no existe %s. | |
699 | } | 699 | } | |
700 | 700 | |||
701 | message badroot | 701 | message 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 | |||
707 | message fd_type | 707 | message fd_type | |
708 | {Tipo de sistema de archivos del disquete} | 708 | {Tipo de sistema de archivos del disquete} | |
709 | 709 | |||
710 | message fdnotfound | 710 | message 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 | |||
714 | message fdremount | 714 | message fdremount | |
715 | {El disquete no ha sido montado correctamente. | 715 | {El disquete no ha sido montado correctamente. | |
716 | } | 716 | } | |
717 | 717 | |||
718 | message fdmount | 718 | message 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 | |||
721 | Si el conjunto no está en más discos, seleccione "Conjunto finalizado" | 721 | Si el conjunto no está en más discos, seleccione "Conjunto finalizado" | |
722 | para instalarlo. Seleccione "Abortar lectura" para regresar al menú | 722 | para instalarlo. Seleccione "Abortar lectura" para regresar al menú | |
723 | de selección de medios de instalación. | 723 | de selección de medios de instalación. | |
724 | } | 724 | } | |
725 | 725 | |||
726 | message mntnetconfig | 726 | message 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 | |
728 | funcionamiento normal de esta máquina y desea instalarla en /etc? } | 728 | funcionamiento normal de esta máquina y desea instalarla en /etc? } | |
729 | 729 | |||
730 | message cur_distsets | 730 | message 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 | |||
735 | message cur_distsets_header | 735 | message cur_distsets_header | |
736 | { Conjunto de distribución Selecc. | 736 | { Conjunto de distribución Selecc. | |
737 | ------------------------ -------- | 737 | ------------------------ -------- | |
738 | } | 738 | } | |
739 | 739 | |||
740 | message set_base | 740 | message set_base | |
741 | {Base} | 741 | {Base} | |
742 | 742 | |||
743 | message set_system | 743 | message set_system | |
744 | {Sistema (/etc)} | 744 | {Sistema (/etc)} | |
745 | 745 | |||
746 | message set_compiler | 746 | message set_compiler | |
747 | {Herramientas del compilador} | 747 | {Herramientas del compilador} | |
748 | 748 | |||
749 | message set_games | 749 | message set_games | |
750 | {Juegos} | 750 | {Juegos} | |
751 | 751 | |||
752 | message set_man_pages | 752 | message set_man_pages | |
753 | {Paginas de manual} | 753 | {Paginas de manual} | |
754 | 754 | |||
755 | message set_misc | 755 | message set_misc | |
756 | {Varios} | 756 | {Varios} | |
757 | 757 | |||
758 | message set_modules | 758 | message set_modules | |
759 | {Kernel Modules} | 759 | {Kernel Modules} | |
760 | 760 | |||
761 | message set_tests | 761 | message set_tests | |
762 | {Programas de prueba} | 762 | {Programas de prueba} | |
763 | 763 | |||
764 | message set_text_tools | 764 | message set_text_tools | |
765 | {Herramientas de procesamiento de textos} | 765 | {Herramientas de procesamiento de textos} | |
766 | 766 | |||
767 | message set_X11 | 767 | message set_X11 | |
768 | {Conjuntos de X11} | 768 | {Conjuntos de X11} | |
769 | 769 | |||
770 | message set_X11_base | 770 | message set_X11_base | |
771 | {X11 base y clientes} | 771 | {X11 base y clientes} | |
772 | 772 | |||
773 | message set_X11_etc | 773 | message set_X11_etc | |
774 | {Configuración de X11} | 774 | {Configuración de X11} | |
775 | 775 | |||
776 | message set_X11_fonts | 776 | message set_X11_fonts | |
777 | {Tipos de letra de X11} | 777 | {Tipos de letra de X11} | |
778 | 778 | |||
779 | message set_X11_servers | 779 | message set_X11_servers | |
780 | {Servidores X11} | 780 | {Servidores X11} | |
781 | 781 | |||
782 | message set_X11_prog | 782 | message set_X11_prog | |
783 | {Programación de X11} | 783 | {Programación de X11} | |
784 | 784 | |||
785 | message set_source | 785 | message set_source | |
786 | {Source and debug sets} | 786 | {Source and debug sets} | |
787 | 787 | |||
788 | message set_syssrc | 788 | message set_syssrc | |
789 | {Kernel sources} | 789 | {Kernel sources} | |
790 | 790 | |||
791 | message set_src | 791 | message set_src | |
792 | {Base sources} | 792 | {Base sources} | |
793 | 793 | |||
794 | message set_sharesrc | 794 | message set_sharesrc | |
795 | {Share sources} | 795 | {Share sources} | |
796 | 796 | |||
797 | message set_gnusrc | 797 | message set_gnusrc | |
798 | {GNU sources} | 798 | {GNU sources} | |
799 | 799 | |||
800 | message set_xsrc | 800 | message set_xsrc | |
801 | {X11 sources} | 801 | {X11 sources} | |
802 | 802 | |||
803 | message set_debug | 803 | message set_debug | |
804 | {Debug symbols} | 804 | {Debug symbols} | |
805 | 805 | |||
806 | message set_xdebug | 806 | message set_xdebug | |
807 | {X11 debug symbols} | 807 | {X11 debug symbols} | |
808 | 808 | |||
809 | message cur_distsets_row | 809 | message cur_distsets_row | |
810 | {%-27s %3s} | 810 | {%-27s %3s} | |
811 | 811 | |||
812 | message select_all | 812 | message select_all | |
813 | {Seleccionar todos los conjuntos anteriores} | 813 | {Seleccionar todos los conjuntos anteriores} | |
814 | 814 | |||
815 | message select_none | 815 | message select_none | |
816 | {No seleccionar ninguno de los conjuntos anteriores} | 816 | {No seleccionar ninguno de los conjuntos anteriores} | |
817 | 817 | |||
818 | message install_selected_sets | 818 | message install_selected_sets | |
819 | {Instalar los conjuntos seleccionados} | 819 | {Instalar los conjuntos seleccionados} | |
820 | 820 | |||
821 | message tarerror | 821 | message 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 | |
823 | que algunos ficheros no han sido extraidos correctamente y su sistema | 823 | que algunos ficheros no han sido extraidos correctamente y su sistema | |
824 | no estará completo. | 824 | no estará completo. | |
825 | 825 | |||
826 | ¿Continuar extrayendo conjuntos?} | 826 | ¿Continuar extrayendo conjuntos?} | |
827 | 827 | |||
828 | message must_be_one_root | 828 | message 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 | |||
831 | message partitions_overlap | 831 | message partitions_overlap | |
832 | {las particiones %c y %c se solapan.} | 832 | {las particiones %c y %c se solapan.} | |
833 | 833 | |||
834 | message No_Bootcode | 834 | message 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 | |||
837 | message cannot_ufs2_root | 837 | message 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 | |
839 | on this port.} | 839 | on this port.} | |
840 | 840 | |||
841 | message edit_partitions_again | 841 | message edit_partitions_again | |
842 | { | 842 | { | |
843 | 843 | |||
844 | Puede editar la tabla de particiones a mano, o dejarlo y retornar al | 844 | Puede editar la tabla de particiones a mano, o dejarlo y retornar al | |
845 | menú principal. | 845 | menú principal. | |
846 | 846 | |||
847 | ¿Editar la tabla de particiones de nuevo?} | 847 | ¿Editar la tabla de particiones de nuevo?} | |
848 | 848 | |||
849 | message config_open_error | 849 | message 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 | |||
852 | message choose_timezone | 852 | message 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. | |
854 | Presione RETURN para seleccionar una entrada. | 854 | Presione RETURN para seleccionar una entrada. | |
855 | Presione «x» seguido de RETURN para salir de la selección de la | 855 | Presione «x» seguido de RETURN para salir de la selección de la | |
856 | zona horaria. | 856 | zona 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 | |||
863 | message tz_back | 863 | message tz_back | |
864 | { Volver a la lista principal de zonas horarias} | 864 | { Volver a la lista principal de zonas horarias} | |
865 | 865 | |||
866 | message swapactive | 866 | message 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 | |
868 | puede que esté en uso actualmente si su sistema tiene poca memoria. Como | 868 | puede que esté en uso actualmente si su sistema tiene poca memoria. Como | |
869 | se dispone a reparticionar este disco, esta partición swap será desactivada | 869 | se dispone a reparticionar este disco, esta partición swap será desactivada | |
870 | ahora. Se advierte de que esto puede conducir a problemas de swap. | 870 | ahora. Se advierte de que esto puede conducir a problemas de swap. | |
871 | Si obtuviera algun error, reinicie el sistema e inténtelo de nuevo.} | 871 | Si obtuviera algun error, reinicie el sistema e inténtelo de nuevo.} | |
872 | 872 | |||
873 | message swapdelfailed | 873 | message 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 | |
875 | ha escogido para la instalación. Por favor, reinicie e inténtelo de nuevo.} | 875 | ha escogido para la instalación. Por favor, reinicie e inténtelo de nuevo.} | |
876 | 876 | |||
877 | message rootpw | 877 | message 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, | |
879 | y por tanto está vacía. ¿Quiere establecer ahora una contraseña de root para | 879 | y por tanto está vacía. ¿Quiere establecer ahora una contraseña de root para | |
880 | el sistema?} | 880 | el sistema?} | |
881 | 881 | |||
882 | message rootsh | 882 | message 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 | |
884 | omisión es /bin/sh, pero podría preferir otra.} | 884 | omisión es /bin/sh, pero podría preferir otra.} | |
885 | 885 | |||
886 | message no_root_fs | 886 | message no_root_fs | |
887 | { | 887 | { | |
888 | No hay un sistema de archivos raíz definido. Necesitará al menos un punto | 888 | No hay un sistema de archivos raíz definido. Necesitará al menos un punto | |
889 | de montaje con «/». | 889 | de montaje con «/». | |
890 | 890 | |||
891 | Presione <return> para continuar. | 891 | Presione <return> para continuar. | |
892 | } | 892 | } | |
893 | 893 | |||
894 | message slattach { | 894 | message slattach { | |
895 | Introduzca los parámetros de slattach | 895 | Introduzca los parámetros de slattach | |
896 | } | 896 | } | |
897 | 897 | |||
898 | message Pick_an_option {Seleccione una opción para activar/desactivar.} | 898 | message Pick_an_option {Seleccione una opción para activar/desactivar.} | |
899 | message Scripting {Scripting} | 899 | message Scripting {Scripting} | |
900 | message Logging {Logging} | 900 | message Logging {Logging} | |
901 | 901 | |||
902 | message Status { Estado: } | 902 | message Status { Estado: } | |
903 | message Command {Orden: } | 903 | message Command {Orden: } | |
904 | message Running {Ejecutando} | 904 | message Running {Ejecutando} | |
905 | message Finished {Acabado } | 905 | message Finished {Acabado } | |
906 | message Command_failed {Orden fallida} | 906 | message Command_failed {Orden fallida} | |
907 | message Command_ended_on_signal {Orden terminada en señal} | 907 | message Command_ended_on_signal {Orden terminada en señal} | |
908 | 908 | |||
909 | message NetBSD_VERSION_Install_System {Sistema de instalación de NetBSD-@@VERSION@@} | 909 | message NetBSD_VERSION_Install_System {Sistema de instalación de NetBSD-@@VERSION@@} | |
910 | message Exit_Install_System {Salir del sistema de instalación} | 910 | message Exit_Install_System {Salir del sistema de instalación} | |
911 | message Install_NetBSD_to_hard_disk {Instalar NetBSD en el disco duro} | 911 | message Install_NetBSD_to_hard_disk {Instalar NetBSD en el disco duro} | |
912 | message Upgrade_NetBSD_on_a_hard_disk {Actualizar NetBSD en un disco duro} | 912 | message Upgrade_NetBSD_on_a_hard_disk {Actualizar NetBSD en un disco duro} | |
913 | message Re_install_sets_or_install_additional_sets {Reinstalar conjuntos o instalar conjuntos adicionales} | 913 | message Re_install_sets_or_install_additional_sets {Reinstalar conjuntos o instalar conjuntos adicionales} | |
914 | message Reboot_the_computer {Reiniciar la computadora} | 914 | message Reboot_the_computer {Reiniciar la computadora} | |
915 | message Utility_menu {Menú de utilidades} | 915 | message Utility_menu {Menú de utilidades} | |
916 | message Config_menu {Menu de configuración} | 916 | message Config_menu {Menu de configuración} | |
917 | message exit_menu_generic {atrás} | 917 | message exit_menu_generic {atrás} | |
918 | message exit_utility_menu {Exit} | 918 | message exit_utility_menu {Exit} | |
919 | message NetBSD_VERSION_Utilities {Utilidades de NetBSD-@@VERSION@@} | 919 | message NetBSD_VERSION_Utilities {Utilidades de NetBSD-@@VERSION@@} | |
920 | message Run_bin_sh {Ejecutar /bin/sh} | 920 | message Run_bin_sh {Ejecutar /bin/sh} | |
921 | message Set_timezone {Establecer la zona horaria} | 921 | message Set_timezone {Establecer la zona horaria} | |
922 | message Configure_network {Configurar la red} | 922 | message Configure_network {Configurar la red} | |
923 | message Partition_a_disk {Particionar un disco} | 923 | message Partition_a_disk {Particionar un disco} | |
924 | message Logging_functions {Funciones de registro} | 924 | message Logging_functions {Funciones de registro} | |
925 | message Halt_the_system {Detener el sistema} | 925 | message Halt_the_system {Detener el sistema} | |
926 | message yes_or_no {¿sí o no?} | 926 | message yes_or_no {¿sí o no?} | |
927 | message Hit_enter_to_continue {Presione intro para continuar} | 927 | message Hit_enter_to_continue {Presione intro para continuar} | |
928 | message Choose_your_installation {Seleccione su instalación} | 928 | message Choose_your_installation {Seleccione su instalación} | |
929 | message Set_Sizes {Establecer los tamaños de las particiones NetBSD} | 929 | message Set_Sizes {Establecer los tamaños de las particiones NetBSD} | |
930 | message Use_Existing {Usar los tamaños de las particiones existentes} | 930 | message Use_Existing {Usar los tamaños de las particiones existentes} | |
931 | message Megabytes {Megabytes} | 931 | message Megabytes {Megabytes} | |
932 | message Cylinders {Cilindros} | 932 | message Cylinders {Cilindros} | |
933 | message Sectors {Sectores} | 933 | message Sectors {Sectores} | |
934 | message Select_medium {Seleccione el medio} | 934 | message Select_medium {Seleccione el medio} | |
935 | message ftp {FTP} | 935 | message ftp {FTP} | |
936 | message http {HTTP} | 936 | message http {HTTP} | |
937 | message nfs {NFS} | 937 | message nfs {NFS} | |
938 | .if HAVE_INSTALL_IMAGE | 938 | .if HAVE_INSTALL_IMAGE | |
939 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | 939 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | |
940 | .else | 940 | .else | |
941 | message cdrom {CD-ROM / DVD} | 941 | message cdrom {CD-ROM / DVD} | |
942 | .endif | 942 | .endif | |
943 | message floppy {Disquete} | 943 | message floppy {Disquete} | |
944 | message local_fs {Sistema de archivos desmontado} | 944 | message local_fs {Sistema de archivos desmontado} | |
945 | message local_dir {Directorio Local} | 945 | message local_dir {Directorio Local} | |
946 | message Select_your_distribution {Seleccione su distribución} | 946 | message Select_your_distribution {Seleccione su distribución} | |
947 | message Full_installation {Instalación completa} | 947 | message Full_installation {Instalación completa} | |
948 | message Full_installation_nox {Instalación sin X11} | 948 | message Full_installation_nox {Instalación sin X11} | |
949 | message Minimal_installation {Instalación mínima} | 949 | message Minimal_installation {Instalación mínima} | |
950 | message Custom_installation {Instalación personalizada} | 950 | message Custom_installation {Instalación personalizada} | |
951 | message hidden {** oculto **} | 951 | message hidden {** oculto **} | |
952 | message Host {Máquina} | 952 | message Host {Máquina} | |
953 | message Base_dir {Directorio base} | 953 | message Base_dir {Directorio base} | |
954 | message Set_dir_src {Directorio de conjuntos binary} /* fix XLAT */ | 954 | message Set_dir_src {Directorio de conjuntos binary} /* fix XLAT */ | |
955 | message Set_dir_bin {Directorio de conjuntos source} /* fix XLAT */ | 955 | message Set_dir_bin {Directorio de conjuntos source} /* fix XLAT */ | |
956 | message Xfer_dir {Directorio a transferir a} | 956 | message Xfer_dir {Directorio a transferir a} | |
957 | message User {Usuario} | 957 | message User {Usuario} | |
958 | message Password {Contraseña} | 958 | message Password {Contraseña} | |
959 | message Proxy {Proxy} | 959 | message Proxy {Proxy} | |
960 | message Get_Distribution {Obtener la distribución} | 960 | message Get_Distribution {Obtener la distribución} | |
961 | message Continue {Continuar} | 961 | message Continue {Continuar} | |
962 | message What_do_you_want_to_do {¿Qué desea hacer?} | 962 | message What_do_you_want_to_do {¿Qué desea hacer?} | |
963 | message Try_again {Reintentar} | 963 | message Try_again {Reintentar} | |
964 | message Set_finished {Conjunto finalizado} | 964 | message Set_finished {Conjunto finalizado} | |
965 | message Skip_set {Omitir conjunto} | 965 | message Skip_set {Omitir conjunto} | |
966 | message Skip_group {Omitir grupo de conjuntos} | 966 | message Skip_group {Omitir grupo de conjuntos} | |
967 | message Abandon {Abandonar instalación} | 967 | message Abandon {Abandonar instalación} | |
968 | message Abort_fetch {Abortar lectura} | 968 | message Abort_fetch {Abortar lectura} | |
969 | message Device {Dispositivo} | 969 | message Device {Dispositivo} | |
970 | message File_system {Sistema de archivos} | 970 | message File_system {Sistema de archivos} | |
971 | message Select_DNS_server { Seleccione servidor DNS} | 971 | message Select_DNS_server { Seleccione servidor DNS} | |
972 | message other {otro } | 972 | message other {otro } | |
973 | message Perform_autoconfiguration {¿Realizar autoconfiguración ?} | 973 | message Perform_autoconfiguration {¿Realizar autoconfiguración ?} | |
974 | message Root_shell {Shell de root} | 974 | message Root_shell {Shell de root} | |
975 | message Color_scheme {Combinación de colores} | 975 | message Color_scheme {Combinación de colores} | |
976 | message White_on_black {Blanco sobre negro} | 976 | message White_on_black {Blanco sobre negro} | |
977 | message Black_on_white {Negro sobre blanco} | 977 | message Black_on_white {Negro sobre blanco} | |
978 | message White_on_blue {Blanco sobre azul} | 978 | message White_on_blue {Blanco sobre azul} | |
979 | message Green_on_black {Verde sobre negro} | 979 | message Green_on_black {Verde sobre negro} | |
980 | message User_shell {Shell de user} | 980 | message User_shell {Shell de user} | |
981 | 981 | |||
982 | .if AOUT2ELF | 982 | .if AOUT2ELF | |
983 | message aoutfail | 983 | message 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 | |
985 | compartidas a.out antiguas. Por favor, intente el proceso de actualización | 985 | compartidas a.out antiguas. Por favor, intente el proceso de actualización | |
986 | de nuevo y asegúrese de que ha montado todos los sistemas de ficheros.} | 986 | de nuevo y asegúrese de que ha montado todos los sistemas de ficheros.} | |
987 | 987 | |||
988 | message emulbackup | 988 | message 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 | |
990 | apuntaba a un sistema de archivos desmontado. Se le ha dado la extension | 990 | apuntaba 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 | |
992 | preocuparse de fundir el directorio /emul/aout nuevamente creado con el viejo. | 992 | preocuparse 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 | |
997 | Si no está preparado para completar la | 997 | Si no está preparado para completar la | |
998 | instalación en este momento, puede seleccionar «ninguno» y será retornado | 998 | instalación en este momento, puede seleccionar «ninguno» y será retornado | |
999 | al menú principal. Cuando más adelante esté preparado, deberá seleccionar | 999 | al 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 | |||
1002 | message cdrombadmount | 1002 | message cdrombadmount | |
1003 | {No se ha podido montar el CDROM /dev/%s.} | 1003 | {No se ha podido montar el CDROM /dev/%s.} | |
1004 | 1004 | |||
1005 | message localfsbadmount | 1005 | message 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 | |||
1009 | message oldsendmail | 1009 | message 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 | |
1011 | es ahora postfix. El fichero /etc/mailer.conf aún está configurado para usar | 1011 | es ahora postfix. El fichero /etc/mailer.conf aún está configurado para usar | |
1012 | el sendmail eliminado. ¿Desea actualizar el fichero /etc/mailer.conf | 1012 | el sendmail eliminado. ¿Desea actualizar el fichero /etc/mailer.conf | |
1013 | automáticamente para que apunte a postfix? Si escoge "No" tendrá que | 1013 | automáticamente para que apunte a postfix? Si escoge "No" tendrá que | |
1014 | actualizar /etc/mailer.conf usted mismo para asegurarse de que los mensajes | 1014 | actualizar /etc/mailer.conf usted mismo para asegurarse de que los mensajes | |
1015 | de correo electrónico se envíen correctamente.} | 1015 | de correo electrónico se envíen correctamente.} | |
1016 | 1016 | |||
1017 | message license | 1017 | message 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. | |
1019 | Para ver este archivo ahora, pulse ^Z, mire el contendido del archivo, y luego | 1019 | Para ver este archivo ahora, pulse ^Z, mire el contendido del archivo, y luego | |
1020 | teclee "fg" para continuar la instalación.} | 1020 | teclee "fg" para continuar la instalación.} | |
1021 | 1021 | |||
1022 | message binpkg | 1022 | message 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 | |
1024 | sitio de red desde el cual descargar los paquetes. Una vez el sistema | 1024 | sitio de red desde el cual descargar los paquetes. Una vez el sistema | |
1025 | arranque, puede usar 'pkgin' para instalar paquetes adicionales, o | 1025 | arranque, puede usar 'pkgin' para instalar paquetes adicionales, o | |
1026 | eliminar paquetes ya instalados.} | 1026 | eliminar paquetes ya instalados.} | |
1027 | 1027 | |||
1028 | message pkgpath | 1028 | message pkgpath | |
1029 | {Las siguientes entradas representan el protocolo, la máquina, el | 1029 | {Las siguientes entradas representan el protocolo, la máquina, el | |
1030 | directorio, el usuario y la contraseña que se usarán. Si el "usuario" | 1030 | directorio, el usuario y la contraseña que se usarán. Si el "usuario" | |
1031 | es "ftp", entonces la contraseña es opcional. | 1031 | es "ftp", entonces la contraseña es opcional. | |
1032 | 1032 | |||
1033 | } | 1033 | } | |
1034 | message rcconf_backup_failed | 1034 | message 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?} | |
1036 | message rcconf_backup_succeeded | 1036 | message 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.} | |
1038 | message rcconf_restore_failed | 1038 | message 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.} | |
1040 | message rcconf_delete_failed {La eliminación del viejo %s ha fallado.} | 1040 | message rcconf_delete_failed {La eliminación del viejo %s ha fallado.} | |
1041 | message Pkg_dir {Directorio del paquete} | 1041 | message Pkg_dir {Directorio del paquete} | |
1042 | message configure_prior {configure a prior installation of} | 1042 | message configure_prior {configure a prior installation of} | |
1043 | message configure {Configurar} | 1043 | message configure {Configurar} | |
1044 | message change {Cambiar} | 1044 | message change {Cambiar} | |
1045 | message password_set {Contraseña configurada} | 1045 | message password_set {Contraseña configurada} | |
1046 | message YES {SI} | 1046 | message YES {SI} | |
1047 | message NO {NO} | 1047 | message NO {NO} | |
1048 | message DONE {HECHO} | 1048 | message DONE {HECHO} | |
1049 | message abandoned {Abandonado} | 1049 | message abandoned {Abandonado} | |
1050 | message empty {***VACÍO***} | 1050 | message empty {***VACÍO***} | |
1051 | message timezone {Zona horaria} | 1051 | message timezone {Zona horaria} | |
1052 | message change_rootpw {Cambiar la contraseña de root} | 1052 | message change_rootpw {Cambiar la contraseña de root} | |
1053 | message enable_binpkg {Activar la instalación de paquetes binarios} | 1053 | message enable_binpkg {Activar la instalación de paquetes binarios} | |
1054 | message enable_sshd {Activar sshd} | 1054 | message enable_sshd {Activar sshd} | |
1055 | message enable_ntpd {Activar ntpd} | 1055 | message enable_ntpd {Activar ntpd} | |
1056 | message run_ntpdate {Ejecutar ntpdate durante el arranque} | 1056 | message run_ntpdate {Ejecutar ntpdate durante el arranque} | |
1057 | message enable_mdnsd {Activar mdnsd} | 1057 | message enable_mdnsd {Activar mdnsd} | |
1058 | message enable_xdm {Enable xdm} | 1058 | message enable_xdm {Enable xdm} | |
1059 | message enable_cgd {Enable cgd} | 1059 | message enable_cgd {Enable cgd} | |
1060 | message enable_lvm {Enable lvm} | 1060 | message enable_lvm {Enable lvm} | |
1061 | message enable_raid {Enable raidframe} | 1061 | message enable_raid {Enable raidframe} | |
1062 | message add_a_user {Add a user} | 1062 | message add_a_user {Add a user} | |
1063 | message configmenu {Configurar elementos adicionales bajo demanda.} | 1063 | message configmenu {Configurar elementos adicionales bajo demanda.} | |
1064 | message doneconfig {Terminar configuración} | 1064 | message doneconfig {Terminar configuración} | |
1065 | message Install_pkgin {Instalar pkgin y actualizar la lista de paquetes} | 1065 | message Install_pkgin {Instalar pkgin y actualizar la lista de paquetes} | |
1066 | message binpkg_installed | 1066 | message 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 | |
1068 | binarios. Para instalar un paquete, ejecute: | 1068 | binarios. Para instalar un paquete, ejecute: | |
1069 | 1069 | |||
1070 | pkgin install <nombre_del_paquete> | 1070 | pkgin install <nombre_del_paquete> | |
1071 | 1071 | |||
1072 | desde una línea de comandos de root. Lea la página de manual pkgin(1) | 1072 | desde una línea de comandos de root. Lea la página de manual pkgin(1) | |
1073 | para más detalles.} | 1073 | para más detalles.} | |
1074 | message Install_pkgsrc {Descargar y desempaquetar pkgsrc} | 1074 | message Install_pkgsrc {Descargar y desempaquetar pkgsrc} | |
1075 | message pkgsrc | 1075 | message pkgsrc | |
1076 | {La instalación de pkgsrc necesita desempaquetar un archivo descargado | 1076 | {La instalación de pkgsrc necesita desempaquetar un archivo descargado | |
1077 | desde la red. | 1077 | desde la red. | |
1078 | Las siguientes entradas corresponden a la máquina, directorio, usuario | 1078 | Las siguientes entradas corresponden a la máquina, directorio, usuario | |
1079 | y contraseña a usar para la conexión. Si "usuario" es "ftp", entonces | 1079 | y contraseña a usar para la conexión. Si "usuario" es "ftp", entonces | |
1080 | la contraseña es opcional. | 1080 | la contraseña es opcional. | |
1081 | 1081 | |||
1082 | } | 1082 | } | |
1083 | message Pkgsrc_dir {Directorio de pkgsrc} | 1083 | message Pkgsrc_dir {Directorio de pkgsrc} | |
1084 | message get_pkgsrc | 1084 | message get_pkgsrc | |
1085 | {Descargar y desempaquetar pkgsrc para compilar desde código fuente} | 1085 | {Descargar y desempaquetar pkgsrc para compilar desde código fuente} | |
1086 | message retry_pkgsrc_network | 1086 | message retry_pkgsrc_network | |
1087 | {La configuración de la red ha fallado. ¿Reintentar?} | 1087 | {La configuración de la red ha fallado. ¿Reintentar?} | |
1088 | message quit_pkgsrc {Salir sin instalar pkgsrc} | 1088 | message quit_pkgsrc {Salir sin instalar pkgsrc} | |
1089 | message quit_pkgs_install {Salir sin instalar bin pkg} | 1089 | message quit_pkgs_install {Salir sin instalar bin pkg} | |
1090 | message pkgin_failed | 1090 | message 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 | |
1092 | paquetes binarios. Por favor verifique el camino a los paquetes y | 1092 | paquetes binarios. Por favor verifique el camino a los paquetes y | |
1093 | reinténtelo de nuevo.} | 1093 | reinténtelo de nuevo.} | |
1094 | message failed {Error} | 1094 | message failed {Error} | |
1095 | 1095 | |||
1096 | message notsupported {Operación no admitida!} | 1096 | message notsupported {Operación no admitida!} | |
1097 | message askfsmountadv {Punto de montaje o 'raid' o 'CGD' o 'lvm'?} | 1097 | message askfsmountadv {Punto de montaje o 'raid' o 'CGD' o 'lvm'?} | |
1098 | message partman {Partición extendida} | 1098 | message partman {Partición extendida} | |
1099 | message editbsdpart {Editar particiones BSD} | 1099 | message editbsdpart {Editar particiones BSD} | |
1100 | message editmbr {Editar y guardar MBR} | 1100 | message editmbr {Editar y guardar MBR} | |
1101 | message switchgpt {Cambiar a GPT} | 1101 | message switchgpt {Cambiar a GPT} | |
1102 | message switchmbr {Cambiar a MBR} | 1102 | message switchmbr {Cambiar a MBR} | |
1103 | message renamedisk {Establece el nombre del disco} | 1103 | message renamedisk {Establece el nombre del disco} | |
1104 | message fmtasraid {Formato como RAID} | 1104 | message fmtasraid {Formato como RAID} | |
1105 | message fmtaslvm {Formato como LVM PV} | 1105 | message fmtaslvm {Formato como LVM PV} | |
1106 | message encrypt {Cifrar} | 1106 | message encrypt {Cifrar} | |
1107 | message setbootable {La bandera de arranque} | 1107 | message setbootable {La bandera de arranque} | |
1108 | message erase {Borrado seguro} | 1108 | message erase {Borrado seguro} | |
1109 | message undo {Deshacer los cambios} | 1109 | message undo {Deshacer los cambios} | |
1110 | message unconfig {Desconfigurar} | 1110 | message unconfig {Desconfigurar} | |
1111 | message edit {Editar} | 1111 | message edit {Editar} | |
1112 | message doumount {Fuerza umount} | 1112 | message doumount {Fuerza umount} | |
1113 | message fillzeros {Llenar con ceros} | 1113 | message fillzeros {Llenar con ceros} | |
1114 | message fillrandom {Llene los datos al azar} | 1114 | message fillrandom {Llene los datos al azar} | |
1115 | message fillcrypto {Rellene los datos de cifrado} | 1115 | message fillcrypto {Rellene los datos de cifrado} | |
1116 | message raid0 {0 - Sin paridad, creación de bandas sólo es simple.} | 1116 | message raid0 {0 - Sin paridad, creación de bandas sólo es simple.} | |
1117 | message raid1 {1 - Creación de reflejos. La paridad es el espejo.} | 1117 | message raid1 {1 - Creación de reflejos. La paridad es el espejo.} | |
1118 | message raid4 {4 - Striping con paridad almacenada en el último componente. component.} | 1118 | message raid4 {4 - Striping con paridad almacenada en el último componente. component.} | |
1119 | message raid5 {5 - Striping con paridad en los componentes de todos. components.} | 1119 | message raid5 {5 - Striping con paridad en los componentes de todos. components.} | |
1120 | 1120 | |||
1121 | message fremove {QUITAR} | 1121 | message fremove {QUITAR} | |
1122 | message remove {Quitar} | 1122 | message remove {Quitar} | |
1123 | message add {Añadir} | 1123 | message add {Añadir} | |
1124 | message auto {auto} | 1124 | message auto {auto} | |
1125 | 1125 | |||
1126 | message removepartswarn {Esta eliminar todas las particiones en el disco. ¿Desea continuar? want to continue?} | 1126 | message removepartswarn {Esta eliminar todas las particiones en el disco. ¿Desea continuar? want to continue?} | |
1127 | message saveprompt {Guarde los cambios antes de terminar?} | 1127 | message saveprompt {Guarde los cambios antes de terminar?} | |
1128 | message cantsave {Los cambios no se pueden guardar.} | 1128 | message cantsave {Los cambios no se pueden guardar.} | |
1129 | message noroot {No hay una partición raíz definida, no puede continuar \n} | 1129 | message noroot {No hay una partición raíz definida, no puede continuar \n} | |
1130 | message wannaunblock {El dispositivo está bloqueado. ¿Quiere forzar a desbloquear y continuar? unblock it and continue?} | 1130 | message wannaunblock {El dispositivo está bloqueado. ¿Quiere forzar a desbloquear y continuar? unblock it and continue?} | |
1131 | message wannatry {¿Quieres probar?} | 1131 | message wannatry {¿Quieres probar?} | |
1132 | message create_cgd {Crear cifrado de volumen (CGD)} | 1132 | message create_cgd {Crear cifrado de volumen (CGD)} | |
1133 | message create_cnd {Crear imagen de disco virtual (VND)} | 1133 | message create_cnd {Crear imagen de disco virtual (VND)} | |
1134 | message create_vg {Crear grupo de volúmenes (LVM VG)} | 1134 | message create_vg {Crear grupo de volúmenes (LVM VG)} | |
1135 | message create_lv { Crear volúmenes lógicos} | 1135 | message create_lv { Crear volúmenes lógicos} | |
1136 | message create_raid {Crear RAID por software} | 1136 | message create_raid {Crear RAID por software} | |
1137 | message updpmlist {Actualizar lista de dispositivos} | 1137 | message updpmlist {Actualizar lista de dispositivos} | |
1138 | message savepm {Guardar los cambios} | 1138 | message savepm {Guardar los cambios} | |
1139 | message pmblocked {BLOQUEADO} | 1139 | message pmblocked {BLOQUEADO} | |
1140 | message pmunchanged {SIN USO} | 1140 | message pmunchanged {SIN USO} | |
1141 | message pmsetboot {ARRANCAR} | 1141 | message pmsetboot {ARRANCAR} | |
1142 | message pmused {UTILIZA} | 1142 | message pmused {UTILIZA} | |
1143 | message pmmounted {(montado)} | 1143 | message pmmounted {(montado)} | |
1144 | message pmunused {(sin usar)} | 1144 | message pmunused {(sin usar)} | |
1145 | message pmgptdisk {Disco con GPT} | 1145 | message pmgptdisk {Disco con GPT} | |
1146 | 1146 | |||
1147 | message finishpm {Finalizar el particionado} | 1147 | message finishpm {Finalizar el particionado} | |
1148 | message limitcount {Límite para el número de dispositivos se llegó!} | 1148 | message limitcount {Límite para el número de dispositivos se llegó!} | |
1149 | message invaliddev {No válido dispositivo!} | 1149 | message invaliddev {No válido dispositivo!} | |
1150 | message avdisks {Discos disponibles:} | 1150 | message avdisks {Discos disponibles:} | |
1151 | message nofreedev {No se puede asignar nodo de dispositivo!} | 1151 | message nofreedev {No se puede asignar nodo de dispositivo!} | |
1152 | message partman_header | 1152 | message partman_header | |
1153 | {Partition Manager. Todos los discos, particiones y etc muestra allí. | 1153 | {Partition Manager. Todos los discos, particiones y etc muestra allí. | |
1154 | Al principio, las particiones MBR hacen, a continuación, hacer etiquetas BSD. | 1154 | Al principio, las particiones MBR hacen, a continuación, hacer etiquetas BSD. | |
1155 | Si desea utilizar RAID, LVM o CGD, siga estos pasos: | 1155 | Si desea utilizar RAID, LVM o CGD, siga estos pasos: | |
1156 | 1) Crear particiones BSD con el tipo necesario; | 1156 | 1) Crear particiones BSD con el tipo necesario; | |
1157 | 2) Crear RAID / LVM VG / CGD el uso de estas particiones; 3) Guárdalo; | 1157 | 2) Crear RAID / LVM VG / CGD el uso de estas particiones; 3) Guárdalo; | |
1158 | 4) Crear particiones de volúmenes RAID / CGD o lógico de LVM.} | 1158 | 4) Crear particiones de volúmenes RAID / CGD o lógico de LVM.} | |
1159 | 1159 | |||
1160 | message raid_menufmt { raid%d (nivel %1d) en %-34s %11uM} | 1160 | message raid_menufmt { raid%d (nivel %1d) en %-34s %11uM} | |
1161 | message raid_err_menufmt { RAID VACIO!} | 1161 | message raid_err_menufmt { RAID VACIO!} | |
1162 | message raid_disks_fmt {Discos: %32s} | 1162 | message raid_disks_fmt {Discos: %32s} | |
1163 | message raid_spares_fmt {Piezas de recambio: %20s} | 1163 | message raid_spares_fmt {Piezas de recambio: %20s} | |
1164 | message raid_level_fmt {RAID de nivel: %22d} | 1164 | message raid_level_fmt {RAID de nivel: %22d} | |
1165 | message raid_numrow_fmt {numRow: %22d} | 1165 | message raid_numrow_fmt {numRow: %22d} | |
1166 | message raid_numcol_fmt {numCol: %22d} | 1166 | message raid_numcol_fmt {numCol: %22d} | |
1167 | message raid_numspare_fmt {numSpare: %22d} | 1167 | message raid_numspare_fmt {numSpare: %22d} | |
1168 | message raid_sectpersu_fmt {sectPerSU: %22d} | 1168 | message raid_sectpersu_fmt {sectPerSU: %22d} | |
1169 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | 1169 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | |
1170 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | 1170 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | |
1171 | message raid_nomultidim {Matrices multidimensionales no son compatibles!} | 1171 | message raid_nomultidim {Matrices multidimensionales no son compatibles!} | |
1172 | message raid_numrow_ask {numRow?} | 1172 | message raid_numrow_ask {numRow?} | |
1173 | message raid_numcol_ask {numCol?} | 1173 | message raid_numcol_ask {numCol?} | |
1174 | message raid_numspare_ask {numSpare?} | 1174 | message raid_numspare_ask {numSpare?} | |
1175 | message raid_sectpersu_ask {sectPerSU?} | 1175 | message raid_sectpersu_ask {sectPerSU?} | |
1176 | message raid_superpar_ask {SUsPerParityUnit?} | 1176 | message raid_superpar_ask {SUsPerParityUnit?} | |
1177 | message raid_superrec_ask {SUsPerReconUnit?} | 1177 | message raid_superrec_ask {SUsPerReconUnit?} | |
1178 | message raid_disks {Los discos en RAID:} | 1178 | message raid_disks {Los discos en RAID:} | |
1179 | message vnd_err_menufmt { CAMINO NO DEFINIDO!} | 1179 | message vnd_err_menufmt { CAMINO NO DEFINIDO!} | |
1180 | message vnd_assgn_menufmt { vnd%1d en %-51s ASSIGN} | 1180 | message vnd_assgn_menufmt { vnd%1d en %-51s ASSIGN} | |
1181 | message vnd_menufmt { vnd%1d en %-45s %11uM} | 1181 | message vnd_menufmt { vnd%1d en %-45s %11uM} | |
1182 | message vnd_path_fmt {Ruta del archivo: %22s} | 1182 | message vnd_path_fmt {Ruta del archivo: %22s} | |
1183 | message vnd_assgn_fmt {Create new image: %14s} | 1183 | message vnd_assgn_fmt {Create new image: %14s} | |
1184 | message vnd_size_fmt {Tamaño: %22sM} | 1184 | message vnd_size_fmt {Tamaño: %22sM} | |
1185 | message vnd_ro_fmt {Sólo lectura: %22s} | 1185 | message vnd_ro_fmt {Sólo lectura: %22s} | |
1186 | message vnd_geom_fmt {Establecer la geometría de la mano: %4s} | 1186 | message vnd_geom_fmt {Establecer la geometría de la mano: %4s} | |
1187 | message vnd_bps_fmt {Bytes por sector: %18s} | 1187 | message vnd_bps_fmt {Bytes por sector: %18s} | |
1188 | message vnd_spt_fmt {Sectores por pista: %18s} | 1188 | message vnd_spt_fmt {Sectores por pista: %18s} | |
1189 | message vnd_tpc_fmt {Pistas por cilindro: %18s} | 1189 | message vnd_tpc_fmt {Pistas por cilindro: %18s} | |
1190 | message vnd_cyl_fmt {Cilindros: %22s} | 1190 | message vnd_cyl_fmt {Cilindros: %22s} | |
1191 | message vnd_path_ask {Ruta de acceso?} | 1191 | message vnd_path_ask {Ruta de acceso?} | |
1192 | message vnd_size_ask {Tamaño (MB)?} | 1192 | message vnd_size_ask {Tamaño (MB)?} | |
1193 | message vnd_bps_ask {Bytes por sector?} | 1193 | message vnd_bps_ask {Bytes por sector?} | |
1194 | message vnd_spt_ask {Sectores por pista?} | 1194 | message vnd_spt_ask {Sectores por pista?} | |
1195 | message vnd_tpc_ask {Pistas por cilindro?} | 1195 | message vnd_tpc_ask {Pistas por cilindro?} | |
1196 | message vnd_cyl_ask {Cilindros} | 1196 | message vnd_cyl_ask {Cilindros} | |
1197 | message cgd_err_menufmt { DISCO NO SE DEFINE!} | 1197 | message cgd_err_menufmt { DISCO NO SE DEFINE!} | |
1198 | message cgd_menufmt { cgd%1d %-48s %11uM} | 1198 | message cgd_menufmt { cgd%1d %-48s %11uM} | |
1199 | message cgd_dev_fmt {Dispositivo de base: %19s} | 1199 | message cgd_dev_fmt {Dispositivo de base: %19s} | |
1200 | message cgd_enc_fmt {Encriptación: %19s} | 1200 | message cgd_enc_fmt {Encriptación: %19s} | |
1201 | message cgd_key_fmt {Tamaño de la clave: %19d} | 1201 | message cgd_key_fmt {Tamaño de la clave: %19d} | |
1202 | message cgd_iv_fmt {Algoritmo IV: %19s} | 1202 | message cgd_iv_fmt {Algoritmo IV: %19s} | |
1203 | message cgd_keygen_fmt {La generación de claves: %15s} | 1203 | message cgd_keygen_fmt {La generación de claves: %15s} | |
1204 | message cgd_verif_fmt {Método de verificación: %15s} | 1204 | message cgd_verif_fmt {Método de verificación: %15s} | |
1205 | message lvm_disks {Discos en VG:} | 1205 | message lvm_disks {Discos en VG:} | |
1206 | message lvm_menufmt { %-44s %20sM} | 1206 | message lvm_menufmt { %-44s %20sM} | |
1207 | message lvm_err_menufmt { VACIAR VG!} | 1207 | message lvm_err_menufmt { VACIAR VG!} | |
1208 | message lvm_disks_fmt {PV's: %34s} | 1208 | message lvm_disks_fmt {PV's: %34s} | |
1209 | message lvm_name_fmt {Nombre: %32s} | 1209 | message lvm_name_fmt {Nombre: %32s} | |
1210 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | 1210 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | |
1211 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | 1211 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | |
1212 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | 1212 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | |
1213 | message lvm_name_ask {Nombre?} | 1213 | message lvm_name_ask {Nombre?} | |
1214 | message lvm_maxlv_ask {MaxLogicalVolumes?} | 1214 | message lvm_maxlv_ask {MaxLogicalVolumes?} | |
1215 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | 1215 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | |
1216 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | 1216 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | |
1217 | message lvmlv_menufmt { El volumen lógico %-33s% 11uM} | 1217 | message lvmlv_menufmt { El volumen lógico %-33s% 11uM} | |
1218 | message lvmlv_name_fmt {Nombre: %32s} | 1218 | message lvmlv_name_fmt {Nombre: %32s} | |
1219 | message lvmlv_size_fmt {Tamaño: %31dM} | 1219 | message lvmlv_size_fmt {Tamaño: %31dM} | |
1220 | message lvmlv_ro_fmt {Sólo lectura: %25s} | 1220 | message lvmlv_ro_fmt {Sólo lectura: %25s} | |
1221 | message lvmlv_cont_fmt {Contigua: %25s} | 1221 | message lvmlv_cont_fmt {Contigua: %25s} | |
1222 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | 1222 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | |
1223 | message lvmlv_minor_fmt {Menor número: %25s} | 1223 | message lvmlv_minor_fmt {Menor número: %25s} | |
1224 | message lvmlv_mirrors_fmt {Espejos: %25d} | 1224 | message lvmlv_mirrors_fmt {Espejos: %25d} | |
1225 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | 1225 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | |
1226 | message lvmlv_pers_fmt {Número de persistente menor: %11s} | 1226 | message lvmlv_pers_fmt {Número de persistente menor: %11s} | |
1227 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | 1227 | message lvmlv_readahsect_fmt {ReadAheadSectors: %18s} | |
1228 | message lvmlv_stripes_fmt {Rayas: %25s} | 1228 | message lvmlv_stripes_fmt {Rayas: %25s} | |
1229 | message lvmlv_stripesiz_fmt {Stripesize: %25s} | 1229 | message lvmlv_stripesiz_fmt {Stripesize: %25s} | |
1230 | message lvmlv_zero_fmt {Puesta a cero de la primera KB: %8s} | 1230 | message lvmlv_zero_fmt {Puesta a cero de la primera KB: %8s} | |
1231 | message lvmlv_name_ask {Nombre?} | 1231 | message lvmlv_name_ask {Nombre?} | |
1232 | message lvmlv_size_ask {Tamaño (MB)?} | 1232 | message lvmlv_size_ask {Tamaño (MB)?} | |
1233 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | 1233 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | |
1234 | message lvmlv_minor_ask {Número menor de edad?} | 1234 | message lvmlv_minor_ask {Número menor de edad?} | |
1235 | message lvmlv_mirrors_ask {Espejos?} | 1235 | message lvmlv_mirrors_ask {Espejos?} | |
1236 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | 1236 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | |
1237 | message lvmlv_readahsect_ask {ReadAheadSectors?} | 1237 | message lvmlv_readahsect_ask {ReadAheadSectors?} | |
1238 | message lvmlv_stripes_ask {Rayas?} | 1238 | message lvmlv_stripes_ask {Rayas?} | |
1239 | 1239 | |||
1240 | message addusername {8 character username to add} | 1240 | message addusername {8 character username to add} | |
1241 | message addusertowheel {Do you wish to add this user to group wheel?} | 1241 | message addusertowheel {Do you wish to add this user to group wheel?} | |
1242 | message Delete_partition | 1242 | message Delete_partition | |
1243 | {Borrar partición} | 1243 | {Borrar partición} | |
1244 | 1244 | |||
1245 | ||||
1246 | message No_filesystem_newfs | |||
1247 | {The selected partition does not seem to have a valid file system. | |||
1248 | Do you want to newfs (format) it?} | |||
1249 | ||||
1250 | message Auto_add_swap_part | |||
1251 | {A swap partition (named %s) seems to exist on %s. | |||
1252 | Do you want to use that?} | |||
1253 | ||||
1254 |
--- 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 | |||
37 | message usage | 37 | message 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 | */ | |
45 | message sysinst_message_language | 45 | message sysinst_message_language | |
46 | {Messages d'installation en français} | 46 | {Messages d'installation en français} | |
47 | 47 | |||
48 | message sysinst_message_locale | 48 | message sysinst_message_locale | |
49 | {fr_FR.ISO8859-15} | 49 | {fr_FR.ISO8859-15} | |
50 | 50 | |||
51 | message Yes {Oui} | 51 | message Yes {Oui} | |
52 | message No {Non} | 52 | message No {Non} | |
53 | message All {Tous} | 53 | message All {Tous} | |
54 | message Some {Une partie} | 54 | message Some {Une partie} | |
55 | message None {Aucun} | 55 | message None {Aucun} | |
56 | message none {aucun} | 56 | message none {aucun} | |
57 | message OK {OK} | 57 | message OK {OK} | |
58 | message ok {ok} | 58 | message ok {ok} | |
59 | message unchanged {non-modifié} | 59 | message unchanged {non-modifié} | |
60 | message On {On} | 60 | message On {On} | |
61 | message Off {Off} | 61 | message Off {Off} | |
62 | message Delete {Supprimer ?} | 62 | message Delete {Supprimer ?} | |
63 | 63 | |||
64 | message install | 64 | message install | |
65 | {installer} | 65 | {installer} | |
66 | 66 | |||
67 | message reinstall | 67 | message reinstall | |
68 | {réinstaller des composants de} | 68 | {réinstaller des composants de} | |
69 | 69 | |||
70 | message upgrade | 70 | message upgrade | |
71 | {mise à jour} | 71 | {mise à jour} | |
72 | 72 | |||
73 | message hello | 73 | message hello | |
74 | {Bienvenue dans Sysinst, l'outil d'installation de NetBSD-@@VERSION@@. | 74 | {Bienvenue dans Sysinst, l'outil d'installation de NetBSD-@@VERSION@@. | |
75 | Cet utilitaire a été conçu pour vous aider à installer ou mettre à jour | 75 | Cet utilitaire a été conçu pour vous aider à installer ou mettre à jour | |
76 | NetBSD sur votre disque dur avec un minimum de travail. | 76 | NetBSD sur votre disque dur avec un minimum de travail. | |
77 | Dans les menus suivants, vous pourrez changer de sélection, soit en tapant la | 77 | Dans les menus suivants, vous pourrez changer de sélection, soit en tapant la | |
78 | lettre en référence (a, b, c, d, ...) soit en utilisant les touches | 78 | lettre en référence (a, b, c, d, ...) soit en utilisant les touches | |
79 | flèches du clavier. | 79 | flèches du clavier. | |
80 | La sélection courante est activée en appuyant sur la touche Entrée. | 80 | La sélection courante est activée en appuyant sur la touche Entrée. | |
81 | } | 81 | } | |
82 | 82 | |||
83 | message thanks | 83 | message thanks | |
84 | {Merci d'utiliser NetBSD ! | 84 | {Merci d'utiliser NetBSD ! | |
85 | } | 85 | } | |
86 | 86 | |||
87 | message installusure | 87 | message 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 | |
89 | informations contenues sur ce dernier. Vous devriez faire une sauvegarde | 89 | informations contenues sur ce dernier. Vous devriez faire une sauvegarde | |
90 | complète de son contenu avant de poursuivre cette installation. Cette | 90 | complète de son contenu avant de poursuivre cette installation. Cette | |
91 | procédure va effectuer les actions suivantes : | 91 | procé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 | |
97 | demandera de confirmer avant d'appliquer toute modification sur votre | 97 | demandera de confirmer avant d'appliquer toute modification sur votre | |
98 | disque dur.) | 98 | disque dur.) | |
99 | 99 | |||
100 | Souhaitez-vous continuer ? | 100 | Souhaitez-vous continuer ? | |
101 | } | 101 | } | |
102 | 102 | |||
103 | message upgradeusure | 103 | message upgradeusure | |
104 | {Mise à jour de NetBSD sur votre disque dur. | 104 | {Mise à jour de NetBSD sur votre disque dur. | |
105 | Cela implique des modifications aux informations contenues | 105 | Cela implique des modifications aux informations contenues | |
106 | sur votre disque dur. | 106 | sur votre disque dur. | |
107 | Vous devriez faire une sauvegarde complète de celui-ci avant de | 107 | Vous devriez faire une sauvegarde complète de celui-ci avant de | |
108 | continuer la procédure de mise à jour. | 108 | continuer la procédure de mise à jour. | |
109 | Voulez-vous vraiment mettre à jour NetBSD ? | 109 | Voulez-vous vraiment mettre à jour NetBSD ? | |
110 | (Ceci est le dernier avertissement avant que cette | 110 | (Ceci est le dernier avertissement avant que cette | |
111 | procédure ne modifie votre disque.) | 111 | procédure ne modifie votre disque.) | |
112 | } | 112 | } | |
113 | 113 | |||
114 | message reinstallusure | 114 | message 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 | |
116 | démarrable. Cette procédure va rapatrier et décompresser les composants | 116 | démarrable. Cette procédure va rapatrier et décompresser les composants | |
117 | sur un disque démarrable déjà partitionnné. Elle n'inscrit pas de "label" sur | 117 | sur un disque démarrable déjà partitionnné. Elle n'inscrit pas de "label" sur | |
118 | le disque, n'installe pas de nouveaux secteurs d'amorçage et ne modifie | 118 | le disque, n'installe pas de nouveaux secteurs d'amorçage et ne modifie | |
119 | pas les fichiers de configuration existants. (Quittez et choisissez `installer' | 119 | pas les fichiers de configuration existants. (Quittez et choisissez `installer' | |
120 | ou `mettre à jour' si vous désirez ces options.) | 120 | ou `mettre à jour' si vous désirez ces options.) | |
121 | Vous devriez déjà avoir fait une installation ou une mise à jour avant de | 121 | Vous devriez déjà avoir fait une installation ou une mise à jour avant de | |
122 | démarrer cette procédure ! | 122 | démarrer cette procédure ! | |
123 | 123 | |||
124 | Voulez-vous réellement réinstaller les composants NetBSD ? | 124 | Voulez-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 à | |
126 | modifier vos disques.) | 126 | modifier vos disques.) | |
127 | } | 127 | } | |
128 | 128 | |||
129 | message mount_failed | 129 | message 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 | |||
133 | message nodisk | 133 | message nodisk | |
134 | {Aucun disque utilisable par NetBSD n'a été trouvé. | 134 | {Aucun disque utilisable par NetBSD n'a été trouvé. | |
135 | Retour au menu précédent. | 135 | Retour au menu précédent. | |
136 | } | 136 | } | |
137 | 137 | |||
138 | message onedisk | 138 | message 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 | |||
143 | message ask_disk | 143 | message ask_disk | |
144 | {Sur quel disque voulez-vous %s NetBSD ?} | 144 | {Sur quel disque voulez-vous %s NetBSD ?} | |
145 | 145 | |||
146 | message Available_disks | 146 | message Available_disks | |
147 | {Disques disponibles :} | 147 | {Disques disponibles :} | |
148 | 148 | |||
149 | message heads | 149 | message heads | |
150 | {têtes} | 150 | {têtes} | |
151 | 151 | |||
152 | message sectors | 152 | message sectors | |
153 | {secteurs} | 153 | {secteurs} | |
154 | 154 | |||
155 | message fs_isize | 155 | message fs_isize | |
156 | {taille moyenne de fichier (octets)} | 156 | {taille moyenne de fichier (octets)} | |
157 | 157 | |||
158 | message mountpoint | 158 | message mountpoint | |
159 | {point de montage (ou 'aucun')} | 159 | {point de montage (ou 'aucun')} | |
160 | 160 | |||
161 | message cylname | 161 | message cylname | |
162 | {cyl} | 162 | {cyl} | |
163 | 163 | |||
164 | message secname | 164 | message secname | |
165 | {sec} | 165 | {sec} | |
166 | 166 | |||
167 | message megname | 167 | message megname | |
168 | {Mo} | 168 | {Mo} | |
169 | 169 | |||
170 | message layout | 170 | message 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 à | |
172 | NetBSD en plusieurs partitions. Vous devez paramétrer ce dernier. | 172 | NetBSD en plusieurs partitions. Vous devez paramétrer ce dernier. | |
173 | 173 | |||
174 | Vous pouvez utiliser un éditeur afin de préciser la taille des partitions | 174 | Vous pouvez utiliser un éditeur afin de préciser la taille des partitions | |
175 | NetBSD, ou préserver la taille et le contenu des partitions existantes. | 175 | NetBSD, ou préserver la taille et le contenu des partitions existantes. | |
176 | 176 | |||
177 | Vous aurez ensuite la possibilité d'éditer les champs du disklabel. | 177 | Vous aurez ensuite la possibilité d'éditer les champs du disklabel. | |
178 | 178 | |||
179 | La taille allouée pour NetBSD sur votre disque est de %d Mo. | 179 | La taille allouée pour NetBSD sur votre disque est de %d Mo. | |
180 | L'installation standard requiert au moins %d Mo. | 180 | L'installation standard requiert au moins %d Mo. | |
181 | L'installation standard avec X requiert au moins %d Mo. | 181 | L'installation standard avec X requiert au moins %d Mo. | |
182 | } | 182 | } | |
183 | 183 | |||
184 | message Choose_your_size_specifier | 184 | message 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 | |
186 | choix possible, arrondi au cylindre-près. | 186 | choix possible, arrondi au cylindre-près. | |
187 | Si vous choisissez "Secteurs", vous pourrez choisir précisément | 187 | Si vous choisissez "Secteurs", vous pourrez choisir précisément | |
188 | les tailles. | 188 | les tailles. | |
189 | Sur les disques modernes, la taille réelle des cylindres est variable | 189 | Sur les disques modernes, la taille réelle des cylindres est variable | |
190 | et il y a peu d'intérêt à aligner les partitions sur les cylindres. | 190 | et il y a peu d'intérêt à aligner les partitions sur les cylindres. | |
191 | Pour les disques plus anciens, il est recommandé de choisir des tailles | 191 | Pour les disques plus anciens, il est recommandé de choisir des tailles | |
192 | de partitions arrondies au cylindre-près, pour plus de performance. | 192 | de partitions arrondies au cylindre-près, pour plus de performance. | |
193 | 193 | |||
194 | Choisissez l'unité d'espace disque désirée} | 194 | Choisissez l'unité d'espace disque désirée} | |
195 | 195 | |||
196 | message ptnsizes | 196 | message 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. | |
198 | Par défaut, tout l'espace sera alloué à la partition racine principale, | 198 | Par défaut, tout l'espace sera alloué à la partition racine principale, | |
199 | mais vous pouvez sous-diviser celle-ci en plusieurs | 199 | mais vous pouvez sous-diviser celle-ci en plusieurs | |
200 | systèmes de fichiers. Exemples : /usr (fichiers système additionnels), | 200 | systèmes de fichiers. Exemples : /usr (fichiers système additionnels), | |
201 | /var (fichiers des journaux, etc.) | 201 | /var (fichiers des journaux, etc.) | |
202 | et /home (regroupant les répertoires utilisateurs). | 202 | et /home (regroupant les répertoires utilisateurs). | |
203 | 203 | |||
204 | L'espace libre restant sera ajouté à la partition marquée par un '+'. | 204 | L'espace libre restant sera ajouté à la partition marquée par un '+'. | |
205 | } | 205 | } | |
206 | 206 | |||
207 | 207 | |||
208 | message ptnheaders | 208 | message ptnheaders | |
209 | { | 209 | { | |
210 | Mo Cylindres Secteurs Système de fichiers | 210 | Mo Cylindres Secteurs Système de fichiers | |
211 | } | 211 | } | |
212 | 212 | |||
213 | message askfsmount | 213 | message askfsmount | |
214 | {Point de montage ?} | 214 | {Point de montage ?} | |
215 | 215 | |||
216 | message askfssize | 216 | message askfssize | |
217 | {Taille pour %s en %s ?} | 217 | {Taille pour %s en %s ?} | |
218 | 218 | |||
219 | message askunits | 219 | message askunits | |
220 | {Changer d'unité (secteurs/cylindres/Mo)} | 220 | {Changer d'unité (secteurs/cylindres/Mo)} | |
221 | 221 | |||
222 | message NetBSD_partition_cant_change | 222 | message NetBSD_partition_cant_change | |
223 | {Partition de NetBSD} | 223 | {Partition de NetBSD} | |
224 | 224 | |||
225 | message Whole_disk_cant_change | 225 | message Whole_disk_cant_change | |
226 | {Totalité du disque} | 226 | {Totalité du disque} | |
227 | 227 | |||
228 | message Boot_partition_cant_change | 228 | message Boot_partition_cant_change | |
229 | {Partition de démarrage} | 229 | {Partition de démarrage} | |
230 | 230 | |||
231 | message add_another_ptn | 231 | message add_another_ptn | |
232 | {Ajouter manuellement une nouvelle partition} | 232 | {Ajouter manuellement une nouvelle partition} | |
233 | 233 | |||
234 | message fssizesok | 234 | message 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 | |||
237 | message fssizesbad | 237 | message 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 | |||
240 | message startoutsidedisk | 240 | message 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 | |||
244 | message endoutsidedisk | 244 | message 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. | |
246 | La taille de la partition a été tronquée à %d %s. | 246 | La taille de la partition a été tronquée à %d %s. | |
247 | } | 247 | } | |
248 | 248 | |||
249 | message toobigdisklabel | 249 | message toobigdisklabel | |
250 | { | 250 | { | |
251 | Ce disque est trop grand pour qu'une table de partition soit utilisée. | 251 | Ce disque est trop grand pour qu'une table de partition soit utilisée. | |
252 | Il ne peut donc pas être utilisé en tant que disque démarrable ou | 252 | Il ne peut donc pas être utilisé en tant que disque démarrable ou | |
253 | contenir la partition racine. | 253 | contenir la partition racine. | |
254 | Il pourra cependant être utilisé sous NetBSD s'il est manuellement | 254 | Il pourra cependant être utilisé sous NetBSD s'il est manuellement | |
255 | partitionné utilisant l'outil GPT(8). | 255 | partitionné utilisant l'outil GPT(8). | |
256 | } | 256 | } | |
257 | 257 | |||
258 | message fspart | 258 | message fspart | |
259 | {Vos partitions NetBSD sont les suivantes : | 259 | {Vos partitions NetBSD sont les suivantes : | |
260 | 260 | |||
261 | } | 261 | } | |
262 | 262 | |||
263 | message fspart_header | 263 | message 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 | |||
268 | message fspart_row | 268 | message fspart_row | |
269 | {%9lu %9lu %10lu %-10s %-5s %-5s %s} | 269 | {%9lu %9lu %10lu %-10s %-5s %-5s %s} | |
270 | 270 | |||
271 | message show_all_unused_partitions | 271 | message show_all_unused_partitions | |
272 | {Afficher les partitions libres} | 272 | {Afficher les partitions libres} | |
273 | 273 | |||
274 | message partition_sizes_ok | 274 | message partition_sizes_ok | |
275 | {Taille et options des partitions valides} | 275 | {Taille et options des partitions valides} | |
276 | 276 | |||
277 | message edfspart | 277 | message 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), | |
279 | puis les autres valeurs. | 279 | puis les autres valeurs. | |
280 | 280 | |||
281 | Les valeurs actuelles pour la partition %c sont : | 281 | Les 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 | |||
288 | message fstype_fmt | 288 | message fstype_fmt | |
289 | { type de système de fichiers : %9s} | 289 | { type de système de fichiers : %9s} | |
290 | 290 | |||
291 | message start_fmt | 291 | message start_fmt | |
292 | { début : %9u %8u%c %9u} | 292 | { début : %9u %8u%c %9u} | |
293 | 293 | |||
294 | message size_fmt | 294 | message size_fmt | |
295 | { taille : %9u %8u%c %9u} | 295 | { taille : %9u %8u%c %9u} | |
296 | 296 | |||
297 | message end_fmt | 297 | message end_fmt | |
298 | { fin : %9u %8u%c %9u} | 298 | { fin : %9u %8u%c %9u} | |
299 | 299 | |||
300 | message bsize_fmt | 300 | message bsize_fmt | |
301 | { taille de bloc : %9d bytes} | 301 | { taille de bloc : %9d bytes} | |
302 | 302 | |||
303 | message fsize_fmt | 303 | message fsize_fmt | |
304 | { taille de fragment : %9d bytes} | 304 | { taille de fragment : %9d bytes} | |
305 | 305 | |||
306 | message isize_fmt | 306 | message isize_fmt | |
307 | { taille moyenne de fichier : %9d bytes} | 307 | { taille moyenne de fichier : %9d bytes} | |
308 | message isize_fmt_dflt | 308 | message isize_fmt_dflt | |
309 | { taille moyenne de fichier : 4 fragments} | 309 | { taille moyenne de fichier : 4 fragments} | |
310 | 310 | |||
311 | message newfs_fmt | 311 | message newfs_fmt | |
312 | { formatage : %9s} | 312 | { formatage : %9s} | |
313 | 313 | |||
314 | message mount_fmt | 314 | message mount_fmt | |
315 | { montage : %9s} | 315 | { montage : %9s} | |
316 | 316 | |||
317 | message mount_options_fmt | 317 | message mount_options_fmt | |
318 | { options de montage : } | 318 | { options de montage : } | |
319 | 319 | |||
320 | message mountpt_fmt | 320 | message mountpt_fmt | |
321 | { Pt de montage : %9s} | 321 | { Pt de montage : %9s} | |
322 | 322 | |||
323 | message toggle | 323 | message toggle | |
324 | {Basculer} | 324 | {Basculer} | |
325 | 325 | |||
326 | message restore | 326 | message restore | |
327 | {Restaurer les valeurs initiales} | 327 | {Restaurer les valeurs initiales} | |
328 | 328 | |||
329 | message Select_the_type | 329 | message 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 | |||
332 | message other_types | 332 | message other_types | |
333 | {autres types} | 333 | {autres types} | |
334 | 334 | |||
335 | message label_size | 335 | message label_size | |
336 | {%s | 336 | {%s | |
337 | Valeurs spéciales pouvant être utilisées pour définir la taille de la partition : | 337 | Valeurs 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 | |||
341 | taille (%s)} | 341 | taille (%s)} | |
342 | 342 | |||
343 | message label_offset | 343 | message label_offset | |
344 | {%s | 344 | {%s | |
345 | Valeurs spéciales pouvant être utilisées pour définir le début de la partition : | 345 | Valeurs 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 | |||
349 | début (%s)} | 349 | début (%s)} | |
350 | 350 | |||
351 | message invalid_sector_number | 351 | message invalid_sector_number | |
352 | {nombre de secteurs invalide | 352 | {nombre de secteurs invalide | |
353 | } | 353 | } | |
354 | 354 | |||
355 | message Select_file_system_block_size | 355 | message 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 | |||
358 | message Select_file_system_fragment_size | 358 | message 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 | |||
361 | message packname | 361 | message packname | |
362 | {Veuillez donner un nom à votre disque.} | 362 | {Veuillez donner un nom à votre disque.} | |
363 | 363 | |||
364 | message lastchance | 364 | message lastchance | |
365 | {Nous sommes prêts à installer NetBSD sur votre disque (%s). | 365 | {Nous sommes prêts à installer NetBSD sur votre disque (%s). | |
366 | Aucune modification n'a été effectuée pour l'instant. | 366 | Aucune modification n'a été effectuée pour l'instant. | |
367 | Ceci est votre dernière opportunité pour quitter cette | 367 | Ceci est votre dernière opportunité pour quitter cette | |
368 | procédure en laissant votre disque intact. | 368 | procédure en laissant votre disque intact. | |
369 | 369 | |||
370 | Souhaitez-vous vraiment continuer ? | 370 | Souhaitez-vous vraiment continuer ? | |
371 | } | 371 | } | |
372 | 372 | |||
373 | message disksetupdone | 373 | message 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. | |
375 | Sysinst a écrit vos nouvelles partitions sur votre disque, | 375 | Sysinst a écrit vos nouvelles partitions sur votre disque, | |
376 | puis a procédé à la vérification de leur intégrité (via fsck). | 376 | puis a procédé à la vérification de leur intégrité (via fsck). | |
377 | } | 377 | } | |
378 | 378 | |||
379 | message disksetupdoneupdate | 379 | message 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. | |
381 | Sysinst a écrit vos nouvelles partitions sur votre disque, | 381 | Sysinst a écrit vos nouvelles partitions sur votre disque, | |
382 | puis a procédé à la vérification de leur intégrité (via fsck). | 382 | puis a procédé à la vérification de leur intégrité (via fsck). | |
383 | } | 383 | } | |
384 | 384 | |||
385 | message openfail | 385 | message 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 | |||
389 | message mountfail | 389 | message 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 | |||
393 | message extractcomplete | 393 | message extractcomplete | |
394 | {L'extraction des composants sélectionnés de NetBSD-@@VERSION@@ | 394 | {L'extraction des composants sélectionnés de NetBSD-@@VERSION@@ | |
395 | est complète. | 395 | est complète. | |
396 | Le système peut désormais démarrer directement depuis le disque. | 396 | Le système peut désormais démarrer directement depuis le disque. | |
397 | Pour compléter l'installation, Sysinst va maintenant vous | 397 | Pour compléter l'installation, Sysinst va maintenant vous | |
398 | permettre d'effectuer quelques réglages essentiels. | 398 | permettre d'effectuer quelques réglages essentiels. | |
399 | } | 399 | } | |
400 | 400 | |||
401 | message instcomplete | 401 | message 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 | |
403 | redémarrer depuis le disque dur. Veuillez consulter le document | 403 | redémarrer depuis le disque dur. Veuillez consulter le document | |
404 | d'installation (INSTALL) pour apprendre à bien configurer votre | 404 | d'installation (INSTALL) pour apprendre à bien configurer votre | |
405 | système. | 405 | système. | |
406 | 406 | |||
407 | Nous vous recommandons au minimum de configurer le mot de passe | 407 | Nous vous recommandons au minimum de configurer le mot de passe | |
408 | du compte root et de paramétrer /etc/rc.conf selon vos besoins. | 408 | du compte root et de paramétrer /etc/rc.conf selon vos besoins. | |
409 | Consultez les manuels rc.conf(5), afterboot(8) et security(7) | 409 | Consultez les manuels rc.conf(5), afterboot(8) et security(7) | |
410 | au besoin. | 410 | au besoin. | |
411 | } | 411 | } | |
412 | 412 | |||
413 | message unpackcomplete | 413 | message unpackcomplete | |
414 | {La mise à jour de NetBSD-@@VERSION@@ est terminée. | 414 | {La mise à jour de NetBSD-@@VERSION@@ est terminée. | |
415 | Veuillez consulter le document d'installation (INSTALL) pour apprendre | 415 | Veuillez consulter le document d'installation (INSTALL) pour apprendre | |
416 | à bien configurer votre système. | 416 | à bien configurer votre système. | |
417 | 417 | |||
418 | Vous devez éditer /etc/rc.conf et ajouter la ligne | 418 | Vous 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 | |||
422 | message upgrcomplete | 422 | message upgrcomplete | |
423 | {L'installation des composants supplémentaires de NetBSD-@@VERSION@@ est | 423 | {L'installation des composants supplémentaires de NetBSD-@@VERSION@@ est | |
424 | terminée. | 424 | terminée. | |
425 | Veuillez consulter le document d'installation (INSTALL) pour apprendre | 425 | Veuillez consulter le document d'installation (INSTALL) pour apprendre | |
426 | à bien configurer votre système. | 426 | à bien configurer votre système. | |
427 | 427 | |||
428 | Vous devez éditer /etc/rc.conf et ajouter la ligne | 428 | Vous 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 | |||
432 | message distmedium | 432 | message 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 | |
434 | et ses différents composants annexes. Comme indiqué dans le document | 434 | et ses différents composants annexes. Comme indiqué dans le document | |
435 | d'installation, vous avez plusieurs possibilités. Pour une installation via | 435 | d'installation, vous avez plusieurs possibilités. Pour une installation via | |
436 | NFS ou FTP, vous devez être connecté à un réseau et avoir accès au serveur | 436 | NFS ou FTP, vous devez être connecté à un réseau et avoir accès au serveur | |
437 | requis. | 437 | requis. | |
438 | 438 | |||
439 | Composant sélectionné : %d, traité : %d. Prochain composant : %s. | 439 | Composant sélectionné : %d, traité : %d. Prochain composant : %s. | |
440 | 440 | |||
441 | } | 441 | } | |
442 | 442 | |||
443 | message distset | 443 | message distset | |
444 | {La distribution de NetBSD est divisée en plusieurs composants. | 444 | {La distribution de NetBSD est divisée en plusieurs composants. | |
445 | Certains sont indispensables. | 445 | Certains sont indispensables. | |
446 | Trois types d'installations vous sont proposés : complète, minimale ou | 446 | Trois types d'installations vous sont proposés : complète, minimale ou | |
447 | personnalisée. | 447 | personnalisée. | |
448 | } | 448 | } | |
449 | 449 | |||
450 | message ftpsource | 450 | message 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 | |
452 | d'utilisateur et mot de passe. | 452 | d'utilisateur et mot de passe. | |
453 | Si vous utilisez le mode FTP, le mot de passe n'est pas requis. | 453 | Si vous utilisez le mode FTP, le mot de passe n'est pas requis. | |
454 | Le répertoire contenant les composants doit être défini par | 454 | Le répertoire contenant les composants doit être défini par | |
455 | rapport au répertoire de base, et contenir chaque composant sous | 455 | rapport au répertoire de base, et contenir chaque composant sous | |
456 | la forme de fichiers .tgz | 456 | la forme de fichiers .tgz | |
457 | 457 | |||
458 | } | 458 | } | |
459 | 459 | |||
460 | message email | 460 | message email | |
461 | {adresse de courriel} | 461 | {adresse de courriel} | |
462 | 462 | |||
463 | message dev | 463 | message dev | |
464 | {périphérique} | 464 | {périphérique} | |
465 | 465 | |||
466 | message nfssource | 466 | message 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 | |
468 | les fichiers d'installation. | 468 | les fichiers d'installation. | |
469 | Ce répertoire doit être exporté via NFS, et contenir ces fichiers | 469 | Ce 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 | |||
474 | message floppysource | 474 | message floppysource | |
475 | {Veuillez spécifier le nom du lecteur de disquette à utiliser. | 475 | {Veuillez spécifier le nom du lecteur de disquette à utiliser. | |
476 | Les fichiers d'installation devront se trouver à la racine | 476 | Les fichiers d'installation devront se trouver à la racine | |
477 | de chaque disquette. | 477 | de chaque disquette. | |
478 | 478 | |||
479 | } | 479 | } | |
480 | 480 | |||
481 | message cdromsource | 481 | message cdromsource | |
482 | {Veuillez spécifier le nom du lecteur CD-ROM à utiliser, | 482 | {Veuillez spécifier le nom du lecteur CD-ROM à utiliser, | |
483 | ainsi que le nom du répertoire contenant les fichiers d'installation. | 483 | ainsi que le nom du répertoire contenant les fichiers d'installation. | |
484 | Ils doivent être placés à sa racine, sous la forme de fichiers | 484 | Ils doivent être placés à sa racine, sous la forme de fichiers | |
485 | tgz. | 485 | tgz. | |
486 | 486 | |||
487 | } | 487 | } | |
488 | 488 | |||
489 | 489 | |||
490 | message Available_cds | 490 | message Available_cds | |
491 | {CD-ROM disponibles} | 491 | {CD-ROM disponibles} | |
492 | 492 | |||
493 | message ask_cd | 493 | message 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 | |
495 | d'installation de NetBSD.} | 495 | d'installation de NetBSD.} | |
496 | 496 | |||
497 | message cd_path_not_found | 497 | message 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é | |
499 | sur ce CD-ROM. Assurez-vous que le périphérique et le chemin sont les bons.} | 499 | sur ce CD-ROM. Assurez-vous que le périphérique et le chemin sont les bons.} | |
500 | 500 | |||
501 | message localfssource | 501 | message 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 | |
504 | d'installation à sa racine, sous la forme de fichiers tgz. | 504 | d'installation à sa racine, sous la forme de fichiers tgz. | |
505 | 505 | |||
506 | } | 506 | } | |
507 | 507 | |||
508 | message localdir | 508 | message 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é) | |
510 | où se trouvent les fichiers d'installation. Ils doivent se trouver | 510 | où 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 | |||
515 | message filesys | 515 | message filesys | |
516 | {système de fichiers} | 516 | {système de fichiers} | |
517 | 517 | |||
518 | message nonet | 518 | message nonet | |
519 | {Aucune interface réseau utilisable n'a été trouvée. | 519 | {Aucune interface réseau utilisable n'a été trouvée. | |
520 | Retour au menu précédent. | 520 | Retour au menu précédent. | |
521 | } | 521 | } | |
522 | 522 | |||
523 | message netup | 523 | message netup | |
524 | {Les interfaces réseau suivantes sont utilisables : %s | 524 | {Les interfaces réseau suivantes sont utilisables : %s | |
525 | Quelle interface souhaitez-vous utiliser ? | 525 | Quelle interface souhaitez-vous utiliser ? | |
526 | } | 526 | } | |
527 | 527 | |||
528 | message asknetdev | 528 | message asknetdev | |
529 | {Quelle interface doit être utilisée ?} | 529 | {Quelle interface doit être utilisée ?} | |
530 | 530 | |||
531 | message netdevs | 531 | message netdevs | |
532 | {Interfaces disponibles} | 532 | {Interfaces disponibles} | |
533 | 533 | |||
534 | message netinfo | 534 | message netinfo | |
535 | {Veuillez répondre aux points suivants afin de pouvoir utiliser | 535 | {Veuillez répondre aux points suivants afin de pouvoir utiliser | |
536 | votre interface réseau : | 536 | votre interface réseau : | |
537 | 537 | |||
538 | } | 538 | } | |
539 | 539 | |||
540 | message net_domain | 540 | message net_domain | |
541 | {Votre nom de domaine} | 541 | {Votre nom de domaine} | |
542 | 542 | |||
543 | message net_host | 543 | message net_host | |
544 | {Votre nom d'ordinateur} | 544 | {Votre nom d'ordinateur} | |
545 | 545 | |||
546 | message net_ip | 546 | message net_ip | |
547 | {Votre adresse IPv4} | 547 | {Votre adresse IPv4} | |
548 | 548 | |||
549 | message net_srv_ip | 549 | message net_srv_ip | |
550 | {Adresse IPv4 du serveur} | 550 | {Adresse IPv4 du serveur} | |
551 | 551 | |||
552 | message net_mask | 552 | message net_mask | |
553 | {Votre masque de réseau (IPv4)} | 553 | {Votre masque de réseau (IPv4)} | |
554 | 554 | |||
555 | message net_namesrv | 555 | message net_namesrv | |
556 | {Adresse IPv4 de votre serveur de noms (DNS)} | 556 | {Adresse IPv4 de votre serveur de noms (DNS)} | |
557 | 557 | |||
558 | message net_defroute | 558 | message net_defroute | |
559 | {Adresse IPv4 de votre passerelle} | 559 | {Adresse IPv4 de votre passerelle} | |
560 | 560 | |||
561 | message net_media | 561 | message net_media | |
562 | {Type de réseau (média)} | 562 | {Type de réseau (média)} | |
563 | 563 | |||
564 | message netok | 564 | message netok | |
565 | {Vous avez spécifié les valeurs suivantes : | 565 | {Vous avez spécifié les valeurs suivantes : | |
566 | 566 | |||
567 | Nom de domaine (DNS) : %s | 567 | Nom de domaine (DNS) : %s | |
568 | Nom d'ordinateur : %s | 568 | Nom d'ordinateur : %s | |
569 | Adresse du serveur de noms : %s | 569 | Adresse du serveur de noms : %s | |
570 | Interface réseau : %s | 570 | Interface réseau : %s | |
571 | Type de réseau (média) %s | 571 | Type de réseau (média) %s | |
572 | Adresse IPv4 : %s | 572 | Adresse IPv4 : %s | |
573 | Masque de sous-réseau : %s | 573 | Masque de sous-réseau : %s | |
574 | Adresse IPv4 de la passerelle : %s | 574 | Adresse IPv4 de la passerelle : %s | |
575 | } | 575 | } | |
576 | 576 | |||
577 | message netok_slip | 577 | message 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 | |||
580 | Nom de domaine (DNS) : %s | 580 | Nom de domaine (DNS) : %s | |
581 | Nom d'ordinateur : %s | 581 | Nom d'ordinateur : %s | |
582 | Adresse du serveur de noms : %s | 582 | Adresse du serveur de noms : %s | |
583 | Interface réseau : %s | 583 | Interface réseau : %s | |
584 | Type de réseau (média) : %s | 584 | Type de réseau (média) : %s | |
585 | Adresse IPv4 : %s | 585 | Adresse IPv4 : %s | |
586 | Adresse IPv4 du serveur : %s | 586 | Adresse IPv4 du serveur : %s | |
587 | Masque de sous-réseau : %s | 587 | Masque de sous-réseau : %s | |
588 | Adresse IPv4 de la passerelle : %s | 588 | Adresse IPv4 de la passerelle : %s | |
589 | } | 589 | } | |
590 | 590 | |||
591 | message netokv6 | 591 | message netokv6 | |
592 | {Auto-configuration IPv6 : %s | 592 | {Auto-configuration IPv6 : %s | |
593 | } | 593 | } | |
594 | 594 | |||
595 | message netok_ok | 595 | message netok_ok | |
596 | {Les valeurs sont-elles correctes ?} | 596 | {Les valeurs sont-elles correctes ?} | |
597 | 597 | |||
598 | message slattach { | 598 | message slattach { | |
599 | Entrez les "flags" slattach | 599 | Entrez les "flags" slattach | |
600 | } | 600 | } | |
601 | 601 | |||
602 | message wait_network | 602 | message wait_network | |
603 | { | 603 | { | |
604 | Veuillez patienter pendant la configuration de l'interface... | 604 | Veuillez patienter pendant la configuration de l'interface... | |
605 | } | 605 | } | |
606 | 606 | |||
607 | message resolv | 607 | message resolv | |
608 | { | 608 | { | |
609 | Impossible de créer le fichier /etc/resolv.conf | 609 | Impossible de créer le fichier /etc/resolv.conf | |
610 | Échec de l'installation. | 610 | Échec de l'installation. | |
611 | } | 611 | } | |
612 | 612 | |||
613 | message realdir | 613 | message realdir | |
614 | { | 614 | { | |
615 | Impossible de déplacer le répertoire %s/%s | 615 | Impossible de déplacer le répertoire %s/%s | |
616 | Échec de l'installation. | 616 | Échec de l'installation. | |
617 | } | 617 | } | |
618 | 618 | |||
619 | message delete_xfer_file | 619 | message delete_xfer_file | |
620 | { | 620 | { | |
621 | Effacer après l'installation | 621 | Effacer après l'installation | |
622 | } | 622 | } | |
623 | 623 | |||
624 | message notarfile | 624 | message notarfile | |
625 | {Le composant %s n'existe pas.} | 625 | {Le composant %s n'existe pas.} | |
626 | 626 | |||
627 | message endtarok | 627 | message endtarok | |
628 | { | 628 | { | |
629 | Tous les composants sont installés. Veuillez appuyer sur la touche | 629 | Tous les composants sont installés. Veuillez appuyer sur la touche | |
630 | Entrée pour continuer. | 630 | Entrée pour continuer. | |
631 | } | 631 | } | |
632 | 632 | |||
633 | message endtar | 633 | message endtar | |
634 | { | 634 | { | |
635 | L'installation des composants est terminée. Toutefois, un ou plusieurs | 635 | L'installation des composants est terminée. Toutefois, un ou plusieurs | |
636 | problèmes sont survenus au cours de leur extraction. | 636 | problèmes sont survenus au cours de leur extraction. | |
637 | 637 | |||
638 | Vous avez sélectionné %d composants. %d n'ont pu être installés, | 638 | Vous avez sélectionné %d composants. %d n'ont pu être installés, | |
639 | et %d ont été ignorés à la suite d'erreurs. | 639 | et %d ont été ignorés à la suite d'erreurs. | |
640 | 640 | |||
641 | Sur les %d composants traités, %d ont pu être installés et | 641 | Sur 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 | |||
644 | Veuillez vérifier l'intégrité des fichiers d'installation et leur | 644 | Veuillez vérifier l'intégrité des fichiers d'installation et leur | |
645 | emplacement, puis essayez à nouveau via une réinstallation de composants, | 645 | emplacement, puis essayez à nouveau via une réinstallation de composants, | |
646 | depuis le menu principal. | 646 | depuis le menu principal. | |
647 | } | 647 | } | |
648 | 648 | |||
649 | message abort | 649 | message abort | |
650 | { | 650 | { | |
651 | Votre sélection ne permet pas l'installation de NetBSD. | 651 | Votre sélection ne permet pas l'installation de NetBSD. | |
652 | Annulation de l'installation. | 652 | Annulation de l'installation. | |
653 | } | 653 | } | |
654 | 654 | |||
655 | message abortinst | 655 | message abortinst | |
656 | { | 656 | { | |
657 | L'instalation des composants de NetBSD n'est pas complète. | 657 | L'instalation des composants de NetBSD n'est pas complète. | |
658 | Vous allez devoir recommencer, ou terminer à la main. | 658 | Vous allez devoir recommencer, ou terminer à la main. | |
659 | Échec de l'installation. | 659 | Échec de l'installation. | |
660 | } | 660 | } | |
661 | 661 | |||
662 | message abortupgr | 662 | message abortupgr | |
663 | { | 663 | { | |
664 | La mise à jour des composants de NetBSD n'est pas complète. | 664 | La mise à jour des composants de NetBSD n'est pas complète. | |
665 | Vous allez devoir recommencer, ou terminer à la main. | 665 | Vous allez devoir recommencer, ou terminer à la main. | |
666 | Échec de l'installation. | 666 | Échec de l'installation. | |
667 | } | 667 | } | |
668 | 668 | |||
669 | message abortunpack | 669 | message abortunpack | |
670 | { | 670 | { | |
671 | L'installation des composants supplémentaires n'est pas complète. | 671 | L'installation des composants supplémentaires n'est pas complète. | |
672 | Vous allez devoir recommencer, ou terminer à la main. | 672 | Vous allez devoir recommencer, ou terminer à la main. | |
673 | Essayez de choisir une source différente pour les fichiers | 673 | Essayez de choisir une source différente pour les fichiers | |
674 | d'installation. | 674 | d'installation. | |
675 | } | 675 | } | |
676 | 676 | |||
677 | message createfstab | 677 | message createfstab | |
678 | { | 678 | { | |
679 | Impossible de créer /mnt/etc/fstab | 679 | Impossible de créer /mnt/etc/fstab | |
680 | Ceci est une erreur majeure : nous ne pouvons continuer. | 680 | Ceci est une erreur majeure : nous ne pouvons continuer. | |
681 | Échec de l'installation. | 681 | Échec de l'installation. | |
682 | } | 682 | } | |
683 | 683 | |||
684 | message noetcfstab | 684 | message noetcfstab | |
685 | { | 685 | { | |
686 | Le fichier /etc/fstab n'est pas présent sur le disque cible %s | 686 | Le fichier /etc/fstab n'est pas présent sur le disque cible %s | |
687 | Ceci est une erreur majeure : nous ne pouvons continuer. | 687 | Ceci est une erreur majeure : nous ne pouvons continuer. | |
688 | Échec de l'installation. | 688 | Échec de l'installation. | |
689 | } | 689 | } | |
690 | 690 | |||
691 | message badetcfstab | 691 | message badetcfstab | |
692 | { | 692 | { | |
693 | Impossible de lire le contenu du fichier /etc/fstab présent sur | 693 | Impossible de lire le contenu du fichier /etc/fstab présent sur | |
694 | le disque cible %s | 694 | le disque cible %s | |
695 | Ceci est une erreur majeure : nous ne pouvons continuer. | 695 | Ceci est une erreur majeure : nous ne pouvons continuer. | |
696 | Échec de l'installation. | 696 | Échec de l'installation. | |
697 | } | 697 | } | |
698 | 698 | |||
699 | message X_oldexists | 699 | message X_oldexists | |
700 | { | 700 | { | |
701 | Impossible de sauvegarder %s/bin/X : le disque contient déjà | 701 | Impossible de sauvegarder %s/bin/X : le disque contient déjà | |
702 | un fichier %s/bin/X.old et nous devons renommer le fichier actuel | 702 | un 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 | |
704 | recommencer. | 704 | recommencer. | |
705 | Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin | 705 | Vous pouvez démarrer un shell depuis le menu "Utilitaires" afin | |
706 | de faire cette modification. | 706 | de faire cette modification. | |
707 | Ce fichier provient probablement d'une ancienne mise à jour et | 707 | Ce fichier provient probablement d'une ancienne mise à jour et | |
708 | il est possible de le supprimer. S'il provient d'une mise à jour | 708 | il est possible de le supprimer. S'il provient d'une mise à jour | |
709 | incomplète, vous pouvez effacer %s/bin/X et renommer | 709 | incomplè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 | |||
712 | Arrêt de la mise à jour. | 712 | Arrêt de la mise à jour. | |
713 | } | 713 | } | |
714 | 714 | |||
715 | 715 | |||
716 | message netnotup | 716 | message netnotup | |
717 | { | 717 | { | |
718 | Un problème est survenu lors de la configuration de votre interface | 718 | Un problème est survenu lors de la configuration de votre interface | |
719 | réseau. Votre serveur de noms ou votre passerelle ne semblent pas | 719 | réseau. Votre serveur de noms ou votre passerelle ne semblent pas | |
720 | répondre aux pings. | 720 | répondre aux pings. | |
721 | Souhaitez-vous configurer à nouveau les paramètres de votre | 721 | Souhaitez-vous configurer à nouveau les paramètres de votre | |
722 | connexion réseau ? | 722 | connexion 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 | |||
726 | message netnotup_continueanyway | 726 | message netnotup_continueanyway | |
727 | { | 727 | { | |
728 | Souhaitez-vous poursuivre malgré tout le processus d'installation | 728 | Souhaitez-vous poursuivre malgré tout le processus d'installation | |
729 | et supposer que le réseau fonctionne correctement ? | 729 | et 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 | |||
733 | message makedev | 733 | message makedev | |
734 | {Création des fichiers des périphériques ... | 734 | {Création des fichiers des périphériques ... | |
735 | } | 735 | } | |
736 | 736 | |||
737 | message badfs | 737 | message 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 | |
740 | la vérification de son intégrité par fsck a échoué, code d'erreur %d. | 740 | la vérification de son intégrité par fsck a échoué, code d'erreur %d. | |
741 | 741 | |||
742 | Souhaitez-vous continuer mise à jour? | 742 | Souhaitez-vous continuer mise à jour? | |
743 | } | 743 | } | |
744 | 744 | |||
745 | message rootmissing | 745 | message rootmissing | |
746 | { | 746 | { | |
747 | Impossible de trouver la racine du disque cible %s. | 747 | Impossible de trouver la racine du disque cible %s. | |
748 | } | 748 | } | |
749 | 749 | |||
750 | message badroot | 750 | message badroot | |
751 | { | 751 | { | |
752 | La vérification de l'intégrité du nouveau système de fichiers a échoué. | 752 | La vérification de l'intégrité du nouveau système de fichiers a échoué. | |
753 | Avez-vous bien installé tous les composants indispensables ? | 753 | Avez-vous bien installé tous les composants indispensables ? | |
754 | } | 754 | } | |
755 | 755 | |||
756 | message fd_type | 756 | message fd_type | |
757 | {Système de fichiers de la disquette} | 757 | {Système de fichiers de la disquette} | |
758 | 758 | |||
759 | message fdnotfound | 759 | message fdnotfound | |
760 | { | 760 | { | |
761 | Impossible de trouver un fichier requis sur la disquette. | 761 | Impossible de trouver un fichier requis sur la disquette. | |
762 | } | 762 | } | |
763 | 763 | |||
764 | message fdremount | 764 | message fdremount | |
765 | { | 765 | { | |
766 | Impossible de monter la disquette correctement. | 766 | Impossible de monter la disquette correctement. | |
767 | } | 767 | } | |
768 | 768 | |||
769 | message fdmount | 769 | message fdmount | |
770 | { | 770 | { | |
771 | Veuillez insérer la disquette contenant le fichier "%s.%s". | 771 | Veuillez insérer la disquette contenant le fichier "%s.%s". | |
772 | 772 | |||
773 | Si le jeu de disquettes ne comprend aucun autre disque, veuillez | 773 | Si le jeu de disquettes ne comprend aucun autre disque, veuillez | |
774 | choisir "Ensemble terminé" pour mettre un terme à ce traitement. | 774 | choisir "Ensemble terminé" pour mettre un terme à ce traitement. | |
775 | Sélectionnez "Annuler la récupération" pour revenir au menu | 775 | Sélectionnez "Annuler la récupération" pour revenir au menu | |
776 | de sélection du média d'installation. | 776 | de sélection du média d'installation. | |
777 | } | 777 | } | |
778 | 778 | |||
779 | message mntnetconfig | 779 | message 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 | |
781 | du système que nous venons d'installer ? } | 781 | du système que nous venons d'installer ? } | |
782 | 782 | |||
783 | message cur_distsets | 783 | message cur_distsets | |
784 | { | 784 | { | |
785 | Sélectionnez les composants dans la liste ci-dessous : | 785 | Sélectionnez les composants dans la liste ci-dessous : | |
786 | } | 786 | } | |
787 | 787 | |||
788 | message cur_distsets_header | 788 | message cur_distsets_header | |
789 | { Composant Installer? | 789 | { Composant Installer? | |
790 | ------------------------------------ ---------- | 790 | ------------------------------------ ---------- | |
791 | } | 791 | } | |
792 | 792 | |||
793 | message set_base | 793 | message set_base | |
794 | {Base} | 794 | {Base} | |
795 | 795 | |||
796 | message set_system | 796 | message set_system | |
797 | {Système (/etc)} | 797 | {Système (/etc)} | |
798 | 798 | |||
799 | message set_compiler | 799 | message set_compiler | |
800 | {Outils de développement} | 800 | {Outils de développement} | |
801 | 801 | |||
802 | message set_games | 802 | message set_games | |
803 | {Jeux} | 803 | {Jeux} | |
804 | 804 | |||
805 | message set_man_pages | 805 | message set_man_pages | |
806 | {Pages de manuel} | 806 | {Pages de manuel} | |
807 | 807 | |||
808 | message set_misc | 808 | message set_misc | |
809 | {Divers} | 809 | {Divers} | |
810 | 810 | |||
811 | message set_modules | 811 | message set_modules | |
812 | {Modules du noyau} | 812 | {Modules du noyau} | |
813 | 813 | |||
814 | message set_tests | 814 | message set_tests | |
815 | {Programmes de test} | 815 | {Programmes de test} | |
816 | 816 | |||
817 | message set_text_tools | 817 | message set_text_tools | |
818 | {Outils de manipulation de texte} | 818 | {Outils de manipulation de texte} | |
819 | 819 | |||
820 | message set_X11 | 820 | message set_X11 | |
821 | {X11} | 821 | {X11} | |
822 | 822 | |||
823 | message set_X11_base | 823 | message set_X11_base | |
824 | {X11 base et clients} | 824 | {X11 base et clients} | |
825 | 825 | |||
826 | message set_X11_etc | 826 | message set_X11_etc | |
827 | {X11 configuration} | 827 | {X11 configuration} | |
828 | 828 | |||
829 | message set_X11_fonts | 829 | message set_X11_fonts | |
830 | {X11 polices} | 830 | {X11 polices} | |
831 | 831 | |||
832 | message set_X11_servers | 832 | message set_X11_servers | |
833 | {X11 serveurs} | 833 | {X11 serveurs} | |
834 | 834 | |||
835 | message set_X11_prog | 835 | message set_X11_prog | |
836 | {X11 développement} | 836 | {X11 développement} | |
837 | 837 | |||
838 | message set_source | 838 | message set_source | |
839 | {Code source et débogage} | 839 | {Code source et débogage} | |
840 | 840 | |||
841 | message set_syssrc | 841 | message set_syssrc | |
842 | {Sources du noyeau} | 842 | {Sources du noyeau} | |
843 | 843 | |||
844 | message set_src | 844 | message set_src | |
845 | {Sources de la Base} | 845 | {Sources de la Base} | |
846 | 846 | |||
847 | message set_sharesrc | 847 | message set_sharesrc | |
848 | {Sources de partage (Share)} | 848 | {Sources de partage (Share)} | |
849 | 849 | |||
850 | message set_gnusrc | 850 | message set_gnusrc | |
851 | {Sources des composants GNU} | 851 | {Sources des composants GNU} | |
852 | 852 | |||
853 | message set_xsrc | 853 | message set_xsrc | |
854 | {Sources X11} | 854 | {Sources X11} | |
855 | 855 | |||
856 | message set_debug | 856 | message set_debug | |
857 | {Symboles de débogage} | 857 | {Symboles de débogage} | |
858 | 858 | |||
859 | message set_xdebug | 859 | message set_xdebug | |
860 | {Symboles de débogage X11} | 860 | {Symboles de débogage X11} | |
861 | 861 | |||
862 | message cur_distsets_row | 862 | message cur_distsets_row | |
863 | {%-33s %3s} | 863 | {%-33s %3s} | |
864 | 864 | |||
865 | message select_all | 865 | message select_all | |
866 | {Sélectionner tous les composants} | 866 | {Sélectionner tous les composants} | |
867 | 867 | |||
868 | message select_none | 868 | message select_none | |
869 | {Déselectionner tous les composants} | 869 | {Déselectionner tous les composants} | |
870 | 870 | |||
871 | message install_selected_sets | 871 | message install_selected_sets | |
872 | {Installer les composants sélectionnés} | 872 | {Installer les composants sélectionnés} | |
873 | 873 | |||
874 | 874 | |||
875 | message tarerror | 875 | message tarerror | |
876 | { | 876 | { | |
877 | Une erreur est survenue lors de l'installation du fichier %s. | 877 | Une erreur est survenue lors de l'installation du fichier %s. | |
878 | Certains fichiers n'ayant pu être extraits correctement, | 878 | Certains fichiers n'ayant pu être extraits correctement, | |
879 | le système n'est pas complet et pourrait ne pas fonctionner | 879 | le système n'est pas complet et pourrait ne pas fonctionner | |
880 | correctement. | 880 | correctement. | |
881 | 881 | |||
882 | Souhaitez-vous continuer l'installation des composants ? | 882 | Souhaitez-vous continuer l'installation des composants ? | |
883 | } | 883 | } | |
884 | 884 | |||
885 | message must_be_one_root | 885 | message must_be_one_root | |
886 | { | 886 | { | |
887 | Une seule partition peut être montée en tant que racine, dite "/". | 887 | Une seule partition peut être montée en tant que racine, dite "/". | |
888 | } | 888 | } | |
889 | 889 | |||
890 | message partitions_overlap | 890 | message 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 | |||
893 | message No_Bootcode | 893 | message 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 | |||
896 | message cannot_ufs2_root | 896 | message 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 | |
898 | chargeur de démarrage ne le supporte pas.} | 898 | chargeur de démarrage ne le supporte pas.} | |
899 | 899 | |||
900 | message edit_partitions_again | 900 | message edit_partitions_again | |
901 | { | 901 | { | |
902 | Vous pouvez éditer la table de partitions à la main, ou abandonner et | 902 | Vous pouvez éditer la table de partitions à la main, ou abandonner et | |
903 | retourner au menu principal. | 903 | retourner au menu principal. | |
904 | 904 | |||
905 | Souhaitez-vous éditer à nouveau la table de partitions ? | 905 | Souhaitez-vous éditer à nouveau la table de partitions ? | |
906 | } | 906 | } | |
907 | 907 | |||
908 | message config_open_error | 908 | message config_open_error | |
909 | { | 909 | { | |
910 | Impossible d'ouvrir le fichier de configuration %s.\n | 910 | Impossible d'ouvrir le fichier de configuration %s.\n | |
911 | } | 911 | } | |
912 | 912 | |||
913 | message choose_timezone | 913 | message choose_timezone | |
914 | { | 914 | { | |
915 | Veuillez sélectionner votre zone horaire dans la liste suivante. | 915 | Veuillez sélectionner votre zone horaire dans la liste suivante. | |
916 | Appuyez sur la touche Entrée pour confirmer votre choix. | 916 | Appuyez sur la touche Entrée pour confirmer votre choix. | |
917 | Appuyez sur "x" puis sur Entrée pour valider la sélection en cours. | 917 | Appuyez 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 | |||
924 | message tz_back | 924 | message tz_back | |
925 | { Retour à la liste principale des fuseaux horaires} | 925 | { Retour à la liste principale des fuseaux horaires} | |
926 | 926 | |||
927 | message swapactive | 927 | message swapactive | |
928 | { | 928 | { | |
929 | Le disque sélectionné dispose d'une partition d'échange (swap) qui | 929 | Le disque sélectionné dispose d'une partition d'échange (swap) qui | |
930 | est peut-être en cours d'utilisation, en particulier si votre système | 930 | est peut-être en cours d'utilisation, en particulier si votre système | |
931 | dispose de peu de mémoire. | 931 | dispose de peu de mémoire. | |
932 | Le repartitionnement de votre disque requiert la désactivation de cette | 932 | Le repartitionnement de votre disque requiert la désactivation de cette | |
933 | partition. Prenez garde ! Cette opération peut entraîner des erreurs. | 933 | partition. Prenez garde ! Cette opération peut entraîner des erreurs. | |
934 | Si cela survient, vous devrez alors redémarrer et tenter à nouveau. | 934 | Si cela survient, vous devrez alors redémarrer et tenter à nouveau. | |
935 | } | 935 | } | |
936 | 936 | |||
937 | message swapdelfailed | 937 | message swapdelfailed | |
938 | { | 938 | { | |
939 | Sysinst n'a pas pu désactiver la partition d'échange (swap) présente | 939 | Sysinst n'a pas pu désactiver la partition d'échange (swap) présente | |
940 | sur le disque cible pour l'installation. Vous devez redémarrer et tenter | 940 | sur le disque cible pour l'installation. Vous devez redémarrer et tenter | |
941 | à nouveau. | 941 | à nouveau. | |
942 | } | 942 | } | |
943 | 943 | |||
944 | message rootpw | 944 | message rootpw | |
945 | { | 945 | { | |
946 | Aucun mot de passe pour le compte "root" n'a été défini. | 946 | Aucun mot de passe pour le compte "root" n'a été défini. | |
947 | Nous vous recommandons de spécifier un mot de passe maintenant. | 947 | Nous vous recommandons de spécifier un mot de passe maintenant. | |
948 | 948 | |||
949 | Le souhaitez-vous ? | 949 | Le souhaitez-vous ? | |
950 | } | 950 | } | |
951 | 951 | |||
952 | message rootsh | 952 | message rootsh | |
953 | { | 953 | { | |
954 | Spécifiez le shell par défaut qui sera utilisé par l'utilisateur "root". | 954 | Spécifiez le shell par défaut qui sera utilisé par l'utilisateur "root". | |
955 | Par défaut, il s'agit de /bin/sh | 955 | Par défaut, il s'agit de /bin/sh | |
956 | } | 956 | } | |
957 | 957 | |||
958 | message no_root_fs | 958 | message no_root_fs | |
959 | { | 959 | { | |
960 | Aucune partition racine n'est actuellement définie. Vous devez au moins | 960 | Aucune partition racine n'est actuellement définie. Vous devez au moins | |
961 | définir le point de montage de cette partition racine, dite "/". | 961 | définir le point de montage de cette partition racine, dite "/". | |
962 | 962 | |||
963 | Appuyez sur la touche Entrée pour continuer. | 963 | Appuyez sur la touche Entrée pour continuer. | |
964 | } | 964 | } | |
965 | 965 | |||
966 | message Pick_an_option {Choisissez une option à activer/désactiver} | 966 | message Pick_an_option {Choisissez une option à activer/désactiver} | |
967 | message Scripting {Scripting} | 967 | message Scripting {Scripting} | |
968 | message Logging {Journal} | 968 | message Logging {Journal} | |
969 | 969 | |||
970 | message Status {Statut : } | 970 | message Status {Statut : } | |
971 | message Command {Commande : } | 971 | message Command {Commande : } | |
972 | message Running {En cours d'exécution} | 972 | message Running {En cours d'exécution} | |
973 | message Finished {Terminée} | 973 | message Finished {Terminée} | |
974 | message Command_failed {Échec} | 974 | message Command_failed {Échec} | |
975 | message Command_ended_on_signal {Commande terminée par un signal} | 975 | message Command_ended_on_signal {Commande terminée par un signal} | |
976 | 976 | |||
977 | 977 | |||
978 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Programme d'installation} | 978 | message NetBSD_VERSION_Install_System {NetBSD-@@VERSION@@ Programme d'installation} | |
979 | message Exit_Install_System {Quitter le programme d'installation} | 979 | message Exit_Install_System {Quitter le programme d'installation} | |
980 | message Install_NetBSD_to_hard_disk {Installation de NetBSD sur disque dur} | 980 | message Install_NetBSD_to_hard_disk {Installation de NetBSD sur disque dur} | |
981 | message Upgrade_NetBSD_on_a_hard_disk {Mise à jour de NetBSD sur disque dur} | 981 | message Upgrade_NetBSD_on_a_hard_disk {Mise à jour de NetBSD sur disque dur} | |
982 | message Re_install_sets_or_install_additional_sets {Réinstaller ou installer de nouveaux composants} | 982 | message Re_install_sets_or_install_additional_sets {Réinstaller ou installer de nouveaux composants} | |
983 | message Reboot_the_computer {Redémarrer l'ordinateur} | 983 | message Reboot_the_computer {Redémarrer l'ordinateur} | |
984 | message Utility_menu {Utilitaires} | 984 | message Utility_menu {Utilitaires} | |
985 | message Config_menu {Configuration} | 985 | message Config_menu {Configuration} | |
986 | message exit_menu_generic {Quitter} | 986 | message exit_menu_generic {Quitter} | |
987 | message exit_utility_menu {Quitter} | 987 | message exit_utility_menu {Quitter} | |
988 | message NetBSD_VERSION_Utilities {Utilitaires NetBSD-@@VERSION@@} | 988 | message NetBSD_VERSION_Utilities {Utilitaires NetBSD-@@VERSION@@} | |
989 | message Run_bin_sh {Exécuter /bin/sh} | 989 | message Run_bin_sh {Exécuter /bin/sh} | |
990 | message Set_timezone {Configurer le fuseau horaire} | 990 | message Set_timezone {Configurer le fuseau horaire} | |
991 | message Configure_network {Configurer le réseau} | 991 | message Configure_network {Configurer le réseau} | |
992 | message Partition_a_disk {Partitionner un disque} | 992 | message Partition_a_disk {Partitionner un disque} | |
993 | message Logging_functions {Journaux} | 993 | message Logging_functions {Journaux} | |
994 | message Halt_the_system {Arrêter le système} | 994 | message Halt_the_system {Arrêter le système} | |
995 | message yes_or_no {oui ou non?} | 995 | message yes_or_no {oui ou non?} | |
996 | message Hit_enter_to_continue {Appuyez sur la touche Entrée pour continuer} | 996 | message Hit_enter_to_continue {Appuyez sur la touche Entrée pour continuer} | |
997 | message Choose_your_installation {Choisir le type d'installation désiré} | 997 | message Choose_your_installation {Choisir le type d'installation désiré} | |
998 | message Set_Sizes {Spécifier les tailles des partitions NetBSD} | 998 | message Set_Sizes {Spécifier les tailles des partitions NetBSD} | |
999 | message Use_Existing {Utiliser les partitions existantes} | 999 | message Use_Existing {Utiliser les partitions existantes} | |
1000 | message Megabytes {Mégaoctets} | 1000 | message Megabytes {Mégaoctets} | |
1001 | message Cylinders {Cylindres} | 1001 | message Cylinders {Cylindres} | |
1002 | message Sectors {Secteurs} | 1002 | message Sectors {Secteurs} | |
1003 | message Select_medium {Sélection du média d'installation} | 1003 | message Select_medium {Sélection du média d'installation} | |
1004 | message ftp {FTP} | 1004 | message ftp {FTP} | |
1005 | message http {HTTP} | 1005 | message http {HTTP} | |
1006 | message nfs {NFS} | 1006 | message nfs {NFS} | |
1007 | .if HAVE_INSTALL_IMAGE | 1007 | .if HAVE_INSTALL_IMAGE | |
1008 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | 1008 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | |
1009 | .else | 1009 | .else | |
1010 | message cdrom {CD-ROM / DVD} | 1010 | message cdrom {CD-ROM / DVD} | |
1011 | .endif | 1011 | .endif | |
1012 | message floppy {Disquette} | 1012 | message floppy {Disquette} | |
1013 | message local_fs {Système de fichiers non-monté} | 1013 | message local_fs {Système de fichiers non-monté} | |
1014 | message local_dir {Répertoire local monté} | 1014 | message local_dir {Répertoire local monté} | |
1015 | message Select_your_distribution {Sélection de la distribution} | 1015 | message Select_your_distribution {Sélection de la distribution} | |
1016 | message Full_installation {Installation complète} | 1016 | message Full_installation {Installation complète} | |
1017 | message Full_installation_nox {Installation sans X11} | 1017 | message Full_installation_nox {Installation sans X11} | |
1018 | message Minimal_installation {Installation minimale} | 1018 | message Minimal_installation {Installation minimale} | |
1019 | message Custom_installation {Installation personnalisée} | 1019 | message Custom_installation {Installation personnalisée} | |
1020 | message hidden {** caché **} | 1020 | message hidden {** caché **} | |
1021 | message Host {Serveur FTP} | 1021 | message Host {Serveur FTP} | |
1022 | message Base_dir {Répertoire de base} | 1022 | message Base_dir {Répertoire de base} | |
1023 | message Set_dir_bin {Répertoire des composants binaire} | 1023 | message Set_dir_bin {Répertoire des composants binaire} | |
1024 | message Set_dir_src {Répertoire des composants source} | 1024 | message Set_dir_src {Répertoire des composants source} | |
1025 | message Xfer_dir {Répertoire de transfert} | 1025 | message Xfer_dir {Répertoire de transfert} | |
1026 | message User {Utilisateur} | 1026 | message User {Utilisateur} | |
1027 | message Password {Mot de passe} | 1027 | message Password {Mot de passe} | |
1028 | message Proxy {Proxy} | 1028 | message Proxy {Proxy} | |
1029 | message Get_Distribution {Récupérer la distribution} | 1029 | message Get_Distribution {Récupérer la distribution} | |
1030 | message Continue {Continuer} | 1030 | message Continue {Continuer} | |
1031 | message What_do_you_want_to_do {Que voulez-vous faire ?} | 1031 | message What_do_you_want_to_do {Que voulez-vous faire ?} | |
1032 | message Try_again {Réessayer} | 1032 | message Try_again {Réessayer} | |
1033 | message Set_finished {Extraction terminée} | 1033 | message Set_finished {Extraction terminée} | |
1034 | message Skip_set {Sauter cet ensemble} | 1034 | message Skip_set {Sauter cet ensemble} | |
1035 | message Skip_group {Sauter ce groupe} | 1035 | message Skip_group {Sauter ce groupe} | |
1036 | message Abandon {Abandonner l'installation} | 1036 | message Abandon {Abandonner l'installation} | |
1037 | message Abort_fetch {Annuler la récupération} | 1037 | message Abort_fetch {Annuler la récupération} | |
1038 | message Device {Périphérique} | 1038 | message Device {Périphérique} | |
1039 | message File_system {Système de fichiers} | 1039 | message File_system {Système de fichiers} | |
1040 | message Select_DNS_server { Choisissez un serveur de noms :} | 1040 | message Select_DNS_server { Choisissez un serveur de noms :} | |
1041 | message other {autre } | 1041 | message other {autre } | |
1042 | message Perform_autoconfiguration {Configurer automatiquement ?} | 1042 | message Perform_autoconfiguration {Configurer automatiquement ?} | |
1043 | message Root_shell {Shell du compte "root"} | 1043 | message Root_shell {Shell du compte "root"} | |
1044 | message Color_scheme {Jeu de couleurs} | 1044 | message Color_scheme {Jeu de couleurs} | |
1045 | message White_on_black {Blanc sur noir} | 1045 | message White_on_black {Blanc sur noir} | |
1046 | message Black_on_white {Noir sur blanc} | 1046 | message Black_on_white {Noir sur blanc} | |
1047 | message White_on_blue {Blanc sur bleu} | 1047 | message White_on_blue {Blanc sur bleu} | |
1048 | message Green_on_black {Vert sur noir} | 1048 | message Green_on_black {Vert sur noir} | |
1049 | message User_shell {Shell du compte "user"} | 1049 | message User_shell {Shell du compte "user"} | |
1050 | 1050 | |||
1051 | .if AOUT2ELF | 1051 | .if AOUT2ELF | |
1052 | message aoutfail | 1052 | message aoutfail | |
1053 | { | 1053 | { | |
1054 | Le répertoire où se situent les anciennes librairies a.out doit être | 1054 | Le répertoire où se situent les anciennes librairies a.out doit être | |
1055 | déplacé. Veuillez suivre la procédure de mise à jour et bien | 1055 | déplacé. Veuillez suivre la procédure de mise à jour et bien | |
1056 | vérifier que tous les systèmes de fichiers sont montés. | 1056 | vérifier que tous les systèmes de fichiers sont montés. | |
1057 | } | 1057 | } | |
1058 | 1058 | |||
1059 | message emulbackup | 1059 | message emulbackup | |
1060 | { | 1060 | { | |
1061 | Le répertoire /emul/aout ou /emul est présent sur le disque mais | 1061 | Le répertoire /emul/aout ou /emul est présent sur le disque mais | |
1062 | pointe vers un répertoire non monté. Nous l'avons renommé en lui ajoutant | 1062 | pointe vers un répertoire non monté. Nous l'avons renommé en lui ajoutant | |
1063 | l'extension ".old". Lorsque vous aurez terminé l'installation ou la mise à jour, | 1063 | l'extension ".old". Lorsque vous aurez terminé l'installation ou la mise à jour, | |
1064 | vous devrez fusionner manuellement le nouveau répertoire avec l'ancien | 1064 | vous devrez fusionner manuellement le nouveau répertoire avec l'ancien | |
1065 | /emul/aout. | 1065 | /emul/aout. | |
1066 | } | 1066 | } | |
1067 | .endif | 1067 | .endif | |
1068 | 1068 | |||
1069 | message oldsendmail | 1069 | message oldsendmail | |
1070 | { | 1070 | { | |
1071 | Sendmail n'est plus distribué dans cette version de NetBSD, le MTA par défaut | 1071 | Sendmail 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 | |
1073 | configuré pour utiliser sendmail. Voulez-vous mettre à jour le fichier | 1073 | configuré 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 | |
1075 | choisissez "Non", vous devrez mettre à jour /etc/mailer.conf manuellement | 1075 | choisissez "Non", vous devrez mettre à jour /etc/mailer.conf manuellement | |
1076 | afin que vos courriels soient traités correctement. | 1076 | afin que vos courriels soient traités correctement. | |
1077 | } | 1077 | } | |
1078 | 1078 | |||
1079 | message license | 1079 | message 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 | |
1081 | contenue dans le fichier %s. | 1081 | contenue dans le fichier %s. | |
1082 | Pour afficher ce fichier, tapez ^Z (Ctrl-Z). | 1082 | Pour afficher ce fichier, tapez ^Z (Ctrl-Z). | |
1083 | Après l'avoir lu, tapez "fg" pour continuer.} | 1083 | Après l'avoir lu, tapez "fg" pour continuer.} | |
1084 | 1084 | |||
1085 | message binpkg | 1085 | message binpkg | |
1086 | {Afin de configurer le système de paquetages binaires, choisissez | 1086 | {Afin de configurer le système de paquetages binaires, choisissez | |
1087 | l'emplacement réseau où les paquetages se trouvent. Une fois le système | 1087 | l'emplacement réseau où les paquetages se trouvent. Une fois le système | |
1088 | redémarré, vous pourrez utiliser 'pkgin' pour installer et aménager des | 1088 | redémarré, vous pourrez utiliser 'pkgin' pour installer et aménager des | |
1089 | paquetages additionnels.} | 1089 | paquetages additionnels.} | |
1090 | 1090 | |||
1091 | message pkgpath | 1091 | message pkgpath | |
1092 | {Voici les configurations actuelles pour : protocole, serveur, répertoire, | 1092 | {Voici les configurations actuelles pour : protocole, serveur, répertoire, | |
1093 | utilisateur et mot de passe qui seront utilisés. Si "utilisateur" est "ftp", | 1093 | utilisateur et mot de passe qui seront utilisés. Si "utilisateur" est "ftp", | |
1094 | un mot de passe n'est pas requis. | 1094 | un mot de passe n'est pas requis. | |
1095 | 1095 | |||
1096 | } | 1096 | } | |
1097 | message rcconf_backup_failed {La copie de rc.conf a échoué. Continuer ?} | 1097 | message rcconf_backup_failed {La copie de rc.conf a échoué. Continuer ?} | |
1098 | message rcconf_backup_succeeded {La copie de rc.conf a été sauvegardée jusqu'à %s.} | 1098 | message rcconf_backup_succeeded {La copie de rc.conf a été sauvegardée jusqu'à %s.} | |
1099 | message rcconf_restore_failed {La restauration de la sauvegarde de rc.conf a échoué.} | 1099 | message rcconf_restore_failed {La restauration de la sauvegarde de rc.conf a échoué.} | |
1100 | message rcconf_delete_failed {La suppression de l'ancien fichier %s a échoué.} | 1100 | message rcconf_delete_failed {La suppression de l'ancien fichier %s a échoué.} | |
1101 | message Pkg_dir {Dossier de paquetages} | 1101 | message Pkg_dir {Dossier de paquetages} | |
1102 | message configure_prior {configurer une installation existante de} | 1102 | message configure_prior {configurer une installation existante de} | |
1103 | message configure {configurer} | 1103 | message configure {configurer} | |
1104 | message change {changer} | 1104 | message change {changer} | |
1105 | message password_set {Définir le mot de passe} | 1105 | message password_set {Définir le mot de passe} | |
1106 | message YES {OUI} | 1106 | message YES {OUI} | |
1107 | message NO {NON} | 1107 | message NO {NON} | |
1108 | message DONE {TERMINER} | 1108 | message DONE {TERMINER} | |
1109 | message abandoned {Abandonnée} | 1109 | message abandoned {Abandonnée} | |
1110 | message empty {***VIDE***} | 1110 | message empty {***VIDE***} | |
1111 | message timezone {Fuseau horaire} | 1111 | message timezone {Fuseau horaire} | |
1112 | message change_rootpw {Changer le mot de passe "root"} | 1112 | message change_rootpw {Changer le mot de passe "root"} | |
1113 | message enable_binpkg {Activer l'installation de paquetages binaires} | 1113 | message enable_binpkg {Activer l'installation de paquetages binaires} | |
1114 | message enable_sshd {Activer sshd} | 1114 | message enable_sshd {Activer sshd} | |
1115 | message enable_ntpd {Activer ntpd} | 1115 | message enable_ntpd {Activer ntpd} | |
1116 | message run_ntpdate {Exécuter ntpdate au démarrage} | 1116 | message run_ntpdate {Exécuter ntpdate au démarrage} | |
1117 | message enable_mdnsd {Activer mdnsd} | 1117 | message enable_mdnsd {Activer mdnsd} | |
1118 | message enable_xdm {Activer xdm} | 1118 | message enable_xdm {Activer xdm} | |
1119 | message enable_cgd {Activer cgd} | 1119 | message enable_cgd {Activer cgd} | |
1120 | message enable_lvm {Activer lvm} | 1120 | message enable_lvm {Activer lvm} | |
1121 | message enable_raid {Activer raidframe} | 1121 | message enable_raid {Activer raidframe} | |
1122 | message add_a_user {Ajouter un utilisateur} | 1122 | message add_a_user {Ajouter un utilisateur} | |
1123 | message configmenu {Configurer les items suivants si nécessaire.} | 1123 | message configmenu {Configurer les items suivants si nécessaire.} | |
1124 | message doneconfig {Configuration terminée} | 1124 | message doneconfig {Configuration terminée} | |
1125 | message Install_pkgin {Installer pkgin et mettre à jour le sommaire des paquetages} | 1125 | message Install_pkgin {Installer pkgin et mettre à jour le sommaire des paquetages} | |
1126 | message binpkg_installed | 1126 | message 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 | |
1128 | des paquetages binaires. Pour installer un paquetage, utilisez : | 1128 | des paquetages binaires. Pour installer un paquetage, utilisez : | |
1129 | 1129 | |||
1130 | pkgin install <packagename> | 1130 | pkgin 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.} | |
1133 | message Install_pkgsrc {Obtenir et extraire pkgsrc} | 1133 | message Install_pkgsrc {Obtenir et extraire pkgsrc} | |
1134 | message pkgsrc | 1134 | message 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 | |
1136 | par le réseau. | 1136 | par le réseau. | |
1137 | Voici les configurations actuelles pour : serveur, répertoire, utilisateur et | 1137 | Voici les configurations actuelles pour : serveur, répertoire, utilisateur et | |
1138 | mot de passe qui seront utilisés. Si "utilisateur" est "ftp", un mot de passe | 1138 | mot de passe qui seront utilisés. Si "utilisateur" est "ftp", un mot de passe | |
1139 | n'est pas requis. | 1139 | n'est pas requis. | |
1140 | 1140 | |||
1141 | } | 1141 | } | |
1142 | message Pkgsrc_dir {Répertoire pkgsrc} | 1142 | message Pkgsrc_dir {Répertoire pkgsrc} | |
1143 | message get_pkgsrc | 1143 | message 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} | |
1145 | message retry_pkgsrc_network {La configuration du réseau a échoué. Réessayer ?} | 1145 | message retry_pkgsrc_network {La configuration du réseau a échoué. Réessayer ?} | |
1146 | message quit_pkgsrc {Quitter sans installer pkgsrc} | 1146 | message quit_pkgsrc {Quitter sans installer pkgsrc} | |
1147 | message quit_pkgs_install {Quitter sans installer bin pkg} | 1147 | message quit_pkgs_install {Quitter sans installer bin pkg} | |
1148 | message pkgin_failed | 1148 | message 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 | |
1150 | n'existe pas. Vérifiez le chemin et essayez à nouveau.} | 1150 | n'existe pas. Vérifiez le chemin et essayez à nouveau.} | |
1151 | message failed {Échoué} | 1151 | message failed {Échoué} | |
1152 | 1152 | |||
1153 | 1153 | |||
1154 | message notsupported {Le fonctionnement n'est pas pris en charge!} | 1154 | message notsupported {Le fonctionnement n'est pas pris en charge!} | |
1155 | message askfsmountadv {Point de montage ou de 'raid' ou 'cgd' ou 'lvm'?} | 1155 | message askfsmountadv {Point de montage ou de 'raid' ou 'cgd' ou 'lvm'?} | |
1156 | message partman {Partitionnement étendu} | 1156 | message partman {Partitionnement étendu} | |
1157 | message editbsdpart {Modifier les partitions BSD} | 1157 | message editbsdpart {Modifier les partitions BSD} | |
1158 | message editmbr {Modifiez et enregistrez MBR} | 1158 | message editmbr {Modifiez et enregistrez MBR} | |
1159 | message switchgpt {Mettre à GPT} | 1159 | message switchgpt {Mettre à GPT} | |
1160 | message switchmbr {Basculer vers MBR} | 1160 | message switchmbr {Basculer vers MBR} | |
1161 | message renamedisk {Définir le nom du disque} | 1161 | message renamedisk {Définir le nom du disque} | |
1162 | message fmtasraid {Format en RAID} | 1162 | message fmtasraid {Format en RAID} | |
1163 | message fmtaslvm {Format de LVM PV} | 1163 | message fmtaslvm {Format de LVM PV} | |
1164 | message encrypt {Crypter} | 1164 | message encrypt {Crypter} | |
1165 | message setbootable {Drapeau d'amorçage} | 1165 | message setbootable {Drapeau d'amorçage} | |
1166 | message erase {Fonction d'effacement sécurisé} | 1166 | message erase {Fonction d'effacement sécurisé} | |
1167 | message undo {Annuler les changements} | 1167 | message undo {Annuler les changements} | |
1168 | message unconfig {Annulation de la configuration} | 1168 | message unconfig {Annulation de la configuration} | |
1169 | message edit {Éditer} | 1169 | message edit {Éditer} | |
1170 | message doumount {Groupe umount} | 1170 | message doumount {Groupe umount} | |
1171 | message fillzeros {Remplir de zéros} | 1171 | message fillzeros {Remplir de zéros} | |
1172 | message fillrandom {Remplissez par des données aléatoires} | 1172 | message fillrandom {Remplissez par des données aléatoires} | |
1173 | message fillcrypto {Remplissez par crypto données} | 1173 | message fillcrypto {Remplissez par crypto données} | |
1174 | message raid0 {0 - Pas de parité, l'entrelacement seulement simple.} | 1174 | message raid0 {0 - Pas de parité, l'entrelacement seulement simple.} | |
1175 | message raid1 {1 - Mirroring. La parité est le miroir.} | 1175 | message raid1 {1 - Mirroring. La parité est le miroir.} | |
1176 | message raid4 {4 - Entrelacement avec parité stockées sur le dernier composant. component.} | 1176 | message raid4 {4 - Entrelacement avec parité stockées sur le dernier composant. component.} | |
1177 | message raid5 {5 - Entrelacement avec parité à tous les composants. components.} | 1177 | message raid5 {5 - Entrelacement avec parité à tous les composants. components.} | |
1178 | 1178 | |||
1179 | message fremove {ENLEVER} | 1179 | message fremove {ENLEVER} | |
1180 | message remove {Supprimer} | 1180 | message remove {Supprimer} | |
1181 | message add {Ajouter} | 1181 | message add {Ajouter} | |
1182 | message auto {auto} | 1182 | message auto {auto} | |
1183 | 1183 | |||
1184 | message removepartswarn {Cette supprimer toutes les partitions sur le disque. Voulez-vous continuer? want to continue?} | 1184 | message removepartswarn {Cette supprimer toutes les partitions sur le disque. Voulez-vous continuer? want to continue?} | |
1185 | message saveprompt {Enregistrer les modifications avant de terminer?} | 1185 | message saveprompt {Enregistrer les modifications avant de terminer?} | |
1186 | message cantsave {Aucune modification ne peut être sauvé.} | 1186 | message cantsave {Aucune modification ne peut être sauvé.} | |
1187 | message noroot {Aucune partition racine défini, ne peut pas continuer \n continue\n} | 1187 | message noroot {Aucune partition racine défini, ne peut pas continuer \n continue\n} | |
1188 | message wannaunblock {L'appareil est bloqué. Voulez-vous forcer le débloquer et continuer? unblock it and continue?} | 1188 | message wannaunblock {L'appareil est bloqué. Voulez-vous forcer le débloquer et continuer? unblock it and continue?} | |
1189 | message wannatry {Voulez-vous essayer?} | 1189 | message wannatry {Voulez-vous essayer?} | |
1190 | message create_cgd {Le volume cryptographique Créer (CGD)} | 1190 | message create_cgd {Le volume cryptographique Créer (CGD)} | |
1191 | message create_cnd {Créer une image de disque virtuel (VND)} | 1191 | message create_cnd {Créer une image de disque virtuel (VND)} | |
1192 | message create_vg {Créer un groupe de volumes LVM (VG)} | 1192 | message create_vg {Créer un groupe de volumes LVM (VG)} | |
1193 | message create_lv { Créer un volume logique} | 1193 | message create_lv { Créer un volume logique} | |
1194 | message create_raid {Créer un RAID logiciel} | 1194 | message create_raid {Créer un RAID logiciel} | |
1195 | message updpmlist {Mettre à jour la liste des dispositifs} | 1195 | message updpmlist {Mettre à jour la liste des dispositifs} | |
1196 | message savepm {Enregistrer les modifications} | 1196 | message savepm {Enregistrer les modifications} | |
1197 | message pmblocked {BLOQUE} | 1197 | message pmblocked {BLOQUE} | |
1198 | message pmunchanged {INCHANGÉ} | 1198 | message pmunchanged {INCHANGÉ} | |
1199 | message pmsetboot {BOOT} | 1199 | message pmsetboot {BOOT} | |
1200 | message pmused {UTILISÉ} | 1200 | message pmused {UTILISÉ} | |
1201 | message pmmounted {(monté)} | 1201 | message pmmounted {(monté)} | |
1202 | message pmunused {(non utilisé)} | 1202 | message pmunused {(non utilisé)} | |
1203 | message pmgptdisk {Disque avec GPT} | 1203 | message pmgptdisk {Disque avec GPT} | |
1204 | 1204 | |||
1205 | message finishpm {Terminer le partitionnement} | 1205 | message finishpm {Terminer le partitionnement} | |
1206 | message limitcount {Limite pour le nombre de dispositifs a été atteint!} | 1206 | message limitcount {Limite pour le nombre de dispositifs a été atteint!} | |
1207 | message invaliddev {Blancs appareil!} | 1207 | message invaliddev {Blancs appareil!} | |
1208 | message avdisks {Disques disponibles:} | 1208 | message avdisks {Disques disponibles:} | |
1209 | message nofreedev {Impossible d'allouer noeud de périphérique!} | 1209 | message nofreedev {Impossible d'allouer noeud de périphérique!} | |
1210 | message partman_header | 1210 | message 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é. | |
1212 | Dans un premier temps partitions MBR faire, puis faire étiquette BSD. | 1212 | Dans un premier temps partitions MBR faire, puis faire étiquette BSD. | |
1213 | Si vous souhaitez utiliser RAID, LVM ou DMC, procédez comme suit: | 1213 | Si vous souhaitez utiliser RAID, LVM ou DMC, procédez comme suit: | |
1214 | 1) Créer les partitions BSD de type de besoin; 2) Créer un système RAID / | 1214 | 1) Créer les partitions BSD de type de besoin; 2) Créer un système RAID / | |
1215 | LVM VG / DMC utilisation de ces partitions; 3) la sauver; | 1215 | LVM VG / DMC utilisation de ces partitions; 3) la sauver; | |
1216 | 4) Créer des partitions pour les volumes RAID / DMC ou logique par LVM.} | 1216 | 4) Créer des partitions pour les volumes RAID / DMC ou logique par LVM.} | |
1217 | 1217 | |||
1218 | message raid_menufmt { raid%d (niveau %1d) sur %-32s %11uM} | 1218 | message raid_menufmt { raid%d (niveau %1d) sur %-32s %11uM} | |
1219 | message raid_err_menufmt { RAID VIDE!} | 1219 | message raid_err_menufmt { RAID VIDE!} | |
1220 | message raid_disks_fmt {Disques: %31s} | 1220 | message raid_disks_fmt {Disques: %31s} | |
1221 | message raid_spares_fmt {Pièces de rechange: %20s} | 1221 | message raid_spares_fmt {Pièces de rechange: %20s} | |
1222 | message raid_level_fmt {Niveau RAID: %22d} | 1222 | message raid_level_fmt {Niveau RAID: %22d} | |
1223 | message raid_numrow_fmt {numRow: %22d} | 1223 | message raid_numrow_fmt {numRow: %22d} | |
1224 | message raid_numcol_fmt {numCol: %22d} | 1224 | message raid_numcol_fmt {numCol: %22d} | |
1225 | message raid_numspare_fmt {numSpare: %22d} | 1225 | message raid_numspare_fmt {numSpare: %22d} | |
1226 | message raid_sectpersu_fmt {sectPerSU: %22d} | 1226 | message raid_sectpersu_fmt {sectPerSU: %22d} | |
1227 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | 1227 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | |
1228 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | 1228 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | |
1229 | message raid_nomultidim {Tableaux multi-dimensionnels sont pas pris en charge!} | 1229 | message raid_nomultidim {Tableaux multi-dimensionnels sont pas pris en charge!} | |
1230 | message raid_numrow_ask {numRow?} | 1230 | message raid_numrow_ask {numRow?} | |
1231 | message raid_numcol_ask {numCol?} | 1231 | message raid_numcol_ask {numCol?} | |
1232 | message raid_numspare_ask {numSpare?} | 1232 | message raid_numspare_ask {numSpare?} | |
1233 | message raid_sectpersu_ask {sectPerSU?} | 1233 | message raid_sectpersu_ask {sectPerSU?} | |
1234 | message raid_superpar_ask {SUsPerParityUnit?} | 1234 | message raid_superpar_ask {SUsPerParityUnit?} | |
1235 | message raid_superrec_ask {SUsPerReconUnit?} | 1235 | message raid_superrec_ask {SUsPerReconUnit?} | |
1236 | message raid_disks {Disques en RAID:} | 1236 | message raid_disks {Disques en RAID:} | |
1237 | message vnd_err_menufmt { PATH NOT DEFINED!} | 1237 | message vnd_err_menufmt { PATH NOT DEFINED!} | |
1238 | message vnd_assgn_menufmt { vnd%1d sur %-50s ASSIGN} | 1238 | message vnd_assgn_menufmt { vnd%1d sur %-50s ASSIGN} | |
1239 | message vnd_menufmt { vnd%1d sur %-44s %11uM} | 1239 | message vnd_menufmt { vnd%1d sur %-44s %11uM} | |
1240 | message vnd_path_fmt {Chemin du fichier: %20s} | 1240 | message vnd_path_fmt {Chemin du fichier: %20s} | |
1241 | message vnd_assgn_fmt {Create new image: %14s} | 1241 | message vnd_assgn_fmt {Create new image: %14s} | |
1242 | message vnd_size_fmt {Taille: %20sM} | 1242 | message vnd_size_fmt {Taille: %20sM} | |
1243 | message vnd_ro_fmt {Read-only: %20s} | 1243 | message vnd_ro_fmt {Read-only: %20s} | |
1244 | message vnd_geom_fmt {Définir la géométrie à la main: %8s} | 1244 | message vnd_geom_fmt {Définir la géométrie à la main: %8s} | |
1245 | message vnd_bps_fmt {Octets par secteur: %20s} | 1245 | message vnd_bps_fmt {Octets par secteur: %20s} | |
1246 | message vnd_spt_fmt {Secteurs par piste: %20s} | 1246 | message vnd_spt_fmt {Secteurs par piste: %20s} | |
1247 | message vnd_tpc_fmt {Pistes par cylindre: %19s} | 1247 | message vnd_tpc_fmt {Pistes par cylindre: %19s} | |
1248 | message vnd_cyl_fmt {Cylindres: %20s} | 1248 | message vnd_cyl_fmt {Cylindres: %20s} | |
1249 | message vnd_path_ask {Chemin du fichier?} | 1249 | message vnd_path_ask {Chemin du fichier?} | |
1250 | message vnd_size_ask {Taille (MB)?} | 1250 | message vnd_size_ask {Taille (MB)?} | |
1251 | message vnd_bps_ask {Octets par secteur?} | 1251 | message vnd_bps_ask {Octets par secteur?} | |
1252 | message vnd_spt_ask {Secteurs par piste?} | 1252 | message vnd_spt_ask {Secteurs par piste?} | |
1253 | message vnd_tpc_ask {Pistes par cylindre?} | 1253 | message vnd_tpc_ask {Pistes par cylindre?} | |
1254 | message vnd_cyl_ask {Cylindres} | 1254 | message vnd_cyl_ask {Cylindres} | |
1255 | message cgd_err_menufmt { DISQUE NON DEFINI!} | 1255 | message cgd_err_menufmt { DISQUE NON DEFINI!} | |
1256 | message cgd_menufmt { cgd%1d %-48s %11uM} | 1256 | message cgd_menufmt { cgd%1d %-48s %11uM} | |
1257 | message cgd_dev_fmt {Dispositif de base: %20s} | 1257 | message cgd_dev_fmt {Dispositif de base: %20s} | |
1258 | message cgd_enc_fmt {Chiffrage: %20s} | 1258 | message cgd_enc_fmt {Chiffrage: %20s} | |
1259 | message cgd_key_fmt {Taille de la clé: %20d} | 1259 | message cgd_key_fmt {Taille de la clé: %20d} | |
1260 | message cgd_iv_fmt {Algorithme IV: %20s} | 1260 | message cgd_iv_fmt {Algorithme IV: %20s} | |
1261 | message cgd_keygen_fmt {La génération des clés: %16s} | 1261 | message cgd_keygen_fmt {La génération des clés: %16s} | |
1262 | message cgd_verif_fmt {Méthode de vérification: %15s} | 1262 | message cgd_verif_fmt {Méthode de vérification: %15s} | |
1263 | message lvm_disks {Disques à VG:} | 1263 | message lvm_disks {Disques à VG:} | |
1264 | message lvm_menufmt { %-44s %20sM} | 1264 | message lvm_menufmt { %-44s %20sM} | |
1265 | message lvm_err_menufmt { VIDER VG!} | 1265 | message lvm_err_menufmt { VIDER VG!} | |
1266 | message lvm_disks_fmt {PV's: %34s} | 1266 | message lvm_disks_fmt {PV's: %34s} | |
1267 | message lvm_name_fmt {Nom: %35s} | 1267 | message lvm_name_fmt {Nom: %35s} | |
1268 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | 1268 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | |
1269 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | 1269 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | |
1270 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | 1270 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | |
1271 | message lvm_name_ask {Nom?} | 1271 | message lvm_name_ask {Nom?} | |
1272 | message lvm_maxlv_ask {MaxLogicalVolumes?} | 1272 | message lvm_maxlv_ask {MaxLogicalVolumes?} | |
1273 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | 1273 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | |
1274 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | 1274 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | |
1275 | message lvmlv_menufmt { Logique volume %-35s %11uM} | 1275 | message lvmlv_menufmt { Logique volume %-35s %11uM} | |
1276 | message lvmlv_name_fmt {Nom: %35s} | 1276 | message lvmlv_name_fmt {Nom: %35s} | |
1277 | message lvmlv_size_fmt {Taille: %29dM} | 1277 | message lvmlv_size_fmt {Taille: %29dM} | |
1278 | message lvmlv_ro_fmt {Read-only: %29s} | 1278 | message lvmlv_ro_fmt {Read-only: %29s} | |
1279 | message lvmlv_cont_fmt {Contiguë: %29s} | 1279 | message lvmlv_cont_fmt {Contiguë: %29s} | |
1280 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | 1280 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | |
1281 | message lvmlv_minor_fmt {Nombre mineur: %25s} | 1281 | message lvmlv_minor_fmt {Nombre mineur: %25s} | |
1282 | message lvmlv_mirrors_fmt {Miroirs: %29d} | 1282 | message lvmlv_mirrors_fmt {Miroirs: %29d} | |
1283 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | 1283 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | |
1284 | message lvmlv_pers_fmt {Persistante numéro mineur: %13s} | 1284 | message lvmlv_pers_fmt {Persistante numéro mineur: %13s} | |
1285 | message lvmlv_readahsect_fmt {ReadAheadSectors: %22s} | 1285 | message lvmlv_readahsect_fmt {ReadAheadSectors: %22s} | |
1286 | message lvmlv_stripes_fmt {Rayures: %28s} | 1286 | message lvmlv_stripes_fmt {Rayures: %28s} | |
1287 | message lvmlv_stripesiz_fmt {Stripesize: %28s} | 1287 | message lvmlv_stripesiz_fmt {Stripesize: %28s} | |
1288 | message lvmlv_zero_fmt {Remise à zéro de la KB d'abord: %8s} | 1288 | message lvmlv_zero_fmt {Remise à zéro de la KB d'abord: %8s} | |
1289 | message lvmlv_name_ask {Nom?} | 1289 | message lvmlv_name_ask {Nom?} | |
1290 | message lvmlv_size_ask {Taille (MB)?} | 1290 | message lvmlv_size_ask {Taille (MB)?} | |
1291 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | 1291 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | |
1292 | message lvmlv_minor_ask {Numéro mineur?} | 1292 | message lvmlv_minor_ask {Numéro mineur?} | |
1293 | message lvmlv_mirrors_ask {Miroirs?} | 1293 | message lvmlv_mirrors_ask {Miroirs?} | |
1294 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | 1294 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | |
1295 | message lvmlv_readahsect_ask {ReadAheadSectors?} | 1295 | message lvmlv_readahsect_ask {ReadAheadSectors?} | |
1296 | message lvmlv_stripes_ask {Stripes?} | 1296 | message lvmlv_stripes_ask {Stripes?} | |
1297 | 1297 | |||
1298 | message addusername {Nom d'utilisateur (8 caractères)} | 1298 | message addusername {Nom d'utilisateur (8 caractères)} | |
1299 | message addusertowheel {Ajouter cet utilisateur au groupe "wheel" ?} | 1299 | message addusertowheel {Ajouter cet utilisateur au groupe "wheel" ?} | |
1300 | message Delete_partition | 1300 | message Delete_partition | |
1301 | {Supprimer la partition} | 1301 | {Supprimer la partition} | |
1302 | 1302 | |||
1303 | ||||
1304 | message No_filesystem_newfs | |||
1305 | {The selected partition does not seem to have a valid file system. | |||
1306 | Do you want to newfs (format) it?} | |||
1307 | ||||
1308 | message Auto_add_swap_part | |||
1309 | {A swap partition (named %s) seems to exist on %s. | |||
1310 | Do you want to use that?} | |||
1311 | ||||
1312 |
--- 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 | |||
39 | message usage | 39 | message 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 | */ | |
47 | message sysinst_message_language | 47 | message sysinst_message_language | |
48 | {Komunikaty instalacyjne w jezyku polskim} | 48 | {Komunikaty instalacyjne w jezyku polskim} | |
49 | 49 | |||
50 | message sysinst_message_locale | 50 | message sysinst_message_locale | |
51 | {pl_PL.ISO8859-2} | 51 | {pl_PL.ISO8859-2} | |
52 | 52 | |||
53 | message Yes {Tak} | 53 | message Yes {Tak} | |
54 | message No {Nie} | 54 | message No {Nie} | |
55 | message All {Wszystkie} | 55 | message All {Wszystkie} | |
56 | message Some {Niektore} | 56 | message Some {Niektore} | |
57 | message None {Zadne} | 57 | message None {Zadne} | |
58 | message none {zadne} | 58 | message none {zadne} | |
59 | message ok {ok} | 59 | message ok {ok} | |
60 | message OK {OK} | 60 | message OK {OK} | |
61 | message unchanged {niezmienione} | 61 | message unchanged {niezmienione} | |
62 | message On {Wlaczone} | 62 | message On {Wlaczone} | |
63 | message Off {Wylaczone} | 63 | message Off {Wylaczone} | |
64 | message Delete {Usunac?} | 64 | message Delete {Usunac?} | |
65 | 65 | |||
66 | message install | 66 | message install | |
67 | {zainstalowac} | 67 | {zainstalowac} | |
68 | 68 | |||
69 | message reinstall | 69 | message reinstall | |
70 | {przeinstaluj pakiety dla} | 70 | {przeinstaluj pakiety dla} | |
71 | 71 | |||
72 | message upgrade | 72 | message upgrade | |
73 | {zaktualizowac} | 73 | {zaktualizowac} | |
74 | 74 | |||
75 | message mount_failed | 75 | message mount_failed | |
76 | {Montowanie %s nie powiodlo sie. Kontynuowac? | 76 | {Montowanie %s nie powiodlo sie. Kontynuowac? | |
77 | } | 77 | } | |
78 | 78 | |||
79 | message hello | 79 | message hello | |
80 | {Witaj w sysinst, systemie instalacyjnym NetBSD-@@VERSION@@. | 80 | {Witaj w sysinst, systemie instalacyjnym NetBSD-@@VERSION@@. | |
81 | To, oparte na menu, narzedzie zostalo stworzone aby pomoc ci zainstalowac | 81 | To, oparte na menu, narzedzie zostalo stworzone aby pomoc ci zainstalowac | |
82 | NetBSD na twardym dysku, lub zaktualizowac istniejacy system NetBSD, | 82 | NetBSD na twardym dysku, lub zaktualizowac istniejacy system NetBSD, | |
83 | zuzywajac minimum czasu. W ponizszych menu mozesz zmienic aktualne | 83 | zuzywajac minimum czasu. W ponizszych menu mozesz zmienic aktualne | |
84 | ustawienia poprzez naciskanie klawiszy (a, b, c, ...). Klawisze strzalek | 84 | ustawienia poprzez naciskanie klawiszy (a, b, c, ...). Klawisze strzalek | |
85 | takze moga dzialac. Aktywujesz ustawienie poprzez nacisniecie ENTER. | 85 | takze moga dzialac. Aktywujesz ustawienie poprzez nacisniecie ENTER. | |
86 | } | 86 | } | |
87 | 87 | |||
88 | message thanks | 88 | message thanks | |
89 | {Dziekujemy za uzywanie NetBSD! | 89 | {Dziekujemy za uzywanie NetBSD! | |
90 | } | 90 | } | |
91 | 91 | |||
92 | message installusure | 92 | message installusure | |
93 | {Zdecydowales sie zainstalowac NetBSD na twardym dysku. Spowoduje to zmiane | 93 | {Zdecydowales sie zainstalowac NetBSD na twardym dysku. Spowoduje to zmiane | |
94 | informacji na twoim dysku. Powinienes zrobic pelny backup danych przed | 94 | informacji na twoim dysku. Powinienes zrobic pelny backup danych przed | |
95 | rozpoczeciem tej procedury! Zostana wykonane nastepujace czynnosci: | 95 | rozpoczeciem 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 | |
101 | zostanie zmieniony, bedziesz mial mozliwosc przerwac te procedure.) | 101 | zostanie zmieniony, bedziesz mial mozliwosc przerwac te procedure.) | |
102 | 102 | |||
103 | Czy kontynuowac? | 103 | Czy kontynuowac? | |
104 | } | 104 | } | |
105 | 105 | |||
106 | message upgradeusure | 106 | message upgradeusure | |
107 | {Ok, zaktualizujmy NetBSD na twoim dysku. Jak zawsze, spowoduje to | 107 | {Ok, zaktualizujmy NetBSD na twoim dysku. Jak zawsze, spowoduje to | |
108 | zmiane informacji na twoim dysku. Powinienes zrobic pelny backup danych | 108 | zmiane informacji na twoim dysku. Powinienes zrobic pelny backup danych | |
109 | przed rozpoczeciem! Czy napewno chcesz zaktualizowac NetBSD? | 109 | przed 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 | |
111 | twoich dyskach.) | 111 | twoich dyskach.) | |
112 | } | 112 | } | |
113 | 113 | |||
114 | message reinstallusure | 114 | message reinstallusure | |
115 | {Ok, rozpakujmy pakiety dystrybucyjne NetBSD na bootowalny twardy dysk. | 115 | {Ok, rozpakujmy pakiety dystrybucyjne NetBSD na bootowalny twardy dysk. | |
116 | Ta procedura tylko sciaga i rozpakowuje pakiety na pre-partycjonowany | 116 | Ta procedura tylko sciaga i rozpakowuje pakiety na pre-partycjonowany | |
117 | bootowalny dysk. Nie nazywa dyskow, aktualizuje bootblokow, lub zapisuje | 117 | bootowalny dysk. Nie nazywa dyskow, aktualizuje bootblokow, lub zapisuje | |
118 | istniejacej konfiguracji. (Wyjdz i wybierz `instaluj' lub | 118 | istniejacej 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 | |||
122 | Czy napewno chcesz przeinstalowac pakiety dystrybucjne NetBSD? | 122 | Czy 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 | |
124 | twoich dyskach.) | 124 | twoich dyskach.) | |
125 | } | 125 | } | |
126 | 126 | |||
127 | message nodisk | 127 | message 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 | |
129 | przeniesiony do menu glownego. | 129 | przeniesiony do menu glownego. | |
130 | } | 130 | } | |
131 | 131 | |||
132 | message onedisk | 132 | message onedisk | |
133 | {Znalazlem tylko jeden dysk, %s. Stad przyjmuje, ze chcesz %s | 133 | {Znalazlem tylko jeden dysk, %s. Stad przyjmuje, ze chcesz %s | |
134 | NetBSD wlasnie na nim. | 134 | NetBSD wlasnie na nim. | |
135 | } | 135 | } | |
136 | 136 | |||
137 | message ask_disk | 137 | message ask_disk | |
138 | {Na ktorym z nich chcesz %s NetBSD? } | 138 | {Na ktorym z nich chcesz %s NetBSD? } | |
139 | 139 | |||
140 | message Available_disks | 140 | message Available_disks | |
141 | {Dostepne dyski} | 141 | {Dostepne dyski} | |
142 | 142 | |||
143 | message heads | 143 | message heads | |
144 | {glowice} | 144 | {glowice} | |
145 | 145 | |||
146 | message sectors | 146 | message sectors | |
147 | {sektory} | 147 | {sektory} | |
148 | 148 | |||
149 | message fs_isize | 149 | message fs_isize | |
150 | {sredni rozmiar pliku (bajty)} | 150 | {sredni rozmiar pliku (bajty)} | |
151 | 151 | |||
152 | message mountpoint | 152 | message mountpoint | |
153 | {punkt montowania (lub 'zaden')} | 153 | {punkt montowania (lub 'zaden')} | |
154 | 154 | |||
155 | message cylname | 155 | message cylname | |
156 | {cyl} | 156 | {cyl} | |
157 | 157 | |||
158 | message secname | 158 | message secname | |
159 | {sek} | 159 | {sek} | |
160 | 160 | |||
161 | message megname | 161 | message megname | |
162 | {MB} | 162 | {MB} | |
163 | 163 | |||
164 | message layout | 164 | message 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 | |
166 | partycji BSD. Musisz teraz skonfigurowac BSD disklabel. | 166 | partycji BSD. Musisz teraz skonfigurowac BSD disklabel. | |
167 | Masz kilka mozliwosci. Sa one opisane ponizej. | 167 | Masz 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 | |||
171 | Dysk NetBSD to %d Megabajtow. | 171 | Dysk NetBSD to %d Megabajtow. | |
172 | Standard wymaga przynajmniej %d Megabajtow. | 172 | Standard wymaga przynajmniej %d Megabajtow. | |
173 | Standard z X Window System wymaga przynajmniej %d Megabajtow. | 173 | Standard z X Window System wymaga przynajmniej %d Megabajtow. | |
174 | } | 174 | } | |
175 | 175 | |||
176 | message Choose_your_size_specifier | 176 | message Choose_your_size_specifier | |
177 | {Wybranie Megabajtow nada partycji rozmiar bliski twojemu wyborowi, | 177 | {Wybranie Megabajtow nada partycji rozmiar bliski twojemu wyborowi, | |
178 | ale dopasowany do granic cylindrow. Wybranie sektorow pozwoli ci na | 178 | ale dopasowany do granic cylindrow. Wybranie sektorow pozwoli ci na | |
179 | bardziej dokladne okreslenie rozmiarow. Na nowych dyskach ZBR rozmiar | 179 | bardziej dokladne okreslenie rozmiarow. Na nowych dyskach ZBR rozmiar | |
180 | cylindra zmienia sie w zaleznosci od miejsca na dysku, jest wiec | 180 | cylindra zmienia sie w zaleznosci od miejsca na dysku, jest wiec | |
181 | niewielka korzysc z dopasowania cylindrow. Na starszych dyskach | 181 | niewielka korzysc z dopasowania cylindrow. Na starszych dyskach | |
182 | bardziej wydajne jest podawanie rozmiaru dysku, ktore sa | 182 | bardziej wydajne jest podawanie rozmiaru dysku, ktore sa | |
183 | wielokrotnoscia aktualnego rozmiaru cylindra. | 183 | wielokrotnoscia aktualnego rozmiaru cylindra. | |
184 | 184 | |||
185 | Wybierz specyfikator rozmiaru} | 185 | Wybierz specyfikator rozmiaru} | |
186 | 186 | |||
187 | message ptnsizes | 187 | message ptnsizes | |
188 | {Mozesz teraz zmienic rozmiary partycji systemowych. Domyslne ustawienia | 188 | {Mozesz teraz zmienic rozmiary partycji systemowych. Domyslne ustawienia | |
189 | alokuja cala przestrzen na glowny system plikow, aczkolwiek mozesz zdefiniowac | 189 | alokuja cala przestrzen na glowny system plikow, aczkolwiek mozesz zdefiniowac | |
190 | osobne partycje /usr (dodatkowe pliki systemowe), /var (dane systemowe i logi) | 190 | osobne partycje /usr (dodatkowe pliki systemowe), /var (dane systemowe i logi) | |
191 | lub /home (katalogi domowe uzytkownikow). | 191 | lub /home (katalogi domowe uzytkownikow). | |
192 | 192 | |||
193 | Wolna przestrzen zostanie dodana do partycji oznaczonej '+'. | 193 | Wolna przestrzen zostanie dodana do partycji oznaczonej '+'. | |
194 | } | 194 | } | |
195 | 195 | |||
196 | message ptnheaders | 196 | message ptnheaders | |
197 | { | 197 | { | |
198 | MB Cylindry Sektory System plikow | 198 | MB Cylindry Sektory System plikow | |
199 | } | 199 | } | |
200 | 200 | |||
201 | message askfsmount | 201 | message askfsmount | |
202 | {Punkt montowania?} | 202 | {Punkt montowania?} | |
203 | 203 | |||
204 | message askfssize | 204 | message askfssize | |
205 | {Rozmiar dla %s w %s?} | 205 | {Rozmiar dla %s w %s?} | |
206 | 206 | |||
207 | message askunits | 207 | message askunits | |
208 | {Zmien jednostki wejsciowe (sektory/cylindry/MB)} | 208 | {Zmien jednostki wejsciowe (sektory/cylindry/MB)} | |
209 | 209 | |||
210 | message NetBSD_partition_cant_change | 210 | message NetBSD_partition_cant_change | |
211 | {partycja NetBSD} | 211 | {partycja NetBSD} | |
212 | 212 | |||
213 | message Whole_disk_cant_change | 213 | message Whole_disk_cant_change | |
214 | {Caly dysk} | 214 | {Caly dysk} | |
215 | 215 | |||
216 | message Boot_partition_cant_change | 216 | message Boot_partition_cant_change | |
217 | {partycja uruchomic} | 217 | {partycja uruchomic} | |
218 | 218 | |||
219 | message add_another_ptn | 219 | message add_another_ptn | |
220 | {Dodaj partycje zdefiniowana przez uzytkownika} | 220 | {Dodaj partycje zdefiniowana przez uzytkownika} | |
221 | 221 | |||
222 | message fssizesok | 222 | message 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 | |||
225 | message fssizesbad | 225 | message fssizesbad | |
226 | {Zmniejsz rozmiary partycji o %d %s (%u sektorow).} | 226 | {Zmniejsz rozmiary partycji o %d %s (%u sektorow).} | |
227 | 227 | |||
228 | message startoutsidedisk | 228 | message startoutsidedisk | |
229 | {Wartosc poczatkowa ktora podales jest poza koncem dysku. | 229 | {Wartosc poczatkowa ktora podales jest poza koncem dysku. | |
230 | } | 230 | } | |
231 | 231 | |||
232 | message endoutsidedisk | 232 | message 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 | |
234 | twojej partycji zostal zmniejszony do %d %s. | 234 | twojej partycji zostal zmniejszony do %d %s. | |
235 | } | 235 | } | |
236 | 236 | |||
237 | message toobigdisklabel | 237 | message toobigdisklabel | |
238 | { | 238 | { | |
239 | Ten dysk jest zbyt duzy dla tablicy partycji disklabel i dlatego | 239 | Ten dysk jest zbyt duzy dla tablicy partycji disklabel i dlatego | |
240 | nie moze zostac uzyty jako dysk starowy ani nie moze przechowywac | 240 | nie moze zostac uzyty jako dysk starowy ani nie moze przechowywac | |
241 | glownej partycji. | 241 | glownej partycji. | |
242 | } | 242 | } | |
243 | 243 | |||
244 | message fspart | 244 | message fspart | |
245 | {Mamy teraz twoje partycje BSD-disklabel jako: | 245 | {Mamy teraz twoje partycje BSD-disklabel jako: | |
246 | 246 | |||
247 | } | 247 | } | |
248 | 248 | |||
249 | message fspart_header /* XXX abbreviations (or change fspart_row below) */ | 249 | message 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 | |||
254 | message fspart_row | 254 | message fspart_row | |
255 | {%9lu %9lu %10lu %-10s %-7s %-9s %s} | 255 | {%9lu %9lu %10lu %-10s %-7s %-9s %s} | |
256 | 256 | |||
257 | message show_all_unused_partitions | 257 | message show_all_unused_partitions | |
258 | {Pokaz wszystkie nieuzywane partycje} | 258 | {Pokaz wszystkie nieuzywane partycje} | |
259 | 259 | |||
260 | message partition_sizes_ok | 260 | message partition_sizes_ok | |
261 | {Rozmiary partycji w porzadku} | 261 | {Rozmiary partycji w porzadku} | |
262 | 262 | |||
263 | message edfspart | 263 | message edfspart | |
264 | {Powinienes najpierw ustawic rodzaj systemu plikow (SP). | 264 | {Powinienes najpierw ustawic rodzaj systemu plikow (SP). | |
265 | Pozniej inne wartosci. | 265 | Pozniej inne wartosci. | |
266 | 266 | |||
267 | Aktualne wartosci dla partycji %c: | 267 | Aktualne wartosci dla partycji %c: | |
268 | 268 | |||
269 | MB cylinders sectors | 269 | MB cylinders sectors | |
270 | ------- --------- --------- | 270 | ------- --------- --------- | |
271 | } | 271 | } | |
272 | 272 | |||
273 | message fstype_fmt | 273 | message fstype_fmt | |
274 | { Typ systemu plikow: %9s} | 274 | { Typ systemu plikow: %9s} | |
275 | 275 | |||
276 | message start_fmt | 276 | message start_fmt | |
277 | { poczatek: %9u %8u%c %9u} | 277 | { poczatek: %9u %8u%c %9u} | |
278 | 278 | |||
279 | message size_fmt | 279 | message size_fmt | |
280 | { rozmiar: %9u %8u%c %9u} | 280 | { rozmiar: %9u %8u%c %9u} | |
281 | 281 | |||
282 | message end_fmt | 282 | message end_fmt | |
283 | { koniec: %9u %8u%c %9u} | 283 | { koniec: %9u %8u%c %9u} | |
284 | 284 | |||
285 | message bsize_fmt | 285 | message bsize_fmt | |
286 | { rozmiar bloku: %9d bajtow} | 286 | { rozmiar bloku: %9d bajtow} | |
287 | 287 | |||
288 | message fsize_fmt | 288 | message fsize_fmt | |
289 | { rozmiar fragmentu: %9d bajtow} | 289 | { rozmiar fragmentu: %9d bajtow} | |
290 | 290 | |||
291 | message isize_fmt | 291 | message isize_fmt | |
292 | { Sredni rozm. pliku: %9d bajtow} | 292 | { Sredni rozm. pliku: %9d bajtow} | |
293 | message isize_fmt_dflt | 293 | message isize_fmt_dflt | |
294 | { Sredni rozm. pliku: 4 fragmenty} | 294 | { Sredni rozm. pliku: 4 fragmenty} | |
295 | 295 | |||
296 | message newfs_fmt | 296 | message newfs_fmt | |
297 | { newfs: %9s} | 297 | { newfs: %9s} | |
298 | 298 | |||
299 | message mount_fmt | 299 | message mount_fmt | |
300 | { montowanie: %9s} | 300 | { montowanie: %9s} | |
301 | 301 | |||
302 | message mount_options_fmt | 302 | message mount_options_fmt | |
303 | { opcje montowania: } | 303 | { opcje montowania: } | |
304 | 304 | |||
305 | message mountpt_fmt | 305 | message mountpt_fmt | |
306 | { punkt montowania: %9s} | 306 | { punkt montowania: %9s} | |
307 | 307 | |||
308 | message toggle | 308 | message toggle | |
309 | {Przelacz} | 309 | {Przelacz} | |
310 | 310 | |||
311 | message restore | 311 | message restore | |
312 | {Odzyskaj oryginalne wartosci} | 312 | {Odzyskaj oryginalne wartosci} | |
313 | 313 | |||
314 | message Select_the_type | 314 | message Select_the_type | |
315 | {Wybierz typ} | 315 | {Wybierz typ} | |
316 | 316 | |||
317 | message other_types | 317 | message other_types | |
318 | {inne typy} | 318 | {inne typy} | |
319 | 319 | |||
320 | message label_size | 320 | message label_size | |
321 | {%s | 321 | {%s | |
322 | Specjalne wartosci, ktore moga byc podane jako wartosci rozmiaru: | 322 | Specjalne 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 | |||
326 | rozmiar (%s)} | 326 | rozmiar (%s)} | |
327 | 327 | |||
328 | message label_offset | 328 | message label_offset | |
329 | {%s | 329 | {%s | |
330 | Specjalne wartosci, ktore moga byc podane jako wartosci przesuniecia: | 330 | Specjalne 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 | |||
334 | poczatek (%s)} | 334 | poczatek (%s)} | |
335 | 335 | |||
336 | message invalid_sector_number | 336 | message invalid_sector_number | |
337 | {Zle uformowany numer sektora | 337 | {Zle uformowany numer sektora | |
338 | } | 338 | } | |
339 | 339 | |||
340 | message Select_file_system_block_size | 340 | message Select_file_system_block_size | |
341 | {Wybierz rozmiar bloku dla systemu plikow} | 341 | {Wybierz rozmiar bloku dla systemu plikow} | |
342 | 342 | |||
343 | message Select_file_system_fragment_size | 343 | message Select_file_system_fragment_size | |
344 | {Wybierz rozmiar fragmentu dla systemu plikow} | 344 | {Wybierz rozmiar fragmentu dla systemu plikow} | |
345 | 345 | |||
346 | message packname | 346 | message packname | |
347 | {Podaj nazwe dla swojego dysku NetBSD} | 347 | {Podaj nazwe dla swojego dysku NetBSD} | |
348 | 348 | |||
349 | message lastchance | 349 | message 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 | |
351 | nie zostalo jeszcze zapisane. Masz teraz ostatnia szanse na przerwanie tego | 351 | nie zostalo jeszcze zapisane. Masz teraz ostatnia szanse na przerwanie tego | |
352 | procesu poki nic nie zostalo jeszcze zmienione. | 352 | procesu poki nic nie zostalo jeszcze zmienione. | |
353 | 353 | |||
354 | Czy kontynuowac? | 354 | Czy kontynuowac? | |
355 | } | 355 | } | |
356 | 356 | |||
357 | message disksetupdone | 357 | message disksetupdone | |
358 | {Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal | 358 | {Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal | |
359 | disklabel na dysk doceloway, oraz utworzyl system plikow i sprawdzil | 359 | disklabel na dysk doceloway, oraz utworzyl system plikow i sprawdzil | |
360 | nowe partycje, ktore podales jako docelowe. | 360 | nowe partycje, ktore podales jako docelowe. | |
361 | } | 361 | } | |
362 | 362 | |||
363 | message disksetupdoneupdate | 363 | message disksetupdoneupdate | |
364 | {Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal | 364 | {Okej, pierwsza czesc procedury zostala zakonczona. Sysinst zapisal | |
365 | disklabel na dysk docelowy, oraz sprawdzil nowe partycje, ktore | 365 | disklabel na dysk docelowy, oraz sprawdzil nowe partycje, ktore | |
366 | podales jako docelowe. | 366 | podales jako docelowe. | |
367 | } | 367 | } | |
368 | 368 | |||
369 | message openfail | 369 | message openfail | |
370 | {Nie moglem otworzyc %s, blad: %s. | 370 | {Nie moglem otworzyc %s, blad: %s. | |
371 | } | 371 | } | |
372 | 372 | |||
373 | message mountfail | 373 | message 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 | |||
377 | message extractcomplete | 377 | message extractcomplete | |
378 | {Rozpakowywanie wybranych pakietow dla NetBSD-@@VERSION@@ zakonczone. | 378 | {Rozpakowywanie wybranych pakietow dla NetBSD-@@VERSION@@ zakonczone. | |
379 | System moze sie teraz uruchomic z wybranego twardego dysku. Aby zakonczyc | 379 | System moze sie teraz uruchomic z wybranego twardego dysku. Aby zakonczyc | |
380 | instalacje, sysinst da ci mozliwosc skonfigurowania kilku istotnych rzeczy. | 380 | instalacje, sysinst da ci mozliwosc skonfigurowania kilku istotnych rzeczy. | |
381 | } | 381 | } | |
382 | 382 | |||
383 | message instcomplete | 383 | message instcomplete | |
384 | {Instalacja NetBSD-@@VERSION@@ zostala zakonczona. System powinien | 384 | {Instalacja NetBSD-@@VERSION@@ zostala zakonczona. System powinien | |
385 | uruchomic sie z twardego dysku. Wykonaj polecenia zawarte w pliku | 385 | uruchomic sie z twardego dysku. Wykonaj polecenia zawarte w pliku | |
386 | INSTALL o koncowej konfiguracji systemu. | 386 | INSTALL o koncowej konfiguracji systemu. | |
387 | 387 | |||
388 | Przynajmniej powinienes wyedytowac /etc/rc.conf aby odpowiadal twoim | 388 | Przynajmniej powinienes wyedytowac /etc/rc.conf aby odpowiadal twoim | |
389 | potrzebom. Przegladnij /etc/defaults/rc.conf aby poznac domyslne wartosci. | 389 | potrzebom. Przegladnij /etc/defaults/rc.conf aby poznac domyslne wartosci. | |
390 | } | 390 | } | |
391 | 391 | |||
392 | message upgrcomplete | 392 | message upgrcomplete | |
393 | {Aktualizacja NetBSD-@@VERSION@@ zostala zakonczona. Bedziesz teraz | 393 | {Aktualizacja NetBSD-@@VERSION@@ zostala zakonczona. Bedziesz teraz | |
394 | musial wykonac polecenia zawarte w pliku INSTALL, aby uzyskac system | 394 | musial wykonac polecenia zawarte w pliku INSTALL, aby uzyskac system | |
395 | odpowiadajacy twoim potrzebom. | 395 | odpowiadajacy twoim potrzebom. | |
396 | 396 | |||
397 | Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska | 397 | Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska | |
398 | i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu | 398 | i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu | |
399 | zatrzyma sie na trybie jednego-uzytkownika, oraz skopiowac spowrotem | 399 | zatrzyma sie na trybie jednego-uzytkownika, oraz skopiowac spowrotem | |
400 | pliki z haslami (biorac pod uwage nowe konta systemowe ktore mogly | 400 | pliki z haslami (biorac pod uwage nowe konta systemowe ktore mogly | |
401 | zostac utworzone dla tej wersji), jesli uzywales lokalnych plikow hasel. | 401 | zostac utworzone dla tej wersji), jesli uzywales lokalnych plikow hasel. | |
402 | } | 402 | } | |
403 | 403 | |||
404 | 404 | |||
405 | message unpackcomplete | 405 | message unpackcomplete | |
406 | {Rozpakowywanie dodatkowych pakietow NetBSD-@@VERSION@@ zostalo zakonczone. | 406 | {Rozpakowywanie dodatkowych pakietow NetBSD-@@VERSION@@ zostalo zakonczone. | |
407 | Musisz teraz wykonac | 407 | Musisz teraz wykonac | |
408 | polecenia zawarte w pliku INSTALL aby przekonfigurowac system do swoich | 408 | polecenia zawarte w pliku INSTALL aby przekonfigurowac system do swoich | |
409 | potrzeb. | 409 | potrzeb. | |
410 | 410 | |||
411 | Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska | 411 | Musisz przynajmniej dostosowac rc.conf do swojego lokalnego srodowiska | |
412 | i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu | 412 | i zmienic rc_configured=NO na rc_configured=YES inaczej start systemu | |
413 | zatrzyma sie na trybie jednego-uzytkownika. | 413 | zatrzyma sie na trybie jednego-uzytkownika. | |
414 | } | 414 | } | |
415 | 415 | |||
416 | message distmedium | 416 | message distmedium | |
417 | {Twoj dysk jest teraz gotowy na zainstalowanie jadra oraz pakietow | 417 | {Twoj dysk jest teraz gotowy na zainstalowanie jadra oraz pakietow | |
418 | dystrybucyjnych. Jak napisano w pliku INSTALL masz terz kilka opcji. Dla | 418 | dystrybucyjnych. Jak napisano w pliku INSTALL masz terz kilka opcji. Dla | |
419 | ftp lub nfs, musisz byc podlaczony do sieci z dostepem do odpowidnich maszyn. | 419 | ftp lub nfs, musisz byc podlaczony do sieci z dostepem do odpowidnich maszyn. | |
420 | 420 | |||
421 | Pakietow wybranych %d, zainstalowanych %d. Nastepnym pakietem jest %s. | 421 | Pakietow wybranych %d, zainstalowanych %d. Nastepnym pakietem jest %s. | |
422 | 422 | |||
423 | } | 423 | } | |
424 | 424 | |||
425 | message distset | 425 | message distset | |
426 | {Dystrybucja NetBSD jest rozbita w kolekcje pakietow dystrybucyjnych. | 426 | {Dystrybucja NetBSD jest rozbita w kolekcje pakietow dystrybucyjnych. | |
427 | Czesc z nich to pakiety podstawowe wymagane przez wszystkie instalacje, | 427 | Czesc z nich to pakiety podstawowe wymagane przez wszystkie instalacje, | |
428 | a czesc nie jest przez wszystkie wymagana. Mozesz zainstalowac je | 428 | a czesc nie jest przez wszystkie wymagana. Mozesz zainstalowac je | |
429 | wszystkie (Pelna instalacja) lub wybrac z opcjonalnych pakietow. | 429 | wszystkie (Pelna instalacja) lub wybrac z opcjonalnych pakietow. | |
430 | } /* XXX add 'minimal installation' */ | 430 | } /* XXX add 'minimal installation' */ | |
431 | 431 | |||
432 | message ftpsource | 432 | message 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. | |
434 | Jesli "uzytkownik" to "ftp", wtedy haslo nie jest wymagane. | 434 | Jesli "uzytkownik" to "ftp", wtedy haslo nie jest wymagane. | |
435 | 435 | |||
436 | } | 436 | } | |
437 | 437 | |||
438 | message email | 438 | message email | |
439 | {adres e-mail} | 439 | {adres e-mail} | |
440 | 440 | |||
441 | message dev | 441 | message dev | |
442 | {urzadzenie} | 442 | {urzadzenie} | |
443 | 443 | |||
444 | message nfssource | 444 | message nfssource | |
445 | {Wprowadz hosta NFS oraz katalog gdzie znajduje sie dystrybucja. | 445 | {Wprowadz hosta NFS oraz katalog gdzie znajduje sie dystrybucja. | |
446 | Pamietaj, ze katalog musi zawierac pliki .tgz oraz, ze musi byc | 446 | Pamietaj, ze katalog musi zawierac pliki .tgz oraz, ze musi byc | |
447 | dostepny przez NFS. | 447 | dostepny przez NFS. | |
448 | 448 | |||
449 | } | 449 | } | |
450 | 450 | |||
451 | message floppysource | 451 | message floppysource | |
452 | {Podaj urzadzenie bedace stacja dyskietek oraz katalog pomocniczy | 452 | {Podaj urzadzenie bedace stacja dyskietek oraz katalog pomocniczy | |
453 | w docelowym systemie plikow. Pliki z pakietami instalacyjnymi musza | 453 | w docelowym systemie plikow. Pliki z pakietami instalacyjnymi musza | |
454 | znajdowac sie w glownym katalogu dyskietki. | 454 | znajdowac sie w glownym katalogu dyskietki. | |
455 | 455 | |||
456 | } | 456 | } | |
457 | 457 | |||
458 | message cdromsource | 458 | message 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 | |
460 | dystrybucja. | 460 | dystrybucja. | |
461 | Pamietaj, ze katalog musi zawierac pliki .tgz. | 461 | Pamietaj, ze katalog musi zawierac pliki .tgz. | |
462 | 462 | |||
463 | } | 463 | } | |
464 | 464 | |||
465 | message Available_cds | 465 | message Available_cds | |
466 | {Dostepne CD} | 466 | {Dostepne CD} | |
467 | 467 | |||
468 | message ask_cd | 468 | message ask_cd | |
469 | {Znaleziono kilka CD, prosze wybrac CD zawierajcy instalacje.} | 469 | {Znaleziono kilka CD, prosze wybrac CD zawierajcy instalacje.} | |
470 | 470 | |||
471 | message cd_path_not_found | 471 | message 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 | |
473 | CD. Prosze sprawdzic urzadzenie i sciezke.} | 473 | CD. Prosze sprawdzic urzadzenie i sciezke.} | |
474 | 474 | |||
475 | message localfssource | 475 | message localfssource | |
476 | {Podaj niezamountowane lokalne urzadzenie oraz katalog na nim, gdzie | 476 | {Podaj niezamountowane lokalne urzadzenie oraz katalog na nim, gdzie | |
477 | znajduje sie dystrybucja. | 477 | znajduje sie dystrybucja. | |
478 | Pamietaj, ze katalog musi zawierac pliki .tgz. | 478 | Pamietaj, ze katalog musi zawierac pliki .tgz. | |
479 | 479 | |||
480 | } | 480 | } | |
481 | 481 | |||
482 | message localdir | 482 | message localdir | |
483 | {Podaj aktualnie zamountowany lokalny katalog, gdzie znajduje sie dystrybucja. | 483 | {Podaj aktualnie zamountowany lokalny katalog, gdzie znajduje sie dystrybucja. | |
484 | Pamietaj, ze katalog musi zawierac pliki .tgz. | 484 | Pamietaj, ze katalog musi zawierac pliki .tgz. | |
485 | 485 | |||
486 | } | 486 | } | |
487 | 487 | |||
488 | message filesys | 488 | message filesys | |
489 | {system plikow} | 489 | {system plikow} | |
490 | 490 | |||
491 | message nonet | 491 | message nonet | |
492 | {Nie znalazlem zadnych interfejsow sieciowych do uzycia z NetBSD. | 492 | {Nie znalazlem zadnych interfejsow sieciowych do uzycia z NetBSD. | |
493 | Zostaniesz przeniesiony do glownego menu. | 493 | Zostaniesz przeniesiony do glownego menu. | |
494 | } | 494 | } | |
495 | 495 | |||
496 | message netup | 496 | message netup | |
497 | {Nastepujace interfejsy sieciowe sa aktywne: %s | 497 | {Nastepujace interfejsy sieciowe sa aktywne: %s | |
498 | Czy ktorys z nich jest podlaczony do serwera?} | 498 | Czy ktorys z nich jest podlaczony do serwera?} | |
499 | 499 | |||
500 | message asknetdev | 500 | message asknetdev | |
501 | {Ktorego urzadzenia mam uzyc?} | 501 | {Ktorego urzadzenia mam uzyc?} | |
502 | 502 | |||
503 | message netdevs | 503 | message netdevs | |
504 | {Dost?pne interfejsy} | 504 | {Dost?pne interfejsy} | |
505 | 505 | |||
506 | message netinfo | 506 | message 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 | |||
511 | message net_domain | 511 | message net_domain | |
512 | {Twoja domena DNS} | 512 | {Twoja domena DNS} | |
513 | 513 | |||
514 | message net_host | 514 | message net_host | |
515 | {Twoja nazwa hosta} | 515 | {Twoja nazwa hosta} | |
516 | 516 | |||
517 | message net_ip | 517 | message net_ip | |
518 | {Twoj adres IPv4} | 518 | {Twoj adres IPv4} | |
519 | 519 | |||
520 | message net_srv_ip | 520 | message net_srv_ip | |
521 | {Server IPv4 address} | 521 | {Server IPv4 address} | |
522 | 522 | |||
523 | message net_mask | 523 | message net_mask | |
524 | {Maska podsieci IPv4} | 524 | {Maska podsieci IPv4} | |
525 | 525 | |||
526 | message net_namesrv | 526 | message net_namesrv | |
527 | {Serwer nazw IPv4} | 527 | {Serwer nazw IPv4} | |
528 | 528 | |||
529 | message net_defroute | 529 | message net_defroute | |
530 | {bramka IPv4} | 530 | {bramka IPv4} | |
531 | 531 | |||
532 | message net_media | 532 | message net_media | |
533 | {Typ medium sieciowego} | 533 | {Typ medium sieciowego} | |
534 | 534 | |||
535 | message netok | 535 | message netok | |
536 | {Ponizej sa wartosci, ktore wprowadziles. | 536 | {Ponizej sa wartosci, ktore wprowadziles. | |
537 | 537 | |||
538 | Domena DNS: %s | 538 | Domena DNS: %s | |
539 | Nazwa hosta: %s | 539 | Nazwa hosta: %s | |
540 | Serwer nazw: %s | 540 | Serwer nazw: %s | |
541 | Podstawowy interfejs: %s | 541 | Podstawowy interfejs: %s | |
542 | Medium sieciowe: %s | 542 | Medium sieciowe: %s | |
543 | Twoj adres IP: %s | 543 | Twoj adres IP: %s | |
544 | Maska podsieci: %s | 544 | Maska podsieci: %s | |
545 | Bramka IPv4: %s | 545 | Bramka IPv4: %s | |
546 | } | 546 | } | |
547 | 547 | |||
548 | message netok_slip | 548 | message netok_slip | |
549 | {Ponizej sa wartosci, ktore wprowadziles. Czy sa poprawne? | 549 | {Ponizej sa wartosci, ktore wprowadziles. Czy sa poprawne? | |
550 | 550 | |||
551 | Domena DNS: %s | 551 | Domena DNS: %s | |
552 | Nazwa hosta: %s | 552 | Nazwa hosta: %s | |
553 | Serwer nazw: %s | 553 | Serwer nazw: %s | |
554 | Podstawowy interfejs: %s | 554 | Podstawowy interfejs: %s | |
555 | Medium sieciowe: %s | 555 | Medium sieciowe: %s | |
556 | Twoj adres IP: %s | 556 | Twoj adres IP: %s | |
557 | Adres IP serwera: %s | 557 | Adres IP serwera: %s | |
558 | Maska podsieci: %s | 558 | Maska podsieci: %s | |
559 | Bramka IPv4: %s | 559 | Bramka IPv4: %s | |
560 | } | 560 | } | |
561 | 561 | |||
562 | message netokv6 | 562 | message netokv6 | |
563 | {Autkonfiguracja IPv6: %s | 563 | {Autkonfiguracja IPv6: %s | |
564 | } | 564 | } | |
565 | 565 | |||
566 | message netok_ok | 566 | message netok_ok | |
567 | {Czy sa poprawne?} | 567 | {Czy sa poprawne?} | |
568 | 568 | |||
569 | message slattach { | 569 | message slattach { | |
570 | Podaja parametry dla polecenia 'slattach' | 570 | Podaja parametry dla polecenia 'slattach' | |
571 | } | 571 | } | |
572 | 572 | |||
573 | message wait_network | 573 | message wait_network | |
574 | { | 574 | { | |
575 | Poczekaj, az interfejs sieciowy zostanie uaktywniony. | 575 | Poczekaj, az interfejs sieciowy zostanie uaktywniony. | |
576 | } | 576 | } | |
577 | 577 | |||
578 | message resolv | 578 | message resolv | |
579 | {Nie moglem utworzyc /etc/resolv.conf. Instalacja przerwana. | 579 | {Nie moglem utworzyc /etc/resolv.conf. Instalacja przerwana. | |
580 | } | 580 | } | |
581 | 581 | |||
582 | message realdir | 582 | message 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 | |||
586 | message delete_xfer_file | 586 | message delete_xfer_file | |
587 | {Usun po zakonczeniu instalacji} | 587 | {Usun po zakonczeniu instalacji} | |
588 | 588 | |||
589 | message notarfile | 589 | message notarfile | |
590 | {Pakiet %s nie istnieje.} | 590 | {Pakiet %s nie istnieje.} | |
591 | 591 | |||
592 | message endtarok | 592 | message endtarok | |
593 | {Wszystkie wybrane pakiety dystrybucji zostaly rozpakowane.} | 593 | {Wszystkie wybrane pakiety dystrybucji zostaly rozpakowane.} | |
594 | 594 | |||
595 | message endtar | 595 | message endtar | |
596 | {Wystapil blad w trackie rozpakowywania pakietow. | 596 | {Wystapil blad w trackie rozpakowywania pakietow. | |
597 | Twoja instalacja jest niekompletna. | 597 | Twoja instalacja jest niekompletna. | |
598 | 598 | |||
599 | Wybrales %d pakietow dystrybucyjnych. %d pakiety nie zostaly znalezione | 599 | Wybrales %d pakietow dystrybucyjnych. %d pakiety nie zostaly znalezione | |
600 | i %d zostalo pominietych z powodu bledow. Z %d wyprobowanych, | 600 | i %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 | |||
603 | Instalacja zostala przerwana. Sprawdz zrodlo swojej dystrybucji i rozwaz | 603 | Instalacja zostala przerwana. Sprawdz zrodlo swojej dystrybucji i rozwaz | |
604 | reinstalacje pakietow z glownego menu.} | 604 | reinstalacje pakietow z glownego menu.} | |
605 | 605 | |||
606 | message abort | 606 | message abort | |
607 | {Wybrane przez ciebie opcje spowodowaly, ze zainstalowanie NetBSD jest | 607 | {Wybrane przez ciebie opcje spowodowaly, ze zainstalowanie NetBSD jest | |
608 | nie mozliwe. Instalacja zostala przerwana. | 608 | nie mozliwe. Instalacja zostala przerwana. | |
609 | } | 609 | } | |
610 | 610 | |||
611 | message abortinst | 611 | message abortinst | |
612 | {Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. | 612 | {Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. | |
613 | Instalacja zostala przerwana. | 613 | Instalacja zostala przerwana. | |
614 | } | 614 | } | |
615 | 615 | |||
616 | message abortupgr | 616 | message abortupgr | |
617 | {Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. | 617 | {Dystrybucja nie zostala pomyslnie wgrana. Bedziesz musial zrobic to recznie. | |
618 | Aktualizacja zostala przerwana. | 618 | Aktualizacja zostala przerwana. | |
619 | } | 619 | } | |
620 | 620 | |||
621 | message abortunpack | 621 | message abortunpack | |
622 | {Rozpakowanie dodatkowych pakietow nie udalo sie. Bedziesz musial | 622 | {Rozpakowanie dodatkowych pakietow nie udalo sie. Bedziesz musial | |
623 | to zrobic recznie, albo wybierz inne zrodlo pakietow i sprobuj ponownie. | 623 | to zrobic recznie, albo wybierz inne zrodlo pakietow i sprobuj ponownie. | |
624 | } | 624 | } | |
625 | 625 | |||
626 | message createfstab | 626 | message 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 | |||
631 | message noetcfstab | 631 | message 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 | |||
635 | message badetcfstab | 635 | message 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 | |||
639 | message X_oldexists | 639 | message 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 | |
641 | na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja. | 641 | na docelowym dysku jest juz %s/bin/X.old. Napraw to przed kontynuacja. | |
642 | 642 | |||
643 | Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic | 643 | Jedyny sposob to uruchomic powloke z menu Narzedziowego i sprawdzic | |
644 | docelowe %s/bin/X oraz %s/bin/X.old. Jesli | 644 | docelowe %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 | |
647 | pochodzi z aktualnej niekompletnej aktualizacji, mozesz usunac | 647 | pochodzi 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 | |||
650 | Przerywamy aktualizacje.} | 650 | Przerywamy aktualizacje.} | |
651 | 651 | |||
652 | message netnotup | 652 | message netnotup | |
653 | {Pojawil sie problem z konfiguracja twojej sieci. Albo twoja bramka | 653 | {Pojawil sie problem z konfiguracja twojej sieci. Albo twoja bramka | |
654 | albo serwer nazw nie byl osiagalny przez ping. Czy chcesz skonfigurowac | 654 | albo serwer nazw nie byl osiagalny przez ping. Czy chcesz skonfigurowac | |
655 | siec jeszcze raz? (Nie pozwala ci kontynuowac lub przerwac instalacje.) | 655 | siec jeszcze raz? (Nie pozwala ci kontynuowac lub przerwac instalacje.) | |
656 | } | 656 | } | |
657 | 657 | |||
658 | message netnotup_continueanyway | 658 | message 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 | |||
663 | message makedev | 663 | message 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 | */ | |
671 | message badfs | 671 | message 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 | |
673 | fsck dysku nie powiodlo sie. Zamontowac dysk pomimo tego? (Numer | 673 | fsck dysku nie powiodlo sie. Zamontowac dysk pomimo tego? (Numer | |
674 | bledu %d.)} | 674 | bledu %d.)} | |
675 | 675 | |||
676 | message rootmissing | 676 | message rootmissing | |
677 | { docelowy / jest zagubiony %s. | 677 | { docelowy / jest zagubiony %s. | |
678 | } | 678 | } | |
679 | 679 | |||
680 | message badroot | 680 | message 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 | |||
685 | message fd_type | 685 | message fd_type | |
686 | {System plikow na dyskietce} | 686 | {System plikow na dyskietce} | |
687 | 687 | |||
688 | message fdnotfound | 688 | message fdnotfound | |
689 | {Nie moglem znalezc pliku na dysku. | 689 | {Nie moglem znalezc pliku na dysku. | |
690 | } | 690 | } | |
691 | 691 | |||
692 | message fdremount | 692 | message fdremount | |
693 | {Dyskietka nie zostala pomyslnie zamountowana. | 693 | {Dyskietka nie zostala pomyslnie zamountowana. | |
694 | } | 694 | } | |
695 | 695 | |||
696 | message fdmount | 696 | message fdmount | |
697 | {Wloz dyskietke zawierajaca plik "%s.%s". | 697 | {Wloz dyskietke zawierajaca plik "%s.%s". | |
698 | 698 | |||
699 | Jezeli nie masz juz wiecej dyskietek, wybierz "Pakiet kompletny" | 699 | Jezeli nie masz juz wiecej dyskietek, wybierz "Pakiet kompletny" | |
700 | aby rozpoczac proces jego instalacji. Wybierz "Przerwij pobieranie" | 700 | aby rozpoczac proces jego instalacji. Wybierz "Przerwij pobieranie" | |
701 | zeby wybrac inne zrodlo oprogramowania. | 701 | zeby wybrac inne zrodlo oprogramowania. | |
702 | } | 702 | } | |
703 | 703 | |||
704 | message mntnetconfig | 704 | message 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 | |
706 | w reguralnej pracy i czy chcesz aby je zapisac w /etc? } | 706 | w reguralnej pracy i czy chcesz aby je zapisac w /etc? } | |
707 | 707 | |||
708 | message cur_distsets | 708 | message 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 | |||
713 | message cur_distsets_header | 713 | message cur_distsets_header | |
714 | {Pakiet dystryb. Uzyc? | 714 | {Pakiet dystryb. Uzyc? | |
715 | --------------------------------- ----- | 715 | --------------------------------- ----- | |
716 | } | 716 | } | |
717 | 717 | |||
718 | message set_base | 718 | message set_base | |
719 | {Base} | 719 | {Base} | |
720 | 720 | |||
721 | message set_system | 721 | message set_system | |
722 | {System (/etc)} | 722 | {System (/etc)} | |
723 | 723 | |||
724 | message set_compiler | 724 | message set_compiler | |
725 | {Narzedzia Kompilacyjne} | 725 | {Narzedzia Kompilacyjne} | |
726 | 726 | |||
727 | message set_games | 727 | message set_games | |
728 | {Gry} | 728 | {Gry} | |
729 | 729 | |||
730 | message set_man_pages | 730 | message set_man_pages | |
731 | {Strony Podrecznika} | 731 | {Strony Podrecznika} | |
732 | 732 | |||
733 | message set_misc | 733 | message set_misc | |
734 | {Inne} | 734 | {Inne} | |
735 | 735 | |||
736 | message set_modules | 736 | message set_modules | |
737 | {Moduly kernela} | 737 | {Moduly kernela} | |
738 | 738 | |||
739 | message set_tests | 739 | message set_tests | |
740 | {Programy testujace} | 740 | {Programy testujace} | |
741 | 741 | |||
742 | message set_text_tools | 742 | message set_text_tools | |
743 | {Narzedzia Przetwarzania Tekstu} | 743 | {Narzedzia Przetwarzania Tekstu} | |
744 | 744 | |||
745 | message set_X11 | 745 | message set_X11 | |
746 | {Pakiety X11} | 746 | {Pakiety X11} | |
747 | 747 | |||
748 | message set_X11_base | 748 | message set_X11_base | |
749 | {X11 base oraz klienci} | 749 | {X11 base oraz klienci} | |
750 | 750 | |||
751 | message set_X11_etc | 751 | message set_X11_etc | |
752 | {Konfiguracja X11} | 752 | {Konfiguracja X11} | |
753 | 753 | |||
754 | message set_X11_fonts | 754 | message set_X11_fonts | |
755 | {Czcionki X11} | 755 | {Czcionki X11} | |
756 | 756 | |||
757 | message set_X11_servers | 757 | message set_X11_servers | |
758 | {Serwery X11} | 758 | {Serwery X11} | |
759 | 759 | |||
760 | message set_X11_prog | 760 | message set_X11_prog | |
761 | {Programowanie X11} | 761 | {Programowanie X11} | |
762 | 762 | |||
763 | message set_source | 763 | message set_source | |
764 | {Source and debug sets} | 764 | {Source and debug sets} | |
765 | 765 | |||
766 | message set_syssrc | 766 | message set_syssrc | |
767 | {Kernel sources} | 767 | {Kernel sources} | |
768 | 768 | |||
769 | message set_src | 769 | message set_src | |
770 | {Base sources} | 770 | {Base sources} | |
771 | 771 | |||
772 | message set_sharesrc | 772 | message set_sharesrc | |
773 | {Share sources} | 773 | {Share sources} | |
774 | 774 | |||
775 | message set_gnusrc | 775 | message set_gnusrc | |
776 | {GNU sources} | 776 | {GNU sources} | |
777 | 777 | |||
778 | message set_xsrc | 778 | message set_xsrc | |
779 | {X11 sources} | 779 | {X11 sources} | |
780 | 780 | |||
781 | message set_debug | 781 | message set_debug | |
782 | {Debug symbols} | 782 | {Debug symbols} | |
783 | 783 | |||
784 | message set_xdebug | 784 | message set_xdebug | |
785 | {X11 debug symbols} | 785 | {X11 debug symbols} | |
786 | 786 | |||
787 | message cur_distsets_row | 787 | message cur_distsets_row | |
788 | {%-30s %3s} | 788 | {%-30s %3s} | |
789 | 789 | |||
790 | message select_all | 790 | message select_all | |
791 | {Wybierz wszystkie powyzsze pakiety} | 791 | {Wybierz wszystkie powyzsze pakiety} | |
792 | 792 | |||
793 | message select_none | 793 | message select_none | |
794 | {Odznasz wszystkie powyzsze pakiety} | 794 | {Odznasz wszystkie powyzsze pakiety} | |
795 | 795 | |||
796 | message install_selected_sets | 796 | message install_selected_sets | |
797 | {Zainstaluj wybrane pakiety} | 797 | {Zainstaluj wybrane pakiety} | |
798 | 798 | |||
799 | message tarerror | 799 | message 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 | |
801 | pewne pliki nie zostaly prawidlowo rozpakowane i twoj system | 801 | pewne pliki nie zostaly prawidlowo rozpakowane i twoj system | |
802 | nie bedzie kompletny. | 802 | nie bedzie kompletny. | |
803 | 803 | |||
804 | Kontynuowac rozpakowywanie pakietow?} | 804 | Kontynuowac rozpakowywanie pakietow?} | |
805 | 805 | |||
806 | message must_be_one_root | 806 | message must_be_one_root | |
807 | {Musi byc tylko jedna partycja do zamontowania pod '/'.} | 807 | {Musi byc tylko jedna partycja do zamontowania pod '/'.} | |
808 | 808 | |||
809 | message partitions_overlap | 809 | message partitions_overlap | |
810 | {partycje %c i %c pokrycia.} | 810 | {partycje %c i %c pokrycia.} | |
811 | 811 | |||
812 | message No_Bootcode | 812 | message No_Bootcode | |
813 | {Brak kodu startowego dla glownej partycji} | 813 | {Brak kodu startowego dla glownej partycji} | |
814 | 814 | |||
815 | message cannot_ufs2_root | 815 | message 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 | |
817 | tej platformy.} | 817 | tej platformy.} | |
818 | 818 | |||
819 | message edit_partitions_again | 819 | message edit_partitions_again | |
820 | { | 820 | { | |
821 | 821 | |||
822 | Mozesz albo wyedytowac tablice partycji recznie, albo poddac sie | 822 | Mozesz albo wyedytowac tablice partycji recznie, albo poddac sie | |
823 | i powrocic do glownego menu. | 823 | i powrocic do glownego menu. | |
824 | 824 | |||
825 | Edytowac tablice partycji ponownie ?} | 825 | Edytowac tablice partycji ponownie ?} | |
826 | 826 | |||
827 | message config_open_error | 827 | message config_open_error | |
828 | {Nie moglem otworzyc pliku konfiguracyjnego %s\n} | 828 | {Nie moglem otworzyc pliku konfiguracyjnego %s\n} | |
829 | 829 | |||
830 | message choose_timezone | 830 | message choose_timezone | |
831 | {Wybierz strefe czasowa, ktora najlepiej ci odpowiada z ponizszej listy. | 831 | {Wybierz strefe czasowa, ktora najlepiej ci odpowiada z ponizszej listy. | |
832 | Nacisnij ENTER aby wybrac. | 832 | Nacisnij ENTER aby wybrac. | |
833 | Nacisnij 'x' a potem ENTER aby wyjsc. | 833 | Nacisnij '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 | |||
840 | message tz_back | 840 | message tz_back | |
841 | {Powroc do glownej listy stref} | 841 | {Powroc do glownej listy stref} | |
842 | 842 | |||
843 | message swapactive | 843 | message swapactive | |
844 | {Dysk, ktory wybrales posiada partycje wymiany, ktora moze byc aktualnie | 844 | {Dysk, ktory wybrales posiada partycje wymiany, ktora moze byc aktualnie | |
845 | w uzyciu jesli twoj system ma malo pamieci. Poniewaz chcesz zmienic uklad | 845 | w uzyciu jesli twoj system ma malo pamieci. Poniewaz chcesz zmienic uklad | |
846 | partycji, partycja wymiany zostanie teraz wylaczona. Moze to spowodowac | 846 | partycji, partycja wymiany zostanie teraz wylaczona. Moze to spowodowac | |
847 | pojawienie sie bledow. Jesli zuwazysz takie bledy zrestartuj komputer, | 847 | pojawienie sie bledow. Jesli zuwazysz takie bledy zrestartuj komputer, | |
848 | a nastepnie sprobuj jeszcze raz.} | 848 | a nastepnie sprobuj jeszcze raz.} | |
849 | 849 | |||
850 | message swapdelfailed | 850 | message swapdelfailed | |
851 | {Sysinst nie mogl deaktywowac partycji wymiany na dysku, ktory wybrales | 851 | {Sysinst nie mogl deaktywowac partycji wymiany na dysku, ktory wybrales | |
852 | do instalacji. Zrestartuj komputer i sprobuj jeszcze raz.} | 852 | do instalacji. Zrestartuj komputer i sprobuj jeszcze raz.} | |
853 | 853 | |||
854 | message rootpw | 854 | message 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, | |
856 | i dlatego jest puste. Czy chcesz ustawic haslo dla root'a teraz?} | 856 | i dlatego jest puste. Czy chcesz ustawic haslo dla root'a teraz?} | |
857 | 857 | |||
858 | message rootsh | 858 | message rootsh | |
859 | {Mozesz teraz wybrac, ktorej powloki ma uzywac uzytkownik root. Domyslnie | 859 | {Mozesz teraz wybrac, ktorej powloki ma uzywac uzytkownik root. Domyslnie | |
860 | jest to /bin/sh, ale moze preferujesz inna.} | 860 | jest to /bin/sh, ale moze preferujesz inna.} | |
861 | 861 | |||
862 | message no_root_fs | 862 | message no_root_fs | |
863 | { | 863 | { | |
864 | Nie zdefiniowano glownego systemu plikow. Musisz zdefiniowac przynajmniej | 864 | Nie zdefiniowano glownego systemu plikow. Musisz zdefiniowac przynajmniej | |
865 | jeden mountpoint z "/". | 865 | jeden mountpoint z "/". | |
866 | 866 | |||
867 | Nacisnij <enter> aby kontynuowac. | 867 | Nacisnij <enter> aby kontynuowac. | |
868 | } | 868 | } | |
869 | 869 | |||
870 | message Pick_an_option {Wybierz opcje aby je wlaczyc lub wylaczyc.} | 870 | message Pick_an_option {Wybierz opcje aby je wlaczyc lub wylaczyc.} | |
871 | message Scripting {Skrypty} | 871 | message Scripting {Skrypty} | |
872 | message Logging {Logowanie} | 872 | message Logging {Logowanie} | |
873 | 873 | |||
874 | message Status { Status: } | 874 | message Status { Status: } | |
875 | message Command {Polecenie: } | 875 | message Command {Polecenie: } | |
876 | message Running {Uruchamianie} | 876 | message Running {Uruchamianie} | |
877 | message Finished {Zakonczone} | 877 | message Finished {Zakonczone} | |
878 | message Command_failed {Polecenie nie powiodlo sie} | 878 | message Command_failed {Polecenie nie powiodlo sie} | |
879 | message Command_ended_on_signal {Polecenie zakonczylo sie sygnalem} | 879 | message Command_ended_on_signal {Polecenie zakonczylo sie sygnalem} | |
880 | 880 | |||
881 | message NetBSD_VERSION_Install_System {System Instalacyjny NetBSD-@@VERSION@@} | 881 | message NetBSD_VERSION_Install_System {System Instalacyjny NetBSD-@@VERSION@@} | |
882 | message Exit_Install_System {Wyjdz z Systemu Instalacyjnego} | 882 | message Exit_Install_System {Wyjdz z Systemu Instalacyjnego} | |
883 | message Install_NetBSD_to_hard_disk {Zainstaluj NetBSD na twardym dysku} | 883 | message Install_NetBSD_to_hard_disk {Zainstaluj NetBSD na twardym dysku} | |
884 | message Upgrade_NetBSD_on_a_hard_disk {Zaktualizuj NetBSD na twardym dysku} | 884 | message Upgrade_NetBSD_on_a_hard_disk {Zaktualizuj NetBSD na twardym dysku} | |
885 | message Re_install_sets_or_install_additional_sets {Przeinstaluj albo zainstaluj dodatkowe pakiety} | 885 | message Re_install_sets_or_install_additional_sets {Przeinstaluj albo zainstaluj dodatkowe pakiety} | |
886 | message Reboot_the_computer {Zrestartuj komputer} | 886 | message Reboot_the_computer {Zrestartuj komputer} | |
887 | message Utility_menu {Menu Narzedziowe} | 887 | message Utility_menu {Menu Narzedziowe} | |
888 | message Config_menu {Menu konfiguracji} | 888 | message Config_menu {Menu konfiguracji} | |
889 | message exit_menu_generic {Nazad} | 889 | message exit_menu_generic {Nazad} | |
890 | message exit_utility_menu {Exit} | 890 | message exit_utility_menu {Exit} | |
891 | message NetBSD_VERSION_Utilities {Narzedzia NetBSD-@@VERSION@@} | 891 | message NetBSD_VERSION_Utilities {Narzedzia NetBSD-@@VERSION@@} | |
892 | message Run_bin_sh {Uruchom /bin/sh} | 892 | message Run_bin_sh {Uruchom /bin/sh} | |
893 | message Set_timezone {Ustaw strefe czasowa} | 893 | message Set_timezone {Ustaw strefe czasowa} | |
894 | message Configure_network {Skonfiguruj siec} | 894 | message Configure_network {Skonfiguruj siec} | |
895 | message Partition_a_disk {Skonfiguruj dysk} | 895 | message Partition_a_disk {Skonfiguruj dysk} | |
896 | message Logging_functions {Funkcje logowania} | 896 | message Logging_functions {Funkcje logowania} | |
897 | message Halt_the_system {Zatrzymaj system} | 897 | message Halt_the_system {Zatrzymaj system} | |
898 | message yes_or_no {tak lub nie?} | 898 | message yes_or_no {tak lub nie?} | |
899 | message Hit_enter_to_continue {Nacisnij enter aby kontynuowac} | 899 | message Hit_enter_to_continue {Nacisnij enter aby kontynuowac} | |
900 | message Choose_your_installation {Wybierz swoja instalacje} | 900 | message Choose_your_installation {Wybierz swoja instalacje} | |
901 | message Set_Sizes {Ustaw rozmiary partycji NetBSD} | 901 | message Set_Sizes {Ustaw rozmiary partycji NetBSD} | |
902 | message Use_Existing {Uzyj istniejacych romiarow partycji} | 902 | message Use_Existing {Uzyj istniejacych romiarow partycji} | |
903 | message Megabytes {Megabajty} | 903 | message Megabytes {Megabajty} | |
904 | message Cylinders {Cylindry} | 904 | message Cylinders {Cylindry} | |
905 | message Sectors {Sektory} | 905 | message Sectors {Sektory} | |
906 | message Select_medium {Wybierz medium} | 906 | message Select_medium {Wybierz medium} | |
907 | message ftp {FTP} | 907 | message ftp {FTP} | |
908 | message http {HTTP} | 908 | message http {HTTP} | |
909 | message nfs {NFS} | 909 | message nfs {NFS} | |
910 | .if HAVE_INSTALL_IMAGE | 910 | .if HAVE_INSTALL_IMAGE | |
911 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | 911 | message cdrom {CD-ROM / DVD / install image media} /* XXX translation */ | |
912 | .else | 912 | .else | |
913 | message cdrom {CD-ROM / DVD} | 913 | message cdrom {CD-ROM / DVD} | |
914 | .endif | 914 | .endif | |
915 | message floppy {Dyskietka} | 915 | message floppy {Dyskietka} | |
916 | message local_fs {Niezamontowany SP} | 916 | message local_fs {Niezamontowany SP} | |
917 | message local_dir {Lokalny katalog} | 917 | message local_dir {Lokalny katalog} | |
918 | message Select_your_distribution {Wybierz swoja dystrybucje} | 918 | message Select_your_distribution {Wybierz swoja dystrybucje} | |
919 | message Full_installation {Pelna instalacja} | 919 | message Full_installation {Pelna instalacja} | |
920 | message Full_installation_nox {Instalacja bez X11} | 920 | message Full_installation_nox {Instalacja bez X11} | |
921 | message Minimal_installation {Minimalna instalacja} | 921 | message Minimal_installation {Minimalna instalacja} | |
922 | message Custom_installation {Inna instalacja} | 922 | message Custom_installation {Inna instalacja} | |
923 | message hidden {** ukryte **} | 923 | message hidden {** ukryte **} | |
924 | message Host {Host} | 924 | message Host {Host} | |
925 | message Base_dir {Katalog} | 925 | message Base_dir {Katalog} | |
926 | message Set_dir_src {Katalog pakiet binary} /* fix XLAT */ | 926 | message Set_dir_src {Katalog pakiet binary} /* fix XLAT */ | |
927 | message Set_dir_bin {Katalog pakiet source} /* fix XLAT */ | 927 | message Set_dir_bin {Katalog pakiet source} /* fix XLAT */ | |
928 | message Xfer_dir {Transfer Katalog} /* fix XLAT */ | 928 | message Xfer_dir {Transfer Katalog} /* fix XLAT */ | |
929 | message User {Uzytkownik} | 929 | message User {Uzytkownik} | |
930 | message Password {Haslo} | 930 | message Password {Haslo} | |
931 | message Proxy {Proxy} | 931 | message Proxy {Proxy} | |
932 | message Get_Distribution {Sciagnij Dystrybucje} | 932 | message Get_Distribution {Sciagnij Dystrybucje} | |
933 | message Continue {Kontynuuj} | 933 | message Continue {Kontynuuj} | |
934 | message What_do_you_want_to_do {Co chcesz zrobic?} | 934 | message What_do_you_want_to_do {Co chcesz zrobic?} | |
935 | message Try_again {Sprobowac jeszcze raz} | 935 | message Try_again {Sprobowac jeszcze raz} | |
936 | message Set_finished {Pakiet kompletny} | 936 | message Set_finished {Pakiet kompletny} | |
937 | message Skip_set {Pomin pakiet} | 937 | message Skip_set {Pomin pakiet} | |
938 | message Skip_group {Pomin grupe pakietow} | 938 | message Skip_group {Pomin grupe pakietow} | |
939 | message Abandon {Przerwij instalacje} | 939 | message Abandon {Przerwij instalacje} | |
940 | message Abort_fetch {Przerwij pobieranie} | 940 | message Abort_fetch {Przerwij pobieranie} | |
941 | message Device {Urzadzenie} | 941 | message Device {Urzadzenie} | |
942 | message File_system {SystemPlikow} | 942 | message File_system {SystemPlikow} | |
943 | message Select_DNS_server { Wybierz serwer nazw} | 943 | message Select_DNS_server { Wybierz serwer nazw} | |
944 | message other {inny } | 944 | message other {inny } | |
945 | message Perform_autoconfiguration {Wykonac autkonfiguracje?} | 945 | message Perform_autoconfiguration {Wykonac autkonfiguracje?} | |
946 | message Root_shell {Powloka root'a} | 946 | message Root_shell {Powloka root'a} | |
947 | message Color_scheme {Kolorystyka} | 947 | message Color_scheme {Kolorystyka} | |
948 | message White_on_black {Bia³y na czarnym} | 948 | message White_on_black {Bia³y na czarnym} | |
949 | message Black_on_white {Czarno na bia³ym} | 949 | message Black_on_white {Czarno na bia³ym} | |
950 | message White_on_blue {Bia³y na niebieskim} | 950 | message White_on_blue {Bia³y na niebieskim} | |
951 | message Green_on_black {Zielony na czarnym} | 951 | message Green_on_black {Zielony na czarnym} | |
952 | message User_shell {Powloka user'a} | 952 | message User_shell {Powloka user'a} | |
953 | 953 | |||
954 | .if AOUT2ELF | 954 | .if AOUT2ELF | |
955 | message aoutfail | 955 | message aoutfail | |
956 | {Katalog do ktorego stare a.out wspoldzielone biblioteki powinny byc | 956 | {Katalog do ktorego stare a.out wspoldzielone biblioteki powinny byc | |
957 | przeniesione nie moze zostac utworzony. Sproboj jeszcze raz procedury | 957 | przeniesione nie moze zostac utworzony. Sproboj jeszcze raz procedury | |
958 | aktualizacji i upewnij sie, ze zamountowales wszystkie systemy plikow.} | 958 | aktualizacji i upewnij sie, ze zamountowales wszystkie systemy plikow.} | |
959 | 959 | |||
960 | message emulbackup | 960 | message 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 | |
962 | wskazujacym na niezamontowany system. Zostalo mu dodane rozszerzenie '.old'. | 962 | wskazujacym na niezamontowany system. Zostalo mu dodane rozszerzenie '.old'. | |
963 | Kiedy juz uruchomisz swoj zaktualizowany system, mozliwe ze bedziesz musial | 963 | Kiedy juz uruchomisz swoj zaktualizowany system, mozliwe ze bedziesz musial | |
964 | zajac sie polaczeniem nowo utworzonego /emul/aout ze starym. | 964 | zajac sie polaczeniem nowo utworzonego /emul/aout ze starym. | |
965 | } | 965 | } | |
966 | .endif | 966 | .endif | |
967 | 967 | |||
968 | message oldsendmail | 968 | message 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 | |
970 | postfix. Plik /etc/mailer.conf ciagle wskazuje usuniety program | 970 | postfix. Plik /etc/mailer.conf ciagle wskazuje usuniety program | |
971 | sendmail. Chcesz automatycznie uaktualnic /etc/mailer.conf dla | 971 | sendmail. Chcesz automatycznie uaktualnic /etc/mailer.conf dla | |
972 | postfix? Jesli wybierzesz "Nie", trzeba bedzie recznie zmienic | 972 | postfix? 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 | |||
975 | message license | 975 | message license | |
976 | {Aby uzywac interfejsu sieciowego %s, musisz zgodzic sie na licencje | 976 | {Aby uzywac interfejsu sieciowego %s, musisz zgodzic sie na licencje | |
977 | zawarta w pliku %s. | 977 | zawarta w pliku %s. | |
978 | Aby obejrzec ten plik, mozesz wpisac ^Z, przejrzec jego zawartosc, | 978 | Aby obejrzec ten plik, mozesz wpisac ^Z, przejrzec jego zawartosc, | |
979 | a nastepnie wpisac "fg".} | 979 | a nastepnie wpisac "fg".} | |
980 | 980 | |||
981 | message binpkg | 981 | message binpkg | |
982 | {Aby skonfigurowac binarny system pakietow, wybierz lokalizacje siecowa, z | 982 | {Aby skonfigurowac binarny system pakietow, wybierz lokalizacje siecowa, z | |
983 | ktorej nalezy pobrac pakiety. Gdy system wstanie, mozesz wykorzystac 'pkgin' do | 983 | ktorej nalezy pobrac pakiety. Gdy system wstanie, mozesz wykorzystac 'pkgin' do | |
984 | zainstalowania albo odinstalowania dodatkowych pakietow.} | 984 | zainstalowania albo odinstalowania dodatkowych pakietow.} | |
985 | 985 | |||
986 | message pkgpath | 986 | message pkgpath | |
987 | {Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, | 987 | {Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, | |
988 | ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy | 988 | ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy | |
989 | nazwa uzytkownika to "ftp". | 989 | nazwa uzytkownika to "ftp". | |
990 | 990 | |||
991 | } | 991 | } | |
992 | message rcconf_backup_failed {Stworzenie kopii zapasowej rc.conf nie powiodlo | 992 | message rcconf_backup_failed {Stworzenie kopii zapasowej rc.conf nie powiodlo | |
993 | sie. Kontynuowac?} | 993 | sie. Kontynuowac?} | |
994 | message rcconf_backup_succeeded {Kopia zapasowa rc.conf zostala zapisana do %s.} | 994 | message rcconf_backup_succeeded {Kopia zapasowa rc.conf zostala zapisana do %s.} | |
995 | message rcconf_restore_failed {Przywracania kopii zapasowej rc.conf nie powiodlo | 995 | message rcconf_restore_failed {Przywracania kopii zapasowej rc.conf nie powiodlo | |
996 | sie.} | 996 | sie.} | |
997 | message rcconf_delete_failed {Usuwanie starego wpisu %s nie powiodlo sie.} | 997 | message rcconf_delete_failed {Usuwanie starego wpisu %s nie powiodlo sie.} | |
998 | message Pkg_dir {Katalog z pakietami} | 998 | message Pkg_dir {Katalog z pakietami} | |
999 | message configure_prior {skonfiguruj przed instalacja} | 999 | message configure_prior {skonfiguruj przed instalacja} | |
1000 | message configure {skonfiguruj} | 1000 | message configure {skonfiguruj} | |
1001 | message change {zmien} | 1001 | message change {zmien} | |
1002 | message password_set {ustawiono haslo} | 1002 | message password_set {ustawiono haslo} | |
1003 | message YES {TAK} | 1003 | message YES {TAK} | |
1004 | message NO {NIE} | 1004 | message NO {NIE} | |
1005 | message DONE {ZAKONCZ} | 1005 | message DONE {ZAKONCZ} | |
1006 | message abandoned {Porzucony} | 1006 | message abandoned {Porzucony} | |
1007 | message empty {***PUSTE***} | 1007 | message empty {***PUSTE***} | |
1008 | message timezone {Strefa czasowa} | 1008 | message timezone {Strefa czasowa} | |
1009 | message change_rootpw {Zmien haslo root'a} | 1009 | message change_rootpw {Zmien haslo root'a} | |
1010 | message enable_binpkg {Wlacz instalacje pakietow binarnych} | 1010 | message enable_binpkg {Wlacz instalacje pakietow binarnych} | |
1011 | message enable_sshd {Wlacz sshd} | 1011 | message enable_sshd {Wlacz sshd} | |
1012 | message enable_ntpd {Wlacz ntpd} | 1012 | message enable_ntpd {Wlacz ntpd} | |
1013 | message run_ntpdate {uruchom ntpdate podczas startu systemu} | 1013 | message run_ntpdate {uruchom ntpdate podczas startu systemu} | |
1014 | message enable_mdnsd {Wlacz mdnsd} | 1014 | message enable_mdnsd {Wlacz mdnsd} | |
1015 | message enable_xdm {Enable xdm} | 1015 | message enable_xdm {Enable xdm} | |
1016 | message enable_cgd {Enable cgd} | 1016 | message enable_cgd {Enable cgd} | |
1017 | message enable_lvm {Enable lvm} | 1017 | message enable_lvm {Enable lvm} | |
1018 | message enable_raid {Enable raidframe} | 1018 | message enable_raid {Enable raidframe} | |
1019 | message add_a_user {Add a user} | 1019 | message add_a_user {Add a user} | |
1020 | message configmenu {Skonfiguruj dodatkowe elementy w razie potrzeby.} | 1020 | message configmenu {Skonfiguruj dodatkowe elementy w razie potrzeby.} | |
1021 | message doneconfig {Konfiguracja zakonczona} | 1021 | message doneconfig {Konfiguracja zakonczona} | |
1022 | message Install_pkgin {Zainstaluj pkgin i uaktualnij podsumowanie pakietow} | 1022 | message Install_pkgin {Zainstaluj pkgin i uaktualnij podsumowanie pakietow} | |
1023 | message binpkg_installed | 1023 | message binpkg_installed | |
1024 | {Skonfigurowales system tak aby wykorzystywal pkgin do instalacji pakietow | 1024 | {Skonfigurowales system tak aby wykorzystywal pkgin do instalacji pakietow | |
1025 | binarnych. Aby zainstalowac pakiet, wykonaj: | 1025 | binarnych. Aby zainstalowac pakiet, wykonaj: | |
1026 | 1026 | |||
1027 | pkgin install <packagename> | 1027 | pkgin install <packagename> | |
1028 | 1028 | |||
1029 | z powloki root'a. Jesli potrzebujesz wiecej informacji przeczytaj strone | 1029 | z powloki root'a. Jesli potrzebujesz wiecej informacji przeczytaj strone | |
1030 | podrecznika pkgin(1).} | 1030 | podrecznika pkgin(1).} | |
1031 | message Install_pkgsrc {Pobierz i rozpakuj pkgsrc} | 1031 | message Install_pkgsrc {Pobierz i rozpakuj pkgsrc} | |
1032 | message pkgsrc | 1032 | message pkgsrc | |
1033 | {Instalacja pkgsrc wymaga rozpakowania archiwum pobranego z sieci. | 1033 | {Instalacja pkgsrc wymaga rozpakowania archiwum pobranego z sieci. | |
1034 | Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, | 1034 | Ponizej wyszczegolniono protokol, hosta, katalog, nazwe uzytkownika oraz haslo, | |
1035 | ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy | 1035 | ktore beda wykorzystane do nawiazania polaczenia. Haslo nie jest wymagane gdy | |
1036 | nazwa uzytkownika to "ftp". | 1036 | nazwa uzytkownika to "ftp". | |
1037 | 1037 | |||
1038 | } | 1038 | } | |
1039 | message Pkgsrc_dir {katalog pkgsrc} | 1039 | message Pkgsrc_dir {katalog pkgsrc} | |
1040 | message get_pkgsrc {Pobierz i rozpakuj pkgsrc w celu tworzenia pakietow ze | 1040 | message get_pkgsrc {Pobierz i rozpakuj pkgsrc w celu tworzenia pakietow ze | |
1041 | zrodel} | 1041 | zrodel} | |
1042 | message retry_pkgsrc_network {Konfiguracja sieci nie powiodla sie. Sprobowac | 1042 | message retry_pkgsrc_network {Konfiguracja sieci nie powiodla sie. Sprobowac | |
1043 | ponownie?} | 1043 | ponownie?} | |
1044 | message quit_pkgsrc {Zakoncz bez zainstalowania pkgsrc} | 1044 | message quit_pkgsrc {Zakoncz bez zainstalowania pkgsrc} | |
1045 | message quit_pkgs_install {Zakoncz bez zainstalowania bin pkg} | 1045 | message quit_pkgs_install {Zakoncz bez zainstalowania bin pkg} | |
1046 | message pkgin_failed | 1046 | message pkgin_failed | |
1047 | {Instalacja pkgin nie powiodla sie, prawdopodobnie dlatego ze nie znaleziono | 1047 | {Instalacja pkgin nie powiodla sie, prawdopodobnie dlatego ze nie znaleziono | |
1048 | pakietow binarnych. | 1048 | pakietow binarnych. | |
1049 | Sprawdz sciezke pakietow i sprobuj ponownie.} | 1049 | Sprawdz sciezke pakietow i sprobuj ponownie.} | |
1050 | message failed {Nie powiodlo sie} | 1050 | message failed {Nie powiodlo sie} | |
1051 | 1051 | |||
1052 | message notsupported {Operacja nie jest obs³ugiwana!} | 1052 | message notsupported {Operacja nie jest obs³ugiwana!} | |
1053 | message askfsmountadv {Montowania lub "raid" lub "cgd" lub "lvm"?} | 1053 | message askfsmountadv {Montowania lub "raid" lub "cgd" lub "lvm"?} | |
1054 | message partman {Partycje rozszerzone} | 1054 | message partman {Partycje rozszerzone} | |
1055 | message editbsdpart {Edytuj partycje BSD} | 1055 | message editbsdpart {Edytuj partycje BSD} | |
1056 | message editmbr {Edytowaæ i zapisywaæ MBR} | 1056 | message editmbr {Edytowaæ i zapisywaæ MBR} | |
1057 | message switchgpt {Prze³±cz na GPT} | 1057 | message switchgpt {Prze³±cz na GPT} | |
1058 | message switchmbr {Prze³±cz na MBR} | 1058 | message switchmbr {Prze³±cz na MBR} | |
1059 | message renamedisk {Ustaw nazwê dysku} | 1059 | message renamedisk {Ustaw nazwê dysku} | |
1060 | message fmtasraid {Format jak RAID} | 1060 | message fmtasraid {Format jak RAID} | |
1061 | message fmtaslvm {Format jak LVM PV} | 1061 | message fmtaslvm {Format jak LVM PV} | |
1062 | message encrypt {Szyfrowanie} | 1062 | message encrypt {Szyfrowanie} | |
1063 | message setbootable {Bootable flaga} | 1063 | message setbootable {Bootable flaga} | |
1064 | message erase {Bezpieczne kasowanie} | 1064 | message erase {Bezpieczne kasowanie} | |
1065 | message undo {Cofanie zmian} | 1065 | message undo {Cofanie zmian} | |
1066 | message unconfig {Zdekonfigurowanie} | 1066 | message unconfig {Zdekonfigurowanie} | |
1067 | message edit {Edytuj} | 1067 | message edit {Edytuj} | |
1068 | message doumount {Si³a umount} | 1068 | message doumount {Si³a umount} | |
1069 | message fillzeros {Wype³nij zerami} | 1069 | message fillzeros {Wype³nij zerami} | |
1070 | message fillrandom {Wype³nij losowymi danymi} | 1070 | message fillrandom {Wype³nij losowymi danymi} | |
1071 | message fillcrypto {Wype³nij przez crypto danych} | 1071 | message fillcrypto {Wype³nij przez crypto danych} | |
1072 | message raid0 {0 - brak parzysto¶ci, tylko proste rozk³adanie.} | 1072 | message raid0 {0 - brak parzysto¶ci, tylko proste rozk³adanie.} | |
1073 | message raid1 {1 - Mirroring. Parytet jest lustro.} | 1073 | message raid1 {1 - Mirroring. Parytet jest lustro.} | |
1074 | message raid4 {4 - Malowanie z parytetu przechowywanych w ostatniej czê¶ci.} | 1074 | message raid4 {4 - Malowanie z parytetu przechowywanych w ostatniej czê¶ci.} | |
1075 | message raid5 {5 - Malowanie z parytetu w tych wszystkich elementów.} | 1075 | message raid5 {5 - Malowanie z parytetu w tych wszystkich elementów.} | |
1076 | 1076 | |||
1077 | message fremove {USUÑ} | 1077 | message fremove {USUÑ} | |
1078 | message remove {Usun±æ} | 1078 | message remove {Usun±æ} | |
1079 | message add {Dodaæ} | 1079 | message add {Dodaæ} | |
1080 | message auto {auto} | 1080 | message auto {auto} | |
1081 | 1081 | |||
1082 | message removepartswarn {To usun±æ wszystkie partycje na dysku. Czy chcesz kontynuowaæ?} | 1082 | message removepartswarn {To usun±æ wszystkie partycje na dysku. Czy chcesz kontynuowaæ?} | |
1083 | message saveprompt {Zapisz zmiany przed zakoñczeniem?} | 1083 | message saveprompt {Zapisz zmiany przed zakoñczeniem?} | |
1084 | message cantsave {Zmiany nie mog± byæ zbawieni.} | 1084 | message cantsave {Zmiany nie mog± byæ zbawieni.} | |
1085 | message noroot {No partycja zdefiniowana, nie mo¿e kontynuowaæ \n} | 1085 | message noroot {No partycja zdefiniowana, nie mo¿e kontynuowaæ \n} | |
1086 | message wannaunblock {Urz±dzenie jest zablokowane. Czy chcesz, aby zmusiæ go odblokowaæ i kontynuowaæ?} | 1086 | message wannaunblock {Urz±dzenie jest zablokowane. Czy chcesz, aby zmusiæ go odblokowaæ i kontynuowaæ?} | |
1087 | message wannatry {Czy chcesz spróbowaæ?} | 1087 | message wannatry {Czy chcesz spróbowaæ?} | |
1088 | message create_cgd {Utwórz wolumen kryptograficznych (CGD)} | 1088 | message create_cgd {Utwórz wolumen kryptograficznych (CGD)} | |
1089 | message create_cnd {Utwórz wirtualnego obraz dysku (VND)} | 1089 | message create_cnd {Utwórz wirtualnego obraz dysku (VND)} | |
1090 | message create_vg {Utwórz grupê woluminów (LVM VG)} | 1090 | message create_vg {Utwórz grupê woluminów (LVM VG)} | |
1091 | message create_lv { Utwórz wolumin logiczny} | 1091 | message create_lv { Utwórz wolumin logiczny} | |
1092 | message create_raid {Utwórz oprogramowania RAID} | 1092 | message create_raid {Utwórz oprogramowania RAID} | |
1093 | message updpmlist {Aktualizuj listê urz±dzeñ} | 1093 | message updpmlist {Aktualizuj listê urz±dzeñ} | |
1094 | message savepm {Zapisz zmiany} | 1094 | message savepm {Zapisz zmiany} | |
1095 | message pmblocked {ZABLOK.} | 1095 | message pmblocked {ZABLOK.} | |
1096 | message pmunchanged {BEZ ZMIAN} | 1096 | message pmunchanged {BEZ ZMIAN} | |
1097 | message pmsetboot {BOOT} | 1097 | message pmsetboot {BOOT} | |
1098 | message pmused {U¯YWANE} | 1098 | message pmused {U¯YWANE} | |
1099 | message pmmounted {(zamontowany)} | 1099 | message pmmounted {(zamontowany)} | |
1100 | message pmunused {(nieu¿ywany)} | 1100 | message pmunused {(nieu¿ywany)} | |
1101 | message pmgptdisk {Dysku z GPT} | 1101 | message pmgptdisk {Dysku z GPT} | |
1102 | 1102 | |||
1103 | message finishpm {Zakoñcz partycjonowanie} | 1103 | message finishpm {Zakoñcz partycjonowanie} | |
1104 | message limitcount {Limit liczby urz±dzeñ zosta³ osi±gniêty!} | 1104 | message limitcount {Limit liczby urz±dzeñ zosta³ osi±gniêty!} | |
1105 | message invaliddev {Nieprawid³owy urz±dzenie!} | 1105 | message invaliddev {Nieprawid³owy urz±dzenie!} | |
1106 | message avdisks {Dostêpne dysków:} | 1106 | message avdisks {Dostêpne dysków:} | |
1107 | message nofreedev {Nie mo¿na przydzieliæ wêze³!} | 1107 | message nofreedev {Nie mo¿na przydzieliæ wêze³!} | |
1108 | message partman_header | 1108 | message partman_header | |
1109 | {Partition Manager. Wszystkie dyski, partycje oraz itp. tam wy¶wietlane. | 1109 | {Partition Manager. Wszystkie dyski, partycje oraz itp. tam wy¶wietlane. | |
1110 | Pocz±tkowo sprawiaj± partycji MBR, a nastêpnie dokonaæ BSD etykietê. | 1110 | Pocz±tkowo sprawiaj± partycji MBR, a nastêpnie dokonaæ BSD etykietê. | |
1111 | Je¶li chcesz korzystaæ z RAID, LVM lub CGD, wykonaj nastêpuj±ce kroki: | 1111 | Je¶li chcesz korzystaæ z RAID, LVM lub CGD, wykonaj nastêpuj±ce kroki: | |
1112 | 1) Tworzenie partycji BSD z potrzebnego typu; | 1112 | 1) Tworzenie partycji BSD z potrzebnego typu; | |
1113 | 2) Utwórz RAID / LVM VG / CGD korzystania z tych partycji; 3) Zapisz go; | 1113 | 2) Utwórz RAID / LVM VG / CGD korzystania z tych partycji; 3) Zapisz go; | |
1114 | 4) Tworzenie partycji dla RAID / CGD lub Logical Volumes dla LVM.} | 1114 | 4) Tworzenie partycji dla RAID / CGD lub Logical Volumes dla LVM.} | |
1115 | 1115 | |||
1116 | message raid_menufmt { raid%d (level %1d) on %-34s %11uM} | 1116 | message raid_menufmt { raid%d (level %1d) on %-34s %11uM} | |
1117 | message raid_err_menufmt { EMPTY RAID!} | 1117 | message raid_err_menufmt { EMPTY RAID!} | |
1118 | message raid_disks_fmt {Dyski: %33s} | 1118 | message raid_disks_fmt {Dyski: %33s} | |
1119 | message raid_spares_fmt {Czê¶ci zamienne: %23s} | 1119 | message raid_spares_fmt {Czê¶ci zamienne: %23s} | |
1120 | message raid_level_fmt {Poziom RAID: %23d} | 1120 | message raid_level_fmt {Poziom RAID: %23d} | |
1121 | message raid_numrow_fmt {numRow: %23d} | 1121 | message raid_numrow_fmt {numRow: %23d} | |
1122 | message raid_numcol_fmt {numCol: %23d} | 1122 | message raid_numcol_fmt {numCol: %23d} | |
1123 | message raid_numspare_fmt {numSpare: %23d} | 1123 | message raid_numspare_fmt {numSpare: %23d} | |
1124 | message raid_sectpersu_fmt {sectPerSU: %22d} | 1124 | message raid_sectpersu_fmt {sectPerSU: %22d} | |
1125 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | 1125 | message raid_superpar_fmt {SUsPerParityUnit: %22d} | |
1126 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | 1126 | message raid_superrec_fmt {SUsPerReconUnit: %22d} | |
1127 | message raid_nomultidim {Tablice wielowymiarowe nie s± obs³ugiwane!} | 1127 | message raid_nomultidim {Tablice wielowymiarowe nie s± obs³ugiwane!} | |
1128 | message raid_numrow_ask {numRow?} | 1128 | message raid_numrow_ask {numRow?} | |
1129 | message raid_numcol_ask {numCol?} | 1129 | message raid_numcol_ask {numCol?} | |
1130 | message raid_numspare_ask {numSpare?} | 1130 | message raid_numspare_ask {numSpare?} | |
1131 | message raid_sectpersu_ask {sectPerSU?} | 1131 | message raid_sectpersu_ask {sectPerSU?} | |
1132 | message raid_superpar_ask {SUsPerParityUnit?} | 1132 | message raid_superpar_ask {SUsPerParityUnit?} | |
1133 | message raid_superrec_ask {SUsPerReconUnit?} | 1133 | message raid_superrec_ask {SUsPerReconUnit?} | |
1134 | message raid_disks {Dyski w RAID:} | 1134 | message raid_disks {Dyski w RAID:} | |
1135 | message vnd_err_menufmt { ¦CIE¯KA NIE ZDEFINIOWANE!} | 1135 | message vnd_err_menufmt { ¦CIE¯KA NIE ZDEFINIOWANE!} | |
1136 | message vnd_assgn_menufmt { vnd%1d na %-51s ASSIGN} | 1136 | message vnd_assgn_menufmt { vnd%1d na %-51s ASSIGN} | |
1137 | message vnd_menufmt { vnd%1d na %-45s %11uM} | 1137 | message vnd_menufmt { vnd%1d na %-45s %11uM} | |
1138 | message vnd_path_fmt {¦cie¿ka: %31s} | 1138 | message vnd_path_fmt {¦cie¿ka: %31s} | |
1139 | message vnd_assgn_fmt {Create new image: %11s} | 1139 | message vnd_assgn_fmt {Create new image: %11s} | |
1140 | message vnd_size_fmt {Rozmiar: %30sM} | 1140 | message vnd_size_fmt {Rozmiar: %30sM} | |
1141 | message vnd_ro_fmt {Tylko do odczytu: %20s} | 1141 | message vnd_ro_fmt {Tylko do odczytu: %20s} | |
1142 | message vnd_geom_fmt {Ustaw geometriê rêcznie: %15s} | 1142 | message vnd_geom_fmt {Ustaw geometriê rêcznie: %15s} | |
1143 | message vnd_bps_fmt {Bajtów na sektorów: %20s} | 1143 | message vnd_bps_fmt {Bajtów na sektorów: %20s} | |
1144 | message vnd_spt_fmt {Sektory na ¶cie¿ki: %20s} | 1144 | message vnd_spt_fmt {Sektory na ¶cie¿ki: %20s} | |
1145 | message vnd_tpc_fmt {Utwory na cylinder: %20s} | 1145 | message vnd_tpc_fmt {Utwory na cylinder: %20s} | |
1146 | message vnd_cyl_fmt {Si³owniki: %20s} | 1146 | message vnd_cyl_fmt {Si³owniki: %20s} | |
1147 | message vnd_path_ask {File Path?} | 1147 | message vnd_path_ask {File Path?} | |
1148 | message vnd_size_ask {Rozmiar (MB)?} | 1148 | message vnd_size_ask {Rozmiar (MB)?} | |
1149 | message vnd_bps_ask {Bajtów na sektor?} | 1149 | message vnd_bps_ask {Bajtów na sektor?} | |
1150 | message vnd_spt_ask {Sektory na ¶cie¿kê?} | 1150 | message vnd_spt_ask {Sektory na ¶cie¿kê?} | |
1151 | message vnd_tpc_ask {Utwory na cylinder?} | 1151 | message vnd_tpc_ask {Utwory na cylinder?} | |
1152 | message vnd_cyl_ask {Cylindry} | 1152 | message vnd_cyl_ask {Cylindry} | |
1153 | message cgd_err_menufmt { DISK NIE ZDEFINIOWANE!} | 1153 | message cgd_err_menufmt { DISK NIE ZDEFINIOWANE!} | |
1154 | message cgd_menufmt { cgd%1d %-48s %11uM} | 1154 | message cgd_menufmt { cgd%1d %-48s %11uM} | |
1155 | message cgd_dev_fmt {Urz±dzenie podstawy: %19s} | 1155 | message cgd_dev_fmt {Urz±dzenie podstawy: %19s} | |
1156 | message cgd_enc_fmt {Encryption: %19s} | 1156 | message cgd_enc_fmt {Encryption: %19s} | |
1157 | message cgd_key_fmt {Rozmiar klucza: %19d} | 1157 | message cgd_key_fmt {Rozmiar klucza: %19d} | |
1158 | message cgd_iv_fmt {Algorytm IV: %27s} | 1158 | message cgd_iv_fmt {Algorytm IV: %27s} | |
1159 | message cgd_keygen_fmt {Generowanie kluczy: %20s} | 1159 | message cgd_keygen_fmt {Generowanie kluczy: %20s} | |
1160 | message cgd_verif_fmt {Metoda weryfikacji: %20s} | 1160 | message cgd_verif_fmt {Metoda weryfikacji: %20s} | |
1161 | message lvm_disks {Dyski w VG:} | 1161 | message lvm_disks {Dyski w VG:} | |
1162 | message lvm_menufmt { %-44s %20sM} | 1162 | message lvm_menufmt { %-44s %20sM} | |
1163 | message lvm_err_menufmt { EMPTY VG!} | 1163 | message lvm_err_menufmt { EMPTY VG!} | |
1164 | message lvm_disks_fmt {PV's: %34s} | 1164 | message lvm_disks_fmt {PV's: %34s} | |
1165 | message lvm_name_fmt {Nazwa: %33s} | 1165 | message lvm_name_fmt {Nazwa: %33s} | |
1166 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | 1166 | message lvm_maxlv_fmt {MaxLogicalVolumes: %20s} | |
1167 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | 1167 | message lvm_maxpv_fmt {MaxPhysicalVolumes: %20s} | |
1168 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | 1168 | message lvm_extsiz_fmt {PhysicalExtentSize: %20s} | |
1169 | message lvm_name_ask {Nazwa?} | 1169 | message lvm_name_ask {Nazwa?} | |
1170 | message lvm_maxlv_ask {MaxLogicalVolumes?} | 1170 | message lvm_maxlv_ask {MaxLogicalVolumes?} | |
1171 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | 1171 | message lvm_maxpv_ask {MaxPhysicalVolumes?} | |
1172 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | 1172 | message lvm_extsiz_ask {PhysicalExtentSize (MB)?} | |
1173 | message lvmlv_menufmt { Wolumin logiczny%-34s %11uM} | 1173 | message lvmlv_menufmt { Wolumin logiczny%-34s %11uM} | |
1174 | message lvmlv_name_fmt {Nazwa: %33s} | 1174 | message lvmlv_name_fmt {Nazwa: %33s} | |
1175 | message lvmlv_size_fmt {Rozmiar: %30dM} | 1175 | message lvmlv_size_fmt {Rozmiar: %30dM} | |
1176 | message lvmlv_ro_fmt {Read-only: %23s} | 1176 | message lvmlv_ro_fmt {Read-only: %23s} | |
1177 | message lvmlv_cont_fmt {S±siaduj±cy: %23s} | 1177 | message lvmlv_cont_fmt {S±siaduj±cy: %23s} | |
1178 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | 1178 | message lvmlv_extnum_fmt {LogicalExtentsNumber: %18s} | |
1179 | message lvmlv_minor_fmt {Mniejsza liczba: %23s} | 1179 | message lvmlv_minor_fmt {Mniejsza liczba: %23s} | |
1180 | message lvmlv_mirrors_fmt {Mirrors: %27d} | 1180 | message lvmlv_mirrors_fmt {Mirrors: %27d} | |
1181 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | 1181 | message lvmlv_regsiz_fmt {MirrorLogRegionSize: %18s} | |
1182 | message lvmlv_pers_fmt {Trwa³e drobne numer: %18s} | 1182 | message lvmlv_pers_fmt {Trwa³e drobne numer: %18s} | |
1183 | message lvmlv_readahsect_fmt {ReadAheadSectors ceny: %17s} | 1183 | message lvmlv_readahsect_fmt {ReadAheadSectors ceny: %17s} | |
1184 | message lvmlv_stripes_fmt {Stripes: %27s} | 1184 | message lvmlv_stripes_fmt {Stripes: %27s} | |
1185 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | 1185 | message lvmlv_stripesiz_fmt {StripeSize: %27s} | |
1186 | message lvmlv_zero_fmt {Zerowanie pierwszej KB: %16s} | 1186 | message lvmlv_zero_fmt {Zerowanie pierwszej KB: %16s} | |
1187 | message lvmlv_name_ask {Nazwa?} | 1187 | message lvmlv_name_ask {Nazwa?} | |
1188 | message lvmlv_size_ask {Rozmiar (MB)?} | 1188 | message lvmlv_size_ask {Rozmiar (MB)?} | |
1189 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | 1189 | message lvmlv_extnum_ask {LogicalExtentsNumber?} | |
1190 | message lvmlv_minor_ask {Mniejsza liczba?} | 1190 | message lvmlv_minor_ask {Mniejsza liczba?} | |
1191 | message lvmlv_mirrors_ask {Mirrors?} | 1191 | message lvmlv_mirrors_ask {Mirrors?} | |
1192 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | 1192 | message lvmlv_regsiz_ask {MirrorLogRegionSize?} | |
1193 | message lvmlv_readahsect_ask {ReadAheadSectors?} | 1193 | message lvmlv_readahsect_ask {ReadAheadSectors?} | |
1194 | message lvmlv_stripes_ask {Stripes?} | 1194 | message lvmlv_stripes_ask {Stripes?} | |
1195 | 1195 | |||
1196 | message addusername {8 character username to add} | 1196 | message addusername {8 character username to add} | |
1197 | message addusertowheel {Do you wish to add this user to group wheel?} | 1197 | message addusertowheel {Do you wish to add this user to group wheel?} | |
1198 | message Delete_partition | 1198 | message Delete_partition | |
1199 | {Usun partycje} | 1199 | {Usun partycje} | |
1200 | 1200 | |||
1201 | ||||
1202 | message No_filesystem_newfs | |||
1203 | {The selected partition does not seem to have a valid file system. | |||
1204 | Do you want to newfs (format) it?} | |||
1205 | ||||
1206 | message Auto_add_swap_part | |||
1207 | {A swap partition (named %s) seems to exist on %s. | |||
1208 | Do you want to use that?} | |||
1209 | ||||
1210 |
--- 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 | |||
61 | static struct biosdisk_info *biosdisk = NULL; | 61 | static struct biosdisk_info *biosdisk = NULL; | |
62 | 62 | |||
63 | /* prototypes */ | 63 | /* prototypes */ | |
64 | 64 | |||
65 | static int get_bios_info(char *); | 65 | static int get_bios_info(char *); | |
66 | static int mbr_root_above_chs(void); | 66 | static int mbr_root_above_chs(void); | |
67 | static void md_upgrade_mbrtype(void); | 67 | static void md_upgrade_mbrtype(void); | |
68 | static int md_read_bootcode(const char *, struct mbr_sector *); | 68 | static int md_read_bootcode(const char *, struct mbr_sector *); | |
69 | static unsigned int get_bootmodel(void); | 69 | static unsigned int get_bootmodel(void); | |
70 | 70 | |||
71 | void | 71 | void | |
72 | md_init(void) | 72 | md_init(void) | |
73 | { | 73 | { | |
74 | } | 74 | } | |
75 | 75 | |||
76 | void | 76 | void | |
77 | md_init_set_status(int flags) | 77 | md_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 | |||
85 | int | 85 | int | |
86 | md_get_info(void) | 86 | md_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 | |||
105 | edit: | 105 | edit: | |
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 | */ | |
233 | int | 233 | int | |
234 | md_make_bsd_partitions(void) | 234 | md_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 | */ | |
242 | int | 242 | int | |
243 | md_check_partitions(void) | 243 | md_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 | */ | |
261 | int | 261 | int | |
262 | md_pre_disklabel(void) | 262 | md_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 | */ | |
281 | int | 281 | int | |
282 | md_post_disklabel(void) | 282 | md_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 | */ | |
292 | int | 292 | int | |
293 | md_post_newfs(void) | 293 | md_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 | |||
370 | int | 374 | int | |
371 | md_post_extract(void) | 375 | md_post_extract(void) | |
372 | { | 376 | { | |
373 | return 0; | 377 | return 0; | |
374 | } | 378 | } | |
375 | 379 | |||
376 | void | 380 | void | |
377 | md_cleanup_install(void) | 381 | md_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 | |||
401 | int | 405 | int | |
402 | md_pre_update(void) | 406 | md_pre_update(void) | |
403 | { | 407 | { | |
404 | return 1; | 408 | return 1; | |
405 | } | 409 | } | |
406 | 410 | |||
407 | /* Upgrade support */ | 411 | /* Upgrade support */ | |
408 | int | 412 | int | |
409 | md_update(void) | 413 | md_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 | |||
416 | int | 420 | int | |
417 | md_check_mbr(mbr_info_t *mbri) | 421 | md_check_mbr(mbr_info_t *mbri) | |
418 | { | 422 | { | |
419 | return 2; | 423 | return 2; | |
420 | } | 424 | } | |
421 | 425 | |||
422 | int | 426 | int | |
423 | md_mbr_use_wholedisk(mbr_info_t *mbri) | 427 | md_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 | |||
428 | static int | 432 | static int | |
429 | get_bios_info(char *dev) | 433 | get_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) { | |
459 | nogeom: | 463 | nogeom: | |
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 | |||
514 | static int | 518 | static int | |
515 | mbr_root_above_chs(void) | 519 | mbr_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 | |||
520 | static void | 524 | static void | |
521 | md_upgrade_mbrtype(void) | 525 | md_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 | */ | |
552 | static int | 556 | static int | |
553 | md_read_bootcode(const char *path, struct mbr_sector *mbrs) | 557 | md_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 | |||
596 | static unsigned int | 600 | static unsigned int | |
597 | get_bootmodel(void) | 601 | get_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 | |||
625 | int | 629 | int | |
626 | md_pre_mount() | 630 | md_pre_mount() | |
627 | { | 631 | { | |
628 | return 0; | 632 | return 0; | |
629 | } | 633 | } |