diff options
author | Oliver Tappe | 2006-09-08 21:47:01 +0200 |
---|---|---|
committer | Oliver Tappe | 2006-09-08 21:47:01 +0200 |
commit | 9bbf0e70c039889418f562db1fdcd1312f216df2 (patch) | |
tree | 4d5ba3b602ea8855fd9c7258a18641aa066d300d /config-db/config-demuxer.pl | |
parent | * renamed 'descr' to 'comment' (diff) | |
download | core-9bbf0e70c039889418f562db1fdcd1312f216df2.tar.gz core-9bbf0e70c039889418f562db1fdcd1312f216df2.tar.xz core-9bbf0e70c039889418f562db1fdcd1312f216df2.zip |
* changed configurable paths to be more flexible
* added automatic generation of initialramfs (via slxmkramfs).
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@368 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'config-db/config-demuxer.pl')
-rwxr-xr-x | config-db/config-demuxer.pl | 110 |
1 files changed, 80 insertions, 30 deletions
diff --git a/config-db/config-demuxer.pl b/config-db/config-demuxer.pl index dccbea7b..9c16abc1 100755 --- a/config-db/config-demuxer.pl +++ b/config-db/config-demuxer.pl @@ -14,7 +14,7 @@ use OpenSLX::ConfigDB qw(:access :aggregation :support); my $pxeConfigDefaultTemplate = q[# generated by openslx NOESCAPE 0 PROMPT 0 -TIMEOUT 100 +TIMEOUT 10 DEFAULT menu.c32 IMPLICIT 1 ALLOWOPTIONS 1 @@ -41,9 +41,9 @@ openslxInit(); my $openslxDB = connectConfigDB(); -my $configPath = "$openslxConfig{'private-basepath'}/config"; -if (!-d $configPath) { - die _tr("Unable to access config-path '%s'!", $configPath); +my $clientConfigPath = "$openslxConfig{'private-path'}/config"; +if (!-d $clientConfigPath) { + die _tr("Unable to access client-config-path '%s'!", $clientConfigPath); } my $tempPath = "$openslxConfig{'temp-basepath'}/oslx-demuxer"; if (!$dryRun) { @@ -52,7 +52,7 @@ if (!$dryRun) { die _tr("Unable to create or access temp-path '%s'!", $tempPath); } } -my $exportPath = "$openslxConfig{'public-basepath'}/tftpboot"; +my $exportPath = "$openslxConfig{'public-path'}/tftpboot"; if (!$dryRun) { system("rm -rf $exportPath/client-conf/* $exportPath/pxe/*"); system("mkdir -p $exportPath/client-conf $exportPath/pxe/pxelinux.cfg"); @@ -141,12 +141,12 @@ sub copyExternalSystemConfig mkdir $targetPath; # first copy default files... - my $defaultConfigPath = "$configPath/default"; + my $defaultConfigPath = "$clientConfigPath/default"; if (-d $defaultConfigPath) { system("cp -r $defaultConfigPath/* $targetPath"); } # now pour system-specific configuration on top (if any): - my $systemConfigPath = "$configPath/$systemName"; + my $systemConfigPath = "$clientConfigPath/$systemName"; if (-d $systemConfigPath) { system("cp -r $systemConfigPath/* $targetPath"); } @@ -174,56 +174,106 @@ sub createTarOfPath ################################################################################ sub writePXEMenus { - my $pxePath = "$exportPath/pxe/pxelinux.cfg"; + my $pxePath = "$exportPath/pxe"; + my $pxeConfigPath = "$exportPath/pxe/pxelinux.cfg"; - if (!-e "$exportPath/pxe/pxelinux.0") { + if (!-e "$pxePath/pxelinux.0") { my $pxelinux0Path - = "$openslxConfig{'shared-basepath'}/tftpboot/pxelinux.0"; - system(qq[cp -a "$pxelinux0Path" $exportPath/pxe/]); + = "$openslxConfig{'share-path'}/tftpboot/pxelinux.0"; + system(qq[cp -a "$pxelinux0Path" $pxePath/]); } - if (!-e "$exportPath/pxe/menu.c32") { + if (!-e "$pxePath/menu.c32") { my $menuc32Path - = "$openslxConfig{'shared-basepath'}/tftpboot/menu.c32"; - system(qq[cp -a "$menuc32Path" $exportPath/pxe/]); + = "$openslxConfig{'share-path'}/tftpboot/menu.c32"; + system(qq[cp -a "$menuc32Path" $pxePath/]); } my @clients = fetchClientsByFilter($openslxDB); foreach my $client (@clients) { my $externalClientID = externalIDForClient($client); - my $pxeFile = "$pxePath/$externalClientID"; + my $pxeFile = "$pxeConfigPath/$externalClientID"; + my $clientAppend = $client->{kernel_params}; vlog 1, _tr("writing PXE-file %s", $pxeFile); open(PXE, "> $pxeFile") or die "unable to write to $pxeFile"; print PXE $pxeConfigDefaultTemplate; my @systemIDs = aggregatedSystemIDsOfClient($openslxDB, $client); my @systems = fetchSystemsByID($openslxDB, \@systemIDs); foreach my $system (@systems) { - print PXE "LABEL openslx-$system->{name}\n"; -# print PXE "\tMENU DEFAULT\n"; - print PXE "\tMENU LABEL ^$system->{label}\n"; - my $kernel = basename($system->{kernel}); - print PXE "\tKERNEL $kernel\n"; - print PXE "\tAPPEND $system->{kernel_params}\n"; - print PXE "\tIPAPPEND 1\n"; + my @infos = aggregatedSystemFileInfosOfSystem($openslxDB, $system); + foreach my $info (@infos) { + my $extSysID = externalIDForSystem($info); + my $append = $system->{kernel_params}; + $append .= " initrd=$extSysID/initialramfs"; + $append .= " $clientAppend"; + $append .= " rootfs=nfs:///srv/openslx/nfsroot/suse-10.0"; + print PXE "LABEL openslx-$extSysID\n"; +# print PXE "\tMENU DEFAULT\n"; + print PXE "\tMENU LABEL ^$info->{label}\n"; + print PXE "\tKERNEL $extSysID/kernel\n"; + print PXE "\tAPPEND $append\n"; + print PXE "\tIPAPPEND 1\n"; + } } close(PXE); } } +sub generateInitalRamFS +{ + my $setup = shift; + my $vendorOS = shift; + my $pxeSysPath = shift; + + vlog 1, _tr('generating initialramfs %s/initialramfs', $pxeSysPath); + my $cmd = "$openslxConfig{'bin-path'}/slxmkramfs "; + if ($setup->{ramfs_use_glibc}) { + $cmd .= '-g '; + } + if ($setup->{ramfs_use_busybox}) { + $cmd .= '-b '; + } + my $debugLevel = $setup->{ramfs_debug_level}; + if ($debugLevel) { + $cmd .= qq[-d $debugLevel ]; + } + if (length($setup->{ramfs_nicmods}) > 0) { + $cmd .= qq[-n "$setup->{ramfs_nicmods}" ]; + } + if (length($setup->{ramfs_fsmods}) > 0) { + $cmd .= qq[-f "$setup->{ramfs_fsmods}" ]; + } + my $rootPath + = "$openslxConfig{'private-path'}/stage1/$vendorOS->{path}"; + $cmd .= "-i $pxeSysPath/initialramfs -r $rootPath"; + + $ENV{'SLX_PRIVATE_PATH'} = $openslxConfig{'private-path'}; + $ENV{'SLX_PUBLIC_PATH'} = $openslxConfig{'public-path'}; + $ENV{'SLX_SHARE_PATH'} = $openslxConfig{'share-path'}; + vlog 2, _tr('executing %s', $cmd); + system($cmd) unless $dryRun; +} + sub writeSystemPXEFiles { my $system = shift; my $pxePath = "$exportPath/pxe"; - my @kernelFiles = aggregatedKernelFilesOfSystem($openslxDB, $system); - foreach my $kernelFile (@kernelFiles) { - vlog 1, _tr('copying kernel %s to %s/', $kernelFile, $pxePath); - system(qq[cp -a "$kernelFile" $pxePath/]) unless $dryRun; + my $vendorOS = fetchVendorOSesByID($openslxDB, $system->{vendor_os_id}); + my @infos = aggregatedSystemFileInfosOfSystem($openslxDB, $system); + foreach my $info (@infos) { + my $kernelFile = $info->{'kernel-file'}; + my $extSysID = externalIDForSystem($info); + my $pxeSysPath = "$pxePath/$extSysID"; + if (-e $pxeSysPath) { + die _tr('PXE-system %s already exists!', $pxeSysPath); + } + mkdir $pxeSysPath; + vlog 1, _tr('copying kernel %s to %s/kernel', $kernelFile, $pxeSysPath); + system(qq[cp -a "$kernelFile" $pxeSysPath/kernel]) unless $dryRun; + + generateInitalRamFS($info, $vendorOS, $pxeSysPath); } -# foreach my $initramFile (aggregatedInitramFilesOfSystem($openslxDB, $system)) { -# vlog 1, _tr('copying initramfs %s to %s/', $initramFile, $pxePath); -# system(qq[cp -a "$initramFile" $pxePath/]) unless $dryRun; -# } } sub writeClientConfigurationsForSystem |