]> git.proxmox.com Git - pve-installer.git/blobdiff - Proxmox/Install.pm
zfs: create dataset var-lib-vz for /var/lib/vz
[pve-installer.git] / Proxmox / Install.pm
index 66adb2dc5f262faac895c17c6da693d928e59c84..1ed38c1029c1b6031b64dcad10916b78ed21ca29 100644 (file)
@@ -182,13 +182,15 @@ sub zfs_create_rpool {
 
     syscmd("zfs create $pool_name/ROOT")  == 0 || die "unable to create zfs $pool_name/ROOT volume\n";
 
+    syscmd("zfs create $pool_name/ROOT/$root_volume_name")  == 0 ||
+       die "unable to create zfs $pool_name/ROOT/$root_volume_name volume\n";
+
     if ($iso_env->{product} eq 'pve') {
        syscmd("zfs create $pool_name/data")  == 0 || die "unable to create zfs $pool_name/data volume\n";
+       syscmd("zfs create -o mountpoint=/$pool_name/ROOT/$root_volume_name/var/lib/vz $pool_name/var-lib-vz")  == 0 ||
+           die "unable to create zfs $pool_name/var-lib-vz volume\n";
     }
 
-    syscmd("zfs create $pool_name/ROOT/$root_volume_name")  == 0 ||
-       die "unable to create zfs $pool_name/ROOT/$root_volume_name volume\n";
-
     # default to `relatime` on, fast enough for the installer and production
     syscmd("zfs set atime=on relatime=on $pool_name") == 0 || die "unable to set zfs properties\n";
 
@@ -200,6 +202,8 @@ sub zfs_create_rpool {
 
     $value = $zfs_opts->{copies} // 1;
     syscmd("zfs set copies=$value $pool_name") if defined($value) && $value != 1;
+
+    syscmd("zfs set acltype=posix $pool_name/ROOT/$root_volume_name");
 }
 
 my $get_raid_devlist = sub {
@@ -1152,11 +1156,16 @@ _EOD
        }
 
        update_progress(0.8, 0.95, 1, "make system bootable");
-       my $console_param='';
-       if (my $console = Proxmox::Install::Config::get_console()) {
-           $console_param="console=$console";
-           my $console_snippet = "GRUB_CMDLINE_LINUX=\"\$GRUB_CMDLINE_LINUX $console_param\"";
-           file_write_all("$targetdir/etc/default/grub.d/console.cfg", $console_snippet);
+       my $target_cmdline='';
+       if ($target_cmdline = Proxmox::Install::Config::get_target_cmdline()) {
+           my $target_cmdline_snippet = '';
+           if ($target_cmdline =~ /console=ttyS(\d+),(\d+)/) {
+               $target_cmdline_snippet .= "GRUB_TERMINAL_INPUT=\"console serial\"\n";
+               $target_cmdline_snippet .= "GRUB_TERMINAL_OUTPUT=\"gfxterm serial\"\n";
+               $target_cmdline_snippet .= "GRUB_SERIAL_COMMAND=\"serial --unit=$1 --speed=$2\"\n";
+           }
+           $target_cmdline_snippet .= "GRUB_CMDLINE_LINUX=\"\$GRUB_CMDLINE_LINUX $target_cmdline\"";
+           file_write_all("$targetdir/etc/default/grub.d/installer.cfg", $target_cmdline_snippet);
        }
 
        if ($use_zfs) {
@@ -1164,7 +1173,7 @@ _EOD
            my $zfs_snippet = "GRUB_CMDLINE_LINUX=\"\$GRUB_CMDLINE_LINUX root=ZFS=$zfs_pool_name/ROOT/$zfs_root_volume_name boot=zfs\"";
            file_write_all("$targetdir/etc/default/grub.d/zfs.cfg", $zfs_snippet);
 
-           file_write_all("$targetdir/etc/kernel/cmdline", "root=ZFS=$zfs_pool_name/ROOT/$zfs_root_volume_name boot=zfs $console_param\n");
+           file_write_all("$targetdir/etc/kernel/cmdline", "root=ZFS=$zfs_pool_name/ROOT/$zfs_root_volume_name boot=zfs $target_cmdline\n");
 
            zfs_setup_module_conf($targetdir);
        }
@@ -1326,6 +1335,11 @@ _EOD
        syscmd("zfs set mountpoint=/ $zfs_pool_name/ROOT/$zfs_root_volume_name") == 0 ||
            die "zfs set mountpoint failed\n";
 
+       if ($iso_env->{product} eq 'pve') {
+           syscmd("zfs set mountpoint=/var/lib/vz $zfs_pool_name/var-lib-vz") == 0 ||
+               die "zfs set mountpoint for var-lib-vz failed\n";
+       }
+
        syscmd("zpool set bootfs=$zfs_pool_name/ROOT/$zfs_root_volume_name $zfs_pool_name") == 0 ||
            die "zpool set bootfs failed\n";
        syscmd("zpool export $zfs_pool_name");