summaryrefslogtreecommitdiffstats
path: root/perl-install/bootloader.pm
blob: a5b7638d33131f1a20e8523022fa13331defb7fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
package bootloader; # $Id$

use diagnostics;
use strict;
use vars qw(%vga_modes);

#-######################################################################################
#- misc imports
#-######################################################################################
use common;
use partition_table qw(:types);
use log;
use any;
use fsedit;
use devices;
use loopback;
use detect_devices;
use partition_table_raw;
use run_program;
use modules;


%vga_modes = (
'ask' => "Ask at boot",
'normal' => "Normal",
'0x0f01' => "80x50",
'0x0f02' => "80x43",
'0x0f03' => "80x28",
'0x0f05' => "80x30",
'0x0f06' => "80x34",
'0x0f07' => "80x60",
'0x0122' => "100x30",
 785 => "640x480 in 16 bits (FrameBuffer only)",
 788 => "800x600 in 16 bits (FrameBuffer only)",
 791 => "1024x768 in 16 bits (FrameBuffer only)",
 794 => "1280x1024 in 16 bits (FrameBuffer only)",
);

#-#####################################################################################
#- Functions
#-#####################################################################################

sub get {
    my ($kernel, $bootloader) = @_;
    $_->{kernel_or_dev} && $_->{kernel_or_dev} eq $kernel and return $_ foreach @{$bootloader->{entries}};
    undef;
}
sub get_label {
    my ($label, $bootloader) = @_;
    $_->{label} && $_->{label} eq $label and return $_ foreach @{$bootloader->{entries}};
    undef;
}

sub mkinitrd($$$) {
    my ($prefix, $kernelVersion, $initrdImage) = @_;

    $::oem or $::testing || -e "$prefix/$initrdImage" and return;

    my $loop_boot = loopback::prepare_boot($prefix);

    modules::load('loop');
    run_program::rooted($prefix, "mkinitrd", "-v", "-f", $initrdImage, "--ifneeded", $kernelVersion) or unlink("$prefix/$initrdImage");

    loopback::save_boot($loop_boot);

    -e "$prefix/$initrdImage" or die "mkinitrd failed";
}

sub mkbootdisk($$$;$) {
    my ($prefix, $kernelVersion, $dev, $append) = @_;

    modules::load_multi(arch() =~ /sparc/ ? 'romfs' : (), 'loop');
    my @l = qw(mkbootdisk --noprompt); 
    push @l, "--appendargs", $append if $append;
    eval { modules::load('vfat') };
    run_program::rooted_or_die($prefix, @l, "--device", "/dev/$dev", $kernelVersion);
}

sub read($$) {
    my ($prefix, $file) = @_;
    my $global = 1;
    my ($e, $v, $f);
    my %b;
    foreach (cat_("$prefix$file")) {
	($_, $v) = /^\s*(.*?)\s*(?:=\s*(.*?))?\s*$/;

	if (/^(image|other)$/) {
	    if (arch() =~ /ppc/) {
		$v =~ s/hd:\d+,//g;
	    }   
	    push @{$b{entries}}, $e = { type => $_, kernel_or_dev => $v };
	    $global = 0;
	} elsif ($global) {
	    if ($_ eq 'disk' && $v =~ /(\S+)\s+bios\s*=\s*(\S+)/) {
		$b{bios}{$1} = $2;
	    } elsif ($_ eq 'bios') {
		$b{bios}{$b{disk}} = $v;
	    } elsif ($_ eq 'init-message') {
		$v =~ s/\\n//g; 
		$v =~ s/"//g;
		$b{'init-message'} = $v;
	    } else {
		$b{$_} = $v || 1;
	    }
	} else {
	    if ((/map-drive/ .. /to/) && /to/) {
		$e->{mapdrive}{$e->{'map-drive'}} = $v;
	    } else {
		if (arch() =~ /ppc/) {
		    $v =~ s/hd:\d+,//g;
		    $v =~ s/"//g;
		}
		$e->{$_} = $v || 1;
	    }
	}
    }
    if (arch() !~ /ppc/) {
	delete $b{timeout} unless $b{prompt};
	$_->{append} =~ s/^\s*"?(.*?)"?\s*$/$1/ foreach \%b, @{$b{entries}};
	$b{timeout} = $b{timeout} / 10 if $b{timeout};
	$b{message} = cat_("$prefix$b{message}") if $b{message};
    }
    \%b;
}

sub suggest_onmbr {
    my ($hds) = @_;
    
    my $type = partition_table_raw::typeOfMBR($hds->[0]{device});
    !$type || member($type, qw(dos dummy lilo grub empty)), !$type;
}

sub compare_entries ($$) {
    my ($a, $b) = @_;
    my %entries;

    @entries{keys %$a, keys %$b} = ();
    $a->{$_} eq $b->{$_} and delete $entries{$_} foreach keys %entries;
    scalar keys %entries;
}

sub add_entry($$) {
    my ($entries, $v) = @_;
    my (%usedold, $freeold);

    do { $usedold{$1 || 0} = 1 if $_->{label} =~ /^old([^_]*)_/ } foreach @$entries;
    foreach (0..scalar keys %usedold) { exists $usedold{$_} or $freeold = $_ || '', last }

    foreach (@$entries) {
	if ($_->{label} eq $v->{label}) {
	    compare_entries($_, $v) or return; #- avoid inserting it twice as another entry already exists !
	    $_->{label} = "old${freeold}_$_->{label}";
	}
    }
    push @$entries, $v;
}

sub add_kernel {
    my ($prefix, $lilo, $version, $ext, $root, $v) = @_;

    #- new versions of yaboot don't handle symlinks
    my $ppcext = $ext;
    if (arch() =~ /ppc/) {
	$ext = "-$version";
    }

    log::l("adding vmlinuz$ext as vmlinuz-$version");
    -e "$prefix/boot/vmlinuz-$version" or log::l("unable to find kernel image $prefix/boot/vmlinuz-$version"), return;
    my $image = "/boot/vmlinuz" . ($ext ne "-$version" &&
				   symlinkf("vmlinuz-$version", "$prefix/boot/vmlinuz$ext") ? $ext : "-$version");
    my $initrd = eval { 
	mkinitrd($prefix, $version, "/boot/initrd-$version.img");
	"/boot/initrd" . ($ext ne "-$version" &&
			  symlinkf("initrd-$version.img", "$prefix/boot/initrd$ext.img") ? $ext : "-$version") . ".img";
    };
    my $label = $ext =~ /-(default)/ ? $1 : "linux$ext";

    #- more yaboot concessions - PPC
    if (arch() =~ /ppc/) {
	$label = $ppcext =~ /-(default)/ ? $1 : "linux$ppcext";
    }

    add2hash($v,
	     {
	      type => 'image',
	      root => "/dev/$root",
	      label => $label,
	      kernel_or_dev => $image,
	      initrd => $initrd,
	      append => $lilo->{perImageAppend},
	     });
    add_entry($lilo->{entries}, $v);
    $v;
}

sub unpack_append {
    my ($s) = @_;
    my @l = split(' ', $s);
    [ grep { !/=/ } @l ], [ map { if_(/(.*?)=(.*)/, [$1, $2]) } @l ];
}
sub pack_append {
    my ($simple, $dict) = @_;
    join(' ', @$simple, map { "$_->[0]=$_->[1]" } @$dict);
}

sub append__mem_is_memsize { $_[0] =~ /^\d+[kM]?$/i }

sub get_append {
    my ($b, $key) = @_;
    my (undef, $dict) = unpack_append($b->{perImageAppend});
    my @l = map { $_->[1] } grep { $_->[0] eq $key } @$dict;

    #- suppose we want the memsize
    @l = grep { append__mem_is_memsize($_) } @l if $key eq 'mem';

    log::l("more than one $key in $b->{perImageAppend}") if @l > 1;
    $l[0];
}
sub add_append {
    my ($b, $key, $val) = @_;

    foreach (\$b->{perImageAppend}, map { \$_->{append} } grep { $_->{type} eq 'image' } @{$b->{entries}}) {
	my ($simple, $dict) = unpack_append($$_);
	@$dict = grep { $_->[0] ne $key || $key eq 'mem' && append__mem_is_memsize($_->[1]) != append__mem_is_memsize($val) } @$dict;
	push @$dict, [ $key, $val ] if $val;
	$$_ = pack_append($simple, $dict);
	log::l("add_append: $$_");
    }
}
sub may_append {
    my ($b, $key, $val) = @_;
    add_append($b, $key, $val) if !get_append($b, $key);
}

sub configure_entry($$) {
    my ($prefix, $entry) = @_;
    if ($entry->{type} eq 'image') {
	my $specific_version;
	$entry->{kernel_or_dev} =~ /vmlinu.-(.*)/ and $specific_version = $1;
	readlink("$prefix/$entry->{kernel_or_dev}") =~ /vmlinu.-(.*)/ and $specific_version = $1;

	if ($specific_version) {
	    $entry->{initrd} or $entry->{initrd} = "/boot/initrd-$specific_version.img";
	    if (! -e "$prefix/$entry->{initrd}" || $::oem) {
		eval { mkinitrd($prefix, $specific_version, "$entry->{initrd}") };
		undef $entry->{initrd} if $@;
	    }
	}
    }
    $entry;
}

