summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/any.pm30
-rw-r--r--perl-install/detect_devices.pm7
-rw-r--r--perl-install/fs.pm2
-rw-r--r--perl-install/install_steps.pm7
4 files changed, 36 insertions, 10 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index cd08e5c80..00d53bec5 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -917,7 +917,7 @@ sub devfssymlinkf {
my ($if, $of, $prefix) = @_;
symlinkf($if, "$prefix/dev/$of");
- output_p("$prefix/etc/devfs/conf.d/$of",
+ output_p("$prefix/etc/devfs/conf.d/$of.conf",
"REGISTER ^$if\$ CFUNCTION GLOBAL symlink $if $of
UNREGISTER ^$if\$ CFUNCTION GLOBAL unlink $of
");
@@ -1077,4 +1077,32 @@ sub get_secure_level {
$ENV{SECURE_LEVEL};
}
+sub alloc_raw_device {
+ my ($prefix, $device) = @_;
+ my $used = 0;
+ my $raw_dev;
+ substInFile {
+ $used = max($used, $1) if m|^\s*/dev/raw/raw(\d+)|;
+ if (eof) {
+ $raw_dev = "raw/raw" . ($used + 1);
+ $_ .= "/dev/$raw_dev /dev/$device\n";
+ }
+ } "$prefix/etc/sysconfig/rawdevices";
+ $raw_dev;
+}
+
+sub config_dvd {
+ my ($prefix) = @_;
+ if (my @dvds = grep { detect_devices::isDvdDrive($_) } detect_devices::cdroms__faking_ide_scsi()) {
+ log::l("configuring DVD");
+ #- create /dev/dvd symlink
+ each_index {
+ devfssymlinkf($_->{device}, 'dvd' . ($::i ? $::i + 1 : ''), $prefix);
+ } @dvds;
+ if (my $raw_dev = alloc_raw_device($prefix, 'dvd')) {
+ devfssymlinkf($raw_dev, 'rdvd', $prefix);
+ }
+ }
+}
+
1;
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index 3dc9bdd39..6b172f8da 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -38,9 +38,10 @@ sub hds { grep { $_->{media_type} eq 'hd' && ($::isStandalone || !isRemo
sub cdroms { grep { $_->{media_type} eq 'cdrom' } get() }
sub burners { grep { isBurner($_) } cdroms() }
sub dvdroms { grep { isDvdDrive($_) } cdroms() }
-sub zips { grep { member($_->{media_type}, 'fd', 'hd') && isZipDrive($_) } get() }
+sub raw_zips { grep { member($_->{media_type}, 'fd', 'hd') && isZipDrive($_) } get() }
#-sub jazzs { grep { member($_->{media_type}, 'fd', 'hd') && isJazDrive($_) } get() }
sub ls120s { grep { member($_->{media_type}, 'fd', 'hd') && isLS120Drive($_) } get() }
+sub zips { map { $_->{device} .= 4; $_ } raw_zips() }
sub cdroms__faking_ide_scsi {
my @l = cdroms();
@@ -57,7 +58,7 @@ sub cdroms__faking_ide_scsi {
@l;
}
sub zips__faking_ide_scsi {
- my @l = zips();
+ my @l = raw_zips();
return @l if $::isStandalone;
if (my @l_ide = grep { $_->{interface_type} eq 'ide' } @l) {
require modules;
@@ -68,7 +69,7 @@ sub zips__faking_ide_scsi {
$e->{device} = "sd" . chr(ord('a') + $nb++);
}
}
- @l;
+ map { $_->{device} .= 4; $_ } @l;
}
sub floppies() {
diff --git a/perl-install/fs.pm b/perl-install/fs.pm
index 047e3b88e..6ae9239fa 100644
--- a/perl-install/fs.pm
+++ b/perl-install/fs.pm
@@ -446,7 +446,7 @@ sub get_raw_hds {
[
detect_devices::floppies(),
detect_devices::cdroms__faking_ide_scsi(),
- map { $_->{device} .= 4; $_ } detect_devices::zips__faking_ide_scsi(),
+ detect_devices::zips__faking_ide_scsi(),
];
get_major_minor(@{$all_hds->{raw_hds}});
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index 9156f49e2..f0973f5e6 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -414,10 +414,7 @@ Consoles 1,3,4,7 may also contain interesting information";
#- for mandrake_firstime
touch "$o->{prefix}/var/lock/TMP_1ST";
- #- create /dev/dvd symlink
- each_index {
- any::devfssymlinkf($_->{device}, 'dvd' . ($::i ? $::i + 1 : ''), $o->{prefix});
- } grep { detect_devices::isDvdDrive($_) } detect_devices::cdroms__faking_ide_scsi();
+ any::config_dvd($o->{prefix});
any::writeandclean_ldsoconf($o->{prefix});
@@ -782,7 +779,7 @@ sub setupBootloaderBefore {
my ($o) = @_;
require bootloader;
- if (my @l = (grep { $_->{interface_type} eq 'ide' } detect_devices::burners(), detect_devices::zips())) {
+ if (my @l = (grep { $_->{interface_type} eq 'ide' } detect_devices::burners(), detect_devices::raw_zips())) {
bootloader::add_append($o->{bootloader}, $_->{device}, 'ide-scsi') foreach @l;
}
if ($o->{miscellaneous}{HDPARM}) {