my $grub_plattform = "pc"; # pc, efi-amd64 or efi-ia32
-$grub_plattform = "efi-amd64" if -d "/sys/firmware/efi";
+$grub_plattform = "efi-amd64" if -d "/sys/firmware/efi";
my $IPV4OCTET = "(?:25[0-5]|(?:2[0-4]|1[0-9]|[1-9])?[0-9])";
my $IPV4RE = "(?:(?:$IPV4OCTET\\.){3}$IPV4OCTET)";
'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 = [
my $fsdata = $fssetup->{$type} || die "internal error - unknown file system '$type'";
my $opts = $name eq 'root' ? $fsdata->{mkfs_root_opt} : $fsdata->{mkfs_data_opt};
-
+
update_progress (0, $rs, $re, "creating $name filesystem");
run_command ("$fsdata->{mkfs} $opts $dev", sub {
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";
# ZFS has this use_whole_disk concept, so we try to partition the same
# way as zfs does by default. There is room at start of disk to insert
-# a grub boot partition. But adding a EFI ESP is not possible.
+# a grub boot partition. But adding a EFI ESP is not possible.
#
# Note: zfs people think this is just a waste of space an not
# required. Instead, you should put the ESP on another disk (log,
my $hdgb = int($hdsize/(1024*1024));
die "hardisk '$target_dev' too small (${hdsize}GB)\n" if $hdgb < 8;
- # 1 - GRUB boot partition: 1M
+ # 1 - GRUB boot partition: 1M
# 2 - OS/Data partition
# 9 - ZFS reserved partition
$pnum = 2;
push @$pcmd, "-n$pnum:2048:0", "-t$pnum:BF01", '-c', "$pnum:zfs";
-
+
push @$pcmd, $target_dev;
-
+
my $os_size = $hdsize - 1024 - 1024*8;
syscmd($pcmd) == 0 ||
my $minfree;
if ($config_options->{minfree}) {
- $minfree = (($config_options->{minfree}*1024*1024) >= $rest ) ? $space :
+ $minfree = (($config_options->{minfree}*1024*1024) >= $rest ) ? $space :
$config_options->{minfree}*1024*1024 ;
} else {
$minfree = $space;
$target_hd = undef; # do not use this config
$use_btrfs = 1;
}
-
+
if ($use_zfs) {
my $i;
for ($i = 5; $i > 0; $i--) {
if ($use_btrfs) {
- die "unsupported btrfs mode (for testing environment)\n"
+ die "unsupported btrfs mode (for testing environment)\n"
if $filesys ne 'btrfs (RAID0)';
btrfs_create([$rootdev], 'single');
syscmd ("zpool destroy $zfstestpool");
zfs_create_rpool($rootdev);
-
+
} else {
# nothing to do
foreach my $di (@$bootdevinfo) {
my $devname = $di->{devname};
$di->{by_id} = find_stable_path ("/dev/disk/by-id", $devname);
-
+
# Note: using /dev/disk/by-id/ does not work for unknown reason, we get
# cannot create 'rpool': no such pool or dataset
#my $osdev = find_stable_path ("/dev/disk/by-id", $di->{osdev}) || $di->{osdev};
}
zfs_create_rpool($vdev);
-
+
my $swap_size = compute_swapsize($disksize);
$swapfile = zfs_create_swap($swap_size);
&$clean_disk($target_hd);
- my ($os_size, $osdev, $efidev);
- ($os_size, $osdev, $efidev) =
+ my ($os_size, $osdev, $efidev);
+ ($os_size, $osdev, $efidev) =
partition_bootable_disk($target_hd, $maxhdsize, '8E00');
&$udevadm_trigger_block();
my $by_id = find_stable_path ("/dev/disk/by-id", $target_hd);
- push @$bootdevinfo, { esp => $efidev, devname => $target_hd,
+ push @$bootdevinfo, { esp => $efidev, devname => $target_hd,
osdev => $osdev, by_id => $by_id };
my $swap_size = compute_swapsize($os_size);
foreach my $di (@$bootdevinfo) {
next if !$di->{esp};
- syscmd ("mkfs.vfat -F32 $di->{esp}") == 0 ||
+ syscmd ("mkfs.vfat -F32 $di->{esp}") == 0 ||
die "unable to initialize EFI ESP on device $di->{esp}\n";
}
if (my $uuid = find_dev_by_uuid ($di->{esp})) {
$efi_boot_uuid = "UUID=$uuid";
}
-
+
$fstab .= "${efi_boot_uuid} /boot/efi vfat defaults 0 1\n";
}
}
# Note: keyboard-configuration/xbkb-keymap is used by console-setup
my $xkmap = $cmap->{kmap}->{$keymap}->{x11} // 'us';
-
+
debconfig_set ($targetdir, <<_EOD);
locales locales/default_environment_locale select en_US.UTF-8
locales locales/locales_to_be_generated select en_US.UTF-8 UTF-8
if ($use_zfs) {
syscmd ("sed -i -e 's/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"root=ZFS=$zfspoolname\\/ROOT\\/$zfsrootvolname boot=zfs\"/' $targetdir/etc/default/grub") == 0 ||
die "unable to update /etc/default/grub\n";
-
+
}
diversion_remove ($targetdir, "/usr/sbin/update-grub");
syscmd ("zfs set mountpoint=/ $zfspoolname/ROOT/$zfsrootvolname") == 0 ||
die "zfs set mountpoint failed\n";
-
+
syscmd ("zpool set bootfs=$zfspoolname/ROOT/$zfsrootvolname $zfspoolname") == 0 ||
die "zfs set bootfs failed\n";
syscmd ("zpool export $zfspoolname");
$htmlview = Gtk3::WebKit::WebView->new();
my $scrolls = Gtk3::ScrolledWindow->new();
$scrolls->add($htmlview);
-
+
my $hbox2 = Gtk3::HBox->new (0, 0);
$hbox2->pack_start ($scrolls, 1, 1, 0);
$window->realize ();
}
-sub cleanup_view {
+sub cleanup_view {
$inbox->foreach(sub {
my $child = shift;
- $inbox->remove ($child);
+ $inbox->remove ($child);
});
}
my $hn = $ipconf->{domain} ?
"$setup->{product}.$ipconf->{domain}" : "$setup->{product}.example.invalid";
-
+
my ($hostbox, $hostentry) =
create_text_input ($hn, 'Hostname (FQDN):');
$vbox2->pack_start ($hostbox, 0, 0, 2);
set_next (undef, sub {
# verify hostname
-
+
my $text = $hostentry->get_text();
$text =~ s/^\s+//;
$ipaddress = $text;
$ipversion = 4;
} elsif ($text =~ m!^($IPV6RE)$!) {
- $ipaddress = $text;
+ $ipaddress = $text;
$ipversion = 6;
} else {
display_message ("IP address is not valid.");
$ipconf_entry_gw->grab_focus();
return;
}
-
+
$text = $ipconf_entry_dns->get_text();
$text =~ s/^\s+//;
$text =~ s/\s+$//;
$ipconf_entry_dns->grab_focus();
return;
}
-
+
#print "TEST $ipaddress $netmask $gateway $dnsserver\n";
-
+
create_extract_view ();
});
if ($val == Gtk3::Gdk::KEY_Tab) {
my $cc = $countryhash->{lc($text)};
-
+
my $found = 0;
my $compl;
return undef;
});
-
+
my $ls = Gtk3::ListStore->new('Glib::String');
foreach my $cc (sort {$ctr->{$a}->{name} cmp $ctr->{$b}->{name} } keys %$ctr) {
my $iter = $ls->append();
my $grid = Gtk3::Grid->new();
$grid->set_column_spacing(10);
$grid->set_row_spacing(10);
-
+
$hbox2->pack_start($grid, 1, 0, 10);
my $row = 0;
my $label0 = Gtk3::Label->new ("Filesystem");
$label0->set_alignment (1, 0.5);
$grid->attach($label0, 0, $row, 1, 1);
-
+
my $fstypecb = Gtk3::ComboBoxText->new();
my $fstype = ['ext3', 'ext4', 'xfs',
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)");
for (my $i = 0; $i < @$hds; $i++) {
if (my $hd = $config_options->{"disksel$i"}) {
my ($disk, $devname, $size, $model) = @$hd;
- die "device '$devname' is used more than once\n"
+ die "device '$devname' is used more than once\n"
if $dev_name_hash->{$devname};
$dev_name_hash->{$devname} = $hd;
push @$devlist, $hd;
} elsif ($filesys eq 'zfs (RAID10)') {
die "zfs (RAID10) needs at least 4 device\n" if $diskcount < 4;
die "zfs (RAID10) needs an even number of devices\n" if $diskcount & 1;
-
+
push @$bootdevlist, @$devlist[0], @$devlist[1];
for (my $i = 0; $i < $diskcount; $i+=2) {
my ($disk, $devname) = @{@$hds[$a]};
$target_hd = $devname;
});
-
+
$hbox->pack_start ($target_hd_combo, 0, 0, 10);
my $options = Gtk3::Button->new ('_Options');