2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-18 12:20:40 +00:00
This commit is contained in:
immarvin
2015-04-30 04:02:44 -04:00
parent 1c90d9f0ca
commit faabb8e54b
5 changed files with 77 additions and 21 deletions

View File

@ -170,27 +170,47 @@ sub subvars {
#if user specify the partion file, replace the default partition strategy
my $partcontent;
my $diskcontent;
my $configcontent;
my $scriptflag = 0;
my $partscriptflag = 0;
my $diskscriptflag = 0;
my $configscriptflag = 0;
my $preseedflag =0;
my $configfile;
my $partitionfile;
my $diskfile;
my $diskscriptflag;
my @partitionfilelist=split(/,/,$partitionfileval);
foreach(@partitionfilelist){
if($_ =~ /^sd:(.*)/){
foreach my $filepath (@partitionfilelist){
$scriptflag =0;
if($filepath =~ /^s:(.*)/){
$scriptflag = 1;
$filepath=$1;
}
if($filepath =~ /^d:(.*)/){
$diskfile=$1;
$diskscriptflag=1;
}elsif($_ =~ /^d:(.*)/){
$diskfile=$1;
}elsif($_ =~ /^s:(.*)/){
$partitionfile=$1;
$scriptflag = 1;
}else{
$partitionfile=$_;
if($scriptflag ) {$diskscriptflag=1;};
}elsif($filepath =~ /^c:(.*)/){
$configfile=$1;
if($scriptflag ) {$configscriptflag=1;};
}elsif($filepath){
$partitionfile=$filepath;
if($scriptflag ) {$partscriptflag=1;};
}
}
if($configfile){
if (-r $configfile){
open ($inh, "<", $configfile);
while (<$inh>){
$configcontent .= $_;
}
close ($inh);
}
# append the partition file into the $inc to do the replacement
$inc .= "\nFFFFFFFFFFFFPARTITIONCONFIGFILESTART\n".$configcontent."\nFFFFFFFFFFFFPARTITIONCONFIGFILEEND\n";
}
if($diskfile){
if (-r $diskfile){
@ -202,14 +222,10 @@ sub subvars {
}
# append the partition file into the $inc to do the replacement
$inc .= "\nFFFFFFFFFFFFPARTITIONDISKFILESTART\n".$diskcontent;
$inc .= "\nFFFFFFFFFFFFPARTITIONDISKFILESTART\n".$diskcontent."\nFFFFFFFFFFFFPARTITIONDISKFILEEND\n";
}
if ($partitionfile){
if ($partitionfile =~ /^s:(.*)/){
$scriptflag = 1;
$partitionfile = $1;
}
if($inc =~ /#XCA_PARTMAN_RECIPE_SCRIPT#/){
$preseedflag=1;
@ -224,7 +240,7 @@ sub subvars {
}
# append the partition file into the $inc to do the replacement
$inc .= "\nFFFFFFFFFFFFPARTITIONFILESTART\n".$partcontent;
$inc .= "\nFFFFFFFFFFFFPARTITIONFILESTART\n".$partcontent."\nFFFFFFFFFFFFPARTITIONFILEEND\n";
}
@ -330,7 +346,9 @@ sub subvars {
#the content of the specified file is a script which can write partition definition into /tmp/partitionfile
# split the partition file out from the $inc
($inc, $partcontent) = split(/FFFFFFFFFFFFPARTITIONFILESTART\n/, $inc);
if ($scriptflag or $preseedflag){
($partcontent, $res) = split(/\nFFFFFFFFFFFFPARTITIONFILEEND/, $partcontent);
$inc .=$res;
if ($partscriptflag or $preseedflag){
# since the whole partition file needs be packaged in %pre first and generate an executable file at running time,
# all the special chars like ',",%,\ need be kept, we have to use the base64 coding to code it and put it in
# %pre and decode it out during the running time.
@ -399,6 +417,8 @@ sub subvars {
#the content of the specified file is the disknames to partition or a script which can write disk names into /tmp/boot_disk
# split the disk file out from the $inc
($inc, $diskcontent) = split(/FFFFFFFFFFFFPARTITIONDISKFILESTART\n/, $inc);
($diskcontent,$res) = split(/\nFFFFFFFFFFFFPARTITIONDISKFILEEND/, $diskcontent);
$inc .=$res;
# since the whole partition file needs be packaged in %pre first and generate an executable file at running time,
# all the special chars like ',",%,\ need be kept, we have to use the base64 coding to code it and put it in
# %pre and decode it out during the running time.
@ -424,7 +444,37 @@ sub subvars {
#replace the #XCA_PARTMAN_DISK_SCRIPT#
$inc =~ s/#XCA_PARTMAN_DISK_SCRIPT#/$diskcontent/;
}
}
}
if ($configfile && $doneincludes) {
#the content of the specified file is the additional pressed config with 'd-i' or
# a script set the additional pressed config with "debconf-set"
# split the config file out from the $inc
($inc, $configcontent) = split(/FFFFFFFFFFFFPARTITIONCONFIGFILESTART\n/, $inc);
($configcontent,$res) = split(/\nFFFFFFFFFFFFPARTITIONCONFIGFILEEND/, $configcontent);
$inc .=$res;
if ($configscriptflag){
# since the whole partition file needs be packaged in %pre first and generate an executable file at running time,
# all the special chars like ',",%,\ need be kept, we have to use the base64 coding to code it and put it in
# %pre and decode it out during the running time.
use MIME::Base64;
$configcontent = encode_base64($configcontent);
$configcontent =~ s/\n//g;
# Put the base64 coded config script into %pre part
$configcontent = "cat > /tmp/configscript.enc << EOFEOF\n" . $configcontent . "\nEOFEOF\n";
# Put the code to decode config script and run it to generate pressed config
$configcontent .= "base64decode</tmp/configscript.enc >/tmp/configscript\n";
$configcontent .= "chmod 755 /tmp/configscript\n";
$configcontent .= "/tmp/configscript\n";
$inc =~ s/#XCA_PARTMAN_ADDITIONAL_CONFIG_SCRIPT#/$configcontent/;
}else{
$inc =~ s/#XCA_PARTMAN_ADDITIONAL_CFG#/$configcontent/;
}
}
}
if ($tmplerr) {

View File

@ -696,7 +696,8 @@ sub mkinstall {
$node,
$pkglistfile,
$pkgdir,
$platform
$platform,
$partitionfile
);
}

View File

@ -198,5 +198,6 @@ echo " ." >> /tmp/partitioning
#XCA_PARTMAN_RECIPE_SCRIPT#
#XCA_PARTMAN_DISK_SCRIPT#
#XCA_PARTMAN_ADDITIONAL_CONFIG_SCRIPT#
exit 0

View File

@ -215,7 +215,10 @@ echo "2048 512 300% linux-swap" >> /tmp/partitioning
echo " method{ swap } format{ }" >> /tmp/partitioning
echo " ." >> /tmp/partitioning
#XCA_PARTMAN_RECIPE_SCRIPT#
#XCA_PARTMAN_DISK_SCRIPT#
#XCA_PARTMAN_ADDITIONAL_CONFIG_SCRIPT#
exit 0

View File

@ -73,6 +73,7 @@ d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
#XCA_PARTMAN_ADDITIONAL_CFG#
### Account setup