sub dev2prompath { #- SPARC only
    my ($dev) = @_;
    my ($wd, $num) = $dev =~ /^(.*\D)(\d*)$/;
    require c;
    $dev = c::disk2PromPath($wd) and $dev = $dev =~ /^sd\(/ ? "$dev$num" : "$dev;$num";
    $dev;
}

sub get_kernels_and_labels {
    my ($prefix) = @_;
    my $dir = "$prefix/boot";
    my @l = grep { /^vmlinuz-/ } all($dir);
    my @kernels = grep { ! -l "$dir/$_" } @l;

    my @preferred = ('', 'secure', 'enterprise', 'smp');
    my %weights = map_index { $_ => $::i } @preferred;
    
    require pkgs;
    @kernels = 
      sort { pkgs::versionCompare($b->[1], $a->[1]) || $weights{$a->[2]} <=> $weights{$b->[2]} } 
      map {
	  if (my ($version, $ext) = /vmlinuz-((?:[\-.\d]*(?:mdk)?)*)(.*)/) {
	      [ "$version$ext", $version, $ext ];
	  } else {
	      log::l("non recognised kernel name $_");
	      ();
	  }
      } @kernels;

    my %majors;
    foreach (@kernels) {
	push @{$majors{$1}}, $_ if $_->[1] =~ /^(2\.\d+)/
    }
    while (my ($major, $l) = each %majors) {
	$l->[0][1] = $major if @$l == 1;
    }

    my %labels;
    foreach (@kernels) {
	my ($complete_version, $version, $ext) = @$_;
	my $label = '';
	if (exists $labels{$label}) {
	    $label = "-$ext";
	    if (!$ext || $labels{$label}) {
		$label = "-$version$ext";
	    }
	}
	$labels{$label} = $complete_version;
    }
    %labels;
}

sub suggest {
    my ($prefix, $lilo, $hds, $fstab, $vga_fb, $quiet) = @_;
    my $root_part = fsedit::get_root($fstab);
    my $root = isLoopback($root_part) ? "loop7" : $root_part->{device};
    my $boot = fsedit::get_root($fstab, 'boot')->{device};
    my $partition = first($boot =~ /\D*(\d*)/);
    #- PPC xfs module requires enlarged initrd
    my $xfsroot = isThisFs("xfs", $root_part);

    require c; c::initSilo() if arch() =~ /sparc/;

    my ($onmbr, $unsafe) = $lilo->{crushMbr} ? (1, 0) : suggest_onmbr($hds);
    add2hash_($lilo, arch() =~ /sparc/ ?
	{
	 entries => [],
	 timeout => 10,
	 use_partition => 0, #- we should almost always have a whole disk partition.
	 root          => "/dev/$root",
	 partition     => $partition || 1,
	 boot          => $root eq $boot && "/boot", #- this helps for getting default partition for silo.
	} : arch() =~ /ppc/ ?
	{
	 defaultos => "linux",
	 entries => [],
	 'init-message' => "Welcome to Mandrake Linux!",
	 delay => 30,	#- OpenFirmware delay
	 timeout => 50,
	 enableofboot => 1,
	 enablecdboot => 1,
	 useboot => $boot,
	 xfsroot => $xfsroot,
	} :
	{
	 bootUnsafe => $unsafe,
	 entries => [],
	 timeout => $onmbr && 10,
	 nowarn => 1,
	   if_(arch() !~ /ia64/,
	 lba32 => 1,
	 boot => "/dev/" . ($onmbr ? $hds->[0]{device} : fsedit::get_root($fstab, 'boot')->{device}),
	 map => "/boot/map",
         ),
	});

    if (!$lilo->{message} || $lilo->{message} eq "1") {
	$lilo->{message} = join('', cat_("$prefix/boot/message"));
	if (!$lilo->{message}) {
	    my $msg_en =
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
__("Welcome to %s the operating system chooser!

Choose an operating system in the list above or
wait %d seconds for default boot.

");
	    my $msg = translate($msg_en);
	    #- use the english version if more than 20% of 8bits chars
	    $msg = $msg_en if int(grep { $_ & 0x80 } unpack "c*", $msg) / length($msg) > 0.2;
	    $lilo->{message} = sprintf $msg, arch() =~ /sparc/ ? "SILO" : "LILO", $lilo->{timeout};
	}
    }

    add2hash_($lilo, { memsize => $1 }) if cat_("/proc/cmdline") =~ /\bmem=(\d+[KkMm]?)(?:\s.*)?$/;
    if (my ($s, $port, $speed) = cat_("/proc/cmdline") =~ /console=(ttyS(\d),(\d+)\S*)/) {
	log::l("serial console $s $port $speed");
	add_append($lilo, 'console' => $s);
	any::set_login_serial_console($prefix, $port, $speed);
    }

    my %labels = get_kernels_and_labels($prefix);
    $labels{''} or die "no kernel installed";

    while (my ($ext, $version) = each %labels) {
	my $entry = add_kernel($prefix, $lilo, $version, $ext, $root,
	       {
		if_($vga_fb && $ext eq '', vga => $vga_fb), #- using framebuffer
	       });
	$entry->{append} .= " quiet" if $vga_fb && $version !~ /smp|enterprise/ && $quiet;

	if ($vga_fb && $ext eq '') {
	    add_kernel($prefix, $lilo, $version, $ext, $root, { label => 'linux-nonfb' });
	}
    }
    my $failsafe = add_kernel($prefix, $lilo, $labels{''}, '', $root, { label => 'failsafe' });
    $failsafe->{append} =~ s/devfs=mount/devfs=nomount/;
    $failsafe->{append} .= " failsafe";

    if (arch() =~ /sparc/) {
	#- search for SunOS, it could be a really better approach to take into account
	#- partition type for mounting point.
	my $sunos = 0;
	foreach (@$hds) {
	    foreach (@{$_->{primary}{normal}}) {
		my $path = $_->{device} =~ m|^/| && $_->{device} !~ m|^/dev/| ? $_->{device} : dev2prompath($_->{device});
		add_entry($lilo->{entries},
			  {
			   type => 'other',
			   kernel_or_dev => $path,
			   label => "sunos"   . ($sunos++ ? $sunos : ''),
			  }) if $path && isSunOS($_) && type2name($_->{type}) =~ /root/i;
	    }
	}
    } elsif (arch() =~ /ppc/) {
	#- if we identified a MacOS partition earlier - add it
	if (defined $partition_table_mac::macos_part) {
	    add_entry($lilo->{entries},
		      {
		       label => "macos",
		       kernel_or_dev => $partition_table_mac::macos_part
		      });
	}
    } elsif (arch() !~ /ia64/) {
	#- search for dos (or windows) boot partition. Don't look in extended partitions!
	my %nbs;
	foreach (@$hds) {
	    foreach (@{$_->{primary}{normal}}) {
		my $label = isNT($_) ? 'NT' : isDos($_) ? 'dos' : 'windows';
		add_entry($lilo->{entries},
			  {
			   type => 'other',
			   kernel_or_dev => "/dev/$_->{device}",
			   label => $label . ($nbs{$label}++ ? $nbs{$label} : ''),
			     if_($_->{device} =~ /[1-4]$/, 
			   table => "/dev/$_->{rootDevice}"
				),
			   unsafe => 1
			  }) if isNT($_) || isFat($_) && isFat({ type => fsedit::typeOfPart($_->{device}) });
	    }
	}
    }
    foreach ('secure', 'enterprise', 'smp') {
	if (get_label("linux-$_", $lilo)) {
	    $lilo->{default} ||= "linux-$_";
	    last;
	}
    }
    $lilo->{default} ||= "linux";

    my %l = (
	     yaboot => to_bool(arch() =~ /ppc/),
	     silo => to_bool(arch() =~ /sparc/),
	     lilo => to_bool(arch() !~ /sparc|ppc/) && !isLoopback(fsedit::get_root($fstab)),
	     grub => to_bool(arch() !~ /sparc|ppc/ && !isRAID(fsedit::get_root($fstab))),
	     loadlin => to_bool(arch() !~ /sparc|ppc/) && -e "/initrd/loopfs/lnx4win",
	    );
    unless ($lilo->{methods}) {
	$lilo->{methods} ||= { map { $_ => 1 } grep { $l{$_} } keys %l };
	if ($lilo->{methods}{lilo} && -e "$prefix/boot/message-graphic") {
	    $lilo->{methods}{lilo} = "lilo-graphic";
	    exists $lilo->{methods}{grub} and $lilo->{methods}{grub} = undef;
	}
    }
}

sub suggest_floppy {
    my ($bootloader) = @_;

    my $floppy = detect_devices::floppy() or return;
    $floppy eq 'fd0' or log::l("suggest_floppy: not adding $floppy"), return;

    add_entry($bootloader->{entries},
      {
       type => 'other',
       kernel_or_dev => '/dev/fd0',
       label => 'floppy',
       unsafe => 1
      });
}

sub keytable($$) {
    my ($prefix, $f) = @_;
    local $_ = $f;
    if ($_ && !/\.klt$/) {
	$f = "/boot/$_.klt";
	run_program::rooted($prefix, "keytab-lilo.pl", ">", $f, $_) or undef $f;
    }
    $f && -r "$prefix/$f" && $f;
}

sub has_profiles { to_bool(get_label("office", $b)) }
sub set_profiles {
    my ($b, $want_profiles) = @_;

    my $office = get_label("office", $b);
    if ($want_profiles xor $office) {
	my $e = get_label("linux", $b);
	if ($want_profiles) {
	    push @{$b->{entries}}, { %$e, label => "office", append => "$e->{append} prof=Office" };
	    $e->{append} .= " prof=Home";
	} else {
	    # remove profiles
	    $e->{append} =~ s/\s*prof=\w+//;
	    @{$b->{entries}} = grep { $_ != $office } @{$b->{entries}};
	}
    }

}

sub get_of_dev($$) {
	my ($prefix, $unix_dev) = @_;
	#- don't care much for this - need to run ofpath rooted, and I need the result
	#- In test mode, just run on "/", otherwise you can't get to the /proc files		
	if ($::testing) {
		$prefix = "";
	}
	run_program::rooted_or_die($prefix, "/usr/local/sbin/ofpath $unix_dev", ">", "/tmp/ofpath");
	open(FILE, "$prefix/tmp/ofpath") || die "Can't open $prefix/tmp/ofpath";
	my $of_dev = "";
	local $_ = "";
	while (<FILE>){
		$of_dev = $_;
	}
	chop($of_dev);
	my @del_file = ($prefix . "/tmp/ofpath");
	unlink (@del_file);
	log::l("OF Device: $of_dev");
	$of_dev;
}

sub install_yaboot($$$) {
    my ($prefix, $lilo, $fstab, $hds) = @_;
    $lilo->{prompt} = $lilo->{timeout};

    if ($lilo->{message}) {
	local *F;
	open F, ">$prefix/boot/message" and print F $lilo->{message} or $lilo->{message} = 0;
    }
    {
	local *F;
        local $\ = "\n";
	my $f = "$prefix/etc/yaboot.conf";
	open F, ">$f" or die "cannot create yaboot config file: $f";
	log::l("writing yaboot config to $f");

	print F "#yaboot.conf - generated by DrakX";
	print F "init-message=\"\\n$lilo->{'init-message'}\\n\"" if $lilo->{'init-message'};

	if ($lilo->{boot}) {
	    print F "boot=$lilo->{boot}";
	    my $of_dev = get_of_dev($prefix, $lilo->{boot});
	    print F "ofboot=$of_dev";
	} else {
	    die "no bootstrap partition defined."
	}
	
	$lilo->{$_} and print F "$_=$lilo->{$_}" foreach qw(delay timeout);
	print F "install=/usr/local/lib/yaboot/yaboot";
	print F "magicboot=/usr/local/lib/yaboot/ofboot";
	$lilo->{$_} and print F $_ foreach qw(enablecdboot enableofboot);
	$lilo->{$_} and print F "$_=$lilo->{$_}" foreach qw(defaultos default);
	#- print F "nonvram";
	my $boot = "/dev/" . $lilo->{useboot} if $lilo->{useboot};
		
	foreach (@{$lilo->{entries}}) {

	    if ($_->{type} eq "image") {
		my $of_dev = '';
		if (($boot !~ /$_->{root}/) && $boot) {
		    $of_dev = get_of_dev($prefix, $boot);
		    print F "$_->{type}=$of_dev," . substr($_->{kernel_or_dev}, 5);
		} else {
		    $of_dev = get_of_dev($prefix, $_->{root});    			
		    print F "$_->{type}=$of_dev,$_->{kernel_or_dev}";
		}
		print F "\tlabel=", substr($_->{label}, 0, 15); #- lilo doesn't handle more than 15 char long labels
		print F "\troot=$_->{root}";
		if (($boot !~ /$_->{root}/) && $boot) {
		    print F "\tinitrd=$of_dev," . substr($_->{initrd}, 5) if $_->{initrd};
		} else {
		    print F "\tinitrd=$of_dev,$_->{initrd}" if $_->{initrd};
		}
		#- xfs module on PPC requires larger initrd - say 6MB?
		print F "\tinitrd-size=6144" if $lilo->{xfsroot};
		print F "\tappend=\" $_->{append}\"" if $_->{append};
		print F "\tread-write" if $_->{'read-write'};
		print F "\tread-only" if !$_->{'read-write'};
	    } else {
		my $of_dev = get_of_dev($prefix, $_->{kernel_or_dev});
		print F "$_->{label}=$of_dev";		
	    }
	}
    }
    log::l("Installing boot loader...");
    my $f = "$prefix/tmp/of_boot_dev";
    my $of_dev = get_of_dev($prefix, $lilo->{boot});
    output($f, "$of_dev\n");  
    $::testing and return;
    if (defined $install_steps_interactive::new_bootstrap) {
	run_program::run("hformat", "$lilo->{boot}") or die "hformat failed";
    }	
    run_program::rooted_or_die($prefix, "/sbin/ybin", "2>", "/tmp/.error");
    unlink "$prefix/tmp/.error";	
}

sub install_silo($$$) {
    my ($prefix, $silo, $fstab) = @_;
    my $boot = fsedit::get_root($fstab, 'boot')->{device};
    my ($wd, $num) = $boot =~ /^(.*\D)(\d*)$/;

    #- setup boot promvars for.
    require c;
    if ($boot =~ /^md/) {
	#- get all mbr devices according to /boot are listed,
	#- then join all zero based partition translated to prom with ';'.
	#- keep bootdev with the first of above.
	log::l("/boot is present on raid partition which is not currently supported for promvars");
    } else {
	if (!$silo->{use_partition}) {
	    foreach (@$fstab) {
		if (!$_->{start} && $_->{device} =~ /$wd/) {
		    $boot = $_->{device};
		    log::l("found a zero based partition in $wd as $boot");
		    last;
		}
	    }
	}
	$silo->{bootalias} = c::disk2PromPath($boot);
	$silo->{bootdev} = $silo->{bootalias};
        log::l("preparing promvars for device=$boot");
    }
    c::hasAliases() or log::l("clearing promvars alias as non supported"), $silo->{bootalias} = '';

    if ($silo->{message}) {
	local *F;
	open F, ">$prefix/boot/message" and print F $silo->{message} or $silo->{message} = 0;
    }
    {
	local *F;
        local $\ = "\n";
	my $f = "$prefix/boot/silo.conf"; #- always write the silo.conf file in /boot ...
	symlinkf "../boot/silo.conf", "$prefix/etc/silo.conf"; #- ... and make a symlink from /etc.
	open F, ">$f" or die "cannot create silo config file: $f";
	log::l("writing silo config to $f");

	$silo->{$_} and print F "$_=$silo->{$_}" foreach qw(partition root default append);
	$silo->{$_} and print F $_ foreach qw(restricted);
	print F "password=", $silo->{password} if $silo->{restricted} && $silo->{password}; #- also done by msec
	print F "timeout=", round(10 * $silo->{timeout}) if $silo->{timeout};
	print F "message=$silo->{boot}/message" if $silo->{message};

	foreach (@{$silo->{entries}}) {#my ($v, $e) = each %{$silo->{entries}}) {
	    my $type = "$_->{type}=$_->{kernel_or_dev}"; $type =~ s|/boot|$silo->{boot}|;
	    print F $type;
	    print F "\tlabel=$_->{label}";

	    if ($_->{type} eq "image") {
		my $initrd = $_->{initrd}; $initrd =~ s|/boot|$silo->{boot}|;
		print F "\tpartition=$_->{partition}" if $_->{partition};
		print F "\troot=$_->{root}" if $_->{root};
		print F "\tinitrd=$initrd" if $_->{initrd};
		print F "\tappend=\"$1\"" if $_->{append} =~ /^\s*"?(.*?)"?\s*$/;
		print F "\tread-write" if $_->{'read-write'};
		print F "\tread-only" if !$_->{'read-write'};
	    }
	}
    }
    log::l("Installing boot loader...");
    $::testing and return;
    run_program::rooted($prefix, "silo", "2>", "/tmp/.error", $silo->{use_partition} ? ("-t") : ()) or 
        run_program::rooted_or_die($prefix, "silo", "2>", "/tmp/.error", "-p", "2", $silo->{use_partition} ? ("-t") : ());
    unlink "$prefix/tmp/.error";

    #- try writing in the prom.
    log::l("setting promvars alias=$silo->{bootalias} bootdev=$silo->{bootdev}");
    require c;
    c::setPromVars($silo->{bootalias}, $silo->{bootdev});
}

sub make_label_lilo_compatible {
    my ($label) = @_; 
    $label = substr($label, 0, 15); #- lilo doesn't handle more than 15 char long labels
    $label =~ s/\s/_/g; #- lilo doesn't like spaces
    $label;
}

sub write_lilo_conf {
    my ($prefix, $lilo, $fstab, $hds) = @_;
    $lilo->{prompt} = $lilo->{timeout};

    delete $lilo->{linear} if $lilo->{lba32};

    my $file2fullname = sub {
	my ($file) = @_;
	if (arch() =~ /ia64/) {
	    (my $part, $file) = fsedit::file2part($prefix, $fstab, $file);
	    my %hds = map_index { $_ => "hd$::i" } map { $_->{device} } 
	      sort { isFat($b) <=> isFat($a) || $a->{device} cmp $b->{device} } fsedit::get_fstab(@$hds);
	    %hds->{$part->{device}} . ":" . $file;
	} else {
	    $file
	}
    };

    my %bios2dev = map_index { $::i => $_ } dev2bios($hds, $lilo->{first_hd_device} || $lilo->{boot});
    my %dev2bios = reverse %bios2dev;

    if (is_empty_hash_ref($lilo->{bios} ||= {})) {
	my $dev = $hds->[0]{device};
	if ($dev2bios{$dev}) {
	    log::l("Since we're booting on $bios2dev{0}, make it bios=0x80, whereas $dev is now " . (0x80 + $dev2bios{$dev}));
	    $lilo->{bios}{"/dev/$bios2dev{0}"} = '0x80';
	    $lilo->{bios}{"/dev/$dev"} = sprintf("0x%x", 0x80 + $dev2bios{$dev});
	}
	foreach (0 .. 3) {
	    my ($letter) = $bios2dev{$_} =~ /hd([^ac])/; #- at least hda and hdc are handled correctly :-/
	    next if $lilo->{bios}{"/dev/$bios2dev{$_}"} || !$letter;
	    next if 
	      $_ > 0	     #- always print if first disk is hdb, hdd, hde...
		&& $bios2dev{$_ - 1} eq "hd" . chr(ord($letter) - 1);
	    #- no need to help lilo with hdb (resp. hdd, hdf...)
	    log::l("Helping lilo: $bios2dev{$_} must be " . (0x80 + $_));
	    $lilo->{bios}{"/dev/$bios2dev{$_}"} = sprintf("0x%x", 0x80 + $_);
	}
    }

    {
	local *F;
        local $\ = "\n";
	my $f = arch() =~ /ia64/ ? "$prefix/boot/efi/elilo.conf" : "$prefix/etc/lilo.conf";

	open F, ">$f" or die "cannot create lilo config file: $f";
	log::l("writing lilo config to $f");

	chmod 0600, $f if $lilo->{password};

	#- normalize: RESTRICTED is only valid if PASSWORD is set
	delete $lilo->{restricted} if !$lilo->{password};

	local $lilo->{default} = make_label_lilo_compatible($lilo->{default});
	$lilo->{$_} and print F "$_=$lilo->{$_}" foreach qw(boot map install vga default keytable);
	$lilo->{$_} and print F $_ foreach qw(linear lba32 compact prompt nowarn restricted);
	print F "append=\"$lilo->{append}\"" if $lilo->{append};
 	print F "password=", $lilo->{password} if $lilo->{password}; #- also done by msec
	print F "timeout=", round(10 * $lilo->{timeout}) if $lilo->{timeout};
	print F "serial=", $1 if get_append($lilo, 'console') =~ /ttyS(.*)/;

	print F "message=/boot/message" if (arch() !~ /ia64/);
	print F "menu-scheme=wb:bw:wb:bw" if (arch() !~ /ia64/);

	print F "ignore-table" if grep { $_->{unsafe} && $_->{table} } @{$lilo->{entries}};

	while (my ($dev, $bios) = each %{$lilo->{bios}}) {
	    print F "disk=$dev bios=$bios";
	}

	foreach (@{$lilo->{entries}}) {
	    print F "$_->{type}=", $file2fullname->($_->{kernel_or_dev});
	    print F "\tlabel=", make_label_lilo_compatible($_->{label});

	    if ($_->{type} eq "image") {		
		print F "\troot=$_->{root}" if $_->{root};
		print F "\tinitrd=", $file2fullname->($_->{initrd}) if $_->{initrd};
		print F "\tappend=\"$_->{append}\"" if $_->{append};
		print F "\tvga=$_->{vga}" if $_->{vga};
		print F "\tread-write" if $_->{'read-write'};
		print F "\tread-only" if !$_->{'read-write'};
	    } else {
		print F "\ttable=$_->{table}" if $_->{table};
		print F "\tunsafe" if $_->{unsafe} && !$_->{table};
		
		if (my ($dev) = $_->{table} =~ m|/dev/(.*)|) {
		    if ($dev2bios{$dev}) {
			#- boot off the nth drive, so reverse the BIOS maps
			my $nb = sprintf("0x%x", 0x80 + $dev2bios{$dev});
			$_->{mapdrive} ||= { '0x80' => $nb, $nb => '0x80' }; 
		    }
		}
		while (my ($from, $to) = each %{$_->{mapdrive} || {}}) {
		    print F "\tmap-drive=$from";
		    print F "\t   to=$to";
		}
	    }
	}
    }
}

sub install_lilo {
    my ($prefix, $lilo, $fstab, $hds) = @_;

    $lilo->{install} = 'text' if $lilo->{methods}{lilo} eq 'lilo-text';
    output("$prefix/boot/message-text", $lilo->{message}) if $lilo->{message};
    symlinkf "message-" . ($lilo->{methods}{lilo} eq 'lilo-graphic' ? 'graphic' : 'text'), "$prefix/boot/message";

    write_lilo_conf($prefix, $lilo, $fstab, $hds);

    log::l("Installing boot loader...");
    $::testing and return;
    run_program::rooted_or_die($prefix, "lilo", "2>", "/tmp/.error") if (arch() !~ /ia64/);
    unlink "$prefix/tmp/.error";
}

sub dev2bios {
    my ($hds, $where) = @_;
    $where =~ s|/dev/||;
    my @dev = map { $_->{device} } @$hds;
    member($where, @dev) or ($where) = @dev; #- if not on mbr, 

    s/h(d[e-g])/x$1/ foreach $where, @dev; #- emulates ultra66 as xd_

    my $start = substr($where, 0, 2);

    my $translate = sub {
	$_ eq $where ? "aaa" : #- if exact match, value it first
	  /^$start(.*)/ ? "ad$1" : #- if same class (ide/scsi/ultra66), value it before other classes
	    $_;
    };
    @dev = map { $_->[0] }
           sort { $a->[1] cmp $b->[1] }
	   map { [ $_, &$translate ] } @dev;

    s/x(d.)/h$1/ foreach @dev; #- switch back;

    @dev;
}

sub dev2grub {
    my ($dev, $dev2bios) = @_;
    $dev =~ m|^(/dev/)?(...)(.*)$| or die "dev2grub (bad device $dev), caller is " . join(":", caller());
    my $grub = $dev2bios->{$2} or die "dev2grub ($2)";
    "($grub" . ($3 && "," . ($3 - 1)) . ")";
}

sub write_grub_config {
    my ($prefix, $lilo, $fstab, $hds) = @_;
    my %dev2bios = (
      (map_index { $_ => "fd$::i" } detect_devices::floppies_dev()),
      (map_index { $_ => "hd$::i" } dev2bios($hds, $lilo->{first_hd_device} || $lilo->{boot})),
    );

    {
	my %bios2dev = reverse %dev2bios;
	output "$prefix/boot/grub/device.map", 
	  join '', map { "($_) /dev/$bios2dev{$_}\n" } sort keys %bios2dev;
    }
    my $bootIsReiser = isThisFs("reiserfs", fsedit::get_root($fstab, 'boot'));
    my $file2grub = sub {
	my ($part, $file) = fsedit::file2part($prefix, $fstab, $_[0], 'keep_simple_symlinks');
	dev2grub($part->{device}, \%dev2bios) . $file;
    };
    {
	local *F;
        local $\ = "\n";
	my $f = "$prefix/boot/grub/menu.lst";
	open F, ">$f" or die "cannot create grub config file: $f";
	log::l("writing grub config to $f");

	$lilo->{$_} and print F "$_ $lilo->{$_}" foreach qw(timeout);

	print F "color black/cyan yellow/cyan";
	print F "i18n ", $file2grub->("/boot/grub/messages");
	print F "keytable ", $file2grub->($lilo->{keytable}) if $lilo->{keytable};
	print F "serial --unit=$1 --speed=$2\nterminal --timeout=" . ($lilo->{timeout} || 0) . " console serial" if get_append($lilo, 'console') =~ /ttyS(\d),(\d+)/;

	#- since we use notail in reiserfs, altconfigfile is broken :-(
	unless ($bootIsReiser) {
	    print F "altconfigfile ", $file2grub->(my $once = "/boot/grub/menu.once");
	    output "$prefix$once", " " x 100;
	}

	map_index {
	    print F "default $::i" if $_->{label} eq $lilo->{default};
	} @{$lilo->{entries}};

	foreach (@{$lilo->{entries}}) {
	    print F "\ntitle $_->{label}";

	    if ($_->{type} eq "image") {
		my $vga = $_->{vga} || $lilo->{vga};
		printf F "kernel %s root=%s %s%s%s\n",
		  $file2grub->($_->{kernel_or_dev}),
		  $_->{root} =~ /loop7/ ? "707" : $_->{root}, #- special to workaround bug in kernel (see #ifdef CONFIG_BLK_DEV_LOOP)
		  $_->{append},
		  $_->{'read-write'} && " rw",
		  $vga && $vga ne "normal" && " vga=$vga";
		print F "initrd ", $file2grub->($_->{initrd}) if $_->{initrd};
	    } else {
		print F "root ", dev2grub($_->{kernel_or_dev}, \%dev2bios);
		if ($_->{kernel_or_dev} !~ /fd/) {
		    #- boot off the second drive, so reverse the BIOS maps
		    $_->{mapdrive} ||= { '0x80' => '0x81', '0x81' => '0x80' } 
		      if $_->{table} && ($lilo->{first_hd_device} || $lilo->{boot}) !~ /$_->{table}/;
	    
		    map_each { print F "map ($::b) ($::a)" } %{$_->{mapdrive} || {}};

		    print F "makeactive";
		}
		print F "chainloader +1";
	    }
	}
    }
    my $hd = fsedit::get_root($fstab, 'boot')->{rootDevice};

    my $dev = dev2grub($lilo->{first_hd_device} || $lilo->{boot}, \%dev2bios);
    my ($s1, $s2, $m) = map { $file2grub->("/boot/grub/$_") } qw(stage1 stage2 menu.lst);
    my $f = "/boot/grub/install.sh";
    output "$prefix$f",
"grub --device-map=/boot/grub/device.map --batch <<EOF
install $s1 d $dev $s2 p $m
quit
EOF
";

     output "$prefix/boot/grub/messages", map { substr(translate($_) . "\n", 0, 78) } ( #- ensure the translated messages are not too big the hard way
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
#-PO: and keep them smaller than 79 chars long
__("Welcome to GRUB the operating system chooser!"),
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
#-PO: and keep them smaller than 79 chars long
__("Use the %c and %c keys for selecting which entry is highlighted."),
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
#-PO: and keep them smaller than 79 chars long
__("Press enter to boot the selected OS, \'e\' to edit the"),
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
#-PO: and keep them smaller than 79 chars long
__("commands before booting, or \'c\' for a command-line."),
#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
#-PO: and keep them smaller than 79 chars long
__("The highlighted entry will be booted automatically in %d seconds."),
);
   
    my $e = "$prefix/boot/.enough_space";
    output $e, 1; -s $e or die _("not enough room in /boot");
    unlink $e;
    $f;
}

sub install_grub {
    my ($prefix, $lilo, $fstab, $hds) = @_;

    my $f = write_grub_config($prefix, $lilo, $fstab, $hds);

    log::l("Installing boot loader...");
    $::testing and return;
    symlink "$prefix/boot", "/boot";
    run_program::run_or_die("sh", $f);
    unlink "$prefix/tmp/.error.grub", "/boot";
}

sub lnx4win_file { 
    my $lilo = shift;
    map { local $_ = $_; s,/,\\,g; "$lilo->{boot_drive}:\\lnx4win$_" } @_;
}

sub loadlin_cmd {
    my ($prefix, $lilo) = @_;
    my $e = get_label("linux", $lilo) || first(grep { $_->{type} eq "image" } @{$lilo->{entries}});

    cp_af("$prefix$e->{kernel_or_dev}", "$prefix/boot/vmlinuz") unless -e "$prefix/boot/vmlinuz";
    cp_af("$prefix$e->{initrd}", "$prefix/boot/initrd.img") unless -e "$prefix/boot/initrd.img";

    $e->{label}, sprintf"%s %s initrd=%s root=%s $e->{append}", 
      lnx4win_file($lilo, "/loadlin.exe", "/boot/vmlinuz", "/boot/initrd.img"),
	$e->{root} =~ /loop7/ ? "0707" : $e->{root}; #- special to workaround bug in kernel (see #ifdef CONFIG_BLK_DEV_LOOP)
}

sub install_loadlin {
    my ($prefix, $lilo, $fstab) = @_;

    my $boot;
    ($boot) = grep { $lilo->{boot} eq "/dev/$_->{device}" } @$fstab;
    ($boot) = grep { loopback::carryRootLoopback($_) } @$fstab unless $boot && $boot->{device_windobe};
    ($boot) = grep { isFat($_) } @$fstab unless $boot && $boot->{device_windobe};
    log::l("loadlin device is $boot->{device} (windobe $boot->{device_windobe})");
    $lilo->{boot_drive} = $boot->{device_windobe};

    my ($winpart) = grep { $_->{device_windobe} eq 'C' } @$fstab;
    log::l("winpart is $winpart->{device}");
    my $winhandle = any::inspect($winpart, $prefix, 'rw');
    my $windrive = $winhandle->{dir};
    log::l("windrive is $windrive");

    my ($label, $cmd) = loadlin_cmd($prefix, $lilo);

    #install_loadlin_config_sys($lilo, $windrive, $label, $cmd);
    #install_loadlin_desktop($lilo, $windrive);

    output "/initrd/loopfs/lnx4win/linux.bat", unix2dos(
'@echo off
echo Mandrake Linux
smartdrv /C
' . "$cmd\n");

}

sub install_loadlin_config_sys {
    my ($lilo, $windrive, $label, $cmd) = @_;

    my $config_sys = "$windrive/config.sys";
    local $_ = cat_($config_sys);
    output "$windrive/config.mdk", $_ if $_;
    
    my $timeout = $lilo->{timeout} || 1;

    $_ = "
[Menu]
menuitem=Windows
menudefault=Windows,$timeout

[Windows]
" . $_ if !/^\Q[Menu]/m;

    #- remove existing entry
    s/^menuitem=$label\s*//mi;    
    s/\n\[$label\].*?(\n\[|$)/$1/si;

    #- add entry
    s/(.*\nmenuitem=[^\n]*)/$1\nmenuitem=$label/s;

    $_ .= "
[$label]
shell=$cmd
";
    output $config_sys, unix2dos($_);
}

sub install_loadlin_desktop {
    my ($lilo, $windrive) = @_;
    my $windir = lc(cat_("$windrive/msdos.sys") =~ /^WinDir=.:\\(\S+)/m ? $1 : "windows");

#-PO: "Desktop" and "Start Menu" are the name of the directories found in c:\windows
#-PO: so you may need to put them in English or in a different language if MS-windows doesn't exist in your language
    foreach (__("Desktop"),
#-PO: "Desktop" and "Start Menu" are the name of the directories found in c:\windows 
	     __("Start Menu")) {
        my $d = "$windrive/$windir/" . translate($_);
        -d $d or $d = "$windrive/$windir/$_";
        -d $d or log::l("can't find windows $d directory"), next;
        output "$d/Linux4Win.url", unix2dos(sprintf 
q([InternetShortcut]
URL=file:\lnx4win\lnx4win.exe
WorkingDirectory=%s
IconFile=%s
IconIndex=0
), lnx4win_file($lilo, "/", "/lnx4win.ico"));
    }
}


sub install {
    my ($prefix, $lilo, $fstab, $hds) = @_;

    if (my ($p) = grep { $lilo->{boot} =~ /\Q$_->{device}/ } @$fstab) {
	die _("You can't install the bootloader on a %s partition\n", partition_table::type2fs($p))
	  if isThisFs('xfs', $p);
    }
    $lilo->{keytable} = keytable($prefix, $lilo->{keytable});

    if (exists $lilo->{methods}{grub}) {
	#- when lilo is selected, we don't try to install grub. 
	#- just create the config file in case it may be useful
	eval { write_grub_config($prefix, $lilo, $fstab, $hds) };
    }

    my %l = grep_each { $::b } %{$lilo->{methods}};
    my @rcs = map {
	c::is_secure_file('/tmp/.error') or die "can't ensure a safe /tmp/.error";
	my $f = $bootloader::{"install_$_"} or die "unknown bootloader method $_";
	eval { $f->(@_) };
	$@;
    } reverse sort keys %l; #- reverse sort for having grub installed after lilo if both are there.
    
    return if grep { !$_ } @rcs; #- at least one worked?
    die first(map { $_ } @rcs);
}

#-######################################################################################
#- Wonderful perl :(
#-######################################################################################
1; #
rega final." #: ../postfix_wizard/Postfix.pm:113 msgid "Mail Server Name:" msgstr "Nome do Servidor de Mensagens:" #: ../postfix_wizard/Postfix.pm:118 msgid "The default is to append myhostname which is fine for small sites." msgstr "" #: ../postfix_wizard/Postfix.pm:118 msgid "" "The myorigin parameter specifies the domain that locally-posted mail appears " "to come from" msgstr "" #: ../postfix_wizard/Postfix.pm:123 msgid "myorigin:" msgstr "" #: ../postfix_wizard/Postfix.pm:132 msgid "Configuring the Internet Mail" msgstr "Configurando o Internet Mail" #: ../postfix_wizard/Postfix.pm:132 msgid "" "The wizard collected the following parameters needed to configure your " "Internet Mail Service:" msgstr "" "O assistente coletou os parâmetros necessários para configurar seu Serviço " "de Correio na Internet:" #: ../postfix_wizard/Postfix.pm:135 msgid "Form of the Address" msgstr "Estrutura do Endereço" #: ../postfix_wizard/Postfix.pm:136 msgid "myorigin" msgstr "" #: ../postfix_wizard/Postfix.pm:142 #, fuzzy msgid "Configuring the Internal Mail Server" msgstr "Configurando o Internet Mail" #: ../postfix_wizard/Postfix.pm:147 msgid "" "The wizard successfully configured your Internet Mail service of your server." msgstr "" "O assistente configurou com sucesso seu serviço de correio da internet no " "seu servidor." #: ../postfix_wizard/Postfix.pm:169 msgid "Check if sendmail is installed, to avoid conflict...." msgstr "" #: ../postfix_wizard/Postfix.pm:169 ../postfix_wizard/Postfix.pm:233 #: ../postfix_wizard/Postfix.pm:261 #, fuzzy msgid "Postfix Server" msgstr "Servidor de impressão" #: ../postfix_wizard/Postfix.pm:233 ../postfix_wizard/Postfix.pm:261 #, fuzzy msgid "Configuring your Postfix server....." msgstr "Configurando o servidor de FTP" #: ../proxy_wizard/Squid.pm:39 msgid "Localhost - access restricted to this server only" msgstr "Localhost - acesso restrito a apenas este servidor" #: ../proxy_wizard/Squid.pm:42 msgid "No upper level proxy (recommended)" msgstr "Sem proxy de nível superior (recomendado)" #: ../proxy_wizard/Squid.pm:43 msgid "Define an upper level proxy" msgstr "Defina um proxy de nivel superior" #: ../proxy_wizard/Squid.pm:47 msgid "Squid wizard" msgstr "Assistente do Squid" #: ../proxy_wizard/Squid.pm:65 msgid "Proxy Configuration Wizard" msgstr "Assistente de configuração do proxy" #: ../proxy_wizard/Squid.pm:65 msgid "" "Squid is a web caching proxy server, it allows faster web access for your " "local network." msgstr "" "O Squid é um servidor proxy com cache da web, por isso permite um acesso a " "web mais rápido para sua rede local." #: ../proxy_wizard/Squid.pm:65 msgid "This wizard will help you in configuring your proxy server." msgstr "Este assistente ajuda você a configurar seu servidor proxy." #: ../proxy_wizard/Squid.pm:70 msgid "Proxy Port" msgstr "Porta do Proxy" #: ../proxy_wizard/Squid.pm:70 msgid "" "Proxy port value sets what port the proxy server will listen on for http " "requests. Default is 3128, other common value can be 8080, the port value " "needs to be greater than 1024." msgstr "" "A porta do proxy define em qual porta o servidor escutará para atender as " "requisições de HTTP. O padrão é 3128, o outro valor comum pode ser 8080. É " "necessário que a porta tenha um valor maior que 1024." #: ../proxy_wizard/Squid.pm:76 msgid "Proxy port:" msgstr "Porta do Proxy:" #: ../proxy_wizard/Squid.pm:81 msgid "" "Press Next if you want to keep this value, or Back to correct your choice." msgstr "" "Pressione Próximo se você quiser manter este valor, ou Voltar para corrigir " "sua escolha. " #: ../proxy_wizard/Squid.pm:81 msgid "You have entered a port that may be useful for this service:" msgstr "Você entrou com uma porta que deve servir para este serviço:" #: ../proxy_wizard/Squid.pm:88 msgid "Press back to change the value." msgstr "Pressione voltar para mudar o valor." #: ../proxy_wizard/Squid.pm:88 msgid "You must choose a port greater than 1024 and lower than 65535" msgstr "Você precisa escolher um porta maior que 1024 e menor que 65535" #: ../proxy_wizard/Squid.pm:92 msgid "" "Disk Cache is the amount of disk space that can be used for caching on disk." msgstr "" "Cache de disco é um uma parte do disco rígido que pode ser usada para fazer " "cache." #: ../proxy_wizard/Squid.pm:92 msgid "For your information, here is /var/spool/squid space on disk:" msgstr "Para sua informação, aqui está o espaço de /var/spool/squid no disco:" #: ../proxy_wizard/Squid.pm:92 msgid "" "Memory Cache is the amount of RAM dedicated to cache memory operations (note " "that actual memory usage of the whole squid process is bigger)." msgstr "" "A Memória Cache é a quantidade de RAM dedicada às operações de memória cache " "(note que o uso real de memória do processo squid é maior)." #: ../proxy_wizard/Squid.pm:92 msgid "Proxy Cache Size" msgstr "Tamanho do cache do proxy" #: ../proxy_wizard/Squid.pm:98 ../proxy_wizard/Squid.pm:151 #: ../proxy_wizard/Squid.pm:164 msgid "Memory cache (MB):" msgstr "Memória cache (MB):" #: ../proxy_wizard/Squid.pm:99 ../proxy_wizard/Squid.pm:152 #: ../proxy_wizard/Squid.pm:165 msgid "Disk space (MB):" msgstr "Espaço em disco (MB):" #: ../proxy_wizard/Squid.pm:104 msgid "The proxy can be configured to use different access control levels" msgstr "" "O proxy pode ser configurado para diferentes níveis de controle de acesso." #: ../proxy_wizard/Squid.pm:117 msgid "" "You can use either a numeric format like \"192.168.1.0/255.255.255.0\" or a " "text format like \".domain.net\"" msgstr "" "Você pode usar um formato numérico como \"192.168.1.0/255.255.255.0\" ou um " "formato texto como \"dominio.net\"" #: ../proxy_wizard/Squid.pm:122 msgid "" "Use numeric format like \"192.168.1.0/255.255.255.0\" or a text format like " "\".domain.net\"" msgstr "" "Você pode usar um formato numérico como \"192.168.1.0/255.255.255.0\" ou um " "formato texto como \"dominio.net\"" #: ../proxy_wizard/Squid.pm:127 msgid "" "As an option, Squid can be configured in proxy cascading. You can add a new " "upper level proxy by specifying its hostname and port." msgstr "" "Como opção, o Squid pode ser configurado através do proxy. Você pode " "adicionar um novo endereço proxy especificando o nome do domínio e porta." #: ../proxy_wizard/Squid.pm:127 ../proxy_wizard/Squid.pm:140 msgid "Cache hierarchy" msgstr "Hierarquia do cache" #: ../proxy_wizard/Squid.pm:127 msgid "" "You can safely select \"No upper level proxy\" if you don't need this " "feature." msgstr "" "Você pode seguramente selecionar \"Sem proxy de nível superior\" se você " "não precisar deste serviço." #: ../proxy_wizard/Squid.pm:140 msgid "" "Enter the qualified hostname (like \"cache.domain.net\") and the port of the " "proxy to use." msgstr "" "Digite um hostname qualificado (como \"cache.domain.net\") e a porta de uso " "do proxy." #: ../proxy_wizard/Squid.pm:142 ../proxy_wizard/Squid.pm:154 msgid "Upper level proxy hostname:" msgstr "Hostname do proxy de nível superior:" #: ../proxy_wizard/Squid.pm:143 ../proxy_wizard/Squid.pm:155 msgid "Upper level proxy port:" msgstr "Porta do proxy de nível superior:" #: ../proxy_wizard/Squid.pm:148 ../proxy_wizard/Squid.pm:161 msgid "Configuring the Proxy" msgstr "Configurando o proxy" #: ../proxy_wizard/Squid.pm:148 ../proxy_wizard/Squid.pm:161 msgid "" "The wizard collected the following parameters needed to configure your proxy:" msgstr "" "O assistente coletou os seguintes parâmetros necessários para configurar seu " "servidor proxy:" #: ../proxy_wizard/Squid.pm:150 ../proxy_wizard/Squid.pm:163 msgid "Port:" msgstr "Porta:" #: ../proxy_wizard/Squid.pm:153 ../proxy_wizard/Squid.pm:166 msgid "Access Control:" msgstr "Controle de acesso:" #: ../proxy_wizard/Squid.pm:172 #, fuzzy msgid "The wizard have successfully configured your proxy server." msgstr "O assistente configurou com sucesso seu servidor proxy." #: ../proxy_wizard/Squid.pm:225 #, fuzzy msgid "Configuring your system as a Proxy server..." msgstr "Configurando o servidor de FTP" #: ../proxy_wizard/Squid.pm:225 #, fuzzy msgid "Squid proxy" msgstr "Assistente do Squid" #: ../pxe_wizard/Pxe.pm:58 #, fuzzy msgid "PXE Wizard" msgstr "Assistente de FTP" #: ../pxe_wizard/Pxe.pm:79 ../pxe_wizard/Pxe.pm:174 #, fuzzy msgid "Set PXE server" msgstr "Servidor NFS" #: ../pxe_wizard/Pxe.pm:80 msgid "Add boot image in PXE" msgstr "" #: ../pxe_wizard/Pxe.pm:81 msgid "Remove boot image in PXE" msgstr "" #: ../pxe_wizard/Pxe.pm:82 msgid "Modify boot image in PXE" msgstr "" #: ../pxe_wizard/Pxe.pm:105 #, fuzzy msgid "PXE wizard" msgstr "Assistente de FTP" #: ../pxe_wizard/Pxe.pm:105 #, fuzzy msgid "Set a PXE server." msgstr "Servidor de Banco de Dados" #: ../pxe_wizard/Pxe.pm:105 msgid "" "This wizard will help you configuring the PXE server. PXE (Pre-boot " "Execution Environment) is a protocol designed by Intel that allows computers " "to boot through the network. PXE is stored in the ROM of new generation " "network cards. When the computer boots up, the BIOS loads the PXE ROM in the " "memory and executes it. A menu is displayed, allowing the computer to boot " "an operating system loaded through the network." msgstr "" #: ../pxe_wizard/Pxe.pm:105 #, fuzzy msgid "" "This wizard will provide a pxe service, and ability to add/remove/modify " "boot images." msgstr "" "Este assistente ajudará você a configurar o serviço DNS do seu servidor. " "Esta configuração proverá um serviço local de DNS para os nomes de " "computadores locais. Requisições não locais são enviadas a um DNS externo." #: ../pxe_wizard/Pxe.pm:127 msgid "Add a boot image" msgstr "" #: ../pxe_wizard/Pxe.pm:127 msgid "PXE name: name in PXE menu (one word/number, no space please)" msgstr "" #: ../pxe_wizard/Pxe.pm:127 msgid "Path to image: full path to image (need network boot image)" msgstr "" #: ../pxe_wizard/Pxe.pm:137 msgid "Choose PXE boot image you want to remove from PXE server." msgstr "" #: ../pxe_wizard/Pxe.pm:137 msgid "Remove a boot image" msgstr "" #: ../pxe_wizard/Pxe.pm:139 msgid "Boot image to remove:" msgstr "" #: ../pxe_wizard/Pxe.pm:144 msgid "Add option to boot image:" msgstr "" #: ../pxe_wizard/Pxe.pm:144 msgid "Please choose PXE boot image to modify" msgstr "" #: ../pxe_wizard/Pxe.pm:147 msgid "Boot image to configure:" msgstr "" #: ../pxe_wizard/Pxe.pm:153 msgid "Install directory: full path to MDK install server directory" msgstr "" #: ../pxe_wizard/Pxe.pm:153 msgid "Installation method: choose nfs/http to install via nfs/http." msgstr "" #: ../pxe_wizard/Pxe.pm:153 msgid "Options to add to PXE boot disk" msgstr "" #: ../pxe_wizard/Pxe.pm:153 msgid "" "Server IP: IP address of server which contain installation directory. You " "can create one with MDK install server wizard." msgstr "" #: ../pxe_wizard/Pxe.pm:155 ../pxe_wizard/Pxe.pm:211 msgid "Boot image to modify:" msgstr "" #: ../pxe_wizard/Pxe.pm:156 ../pxe_wizard/Pxe.pm:212 #, fuzzy msgid "Server IP:" msgstr "Nome do Servidor:" #: ../pxe_wizard/Pxe.pm:157 ../pxe_wizard/Pxe.pm:213 #, fuzzy msgid "Install directory:" msgstr "Diretório de usuário:" #: ../pxe_wizard/Pxe.pm:158 ../pxe_wizard/Pxe.pm:214 #, fuzzy msgid "Installation method:" msgstr "a instalação falhou" #: ../pxe_wizard/Pxe.pm:163 msgid "ACPI option: Advanced Configuration and Power Interface" msgstr "" #: ../pxe_wizard/Pxe.pm:163 msgid "" "Network client interface: through which interface client should be installed." msgstr "" #: ../pxe_wizard/Pxe.pm:163 msgid "Ramsize: adjust ramsize on boot disk." msgstr "" #: ../pxe_wizard/Pxe.pm:163 msgid "VGA option: if you encounter any problem whith VGA, please adjust. " msgstr "" #: ../pxe_wizard/Pxe.pm:165 ../pxe_wizard/Pxe.pm:215 msgid "Network client interface:" msgstr "" #: ../pxe_wizard/Pxe.pm:166 ../pxe_wizard/Pxe.pm:216 msgid "Ramsize:" msgstr "" #: ../pxe_wizard/Pxe.pm:167 ../pxe_wizard/Pxe.pm:217 msgid "VGA option:" msgstr "" #: ../pxe_wizard/Pxe.pm:168 ../pxe_wizard/Pxe.pm:218 msgid "ACPI option:" msgstr "" #: ../pxe_wizard/Pxe.pm:169 ../pxe_wizard/Pxe.pm:219 msgid "APIC option:" msgstr "" #: ../pxe_wizard/Pxe.pm:174 msgid "" "This will configure all needed default configurations files to set a PXE " "server." msgstr "" #: ../pxe_wizard/Pxe.pm:174 msgid "We need to use a special dhcpd.conf with PXE parameter." msgstr "" #: ../pxe_wizard/Pxe.pm:178 msgid "Please provide a bootable image..." msgstr "" #: ../pxe_wizard/Pxe.pm:182 #, perl-format msgid "Please choose an image from a different directory than %s." msgstr "" #: ../pxe_wizard/Pxe.pm:186 msgid "Please provide a correct name in PXE entry (one word)." msgstr "" #: ../pxe_wizard/Pxe.pm:190 msgid "" "To add/remove/modify PXE boot image, you need to run 'Set PXE server' before." msgstr "" #: ../pxe_wizard/Pxe.pm:194 msgid "Please provide another PXE Menu name" msgstr "" #: ../pxe_wizard/Pxe.pm:194 msgid "Similar name is already used in PXE menu entry" msgstr "" #: ../pxe_wizard/Pxe.pm:198 msgid "Now will prepare all default files to set the PXE server" msgstr "" #: ../pxe_wizard/Pxe.pm:200 #, fuzzy msgid "TFTP directory:" msgstr "Diretório de usuário:" #: ../pxe_wizard/Pxe.pm:201 msgid "Boot image path:" msgstr "" #: ../pxe_wizard/Pxe.pm:202 msgid "PXE 'default' file:" msgstr "" #: ../pxe_wizard/Pxe.pm:203 msgid "PXE 'help' file:" msgstr "" #: ../pxe_wizard/Pxe.pm:209 msgid "Now will modify boot options in image" msgstr "" #: ../pxe_wizard/Pxe.pm:225 msgid "Now will remove your PXE boot image" msgstr "" #: ../pxe_wizard/Pxe.pm:227 msgid "PXE entry to remove:" msgstr "" #: ../pxe_wizard/Pxe.pm:233 msgid "Now will add your PXE boot image" msgstr "" #: ../pxe_wizard/Pxe.pm:244 #, fuzzy msgid "The wizard successfully add a PXE boot image." msgstr "O assistente adicionou o cliente com sucesso." #: ../pxe_wizard/Pxe.pm:256 #, fuzzy msgid "The wizard successfully removed the PXE boot image." msgstr "O assistente adicionou o cliente com sucesso." #: ../pxe_wizard/Pxe.pm:268 #, fuzzy msgid "The wizard successfully modify image(s)." msgstr "O assistente adicionou o cliente com sucesso." #: ../pxe_wizard/Pxe.pm:273 #, fuzzy msgid "The wizard successfully configured your PXE server." msgstr "O assistente configurou com sucesso seu servidor proxy." #: ../pxe_wizard/Pxe.pm:504 msgid "Configuring PXE server on your system..." msgstr "" #: ../samba_wizard/Samba.pm:34 msgid "Samba wizard" msgstr "Assistente do samba" #: ../samba_wizard/Samba.pm:59 ../web_wizard/Apache.pm:62 #, perl-format msgid "%s does not exist." msgstr "%s não existe" #: ../samba_wizard/Samba.pm:66 msgid "My rules - Ask me allowed and denied hosts" msgstr "Minhas regras - Pergunte-me os hosts permitidos e proibidos" #: ../samba_wizard/Samba.pm:71 msgid "Samba Configuration Wizard" msgstr "Assistente de Configuração do Samba" #: ../samba_wizard/Samba.pm:71 msgid "" "Samba allows your server to behave as a file and print server for " "workstations running non-Linux systems." msgstr "" "O Samba permite que seu servidor comporte-se como um servidor de arquivos e " "impressão para estações de trabalho que rodam sistemas não-Linux." #: ../samba_wizard/Samba.pm:71 msgid "" "This wizard will help you configuring the Samba services of your server." msgstr "" "Este assistente ajudará você a configurar o serviço SAMBA em seu servidor." #: ../samba_wizard/Samba.pm:76 msgid "Samba needs to know the Windows Workgroup it will serve." msgstr "" "O Samba precisa saber o grupo de trabalho do windows que será servidor." #: ../samba_wizard/Samba.pm:76 msgid "Workgroup" msgstr "Grupo de trabalho" #: ../samba_wizard/Samba.pm:81 ../samba_wizard/Samba.pm:216 msgid "Workgroup:" msgstr "Grupo de trabalho:" #: ../samba_wizard/Samba.pm:87 msgid "The Workgroup is wrong" msgstr "O grupo de trabalho está incorreto" #: ../samba_wizard/Samba.pm:92 msgid "Server Banner." msgstr "Logotipo do Servidor" #: ../samba_wizard/Samba.pm:92 msgid "" "The banner is the way this server will be described in the Windows " "workstations." msgstr "" "O banner é a maneira como este usuário será descrito nas estações Windows." #: ../samba_wizard/Samba.pm:98 msgid "Banner:" msgstr "Logo:" #: ../samba_wizard/Samba.pm:103 msgid "The Server Banner is incorrect" msgstr "Esse logotipo do Servidor está incorreto" #: ../samba_wizard/Samba.pm:108 ../samba_wizard/Samba.pm:119 msgid "Access control" msgstr "Controle de acesso" #: ../samba_wizard/Samba.pm:114 msgid "Access level :" msgstr "Nível de Acesso:" #: ../samba_wizard/Samba.pm:119 msgid "" "* Example 1: allow all IPs in 150.203.*.*; except one\n" "hosts allow = 150.203. EXCEPT 150.203.6.66" msgstr "" "* Exemplo 1: permitir todos os IPs em 150.203.*.*; exceto um\n" "hosts allow = 150.203. EXCEPT 150.203.6.66" #: ../samba_wizard/Samba.pm:119 msgid "" "* Example 2: allow hosts that match the given network/netmask\n" "hosts allow = 150.203.15.0/255.255.255.0" msgstr "" "* Exemplo 2: permitir hosts que coincidem com este IP e/ou máscara de " "subrede\n" "hosts allow = 150.203.15.0/255.255.255.0" #: ../samba_wizard/Samba.pm:119 msgid "" "* Example 3: allow a couple of hosts\n" "hosts allow = lapland, arvidsjaur" msgstr "" "* Exemplo 3: permitir uma dupla de hosts\n" "hosts allow = lapland, arvidsjaur" #: ../samba_wizard/Samba.pm:119 #, fuzzy msgid "" "* Example 4: allow only hosts in NIS netgroup \"foonet\", but deny access " "from one particular host\n" "hosts allow = @foonet\n" "hosts deny = pirate" msgstr "" "* Exemplo 4: permitir somente hosts no grupo NIS \"foonet\", mas negar " "acesso para um host particular\n" "hosts allow = \\@foonet\n" "hosts deny = pirate" #: ../samba_wizard/Samba.pm:119 msgid "Note that access still requires suitable user-level passwords." msgstr "Note que o acesso ainda requer uma senha de nível de usuário válida." #: ../samba_wizard/Samba.pm:126 msgid "Allow hosts:" msgstr "Permitir hosts:" #: ../samba_wizard/Samba.pm:127 msgid "Deny hosts:" msgstr "Bloquear hosts:" #: ../samba_wizard/Samba.pm:132 msgid "Enabled Samba Services" msgstr "Habilita o serviço Samba." #: ../samba_wizard/Samba.pm:132 msgid "" "Samba can provide a common file sharing area to your Windows workstation, " "and can also provide printer sharing for the printers connected to your " "server." msgstr "" "O Samba pode fornecer uma área comum que compartilha arquivos com suas " "estações de trabalho Windows, e pode também fornecer um compartilhamento de " "impressoras para as que estiverem conectadas a seu servidor." #: ../samba_wizard/Samba.pm:140 msgid "Enable file sharing area" msgstr "Habilita a área de compartilhamento de arquivos" #: ../samba_wizard/Samba.pm:142 msgid "Make home directories available for their owners" msgstr "Faz os diretórios homes serem acessíveis por seus proprietários" #: ../samba_wizard/Samba.pm:147 msgid "" "You have selected to allow user access their home directories via samba but " "you/they must use smbpasswd to set a password." msgstr "" "Você selecionou permitir o acesso dos usuários a seus diretórios home " "através do samba, mas você e eles devem usar o comando smbpasswd para " "ajustar uma senha." #: ../samba_wizard/Samba.pm:153 ../samba_wizard/Samba.pm:159 #: ../samba_wizard/Samba.pm:219 msgid "Shared directory:" msgstr "Diretório compartilhado:" #: ../samba_wizard/Samba.pm:153 msgid "Type the path of the directory you want being shared." msgstr "Digite o caminho do diretório que você quer compartilhar." #: ../samba_wizard/Samba.pm:169 msgid "File permissions" msgstr "Permissões de arquivos" #: ../samba_wizard/Samba.pm:169 #, fuzzy msgid "" "Type users or group separated by a comma (groups must be preceded by a '@') " "like this :\n" "root, fred, @users, @wheel for each kind of permission." msgstr "" "Digite os usuários ou grupo separados por uma vírgula (os grupos devem ser " "precedidos de um '\\@') como este:\n" "root, fred, \\@users, \\@wheel para cada tipo da permissão." #: ../samba_wizard/Samba.pm:176 msgid "read list:" msgstr "Lista de leitura:" #: ../samba_wizard/Samba.pm:176 ../samba_wizard/Samba.pm:177 #, fuzzy msgid "root, fred, @users, @wheel" msgstr "root, fred, \\@users, \\@wheel" #: ../samba_wizard/Samba.pm:177 msgid "write list:" msgstr "Lista de escrita:" #: ../samba_wizard/Samba.pm:207 msgid "Configuring Samba" msgstr "Configurando o Samba" #: ../samba_wizard/Samba.pm:207 #, fuzzy msgid "" "The wizard collected the following parameters\n" "configure Samba." msgstr "" "O assistente coletou os seguintes parâmetros necessários\n" "para configurar o Samba." #: ../samba_wizard/Samba.pm:217 msgid "Server Banner:" msgstr "Logotipo do Servidor:" #: ../samba_wizard/Samba.pm:218 msgid "File Sharing:" msgstr "Compartilhar arquivo:" #: ../samba_wizard/Samba.pm:221 msgid "Home:" msgstr "Home:" #: ../samba_wizard/Samba.pm:228 msgid "The wizard successfully configured your Samba server." msgstr "O assistente configurou com sucesso seu servidor Samba" #: ../samba_wizard/Samba.pm:481 #, fuzzy msgid "Configuring your Samba server..." msgstr "Configurando o servidor de FTP" #: ../time_wizard/Ntp.pm:34 msgid "Time wizard" msgstr "Assistente de hora" #: ../time_wizard/Ntp.pm:60 msgid "Try again" msgstr "Tente novamente" #: ../time_wizard/Ntp.pm:61 msgid "Save config without test" msgstr "Salvar configuração sem testar" #: ../time_wizard/Ntp.pm:82 msgid "" "This wizard will help you to set the time of your server synchronized with " "an external time server." msgstr "" "Esse assistente ajudará você a configurar a hora do seu servidor " "sincronizado com um servidor de hora externo." #: ../time_wizard/Ntp.pm:82 msgid "Thus your server will be the local time server for your network." msgstr "Dessa forma seu servidor será o servidor de hora local para sua rede" #: ../time_wizard/Ntp.pm:82 msgid "press next to begin, or cancel to leave this wizard" msgstr "" "pressione próximo para continuar, ou cancelar para sair deste assistente" #: ../time_wizard/Ntp.pm:87 #, fuzzy msgid "" "(we recommend using the server pool.ntp.org twice as this server randomly " "points to available time servers)" msgstr "" "(recomendamos você usar pool.ntp.org duplamente como servidor randônico " "apontando para os servidores de tempo disponíveis)" #: ../time_wizard/Ntp.pm:87 msgid "Select a primary and secondary server from the list." msgstr "Selecione um servidor primário e secundário da lista" #: ../time_wizard/Ntp.pm:87 msgid "Time Servers" msgstr "Servidores de Hora" #: ../time_wizard/Ntp.pm:93 ../time_wizard/Ntp.pm:130 msgid "Primary Time Server:" msgstr "Servidor de Hora primário:" #: ../time_wizard/Ntp.pm:94 ../time_wizard/Ntp.pm:131 msgid "Secondary Time Server:" msgstr "Servidor de hora secundário:" #: ../time_wizard/Ntp.pm:99 ../time_wizard/Ntp.pm:114 msgid "Choose a timezone" msgstr "Escolha um fuso horário:" #: ../time_wizard/Ntp.pm:106 msgid "Choose a region:" msgstr "Escolha uma região:" #: ../time_wizard/Ntp.pm:119 msgid "Choose a country:" msgstr "Escolha um país:" #: ../time_wizard/Ntp.pm:124 msgid "" "If the time server is not immediately available (network or other reason), " "there will be about a 30 second delay." msgstr "" "Se o servidor de hora não estiver imediatamente disponível (rede ou outras " "razões), haverá um atraso de cerca de 30 segundos." #: ../time_wizard/Ntp.pm:124 msgid "Press next to start the time servers test." msgstr "Pressione próximo para iniciar o teste dos servidores de hora" #: ../time_wizard/Ntp.pm:124 msgid "Testing the time servers availability" msgstr "Testando a disponibilidade dos servidores de hora" #: ../time_wizard/Ntp.pm:132 msgid "Time zone:" msgstr "Fuso Horário:" #: ../time_wizard/Ntp.pm:145 msgid "The time servers are not responding. The causes could be:" msgstr "Os servidores de hora não estão respondendo. As causas podem ser:" #: ../time_wizard/Ntp.pm:146 msgid "- non existent time servers" msgstr "- servidores de hora inexistentes" #: ../time_wizard/Ntp.pm:147 msgid "- no outside network" msgstr "- nenhuma rede externa" #: ../time_wizard/Ntp.pm:148 msgid "- other reasons..." msgstr "- outras razões..." #: ../time_wizard/Ntp.pm:149 msgid "" "- You can try again to contact time servers, or save configuration without " "actually setting time." msgstr "" "Você pode tentar contatar os servidores de hora novamente, ou salvar sem " "ajustar a hora" #: ../time_wizard/Ntp.pm:165 msgid "Time server configuration saved" msgstr "Configuração do servidor de hora salva" #: ../time_wizard/Ntp.pm:165 msgid "Your server can now act as a time server for your local network." msgstr "" "Seu servidor pode agora funcionar como um servidor de hora para sua rede " "local." #: ../web_wizard/Apache.pm:39 msgid "Web wizard" msgstr "Assistente de Web" #: ../web_wizard/Apache.pm:71 msgid "This wizard will help you configuring the Web Server for your network." msgstr "O assistente ajudará você a configurar o Servidor de Web de sua rede." #: ../web_wizard/Apache.pm:71 msgid "Web Server Configuration Wizard" msgstr "Assistente de configuração do Servidor Web" #: ../web_wizard/Apache.pm:77 msgid "Don't check any box if you don't want to activate your Web Server." msgstr "Não escolha nenhuma opção caso não queira ativar seu servidor de Web." #: ../web_wizard/Apache.pm:77 msgid "Select the kind of Web service you want to activate:" msgstr "Selecione o tipo de serviço Web que você quer ativar:" #: ../web_wizard/Apache.pm:77 msgid "Web Server" msgstr "Servidor Web" #: ../web_wizard/Apache.pm:77 msgid "" "Your server can act as a Web Server toward your internal network (intranet) " "and as a Web Server for the Internet." msgstr "" "Seu servidor pode agir como um Servidor de Web para a sua rede interna " "(intranet) e como um Servidor de Web para a Internet." #: ../web_wizard/Apache.pm:79 msgid "Enable the Web Server for the Intranet" msgstr "Habilita o Servidor Web para a Internet" #: ../web_wizard/Apache.pm:80 msgid "Enable the Web Server for the Internet" msgstr "Habilita o servidor Web para a Internet" #: ../web_wizard/Apache.pm:90 msgid "" "* User module : allows users to have a directory in their home directories " "available on your http server via http://www.yourserver.com/~user, you will " "be asked for the name of this directory afterward." msgstr "" "Módulo de usuário: permite aos usuários ter um diretório em seus diretórios " "principais, disponível no seu servidor HTTP via http://www.seuservidor.com/" "~usuário. Você será perguntado pelo nome desse diretório posteriormente." #: ../web_wizard/Apache.pm:90 msgid "Modules :" msgstr "Módulos" #: ../web_wizard/Apache.pm:93 msgid "" "Allows users to get a directory in their homes directories \n" "available on your http server via http://www.yourserver.com/~user." msgstr "" "Módulo de usuário: permite aos usuários ter um diretório em seus " "diretórios \n" "home, disponível no seu servidor HTTP via http://www.seuservidor.com/" "~usuário. Você será perguntado pelo nome desse diretório posteriormente." #: ../web_wizard/Apache.pm:100 ../web_wizard/Apache.pm:103 msgid "" "Type the name of the directory users should create in their homes (whitout " "~/) to get it available via http://www.yourserver.com/~user" msgstr "" "Digite o nome do diretório onde os usuários devem criar seus próprios " "diretórios (sem o ~/) para os terem disponíveis via http://seuservidor.com/" "~usuário" #: ../web_wizard/Apache.pm:103 msgid "user http sub-directory : ~/" msgstr "sub-diretório http do usuário: ~/" #: ../web_wizard/Apache.pm:108 msgid "Type the path of the directory you want being the document root." msgstr "" "Digite o caminho do diretório que você quer que seja a raiz de documentos:" #: ../web_wizard/Apache.pm:111 msgid "Document Root:" msgstr "Documentos Root:" #: ../web_wizard/Apache.pm:131 msgid "Configuring the Web Server" msgstr "Configurando o Servidor de Web" #: ../web_wizard/Apache.pm:131 msgid "" "The wizard collected the following parameters needed to configure your Web " "Server" msgstr "" "O assistente coletou os seguintes parâmetros necessários para configurar seu " "servidor de Web" #: ../web_wizard/Apache.pm:137 msgid "Intranet web server:" msgstr "Servidor Web da Intranet:" #: ../web_wizard/Apache.pm:138 msgid "Internet web server:" msgstr "Servidor Web da Internet" #: ../web_wizard/Apache.pm:139 msgid "Document root:" msgstr "Documento do administrador" #: ../web_wizard/Apache.pm:140 msgid "User directory:" msgstr "Diretório de usuário:" #: ../web_wizard/Apache.pm:147 msgid "The wizard successfully configured your Intranet/Internet Web Server" msgstr "O assistente configurou com sucesso seu servidor de Internet/Intranet" #: ../web_wizard/Apache.pm:234 #, fuzzy msgid "Apache server" msgstr "Servidor Web da Intranet:" #: ../web_wizard/Apache.pm:234 #, fuzzy msgid "Configuring your system as Apache server ..." msgstr "Configurando o servidor DNS" #~ msgid "Enable Server Printer Sharing" #~ msgstr "Habilita o Servidor de Compartilhamento de Impressoras" #~ msgid "Select which printers you want to be accessible from known users" #~ msgstr "" #~ "Selecione qual impressora você deseja que esteja acessível para os " #~ "usuários conhecidos" #~ msgid "Enable all printers" #~ msgstr "Habilita todas as impressoras" #~ msgid "Print Server:" #~ msgstr "Servidor de impressão" #~ msgid "Printers:" #~ msgstr "Impressoras:" #~ msgid "Don't check any box if you don't want to activate your FTP Server." #~ msgstr "Não marque nenhuma caixa se não quiser ativar seu servidor de FTP." #~ msgid "" #~ "Warning\n" #~ "You are in dhcp, server may not work with your configuration." #~ msgstr "" #~ "Aviso\n" #~ "Você está em dhcp; o servidor pode não funcionar com sua configuração" #~ msgid "" #~ "A client of your local network is a machine connected to the network " #~ "having its own name and IP number." #~ msgstr "" #~ "Um cliente de sua rede local é uma máquina conectada à rede que tem seu " #~ "próprio nome e número de IP." #~ msgid "" #~ "Note that the given IP number and client name should be unique in the " #~ "network." #~ msgstr "" #~ "Note que o número de IP e o nome do cliente devem ser únicos na rede" #~ msgid "IP number of the machine:" #~ msgstr "Número de IP da máquina:" #, fuzzy #~ msgid "Setup a ldap server." #~ msgstr "Servidor de Banco de Dados" #, fuzzy #~ msgid "Ip of master DNS server:" #~ msgstr "Configurando o servidor DNS" #, fuzzy #~ msgid "Dhcp server" #~ msgstr "Servidor NFS" #, fuzzy #~ msgid "Dns server" #~ msgstr "Servidor de Notícias" #, fuzzy #~ msgid "Ftp server" #~ msgstr "Servidor NFS" #, fuzzy #~ msgid "Pxe server" #~ msgstr "Servidores de Hora" #, fuzzy #~ msgid "Nis+autofs Server" #~ msgstr "Servidor de Notícias" #, fuzzy #~ msgid "PXE Wizard (devel)" #~ msgstr "Assistente DHCP" #, fuzzy #~ msgid "DNS Configuration Wizard" #~ msgstr "Assistente de Configuração DNS" #~ msgid "DNS Server Addresses" #~ msgstr "Endereço do servidor DNS" #~ msgid "" #~ "DNS will allow your network to communicate with the Internet using " #~ "standard internet host names. In order to configure DNS, you must " #~ "provide the IP address of primary and secondary DNS server; usually this " #~ "address are given by your Internet provider." #~ msgstr "" #~ "O DNS permitirá que sua rede se comunique com a internet usando os nomes " #~ "padrões de servidores internet. Para configurar o DNS, você precisa " #~ "fornecer o endereço IP do servidor DNS primário e do secundário, " #~ "usualmente esse endereço é dado pelo seu provedor de internet." #~ msgid "IP addresses are a dotted list of four numbers smaller than 256" #~ msgstr "" #~ "Endereços de IP são separados por ponto a cada quatro números menores que " #~ "256." #~ msgid "Primary DNS Address" #~ msgstr "Endereço primário de DNS" #~ msgid "Secondary DNS Address:" #~ msgstr "Endereço DNS secundário:" #~ msgid "You have entered an empty address for the DNS server." #~ msgstr "Você entrou com um endereço em branco para o servidor DNS." #~ msgid "" #~ "Your setting could be accepted, but you will not be able to identify " #~ "machine names outside your local network." #~ msgstr "" #~ "Suas configurações podem ser aceitas, mas você não poderá identificar " #~ "nomes da máquina fora de sua rede local." #~ msgid "Press next to leave these values empty, or back to enter a value." #~ msgstr "" #~ "Pressione próximo para deixar estes valores em branco, ou voltar para " #~ "digitar algum valor." #~ msgid "" #~ "The wizard collected the following parameters needed to configure your " #~ "DNS service:" #~ msgstr "" #~ "O assistente coletou os seguintes parâmetros necessários para configurar " #~ "o servidor DNS:" #~ msgid "Primary DNS Address:" #~ msgstr "Endereço primário de DNS" #, fuzzy #~ msgid "Dns (add client)" #~ msgstr "Assistente para DNS (adicionar cliente)" #, fuzzy #~ msgid "NIS+autofs configuration wizard" #~ msgstr "Assistente de Configuração DNS" #, fuzzy #~ msgid "Nis Server:" #~ msgstr "Servidor de Notícias:" #, fuzzy #~ msgid "Home nis:" #~ msgstr "Home:" #, fuzzy #~ msgid "Nis directory Makefile:" #~ msgstr "Diretório de usuário:" #~ msgid "Cancel" #~ msgstr "Cancelar" #~ msgid "Next" #~ msgstr "Próximo" #~ msgid "Previous" #~ msgstr "Anterior" #~ msgid "Filesystem Size Used Avail Use% Mounted on" #~ msgstr "Sistema de Arquivo Tam Usad Disp Uso% Montado em" #~ msgid "Warming." #~ msgstr "Aviso" #, fuzzy #~ msgid "Congratulationss" #~ msgstr "Parabéns" #~ msgid "OK" #~ msgstr "OK" #~ msgid "Quit" #~ msgstr "Sair" #~ msgid "Configure" #~ msgstr "Configurar" #~ msgid "" #~ "You have to configure the basic network parameters before launching this " #~ "wizard." #~ msgstr "" #~ "Você precisa configurar os parâmetros básicos de uma rede antes de " #~ "executar este assistente." #~ msgid "You have entered a machine name or an IP number already used." #~ msgstr "" #~ "O nome da máquina ou IP digitado já existe, favor tentar outro diferente." #~ msgid "You need to be root to run this wizard" #~ msgstr "Você precisa de privilégios de root para executar este assistente" #~ msgid "" #~ "Press next if you want to change the already existing value, or back to " #~ "correct your choice." #~ msgstr "" #~ "Pressione próximo se você quiser alterar o valor já existente, ou voltar " #~ "para corrigir sua escolha." #~ msgid "Network not configured yet" #~ msgstr "Rede ainda não configurada" #~ msgid "" #~ "If you choose to configure now, you will automatically continue with the " #~ "Client configuration" #~ msgstr "" #~ "Se escolher configurar agora, você continuará automaticamente com a " #~ "configuração do cliente" #~ msgid "" #~ "Press next to configure these parameters now, or Cancel to exit this " #~ "wizard." #~ msgstr "" #~ "Pressione próximo para configurar estes parâmetros agora, ou cancelar " #~ "para sair deste assistente." #~ msgid "Please enter a username and password to add a user" #~ msgstr "" #~ "Por favor digite um nome de usuário e senha para adicionar um usuário" #~ msgid "MySQL Database wizard" #~ msgstr "Assistente da Banco de Dados MySQL" #~ msgid "Note: This user will have all permissions" #~ msgstr "Nota: Este usuário terá todas as permissões" #~ msgid "Add" #~ msgstr "Adicionar" #~ msgid "The wizard successfully configured your MySQL Database Server" #~ msgstr "" #~ "O assistente configurou com sucesso seu Servidor de Banco de Dados MySQL" #~ msgid "To run your server, you first need to specify a root password" #~ msgstr "" #~ "Para executar seu servidor, você precisa primeiramente especificar a " #~ "senha de root" #~ msgid "Please type a password for the root user:" #~ msgstr "Por favor entre com a senha de root" #~ msgid "User addition" #~ msgstr "Adicionar usuário" #~ msgid "MySQL Database Server" #~ msgstr "Servidor de banco de dados MySQL" #~ msgid "Configuring the MySQL Database Server" #~ msgstr "Configurando o Servidor de Banco de Dados MySQL" #~ msgid "" #~ "The wizard collected the following parameters needed to configure your " #~ "MySQL Database Server" #~ msgstr "" #~ "O assistente precisa dos seguintes parâmetros para configurar seu " #~ "Servidor de Banco de Dados MySQL" #~ msgid "" #~ "To accept this value, and configure your server, click on \\qConfirm\\q " #~ "or use the Back button to correct them." #~ msgstr "" #~ "Para aceitar este valor e configurar seu servidor, clique em \\qConfirmar" #~ "\\q ou então use o botão Voltar para corrigi-lo" #~ msgid "" #~ "This wizard will help you configuring the MySQL Database Server for your " #~ "network." #~ msgstr "" #~ "Este assistente ajudará você a configurar a Base de Dados do Servidor " #~ "MySQL para sua rede." #~ msgid "" #~ "If you choose to configure now, you will automatically continue with the " #~ "MySQL Database configuration" #~ msgstr "" #~ "Se escolher configurar agora, você continuará automaticamente com a " #~ "configuração do Banco de Dados MySQL" #~ msgid "Root Password:" #~ msgstr "Senha de Root:" #~ msgid "Confirm" #~ msgstr "Confirmar" #~ msgid "DHCP Configuration Wizard" #~ msgstr "Assistente de configuração DHCP" #~ msgid "Fix it" #~ msgstr "Corrigir" #~ msgid "Is the server authoritative ? Ask your system administrator." #~ msgstr "O servidor é autorizado? Pergunte ao seu administrador de sistema." #~ msgid "" #~ "The firewall can be configured to offer different levels of protection; " #~ "choose the level that corresponds to your needs. If you don't know, the " #~ "Medium level is usually the most appropriate." #~ msgstr "" #~ "O firewall pode ser configurado para difererentes níveis de proteção; " #~ "escolha o nível que corresponda às suas necessidades. Se não souber qual, " #~ "normalmente o mais apropriado é o nível Médio. " #~ msgid "Fix It" #~ msgstr "Corrigir" #~ msgid "Firewall Network Device" #~ msgstr "Dispositivo Firewall de Rede" #~ msgid "" #~ "The firewall needs to know how your server is connected to Internet; " #~ "choose the device you are using for the external connection." #~ msgstr "" #~ "O firewall precisa saber como o seu servidor está conectado a internet. " #~ "Escolha o dispositivo que está usando para fazer a conexão externa." #~ msgid "Firewall wizard" #~ msgstr "Assistente de Firewall" #~ msgid "Device" #~ msgstr "Dispositivo" #~ msgid "Medium - web, ftp and ssh shown to outside" #~ msgstr "Médio - web, ftp e ssh são vistos de fora." #~ msgid "This wizard will help you configuring your server firewall." #~ msgstr "O assistente ajudará você a configurar seu firewall." #~ msgid "Configuring the Firewall" #~ msgstr "Configurando o Firewall" #~ msgid "None - No protection" #~ msgstr "Nenhuma - Sem proteção" #~ msgid "" #~ "The firewall protects your internal network from unauthorized accesses " #~ "from the Internet." #~ msgstr "" #~ "O firewall protege sua rede interna contra acessos não autorizados da " #~ "internet." #~ msgid "The wizard successfully configured your server firewall." #~ msgstr "O assistente configurou com sucesso seu firewall." #~ msgid "Something terrible happened" #~ msgstr "Algo terrível aconteceu" #~ msgid "Exit" #~ msgstr "Sair" #~ msgid "Low - Light filtering, standard services available" #~ msgstr "Baixo - pouca filtragem, serviços padrões disponíveis." #~ msgid "Firewall Configuration Wizard" #~ msgstr "Assistente de Configuração do Firewall" #~ msgid "Protection Level" #~ msgstr "Nível de proteção" #~ msgid "Protection Level:" #~ msgstr "Nível de proteção:" #~ msgid "The device name is not correct" #~ msgstr "O nome do dispositivo não está correto" #~ msgid "Internet Network Device:" #~ msgstr "Dispositivo de Rede Internet" #~ msgid "" #~ "The wizard collected the following parameters needed to configure your " #~ "firewall:" #~ msgstr "" #~ "O assistente coletou os seguintes parâmetros necessários para configurar " #~ "seu firewall:" #~ msgid "Strong - no outside visibility, users limited to web" #~ msgstr "Forte - sem visibilidade exterior, os usuários são limitados à web." #~ msgid "" #~ "Internet host names must be in the form \\qhost.domain.domaintype\\q; for " #~ "example, if your provider is \\qprovider.com\\q, the internet news server " #~ "is usually \\qnews.provider.com\\q." #~ msgstr "" #~ "Os nomes dos hosts da Internet devem ficar no formato \\qhost." #~ "tipodedomínio\\q; por exemplo, se seu provedor for \\qprovedor.com\\q, o " #~ "leitor de notícias da internet será \\qnews.provedor.com\\q." #~ msgid "" #~ "You can select the kind of address that outgoing mail will show in the " #~ "\\qFrom:\\q and \\qReply-to\\q field." #~ msgstr "" #~ "Você pode selecionar o tipo de endereço que os emails enviados mostrarão " #~ "nos campos \\qFrom:\\q e \\qReply-to\\q." #~ msgid "Hmmm" #~ msgstr "Hmmm" #~ msgid "" #~ "If you choose to configure now, you will automatically continue with the " #~ "POSTFIX configuration" #~ msgstr "" #~ "Se escolher configurar agora, você continuará automaticamente com a " #~ "configuração do POSTFIX" #~ msgid "There seems to be a problem..." #~ msgstr "Parece haver problemas..." #~ msgid "Do It" #~ msgstr "Faça" #~ msgid "" #~ "Internet host names must be in the form \\qhost.domain.domaintype\\q; for " #~ "example, if your provider is \\qprovider.com\\q, the internet mail server " #~ "is usually \\qsmtp.provider.com\\q." #~ msgstr "" #~ "Nomes de hosts da internet devem estar no formato \\qhost.domínio." #~ "tipodedomínio\\q; por exemplo, se o seu provedor é \\qprovedor.com\\q, " #~ "normalmente o servidor de correio será \\qsmtp.provedor.com\\q." #~ msgid "Mail Address:" #~ msgstr "Endereço de email:" #~ msgid "" #~ "You can safely select \\qNo upper level proxy\\q if you don't need this " #~ "feature." #~ msgstr "" #~ "Você pode seguramente selecionar \\qSem proxy de nível superior\\q se " #~ "você não precisar deste serviço." #~ msgid "/etc/services:" #~ msgstr "/etc/services:" #~ msgid "" #~ "Enter the qualified hostname (like \\qcache.domain.net\\q) and the port " #~ "of the proxy to use." #~ msgstr "" #~ "Digite um hostname qualificado (como \\qcache.domain.net\\q) e a porta de " #~ "uso do proxy." #~ msgid "" #~ "If you choose to configure now, you will automatically continue with the " #~ "Proxy configuration." #~ msgstr "" #~ "Se escolher configurar agora, você continuará automaticamente com a " #~ "configuração do proxy." #~ msgid "" #~ "You can use either a numeric format like \\q192.168.1.0/255.255.255.0\\q " #~ "or a text format like \\q.domain.net\\q" #~ msgstr "" #~ "Você pode usar um formato numérico como \\q192.168.1.0/255.255.255.0\\q " #~ "ou um formato texto como \\qdominio.net\\q" #~ msgid "This Wizard needs to run as root" #~ msgstr "O assistente precisa ser executado com privilégios de root" #~ msgid "" #~ "* Example 4: allow only hosts in NIS netgroup \\qfoonet\\q, but deny " #~ "access from one particular host\\nhosts allow = @foonet\\nhosts deny = " #~ "pirate" #~ msgstr "" #~ "* Exemplo 4: permitir somente hosts no grupo NIS \\qfoonet\\q, mas negar " #~ "acesso para um host particular \\nhosts allow = @foonet\\nhosts deny = " #~ "pirate" #~ msgid "" #~ "If you choose to configure now, you will automatically continue with the " #~ "SAMBA configuration" #~ msgstr "" #~ "Se escolher configurar agora, você continuará automaticamente com a " #~ "configuração do SAMBA" #~ msgid "The host name is not correct" #~ msgstr "O nome de host não está correto" #~ msgid "" #~ "Devices are presented with the Linux name and, if known, with the card " #~ "description." #~ msgstr "" #~ "Dispositivos estão sendo mostrados com seu nome no Linux, e se possível, " #~ "com a descrição." #~ msgid "" #~ "Host names must be in the form \\qhost.domain.domaintype\\q; if your " #~ "server will be an Internet server, the domain name should be the name " #~ "registered with your provider. If you will only have intranet any valid " #~ "name is OK, like \\qcompany.net\\q." #~ msgstr "" #~ "Os nomes dos domínios precisam estar no formato \\qmáquina.domínio." #~ "tipodedomínio\\q; se seu servidor está conectado a um servidor de " #~ "Internet, o nome do domínio será o nome registrado com seu provedor. Se " #~ "você somente tem acesso à intranet qualquer nome válido, como \\qcompania." #~ "net\\q, pode serusado." #~ msgid "net device" #~ msgstr "Dispositivo de Internet" #~ msgid "Network Address" #~ msgstr "Endereço da Rede" #~ msgid "Gateway device:" #~ msgstr "Dispositivo de Gateway" #~ msgid "Device:" #~ msgstr "Dispositivo:" #~ msgid "" #~ "You should not run any other applications while running this wizard and " #~ "at the end of the wizard you should exit your session and login again." #~ msgstr "" #~ "Você não deve executar nenhuma outra aplicação enquanto executar este " #~ "assistente e no término do assistente deve sair de sua sessão e refazer o " #~ "login." #~ msgid "Basic Network Configuration Wizard" #~ msgstr "Assistente de configuração básicas da Rede" #~ msgid "" #~ "In regards to these wizards, your computer is seen as a server managing " #~ "his own local network (C class network)." #~ msgstr "" #~ "Em consideração a estes assistentes, seu computador será visto como um " #~ "servidor admistrando uma rede local própria (classe de rede C)." #~ msgid "Network Address:" #~ msgstr "Endereço de Rede:" #~ msgid "Server Address" #~ msgstr "Endereço do Servidor" #~ msgid "Note about networking" #~ msgstr "Observação sobre a conexão" #~ msgid "Wizard Error." #~ msgstr "Erro no assistente" #~ msgid "IP net address:" #~ msgstr "Endereço IP da rede:" #~ msgid "" #~ "Note: the gateway IP address should be non empty if you want an access to " #~ "outside world." #~ msgstr "" #~ "Nota: O endereço IP do gateway não deve estar vazio se vc quiser acessar " #~ "uma rede externa" #~ msgid "Server Address:" #~ msgstr "Endereço do Servidor:" #~ msgid "Server Wizard" #~ msgstr "Assistente do Servidor" #~ msgid "This wizard will set the basic networking parameters of your server." #~ msgstr "Este assistente configurará o básico da rede de seu servidor." #~ msgid "" #~ "External connection is a network from which the computer is client " #~ "(Internet or upstream network), connected using another network card or a " #~ "modem." #~ msgstr "" #~ "Conexão externa é uma rede em que seu computador é o cliente (da Internet " #~ "ou rede upstream), conectado usando outra placa de rede ou um modem." #~ msgid "The network address is wrong" #~ msgstr "O endereço de rede está incorreto" #~ msgid "" #~ "The server IP address is a number identifing your server in your network; " #~ "the proposed value designed for a private network , with no internet " #~ "visibility, or connected using IP masquerading; unless you know what you " #~ "are doing, accept the default value." #~ msgstr "" #~ "O endereço IP do servidor é um número que identifica seu servidor em sua " #~ "rede; o valor proposto é designado para uma rede privada, sem acesso a " #~ "internet, ou conectado usando mascaramento de IP; a menos que saiba o que " #~ "está fazendo, aceite o valor padrão." #~ msgid "Host Name" #~ msgstr "Nome do servidor" #~ msgid "" #~ "This page computes the default server address; it should be invisible." #~ msgstr "" #~ "Esta página calculou o endereço do servidor por padrão; ele pode estar " #~ "invisível." #~ msgid "This page computes the domainname; it should be invisible" #~ msgstr "Esta página calculou o nome do domínio; ele pode estar invisível" #~ msgid "" #~ "This wizard will help you in configuring the basic networking services of " #~ "your server." #~ msgstr "" #~ "Este assistente ajudará você a configurar o básico da rede em seu " #~ "servidor." #~ msgid "Server IP address:" #~ msgstr "Endereço de IP do servidor:" #~ msgid "" #~ "Choose the network device (usually a card) the server should use to " #~ "connect to your network. It's the device for the local network, probably " #~ "not the same device used for internet access." #~ msgstr "" #~ "Escolha o dispositivo da rede (geralmente uma placa de rede) que o " #~ "servidor deve usar para conectar-se à sua rede. Este é o dispositivo para " #~ "a rede local, provavelmente não é o mesmo dispositivo usado para o acesso " #~ "à Internet." #~ msgid "" #~ "The hostname is the name under which your server will be known from the " #~ "other workstations in your network and maybe on the Internet (depending " #~ "of your upstream configuration)." #~ msgstr "" #~ "O nome do host é o nome pelo qual seu servidor será conhecido pelas " #~ "outras máquinas da sua rede e talvez na internet (dependendo da sua " #~ "configurção de upstream)" #~ msgid "The Server IP address is incorrect" #~ msgstr "O IP do Servidor está incorreto" #~ msgid "" #~ "The network address is a number identifying your network; the proposed " #~ "value is designed for a configuration not connected to Internet, or " #~ "connected using IP masquerading; unless you know what you are doing, " #~ "accept the default value." #~ msgstr "" #~ "O endereço de rede é um número que identifica sua rede; o valor exposto é " #~ "designado para uma configuração não conectada à Internet, ou conectando " #~ "usando mascaramento de IP; a menos que você conheça o que está fazendo, " #~ "aceite o valor padrão." #~ msgid "Configuring your network" #~ msgstr "Configurando sua rede" #~ msgid "" #~ "(you can change here these values if you know exactly what you're doing)" #~ msgstr "" #~ "(você pode mudar estes valores se souber exatamente o que está fazendo)" #~ msgid "" #~ "The wizard successfully configured the basic networking services of your " #~ "server." #~ msgstr "" #~ "O assistente configurou com sucesso os serviços básicos de rede em seu " #~ "servidor." #~ msgid "" #~ "The wizard collected the following parameters needed to configure your " #~ "network" #~ msgstr "" #~ "O assistente coletou os seguintes parâmetros necessários para configurar " #~ "sua rede" #~ msgid "" #~ "So, it's very probable that domain name and IP adresses for this local " #~ "network are DIFFERENT from the server \\qexternal\\q connection." #~ msgstr "" #~ "Assim, é muito provável que o Nome do Domínio e os Endereços de IP para a " #~ "rede local sejam DIFERENTES do servidor de conexões \\qexterno\\q " #~ msgid "" #~ "Here is your current value for the external gateway (value specified " #~ "during the initial installation). The device (network card or modem) " #~ "should be different from the one used for the internal network." #~ msgstr "" #~ "Aqui está o valor atual para o gateway externo (valor especificado " #~ "durante a instalação inicial). O dispositivo (placa de rede ou modem) " #~ "deve ser diferente do que é usado para sua rede interna" #~ msgid "" #~ "Network addresses are a list of four numbers smaller than 256, separated " #~ "by dots; the last number of the list must be zero." #~ msgstr "" #~ "Os endereços de rede são uma lista de quatro números menores que 256, " #~ "separada por pontos; o último número da lista deve ser zero. " #~ msgid "Computer Science Department, University of Wisconsin-Madison" #~ msgstr "Departamento de Informática, Universidade de Wisconsin-Madison, EUA" #~ msgid "Fukuoka university, Fukuoka, Japan" #~ msgstr "Universidade de Fukuoka, Fukuoka, Japão" #~ msgid "University of Manchester, Manchester, England" #~ msgstr "Universidade de Manchester, Manchester, Inglaterra" #~ msgid "Baylor College of Medicine, Houston, Tx" #~ msgstr "Baylor College of Medicine, Houston, Texas, EUA" #~ msgid "University of Adelaide, South Australia" #~ msgstr "Universidade de Adelaide, Sul da Austrália" #~ msgid "CISM, Lyon, France" #~ msgstr "CISM, Lyon, França" #~ msgid "Altea (Alicante/SPAIN)" #~ msgstr "Altea (Alicante/Espanha)" #~ msgid "Dept. Computer Science, Strathclyde University, Glasgow, Scotland" #~ msgstr "" #~ "Departamento de Informática, Universidade de Strathclyde, Glasgow, Escócia" #~ msgid "Scientific Center in Chernogolovka, Moscow region, Russia" #~ msgstr "Centro Científico em Chernogolovka, Moscou, Rússia" #~ msgid "Swiss Fed. Inst. of Technology" #~ msgstr "Swiss Fed. Inst. of Technology" #~ msgid "University of Oslo, Norway" #~ msgstr "Universidade de Oslo, Noruega" #~ msgid "Trinity College, Dublin, Ireland" #~ msgstr "Trinity College, Dublin, Irlanda" #~ msgid "Inet, Inc., Seoul, Korea" #~ msgstr "Inet, Inc., Seul, Coréia do Sul" #~ msgid "LAAS/CNRS, Toulouse, France" #~ msgstr "LAAS/CNRS, Toulouse, França" #~ msgid "CRIUC, Universite de Caen, France" #~ msgstr "CRIUC, Universidade de Caen, França" #~ msgid "Singapore" #~ msgstr "Singapura" #~ msgid "MIT Information Systems, Cambridge, MA" #~ msgstr "Sistema de Informação do MIT, Cambridge, Massachusets, EUA" #~ msgid "University of Regina, Regina, Saskatchewan, Canada" #~ msgstr "Universidade de Regina, Regina, Saskatchewan, Canadá" #~ msgid "National Research Council of Canada, Ottawa, Ontario, Canada" #~ msgstr "Conselho Nacional de Pesquisa do Canadá, Ottawa, Ontario, Canadá" #~ msgid "UNLV College of Engineering, Las Vegas, NV" #~ msgstr "UNLV College of Engineering, Las Vegas, Nevada, EUA" #~ msgid "CRI, Campus d'Orsay, Universite Paris Sud, France" #~ msgstr "CRI, Campus d'Orsay, Universite Paris Sud, França" #~ msgid "Penn State University, University Park, PA" #~ msgstr "Penn State University, University Park, PA, EUA" #~ msgid "University of Oklahoma, Norman, Oklahoma, USA" #~ msgstr "Universidade de Oklahoma, Norman, Oklahoma, EUA" #~ msgid "SCI, Universite de Limoges, France" #~ msgstr "SCI, Universidade de Limoges, França" #~ msgid "Canadian Meteorological Centre, Dorval, Quebec, Canada" #~ msgstr "Centro de Metereologia Canadense, Dorval, Quebec, Canadá" #~ msgid "WARNING" #~ msgstr "AVISO" #~ msgid "(please, choose servers in your geographical area)" #~ msgstr "" #~ "(por favor, escolha os servidores que estão localizados próximos a você)" #~ msgid "Loria, Nancy, France" #~ msgstr "Loria, Nancy, França" #~ msgid "Washington State University Tri-Cities, Richland, Wa" #~ msgstr "" #~ "Universidade Estadual de Washington Tri-Cities, Richland, Washington, EUA" #~ msgid "The Chinese University of Hong Kong" #~ msgstr "Universidade Chinesa de Hong Kong" #~ msgid "activate user module" #~ msgstr "Ativar módulo de usuário" #~ msgid "" #~ "To accept this value, and configure your server, click on \"Confirm\" or " #~ "use the Back button to correct them." #~ msgstr "" #~ "Para aceitar este valor e configurar seu servidor, clique em \"Confirmar" #~ "\" ou então use o botão Voltar para corrigi-lo" #~ msgid "" #~ "So, it's very probable that domain name and IP adresses for this local " #~ "network are DIFFERENT from the server \"external\" connection." #~ msgstr "" #~ "Assim, é muito provável que o Nome do Domínio e os Endereços de IP para a " #~ "rede local sejam DIFERENTES do servidor de conexões \"externo\" " #~ msgid "" #~ "Host names must be in the form \"host.domain.domaintype\"; if your server " #~ "will be an Internet server, the domain name should be the name registered " #~ "with your provider. If you will only have intranet any valid name is OK, " #~ "like \"company.net\"." #~ msgstr "" #~ "Os nomes dos domínios precisam estar no formato \"máquina.domínio." #~ "tipodedomínio\"; se seu servidor está conectado a um servidor de " #~ "Internet, o nome do domínio será um nome registrado com seu provedor. " #~ "Você somente terá acesso a intranet se tiver qualquer nome válido, " #~ "semelhante a \"compania.net\"." #~ msgid "Public directory:" #~ msgstr "Diretório público:"