summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/Makefile3
-rw-r--r--perl-install/Xconfigurator.pm2
-rw-r--r--perl-install/common.pm8
-rw-r--r--perl-install/detect_devices.pm14
-rw-r--r--perl-install/install2.pm17
-rw-r--r--perl-install/install_any.pm2
-rw-r--r--perl-install/install_interactive.pm12
-rw-r--r--perl-install/install_steps_gtk.pm6
-rw-r--r--perl-install/install_steps_interactive.pm2
-rw-r--r--perl-install/modules.pm37
-rw-r--r--perl-install/mouse.pm3
11 files changed, 75 insertions, 31 deletions
diff --git a/perl-install/Makefile b/perl-install/Makefile
index 3a36bcb82..797f93dc0 100644
--- a/perl-install/Makefile
+++ b/perl-install/Makefile
@@ -140,7 +140,8 @@ endif
# chmod a+x $(DEST)/usr/bin/runinstall2
ifeq (i386,$(ARCH))
- tar xyC $(DEST) -f ../install/install1_pcmcia.$(ARCH).tar.bz2 ./etc/pcmcia
+ cp -a /etc/pcmcia $(DEST)/etc
+ patch -p0 -d $(DEST)/etc < ../install/pcmcia_config.patch
endif
find $(DEST) -name CVS | xargs rm -rf
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
index 600689918..a4e69b8fc 100644
--- a/perl-install/Xconfigurator.pm
+++ b/perl-install/Xconfigurator.pm
@@ -1121,7 +1121,7 @@ Would you like X to start when you reboot?"), 1);
$in->ask_from_entries_refH(_("Autologin"),
_("I can set up your computer to automatically log on one user.
If you don't want to use this feature, click on the cancel button."),
- [ _("Choose the default user:") => { val => \$o->{autologin}, list => \@users },
+ [ _("Choose the default user:") => { val => \$o->{autologin}, list => [ '', @users ] },
_("Choose the window_manager to run:") => { val => \$o->{desktop}, list => \@wm }, ]) or delete $o->{autologin};
}
if ($o->{autologin}) {
diff --git a/perl-install/common.pm b/perl-install/common.pm
index ac64fe54a..a6849e63f 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -430,7 +430,6 @@ sub setVarsInSh {
my ($file, $l, @fields) = @_;
@fields = keys %$l unless @fields;
-#- my $b = 1; $b &&= $l->{$_} foreach @fields; $b or return;
local *F;
open F, "> $_[0]" or die "cannot create config file $file";
$l->{$_} and print F "$_=$l->{$_}\n" foreach @fields;
@@ -439,7 +438,6 @@ sub setVarsInCsh {
my ($file, $l, @fields) = @_;
@fields = keys %$l unless @fields;
-#- my $b = 1; $b &&= $l->{$_} foreach @fields; $b or return;
local *F;
open F, "> $_[0]" or die "cannot create config file $file";
$l->{$_} and print F "setenv $_ $l->{$_}\n" foreach @fields;
@@ -589,7 +587,11 @@ sub removeXiBSuffix($) {
sub formatTime($) {
my ($s, $m, $h) = gmtime($_[0]);
- sprintf "%02d:%02d:%02d", $h, $m, $s;
+ if ($h) {
+ sprintf "%02d:%02d", $h, $m;
+ } else {
+ sprintf _("%d minutes"), $m;
+ }
}
#- return the size of the partition and its free space in KiB
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index adc701a81..6bcf38ac6 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -228,6 +228,20 @@ sub syslog {
`dmesg`;
}
+sub hasUsb {
+ my ($class, $prot) = @_;
+ foreach (cat_("/proc/bus/usb/devices")) {
+ if (/^P/ .. /^I/) {
+ my ($c, $p) = /Cls=(\d+).*Prot=(\d+)/;
+ $c == $class && ($prot < 0 || $prot == $p) and log::l("found usb $c $p"), return 1;
+ }
+ }
+ 0;
+}
+sub hasUsbKeyboard { hasUsb(3, 1) }
+sub hasUsbMouse { hasUsb(3, 2) }
+sub hasUsbZip { hasUsb(8, -1) }
+
sub hasSMP { c::detectSMP() }
sub hasUltra66 {
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index 2b8e1c441..81f75436f 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -356,13 +356,13 @@ sub miscellaneous {
TYPE => $o->{installClass},
SECURITY => $o->{security},
});
-
+
my $f = "$o->{prefix}/etc/sysconfig/usb";
- my %usb = getVarsFromSh($f);
- $usb{MOUSE} = $o->{mouse}{device} eq "usbmouse" && "yes";
- $usb{KEYBOARD} = (int grep { /^keybdev\.c: Adding keyboard/ } detect_devices::syslog()) && "yes";
- $usb{ZIP} = bool2yesno(-d "/proc/scsi/usb");
- setVarsInSh($f, \%usb);
+ output $f,
+"MOUSE=
+KEYBOARD=
+ZIP=
+" if modules::get_alias("usb-interface") && ! -e $f;
install_any::fsck_option($o);
} 'installPackages';
@@ -518,6 +518,7 @@ sub main {
live => sub { $::live = 1 },
noauto => sub { $::noauto = 1 },
test => sub { $::testing = 1 },
+ nopci => sub { $::nopci = 1 },
patch => sub { $patch = 1 },
defcfg => sub { $cfg = $v },
newt => sub { $o->{interactive} = "newt" },
@@ -616,7 +617,7 @@ sub main {
} modules::get_that_type('sound');
#- needed very early for install_steps_gtk
- modules::load_thiskind("usb");
+ modules::load_thiskind("usb");
eval { ($o->{mouse}, $o->{wacom}) = mouse::detect() } unless $o->{nomouseprobe} || $o->{mouse};
lang::set($o->{lang}); #- mainly for defcfg
@@ -694,7 +695,7 @@ sub main {
modules::write_conf($o->{prefix});
#- to ensure linuxconf doesn't cry against those files being in the future
- foreach ('/etc/conf.modules', '/etc/crontab', '/etc/sysconfig/mouse', '/etc/X11/fs/config') {
+ foreach ('/etc/modules.conf', '/etc/crontab', '/etc/sysconfig/mouse', '/etc/sysconfig/network', '/etc/X11/fs/config') {
my $now = time - 24 * 60 * 60;
utime $now, $now, "$o->{prefix}/$_";
}
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 934cea259..9d40d98b7 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -634,7 +634,7 @@ sub suggest_mount_points {
$part->{mntpoint} = $mnt; delete $part->{unsafeMntpoint};
#- try to find other mount points via fstab
- fs::get_mntpoints_from_fstab(\@parts, $d, $uniq) if $mnt eq '/';
+ fs::get_mntpoints_from_fstab([ fsedit::get_fstab(@$hds) ], $d, $uniq) if $mnt eq '/';
}
#- $_->{mntpoint} || fsedit::suggest_part($_, $hds) foreach @parts;
diff --git a/perl-install/install_interactive.pm b/perl-install/install_interactive.pm
index 8b6bf9f92..2fa917564 100644
--- a/perl-install/install_interactive.pm
+++ b/perl-install/install_interactive.pm
@@ -17,12 +17,20 @@ use devices;
use modules;
+sub tellAboutProprietaryModules {
+ my ($o);
+ my @l = grep {$_} map { $_->{driver} =~ /^Bad:(.*)/ && $1 } detect_devices::probeall();
+ $o->ask_warn('',
+_("Some hardware on your computer needs ``proprietary'' drivers to work.
+You can find some information about them at: %s"), join(", ", @l)) if @l;
+}
+
sub partition_with_diskdrake {
my ($o, $hds, $nowizard) = @_;
- my $ok = 1;
+ my $ok;
do {
+ $ok = 1;
diskdrake::main($hds, $o->{raid}, interactive_gtk->new, $o->{partitions}, $nowizard);
- log::l("diskdrake done");
delete $o->{wizard} and return partitionWizard($o, 'nodiskdrake');
my @fstab = fsedit::get_fstab(@$hds);
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index d5727f273..bf3c76fc7 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -60,6 +60,10 @@ sub new($$) {
devices::make("/dev/kbd");
if ($ENV{DISPLAY} eq ":0") {
+ local (*T1, *T2);
+ open T1, ">/dev/tty5";
+ open T2, ">/dev/tty6";
+
my $launchX = sub {
my $ok = 1;
local $SIG{CHLD} = sub { $ok = 0 if waitpid(-1, c::WNOHANG()) > 0 };
@@ -512,7 +516,7 @@ sub installPackages {
my $total_time = $ratio ? $dtime / $ratio : time();
$progress_total->update($ratio);
- if ($dtime != $last_dtime && $current_total_size > 2 * 1024 * 1024) {
+ if ($dtime != $last_dtime && $current_total_size > 10 * 1024 * 1024) {
$msg_time_total->set(formatTime(10 * round($total_time / 10)));
$msg_time_remaining->set(formatTime(10 * round(max($total_time - $dtime, 0) / 10)));
$last_dtime = $dtime;
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
index 9795de2d8..4b7943bcd 100644
--- a/perl-install/install_steps_interactive.pm
+++ b/perl-install/install_steps_interactive.pm
@@ -795,6 +795,8 @@ sub miscellaneous {
exists $u->{LAPTOP} or $u->{LAPTOP} = 1;
my $s = $o->{security};
+ install_interactive::tellAboutProprietaryModules($o) unless $clicked;
+
add2hash_ $o, { useSupermount => $s < 4 && arch() !~ /^sparc/ };
$s = $l{$s} || $s;
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index 51b51d4f7..7a1e0e203 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -82,6 +82,7 @@ arch() =~ /^sparc/ ? (
"sb1000" => "sb1000",
"sbni" => "sbni",
"sis900" => "sis900",
+ "sk98lin" => "Syskonnect (Schneider & Koch)|Gigabit Ethernet",
),
"3c59x" => "3com 3c59x (Vortex)",
"de4x5" => "Digital 425,434,435,450,500",
@@ -191,7 +192,6 @@ arch() !~ /^sparc|alpha/ ? (
}],
[ 'sound', {
arch() !~ /^sparc/ ? (
- "alsa" => "ALSA sound module, many sound cards",
"cmpci" => "C-Media Electronics CMI8338A CMI8338B CMI8738",
"es1370" => "Ensoniq ES1370 [AudioPCI]",
"es1371" => "Ensoniq ES1371 [AudioPCI-97]",
@@ -201,6 +201,18 @@ arch() !~ /^sparc/ ? (
"pas16" => "Pro Audio Spectrum/Studio 16",
"via82cxxx" => "VIA VT82C686_5",
"sonicvibes" => "S3 SonicVibes",
+ "snd-card-ice1712" => "IC Ensemble Inc|ICE1712 [Envy24]",
+ "emu10k1" => "Creative Labs|SB Live! (audio)",
+# "au8820" => "Aureal Semiconductor|Vortex 1",
+# "au8830" => "Aureal Semiconductor|Vortex 2",
+ "snd-card-ymfpci" => "Yamaha Corporation|YMF-740",
+ "snd-card-trident" => "Silicon Integrated Systems [SiS]|7018 PCI Audio",
+ "snd-card-cs461x" => "Cirrus Logic|CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]",
+ "snd-card-via686a" => "VIA Technologies|VT82C686 [Apollo Super AC97/Audio]",
+ "snd-card-es1938" => "ESS Technology|ES1969 Solo-1 Audiodrive",
+ "snd-card-rme96" => "Xilinx, Inc.|RME Digi96<>Xilinx, Inc.",
+ "snd-card-intel8x0" => "Intel Corporation|82440MX AC'97 Audio Controller<>Intel Corporation",
+ "snd-card-fm801" => "Fortemedia, Inc|Xwave QS3000A [FM801]<>Fortemedia, Inc|FM801 PCI Audio",
) : (),
}],
[ 'pcmcia', {
@@ -292,9 +304,6 @@ arch() !~ /^sparc/ ? (
"fat" => "fat",
"msdos" => "msdos",
"romfs" => "romfs",
- "sysv" => "sysv",
- "ufs" => "ufs",
- "umsdos" => "umsdos",
"vfat" => "vfat",
}],
[ 'other', {
@@ -306,6 +315,10 @@ arch() !~ /^sparc/ ? (
"ide-floppy" => "ide-floppy",
"ide-tape" => "ide-tape",
"nbd" => "nbd",
+ "bttv" => "Brooktree Corporation|Bt8xx Video Capture",
+ "buz" => "Zoran Corporation|ZR36057PQC Video cutting chipset",
+ "rrunner" => "Essential Communications|Roadrunner serial HIPPI",
+ "defxx" => "DEC|DEFPA"
#- "ide-probe-mod" => "ide-probe-mod",
}],
);
@@ -398,11 +411,8 @@ sub load {
eval { load($_, 'prereq') } foreach @{$deps{$name}};
load_raw([ $name, @options ]);
}
- if ($name eq "usb-storage") {
- sleep(2);
- -d "/proc/scsi/usb" or return;
- $conf{"usb-storage"}{"post-install"} = "modprobe usbkbd; modprobe keybdev";
- }
+ sleep 2 if $name =~ /usb-storage|mousedev/;
+
when_load($name, $type, @options);
}
sub load_multi {
@@ -454,8 +464,11 @@ sub load_raw {
}
} elsif ($_->[0] =~ /usb-[uo]hci/) {
add_alias('usb-interface', $_->[0]);
+ my $d = '/proc/bus/usb';
+ syscall_('mount', $d, $d, my $t= 'usbdevfs', my $f = c::MS_MGC_VAL(), my $fl = '') or die;
#- ensure keyboard is working, the kernel must do the job the BIOS was doing
- load_multi("usbkbd", "keybdev");
+ sleep 2;
+ load_multi("usbkbd", "keybdev") if detect_devices::hasUsbKeyboard();
}
}
}
@@ -553,8 +566,8 @@ sub load_thiskind {
!($@ && $_->{try});
} get_that_type($type, $pcic),
$type =~ /scsi/ && arch() !~ /sparc/ ?
- (map { +{ driver => $_, description => $_, try => 1 } }
- get_alias("usb-interface") ? "usb-storage" : (), "imm", "ppa") : ();
+ (map { +{ driver => $_, description => $_, try => 1 } }
+ detect_devices::hasUsbZip() ? "usb-storage" : (), "imm", "ppa") : ();
}
sub get_that_type {
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
index af0a35a79..2382f9f1e 100644
--- a/perl-install/mouse.pm
+++ b/perl-install/mouse.pm
@@ -172,11 +172,10 @@ sub detect() {
eval { commands::modprobe("serial") };
my ($r, $wacom) = mouseconfig(); return ($r, $wacom) if $r;
- if (modules::get_alias("usb-interface")) {
+ if (modules::get_alias("usb-interface") && detect_devices::hasUsbMouse()) {
eval {
modules::load("usbmouse");
modules::load("mousedev");
- sleep(2);
};
if (!$@ && detect_devices::tryOpen("usbmouse")) {
$wacom or modules::unload("serial");