]> git.proxmox.com Git - pve-installer.git/blobdiff - proxinstall
do not use last MB of disk (newer parted version needs that)
[pve-installer.git] / proxinstall
index 9272791dd81cccf4d60d49f8f9576df025ec0e0b..9b29a923c78afbaecb8a7916f5f3b435aa1ac46e 100755 (executable)
@@ -651,7 +651,7 @@ sub partition_bootable_disk {
     my $mkpart = sub {
        my ($fstype, $size) = @_;
        $pnum++;
-       my $end = defined($size) ? $cpos + $size : $hdsize_mb;
+       my $end = defined($size) ? $cpos + $size : ($hdsize_mb - 1);
        if ($fstype)  {
            push @$pcmd, 'mkpart', 'primary', $fstype, $cpos, $end;
        } else {
@@ -1131,9 +1131,6 @@ _EOD
 
        unlink  "$targetdir/proxmox_install_mode";
 
-       # disable bacula-fd
-       syscmd ("touch '$targetdir/etc/bacula/do_not_run'");
-
        # set timezone
        unlink ("$targetdir/etc/localtime");
        symlink ("/usr/share/zoneinfo/$timezone", "$targetdir/etc/localtime");
@@ -1696,7 +1693,7 @@ sub update_zonelist {
        $sel = $timezone; # used once to select default
     }
 
-    my $cb = $lastzonecb = Gtk3::ComboBoxText->new_with_entry();
+    my $cb = $lastzonecb = Gtk3::ComboBoxText->new();
     $cb->set_size_request (200, -1);
 
     $cb->signal_connect ('changed' => sub {
@@ -1840,7 +1837,7 @@ sub create_country_view {
     $label->set_alignment (1, 0.5);
     $hbox3->pack_start ($label, 0, 0, 10);
 
-    my $kmapcb = Gtk3::ComboBoxText->new_with_entry ();
+    my $kmapcb = Gtk3::ComboBoxText->new();
     $kmapcb->set_size_request (200, -1);
     foreach my $layout (sort keys %{$cmap->{kmaphash}}) {
        $kmapcb->append_text ($layout);
@@ -1993,7 +1990,7 @@ sub create_hdoption_view {
     $label0->set_alignment (1, 0.5);
     $grid->attach($label0, 0, $row, 1, 1);
    
-    my $fstypecb = Gtk3::ComboBoxText->new_with_entry ();
+    my $fstypecb = Gtk3::ComboBoxText->new();
 
     my $fstype = ['ext3', 'ext4', 'zfs (RAID0)', 'zfs (RAID1)', 
                  'zfs (RAID10)', 'zfs (RAIDZ-1)', 
@@ -2019,29 +2016,29 @@ sub create_hdoption_view {
        $disk_label[$i] = Gtk3::Label->new ("Hardisk $i");
        $disk_label[$i]->set_alignment (1, 0.5);
        $grid->attach($disk_label[$i], 0, $row, 1, 1);
-       $disk_selector[$i] = Gtk3::ComboBoxText->new_with_entry();
-       my $e = $disk_selector[$i]->get_child();
-       $e->set_width_chars(40);
-       foreach my $hd (@$hds) {
+       $disk_selector[$i] = Gtk3::ComboBoxText->new();
+       $disk_selector[$i]->append_text("-- do not use --");
+       $disk_selector[$i]->set_active(0);
+       foreach my $hd (@$hds) {
            my ($disk, $devname, $size, $model) = @$hd;
-           $disk_selector[$i]->append_text (get_device_desc ($devname, $size, $model));
+           $disk_selector[$i]->append_text(get_device_desc ($devname, $size, $model));
            $disk_selector[$i]->{pve_disk_id} = $i;
            $disk_selector[$i]->signal_connect (changed => sub {
                my $w = shift;
                my $diskid = $w->{pve_disk_id};
-               my $a = $w->get_active;
+               my $a = $w->get_active - 1;
                $config_options->{"disksel${diskid}"} = ($a >= 0) ? $hds->[$a] : undef;
            });
        }
 
        if ($hdopion_first_setup) {
-           $disk_selector[$i]->set_active ($i) if $hds->[$i];
+           $disk_selector[$i]->set_active ($i+1) if $hds->[$i];
        } else {
            my $hdind = 0;
            if (my $cur_hd = $config_options->{"disksel$i"}) {
                foreach my $hd (@$hds) {
                    if (@$hd[1] eq @$cur_hd[1]) {
-                       $disk_selector[$i]->set_active($hdind);
+                       $disk_selector[$i]->set_active($hdind+1);
                        last;
                    }
                    $hdind++;
@@ -2224,7 +2221,8 @@ sub get_zfs_raid_setup {
        }
     }
 
-    die "$filesys need at least one device\n" if scalar(@$devlist) < 1;
+    my $diskcount = scalar(@$devlist);
+    die "$filesys need at least one device\n" if $diskcount < 1;
 
     my $cmd= '';
     if ($filesys eq 'zfs (RAID0)') {
@@ -2233,22 +2231,26 @@ sub get_zfs_raid_setup {
            $cmd .= " @$hd[1]";
        }
     } elsif ($filesys eq 'zfs (RAID1)') {
+       die "zfs (RAID1) need at least 2 device\n" if $diskcount < 2;
        $cmd .= ' mirror ';
-       foreach my $hd (@$devlist) {
+       my $hd = @$devlist[0];
+       my $expected_size = @$hd[2]; # all disks needs same size
+       foreach $hd (@$devlist) {
+           die "mirrored disks must have same size\n" if @$hd[2] != $expected_size;
            $cmd .= " @$hd[1]";
            push @$bootdevlist, $hd;
        }
     } elsif ($filesys eq 'zfs (RAID10)') {
-       my $count = scalar(@$devlist);
-       my $half = int($count/2);
-       die "zfs (RAID10) need at least 2 device\n" if $count < 2;
-       die "zfs (RAID10) need at an even numver of devices\n" if $half*2 != $count;
+       my $half = int($diskcount/2);
+       die "zfs (RAID10) need at least 4 device\n" if $diskcount < 4;
+       die "zfs (RAID10) need at an even numver of devices\n" if $half*2 != $diskcount;
        
        push @$bootdevlist, @$devlist[0], @$devlist[1];
 
-       for (my $i = 0; $i < $count; $i+=2) {
+       for (my $i = 0; $i < $diskcount; $i+=2) {
            my $hd1 = @$devlist[$i];
            my $hd2 = @$devlist[$i+1];
+           die "mirrored disks must have same size\n" if @$hd1[2] != @$hd2[2];
            $cmd .= ' mirror ' . @$hd1[1] . ' ' . @$hd2[1];
        }
 
@@ -2256,8 +2258,11 @@ sub get_zfs_raid_setup {
        my $level = $1;
        my $mindisks = 2 + $level;
        die "zfs (RAIDZ-$level) need at least $mindisks devices\n" if scalar(@$devlist) < $mindisks;
-       $cmd .= ' raidz$level';
-       foreach my $hd (@$devlist) {
+       my $hd = @$devlist[0];
+       my $expected_size = @$hd[2]; # all disks needs same size
+       $cmd .= " raidz$level";
+       foreach $hd (@$devlist) {
+           die "mirrored disks must have same size\n" if @$hd[2] != $expected_size;
            $cmd .= " @$hd[1]";
            push @$bootdevlist, $hd;
        }
@@ -2283,9 +2288,7 @@ sub create_hdsel_view {
     $target_hd_label = Gtk3::Label->new ("Target Harddisk: ");
     $hbox->pack_start ($target_hd_label, 0, 0, 0);
 
-    $target_hd_combo = Gtk3::ComboBoxText->new_with_entry();
-    my $e = $target_hd_combo->get_child();
-    $e->set_width_chars(40);
+    $target_hd_combo = Gtk3::ComboBoxText->new();
 
     foreach my $hd (@$hds) {
        ($disk, $devname, $size, $model) = @$hd;
@@ -2316,7 +2319,7 @@ sub create_hdsel_view {
            eval { get_zfs_raid_setup(); };
            if (my $err = $@) {
                display_message ("Warning: $err\n" .
-                            "Please fix ZFS setup first.");
+                                "Please fix ZFS setup first.");
            } else {
                create_country_view();
            }