oops.. I forgot to put the command to load the device mapper module in
autoinstallscript.template... forgot about the previous patch...

This is the correct one...

sorry,
-andrea.

> Add LVM initialization commands to autoinstallscript (only pvcreate for
> now).
> This is a more modular implementation... :)
> 
> Bye,
> -Andrea
> 



--- etc/autoinstallscript.template~	2005-01-22 19:39:23.000000000 +0100
+++ etc/autoinstallscript.template	2005-01-22 20:16:40.000000000 +0100
@@ -95,6 +95,22 @@
 modprobe jfs
 modprobe xfs
 
+echo "Load device mapper driver (for LVM)."
+grep "dm-mod" /proc/modules > /dev/null
+if [ $? -eq 1 ]; then modprobe dm-mod; fi
+
+### BEGIN LVM initialization commands -AR- ###
+##INITIALIZE_LVM_PARTITIONS##
+### END LVM initialization commands ###
+
+### BEGIN LVM groups creation commands -AR- ###
+##CREATE_LVM_GROUPS##
+### END LVM groups creation commands ###
+
+### BEGIN LVM volumes creation commands -AR- ###
+##CREATE_LVM_VOLUMES##
+### END LVM volumes creation commands ###
+
 ### BEGIN swap and filesystem creation commands ###
 ##CREATE_FILESYSTEMS##
 ### END swap and filesystem creation commands ###
--- lib/SystemImager/Server.pm~	2005-01-22 19:52:18.000000000 +0100
+++ lib/SystemImager/Server.pm	2005-01-22 19:59:25.000000000 +0100
@@ -34,6 +34,7 @@
 #   _imageexists 
 #   _in_script_add_standard_header_stuff 
 #   _read_partition_info_and_prepare_parted_commands 
+#   _read_partition_info_and_prepare_pvcreate_commands -AR-
 #   _write_boel_devstyle_entry
 #   _write_elilo_conf
 #   _write_out_mkfs_commands 
@@ -774,6 +775,76 @@
     }
 }
 
+# Usage:
+# _read_partition_info_and_prepare_pvcreate_commands( $out, $image_dir, $auto_install_script_conf );
+sub _read_partition_info_and_prepare_pvcreate_commands {
+    my ($out, $image_dir, $file) = @_;
+
+    my $xml_config = XMLin($file, keyattr => { disk => "+dev", part => "+num" }, forcearray => 1 );
+
+    my @all_devices = get_all_devices($file);
+    my %devfs_map = dev_to_devfs(@all_devices) or return undef;
+
+    foreach my $dev (sort (keys ( %{$xml_config->{disk}} ))) {
+
+        my (
+            $highest_part_num,
+            $m,
+            $cmd,
+            $part,
+        );
+
+        my $devfs_dev = $devfs_map{$dev};
+
+        ### BEGIN Populate the simple hashes. -BEF- ###
+        my (
+            %flags,
+            %p_type,
+            %p_name,
+        );
+
+        foreach my $m (sort (keys ( %{$xml_config->{disk}->{$dev}->{part}} ))) {
+            $flags{$m}       = $xml_config->{disk}->{$dev}->{part}{$m}->{flags};
+            $p_name{$m}      = $xml_config->{disk}->{$dev}->{part}{$m}->{p_name};
+            $p_type{$m}      = $xml_config->{disk}->{$dev}->{part}{$m}->{p_type};
+        }
+
+        # Figure out what the highest partition number is. -BEF-
+        foreach (sort { $a <=> $b } (keys ( %{$xml_config->{disk}->{$dev}->{part}} ))) {
+            $highest_part_num = $_;
+        }
+
+        $m = "0";
+        until ($m >= $highest_part_num) {
+
+            $m++;
+            unless (defined($p_type{$m})) { next; }
+
+            $part = &get_part_name($dev, $m);
+
+            # Extended partitions can't be used by LVM. -AR-
+            if ("$p_type{$m}" eq "extended") { next; }
+
+            ### Deal with LVM flag for each partition. -AR-
+            if (($flags{$m}) and ($flags{$m} ne "-")) {
+                my @flags = split (/,/, $flags{$m});
+                foreach my $flag (@flags) {
+                    if ("$flag" eq "lvm") {
+
+                        $cmd = "Initializing partition $part for use by LVM.";
+                        print $out qq(echo "$cmd"\n);
+
+                        $cmd = "pvcreate $part || shellout";
+                        print $out qq(echo "$cmd"\n);
+                        print $out "$cmd\n";
+                        last;
+                    }
+                }
+            }
+        }
+    }
+}
+
 # Usage:  
 # upgrade_partition_schemes_to_generic_style($image_dir, $config_dir);
 sub upgrade_partition_schemes_to_generic_style {
@@ -1448,7 +1519,22 @@
 	            last SWITCH;
 	        }
 
-	        if (/^\s*${delim}CREATE_FILESYSTEMS${delim}\s*$/) {
+                 if (/^\s*${delim}INITIALIZE_LVM_PARTITIONS${delim}\s*$/) {
+ 	            _read_partition_info_and_prepare_pvcreate_commands( $MASTER_SCRIPT,
+ 	          						$image_dir,
+ 	          						$auto_install_script_conf);
+                     last SWITCH;
+                 }
+
+#                 if (/^\s*${delim}CREATE_LVM_GROUPS${delim}\s*$/) {
+#                     last SWITCH;
+#                 }
+
+#                 if (/^\s*${delim}CREATE_LVM_VOLUMES${delim}\s*$/) {
+#                     last SWITCH;
+#                 }
+	        
+                if (/^\s*${delim}CREATE_FILESYSTEMS${delim}\s*$/) {
 	            _write_out_mkfs_commands( $MASTER_SCRIPT, 
 	          			$image_dir, 
 	          			$auto_install_script_conf,

Reply via email to