summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdk-stage1/probing.c3
-rw-r--r--perl-install/fs.pm9
-rw-r--r--perl-install/install2.pm2
-rw-r--r--perl-install/modules.pm2
4 files changed, 12 insertions, 4 deletions
diff --git a/mdk-stage1/probing.c b/mdk-stage1/probing.c
index 37e55b542..7c67fdfb9 100644
--- a/mdk-stage1/probing.c
+++ b/mdk-stage1/probing.c
@@ -323,7 +323,8 @@ void probe_that_type(enum driver_type type, enum media_bus bus __attribute__ ((u
if (!already_mounted_usbdev) {
already_mounted_usbdev = 1;
- if (mount("/proc/bus/usb", "/proc/bus/usb", "usbdevfs", 0, NULL)) {
+ if (mount("none", "/proc/bus/usb", "usbfs", 0, NULL) &&
+ mount("none", "/proc/bus/usb", "usbdevfs", 0, NULL)) {
log_message("USB: couldn't mount /proc/bus/usb");
goto end_usb_probe;
}
diff --git a/perl-install/fs.pm b/perl-install/fs.pm
index 8cdead039..3f4020946 100644
--- a/perl-install/fs.pm
+++ b/perl-install/fs.pm
@@ -487,7 +487,7 @@ sub mount {
$o_wait_message->(N("Mounting partition %s", $dev)) if $o_wait_message;
system('mount', '-t', $fs, $dev, $where, if_($o_options, '-o', $o_options)) == 0 or die N("mounting partition %s in directory %s failed", $dev, $where);
} else {
- my @types = ('ext2', 'proc', 'sysfs', 'usbdevfs', 'iso9660', 'devfs', 'devpts', @fs_modules);
+ my @types = ('ext2', 'proc', 'sysfs', 'usbfs', 'usbdevfs', 'iso9660', 'devfs', 'devpts', @fs_modules);
member($fs, @types) or log::l("skipping mounting $dev partition ($fs)"), return;
@@ -666,4 +666,11 @@ sub df {
$part->{free};
}
+sub mount_usbfs {
+ my ($prefix) = @_;
+
+ my $fs = cat_('/proc/filesystems') =~ /usbfs/ ? 'usbfs' : 'usbdevfs';
+ mount('none', "$prefix/proc/bus/usb", $fs);
+}
+
1;
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index 075e5fc66..5c916e5bd 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -186,8 +186,8 @@ sub formatPartitions {
chmod 0666, "$o->{prefix}/dev/null";
eval { fs::mount('none', "$o->{prefix}/proc", 'proc') };
- eval { fs::mount('none', "$o->{prefix}/proc/bus/usb", 'usbdevfs') };
eval { fs::mount('none', "$o->{prefix}/sys", 'sysfs') };
+ eval { fs::mount_usbfs($o->{prefix}) };
install_any::screenshot_dir__and_move();
install_any::move_clp_to_disk();
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index c21405013..8622b11f7 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -249,7 +249,7 @@ sub when_load_category {
} elsif ($category eq 'bus/usb') {
$conf->add_probeall('usb-interface', $name);
-f '/proc/bus/usb/devices' or eval {
- require fs; fs::mount('none', '/proc/bus/usb', 'usbdevfs');
+ require fs; fs::mount_usbfs('');
#- ensure keyboard is working, the kernel must do the job the BIOS was doing
sleep 4;
load("usbkbd", "keybdev") if detect_devices::usbKeyboards();