'255.255.255.224' => 27,
'255.255.255.240' => 28,
'255.255.255.248' => 29,
- '255.255.255.252' => 30
+ '255.255.255.252' => 30,
+ '255.255.255.254' => 31,
+ '255.255.255.255' => 32
};
my $ipv4_reverse_mask = [
if ($cmdline =~ m/minfree=(\d+(\.\d+)?)[\s\n]/i) {
$config_options->{minfree} = $1;
}
-
-if ($cmdline =~ m/maxvz=(\d+(\.\d+)?)[\s\n]/i) {
- $config_options->{maxvz} = $1;
+
+if ($setup->{product} eq 'pve') {
+ if ($cmdline =~ m/maxvz=(\d+(\.\d+)?)[\s\n]/i) {
+ $config_options->{maxvz} = $1;
+ }
}
my $postfix_main_cf = <<_EOD;
$progress->set_text (sprintf ("%d%%", int ($res*100)));
$progress_status->set_text ($text) if defined ($text);
+ display_info() if $res < 0.9;
+
Gtk3::main_iteration() while Gtk3::events_pending();
}
syscmd ("zfs create $zfspoolname/ROOT") == 0 ||
die "unable to create zfs $zfspoolname/ROOT volume\n";
-
- syscmd ("zfs create $zfspoolname/data") == 0 ||
- die "unable to create zfs $zfspoolname/data volume\n";
+
+ if ($setup->{product} eq 'pve') {
+ syscmd ("zfs create $zfspoolname/data") == 0 ||
+ die "unable to create zfs $zfspoolname/data volume\n";
+ }
syscmd ("zfs create $zfspoolname/ROOT/$zfsrootvolname") == 0 ||
die "unable to create zfs $zfspoolname/ROOT/$zfsrootvolname volume\n";
my $hdgb = int($os_size/(1024*1024));
my $space = (($hdgb > 128) ? 16 : ($hdgb/8))*1024*1024;
- my $maxroot;
- if ($config_options->{maxroot}) {
- $maxroot = $config_options->{maxroot};
- } else {
- $maxroot = 96;
- }
+ my $rootsize;
+ my $datasize;
+
+ if ($setup->{product} eq 'pve') {
+
+ my $maxroot;
+ if ($config_options->{maxroot}) {
+ $maxroot = $config_options->{maxroot};
+ } else {
+ $maxroot = 96;
+ }
- my $rootsize = (($hdgb > ($maxroot*4)) ? $maxroot : $hdgb/4)*1024*1024;
+ $rootsize = (($hdgb > ($maxroot*4)) ? $maxroot : $hdgb/4)*1024*1024;
- my $rest = $os_size - $swap_size - $rootsize; # in KB
+ my $rest = $os_size - $swap_size - $rootsize; # in KB
- my $minfree;
- if ($config_options->{minfree}) {
- $minfree = (($config_options->{minfree}*1024*1024) >= $rest ) ? $space :
- $config_options->{minfree}*1024*1024 ;
- } else {
- $minfree = $space;
- }
+ my $minfree;
+ if ($config_options->{minfree}) {
+ $minfree = (($config_options->{minfree}*1024*1024) >= $rest ) ? $space :
+ $config_options->{minfree}*1024*1024 ;
+ } else {
+ $minfree = $space;
+ }
+
+ $rest = $rest - $minfree;
+
+ if ($config_options->{maxvz}) {
+ $rest = (($config_options->{maxvz}*1024*1024) <= $rest) ?
+ $config_options->{maxvz}*1024*1024 : $rest;
+ }
- $rest = $rest - $minfree;
+ $datasize = $rest;
- if ($config_options->{maxvz}) {
- $rest = (($config_options->{maxvz}*1024*1024) <= $rest) ?
- $config_options->{maxvz}*1024*1024 : $rest;
+ } else {
+ my $minfree = $config_options->{minfree} ? $config_options->{minfree}*1024*1024 : $space;
+ $rootsize = $os_size - $minfree - $swap_size; # in KB
}
syscmd ("/sbin/lvcreate -L${swap_size}K -nswap $vgname") == 0 ||
syscmd ("/sbin/lvcreate -L${rootsize}K -nroot $vgname") == 0 ||
die "unable to create root volume\n";
- syscmd ("/sbin/lvcreate -L${rest}K -ndata $vgname") == 0 ||
- die "unable to create data volume\n";
+ if ($datasize) {
+ syscmd ("/sbin/lvcreate -L${datasize}K -ndata $vgname") == 0 ||
+ die "unable to create data volume\n";
- syscmd ("/sbin/lvconvert --yes --type thin-pool $vgname/data") == 0 ||
- die "unable to create data thin-pool\n";
+ syscmd ("/sbin/lvconvert --yes --type thin-pool $vgname/data") == 0 ||
+ die "unable to create data thin-pool\n";
+ } else {
+ $datadev = undef;
+ }
syscmd ("/sbin/vgchange -a y $vgname") == 0 ||
die "unable to activate volume group\n";
- return ($rootdev, $datadev, $swapfile);
+ return ($rootdev, $swapfile, $datadev);
}
sub compute_swapsize {
my $bootdevinfo = [];
- my $datadev;
my $swapfile;
my $rootdev;
osdev => $osdev, by_id => $by_id };
my $swap_size = compute_swapsize($os_size);
- ($rootdev, $datadev, $swapfile) =
+ ($rootdev, $swapfile) =
create_lvm_volumes($osdev, $os_size, $swap_size);
# trigger udev to create /dev/disk/by-uuid
}
}
- display_html ("extract2-rulesystem.htm");
update_progress (1, 0.05, $maxper, "extracting base system");
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size) = stat ($basefile);
syscmd ("mount -n -t sysfs sysfs $targetdir/sys") == 0 ||
die "unable to mount sysfs on $targetdir/sys\n";
- display_html ("extract3-spam.htm");
update_progress (1, $maxper, 0.5, "configuring base system");
# configure hosts
update_progress ((++$count)/$pkg_count, 0.5, 0.75);
}
- display_html ("extract4-virus.htm");
-
# needed for postfix postinst in case no other NIC is active
syscmd("chroot $targetdir ifup lo");
write_config ('', "$targetdir/var/lib/apt/extended_states");
# allow ssh root login
- syscmd ("sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/' '$targetdir/etc/ssh/sshd_config'");
+ syscmd(['sed', '-i', 's/^#\?PermitRootLogin.*/PermitRootLogin yes/', "$targetdir/etc/ssh/sshd_config"]);
if ($setup->{product} eq 'pmg') {
# install initial clamav DB
if ($setup->{product} eq 'pmg') {
# save admin email
- write_config ("#Unix Superuser\nroot:1:0::root:${mailto}:::\n",
- "$targetdir/etc/pmg/user.conf");
+ write_config ("section: admin\n\temail ${mailto}\n",
+ "$targetdir/etc/pmg/pmg.conf");
} elsif ($setup->{product} eq 'pve') {
die $err if $err;
}
+my $last_display_change = 0;
+
+my $display_info_counter = 0;
+
+my $display_info_items = [
+ "extract1-license.htm",
+ "extract2-rulesystem.htm",
+ "extract3-spam.htm",
+ "extract4-virus.htm",
+ ];
+
+sub display_info {
+
+ my $min_display_time = 15;
+
+ my $ctime = time();
+
+ return if ($ctime - $last_display_change) < $min_display_time;
+
+ my $page = $display_info_items->[$display_info_counter % scalar(@$display_info_items)];
+
+ $display_info_counter++;
+
+ display_html($page);
+}
+
sub display_html {
my ($filename) = @_;
}
$htmlview->load_html_string($data, $url);
+
+ $last_display_change = time();
}
sub set_next {
my $vbox = Gtk3::VBox->new (0, 0);
- my $image = Gtk3::Image->new_from_file ("${proxmox_libdir}/proxlogo.png");
+ my $logofn = "$setup->{product}-banner.png";
+ my $image = Gtk3::Image->new_from_file("${proxmox_libdir}/$logofn");
$vbox->pack_start ($image, 0, 0, 0);
my $hbox = Gtk3::HBox->new (0, 0);
$vbox->pack_start ($cmdbox, 0, 0, 10);
$next = Gtk3::Button->new ('_Next');
- $next->signal_connect (clicked => sub { &$next_fctn (); });
+ $next->signal_connect (clicked => sub { $last_display_change = 0; &$next_fctn (); });
$cmdbox->pack_end ($next, 0, 0, 10);
my $abort = Gtk3::Button->new ('_Abort');
$abort->set_can_focus (0);
push @$hdsize_labeled_widgets, "swapsize", $entry_swapsize;
my $entry_maxroot = Gtk3::Entry->new();
- $entry_maxroot->set_tooltip_text("maximum size (GB) for LVM root volume");
- $entry_maxroot->signal_connect (key_press_event => \&check_float);
- $entry_maxroot->set_text($config_options->{maxroot}) if $config_options->{maxroot};
- push @$hdsize_labeled_widgets, "maxroot", $entry_maxroot;
+ if ($setup->{product} eq 'pve') {
+ $entry_maxroot->set_tooltip_text("maximum size (GB) for LVM root volume");
+ $entry_maxroot->signal_connect (key_press_event => \&check_float);
+ $entry_maxroot->set_text($config_options->{maxroot}) if $config_options->{maxroot};
+ push @$hdsize_labeled_widgets, "maxroot", $entry_maxroot;
+ }
my $entry_minfree = Gtk3::Entry->new();
$entry_minfree->set_tooltip_text("minimum free LVM space (GB, required for LVM snapshots)");
$entry_minfree->set_text($config_options->{minfree}) if $config_options->{minfree};
push @$hdsize_labeled_widgets, "minfree", $entry_minfree;
- my $entry_maxvz = Gtk3::Entry->new();
- $entry_maxvz->set_tooltip_text("maximum size (GB) for LVM data volume");
- $entry_maxvz->signal_connect (key_press_event => \&check_float);
- $entry_maxvz->set_text($config_options->{maxvz}) if $config_options->{maxvz};
- push @$hdsize_labeled_widgets, "maxvz", $entry_maxvz;
+ my $entry_maxvz;
+ if ($setup->{product} eq 'pve') {
+ $entry_maxvz = Gtk3::Entry->new();
+ $entry_maxvz->set_tooltip_text("maximum size (GB) for LVM data volume");
+ $entry_maxvz->signal_connect (key_press_event => \&check_float);
+ $entry_maxvz->set_text($config_options->{maxvz}) if $config_options->{maxvz};
+ push @$hdsize_labeled_widgets, "maxvz", $entry_maxvz;
+ }
my $options_stack = Gtk3::Stack->new();
$options_stack->set_visible(1);
delete $config_options->{minfree};
}
- if (defined($tmp = &$get_float($entry_maxvz))) {
+ if ($entry_maxvz && defined($tmp = &$get_float($entry_maxvz))) {
$config_options->{maxvz} = $tmp;
} else {
delete $config_options->{maxvz};
cleanup_view ();
- display_html ("extract1-license.htm");
+ display_info();
+
$next->set_sensitive (0);
my $vbox = Gtk3::VBox->new (0, 0);