add autosetupprintqueues
1 files changed, 1 insertions, 1 deletions
@@ -4,7 +4,7 @@ SUDO = sudo SO_FILES = c/blib/arch/auto/c/c.so PMS_DIRS = Newt Xconfig c xf86misc diskdrake harddrake interactive modules network partition_table printer resize_fat sbus_probing security fs PMS = *.pm $(PMS_DIRS:%=%/*.pm) commands install2 -STANDALONEPMS_ = XFdrake adduserdrake diskdrake drakTermServ drakautoinst drakauth drakbackup drakboot drakbug drakbug_report drakclock drakconnect drakedm drakfirewall drakfloppy drakfont drakgw drakhelp drakperm drakproxy drakpxe drakroam draksec draksound draksplash drakupdate_fstab drakups drakvpn drakxservices drakxtv fileshareset harddrake2 keyboarddrake localedrake logdrake lsnetdrake mousedrake net_applet net_monitor printerdrake scannerdrake service_harddrake service_harddrake_confirm bootloader-config +STANDALONEPMS_ = XFdrake adduserdrake autosetupprintqueues diskdrake drakTermServ drakautoinst drakauth drakbackup drakboot drakbug drakbug_report drakclock drakconnect drakedm drakfirewall drakfloppy drakfont drakgw drakhelp drakperm drakproxy drakpxe drakroam draksec draksound draksplash drakupdate_fstab drakups drakvpn drakxservices drakxtv fileshareset harddrake2 keyboarddrake localedrake logdrake lsnetdrake mousedrake net_applet net_monitor printerdrake scannerdrake service_harddrake service_harddrake_confirm bootloader-config STANDALONEPMS = $(STANDALONEPMS_:%=standalone/%) ALLPMS = $(PMS) $(STANDALONEPMS) share/advertising/*.pl share/compssUsers.pl* |
82' href='#n182'>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
package fs;
use diagnostics;
use strict;
use common qw(:common :file :system :functional);
use log;
use devices;
use partition_table qw(:types);
use run_program;
use nfs;
use swap;
use detect_devices;
use commands;
use modules;
1;
sub read_fstab($) {
my ($file) = @_;
local *F;
open F, $file or return;
map {
my ($dev, @l) = split;
$dev =~ s,/(tmp|dev)/,,;
{ device => $dev, mntpoint => $l[0], type => $l[1], options => $l[2] }
} <F>;
}
sub check_mounted($) {
my ($fstab) = @_;
local (*F, *G, *H);
open F, "/etc/mtab";
open G, "/proc/mounts";
open H, "/proc/swaps";
foreach (<F>, <G>, <H>) {
foreach my $p (@$fstab) {
/$p->{device}\s+([^\s]*)\s+/ and $p->{realMntpoint} = $1, $p->{isMounted} = $p->{isFormatted} = 1;
}
}
}
sub get_mntpoints_from_fstab($) {
my ($fstab) = @_;
foreach (read_fstab('/etc/fstab')) {
foreach my $p (@$fstab) {
$p->{device} eq $_->{device} or next;
$p->{mntpoint} ||= $_->{mntpoint};
$p->{options} ||= $_->{options};
$_->{type} ne 'auto' && $_->{type} ne type2fs($p->{type}) and
log::l("err, fstab and partition table do not agree for $_->{device} type: " . (type2fs($p->{type}) || type2name($p->{type})) . " vs $_->{type}");
}
}
}
#- mke2fs -b (1024|2048|4096) -c -i(1024 > 262144) -N (1 > 100000000) -m (0-100%) -L volume-label
#- tune2fs
sub format_ext2($@) {
my ($dev, @options) = @_;
$dev =~ m,(rd|ida)/, and push @options, qw(-b 4096 -R stride=16); #- For RAID only.
run_program::run("mke2fs", devices::make($dev), @options) or die _("%s formatting of %s failed", "ext2", $dev);
}
sub format_dos($@) {
my ($dev, @options) = @_;
run_program::run("mkdosfs", devices::make($dev), @options) or die _("%s formatting of %s failed", "dos", $dev);
}
sub format_part($;$@) {
my ($part, @options) = @_;
$part->{isFormatted} and return;
log::l("formatting device $part->{device} (type ", type2name($part->{type}), ")");
if (isExt2($part)) {
format_ext2($part->{device}, @options);
} elsif (isDos($part)) {
format_dos($part->{device}, @options);
} elsif (isWin($part)) {
format_dos($part->{device}, @options, '-F', 32);
} elsif (isSwap($part)) {
my $check_blocks = grep { /^-c$/ } @options;
swap::make($part->{device}, $check_blocks);
} else {
die _("don't know how to format %s in type %s", $_->{device}, type2name($_->{type}));
}
$part->{isFormatted} = 1;
}
sub mount($$$;$) {
my ($dev, $where, $fs, $rdonly) = @_;
log::l("mounting $dev on $where as type $fs");
-d $where or commands::mkdir_('-p', $where);
if ($fs eq 'nfs') {
log::l("calling nfs::mount($dev, $where)");
nfs::mount($dev, $where) or die _("nfs mount failed");
} elsif ($fs eq 'smb') {
die "no smb yet...";
} else {
$dev = devices::make($dev) if $fs ne 'proc';
my $flag = 0;#c::MS_MGC_VAL();
$flag |= c::MS_RDONLY() if $rdonly;
my $mount_opt = "";
if ($fs eq 'vfat') {
$mount_opt = "check=relaxed";
eval { modules::load('vfat') }; #- try using vfat
eval { modules::load('msdos') } if $@; #- otherwise msdos...
}
log::l("calling mount($dev, $where, $fs, $flag, $mount_opt)");
syscall_('mount', $dev, $where, $fs, $flag, $mount_opt) or die _("mount failed: ") . "$!";
}
local *F;
open F, ">>/etc/mtab" or return; #- fail silently, must be read-only /etc
print F "$dev $where $fs defaults 0 0\n";
}
#- takes the mount point to umount (can also be the device)
sub umount($) {
my ($mntpoint) = @_;
log::l("calling umount($mntpoint)");
syscall_('umount', $mntpoint) or die _("error unmounting %s: %s", $mntpoint, "$!");
my @mtab = cat_('/etc/mtab'); #- don't care about error, if we can't read, we won't manage to write... (and mess mtab)
local *F;
open F, ">/etc/mtab" or return;
foreach (@mtab) { print F $_ unless /(^|\s)$mntpoint\s/; }
}
sub mount_part($;$$) {
my ($part, $prefix, $rdonly) = @_;
$part->{isMounted} and return;
if (isSwap($part)) {
swap::swapon($part->{device});
} else {
$part->{mntpoint} or die "missing mount point";
mount(devices::make($part->{device}), ($prefix || '') . $part->{mntpoint}, type2fs($part->{type}), $rdonly);
}
$part->{isMounted} = $part->{isFormatted} = 1; #- assume that if mount works, partition is formatted
}
sub umount_part($;$) {
my ($part, $prefix) = @_;
$part->{isMounted} or return;
isSwap($part) ?
swap::swapoff($part->{device}) :
umount(($prefix || '') . ($part->{mntpoint} || devices::make($part->{device})));
$part->{isMounted} = 0;
}
sub mount_all($;$) {
my ($fstab, $prefix) = @_;
log::l("mounting all filesystems");
#- order mount by alphabetical ordre, that way / < /home < /home/httpd...
foreach (sort { ($a->{mntpoint} || '') cmp ($b->{mntpoint} || '') } @$fstab) {
mount_part($_, $prefix) if $_->{mntpoint};
}
}
sub umount_all($;$) {
my ($fstab, $prefix) = @_;
log::l("unmounting all filesystems");
foreach (sort { $b->{mntpoint} cmp $a->{mntpoint} } @$fstab) {
$_->{mntpoint} and umount_part($_, $prefix);
}
}
#- do some stuff before calling write_fstab
sub write($$) {
my ($prefix, $fstab) = @_;
log::l("resetting /etc/mtab");
local *F;
open F, "> $prefix/etc/mtab" or die "error resetting $prefix/etc/mtab";
my @to_add = (
[ split ' ', '/dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev,unhide 0 0' ],
[ split ' ', 'none /proc proc defaults 0 0' ],
[ split ' ', 'none /dev/pts devpts mode=0620 0 0' ],
(map_index {
my $i = $::i ? $::i + 1 : '';
mkdir "$prefix/mnt/cdrom$i", 0755 or log::l("failed to mkdir $prefix/mnt/cdrom$i: $!");
symlinkf $_->{device}, "$prefix/dev/cdrom$i" or log::l("failed to symlink $prefix/dev/cdrom$i: $!");
[ "/dev/cdrom$i", "/mnt/cdrom$i", "auto", "user,noauto,nosuid,exec,nodev,ro", 0, 0 ];
} detect_devices::cdroms()),
(map_index { #- for zip drives, the right partition is the 4th.
my $i = $::i ? $::i + 1 : '';
mkdir "$prefix/mnt/zip$i", 0755 or log::l("failed to mkdir $prefix/mnt/zip$i: $!");
symlinkf "$_->{device}4", "$prefix/dev/zip$i" or log::l("failed to symlink $prefix/dev/zip$i: $!");