summaryrefslogtreecommitdiffstats
path: root/boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm
diff options
context:
space:
mode:
authorOliver Tappe2008-09-03 22:35:37 +0200
committerOliver Tappe2008-09-03 22:35:37 +0200
commitbf596194239c23f0b1d8052e32e62431992582d6 (patch)
treedaf14c963b7364d0d6615bf91db76d05426508a5 /boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm
parent* instead of picking the first system encountered, the preboot cd is now (diff)
downloadcore-bf596194239c23f0b1d8052e32e62431992582d6.tar.gz
core-bf596194239c23f0b1d8052e32e62431992582d6.tar.xz
core-bf596194239c23f0b1d8052e32e62431992582d6.zip
* finished most basic implementation of preboot-cd boot environment, i.e.
it now boots until it tries to fetch the real OpenSLX-kernel & initramfs via network git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@2200 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm')
-rw-r--r--boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm37
1 files changed, 30 insertions, 7 deletions
diff --git a/boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm b/boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm
index 50bf5ca5..8f24d7ce 100644
--- a/boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm
+++ b/boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm
@@ -50,8 +50,6 @@ sub finalize
my $self = shift;
my $delete = shift;
- return if !$self->{prebootSystemInfo};
-
return $self->SUPER::finalize($delete);
}
@@ -62,13 +60,13 @@ sub writeBootloaderMenuFor
my $externalClientID = shift;
my $systemInfos = shift || [];
+ $self->_prepareBootloaderConfigFolder()
+ unless $self->{preparedBootloaderConfigFolder};
+
my $prebootSystemInfo
= clone($self->_pickSystemWithNewestKernel($systemInfos));
$self->_createImage($client, $prebootSystemInfo);
-# $self->_prepareBootloaderConfigFolder()
-# unless $self->{preparedBootloaderConfigFolder};
-#
# my $pxePath = $self->{'target-path'};
# my $pxeConfigPath = "$pxePath/pxelinux.cfg";
#
@@ -124,6 +122,21 @@ sub writeBootloaderMenuFor
return 1;
}
+sub _prepareBootloaderConfigFolder
+{
+ my $self = shift;
+
+ my $bootloaderPath = "$self->{'target-path'}/bootloader";
+ if (!$self->{'dry-run'}) {
+ rmtree($bootloaderPath);
+ mkpath($bootloaderPath);
+ }
+
+ $self->{preparedBootloaderConfigFolder} = 1;
+
+ return 1;
+}
+
sub _pickSystemWithNewestKernel
{
my $self = shift;
@@ -168,7 +181,7 @@ sub _createImage
# copy static data and init script
my $dataDir = "$openslxConfig{'base-path'}/share/boot-env/preboot-cd";
- slxsystem(qq{rsync -rlpt $dataDir/ "$imageDir/"})
+ slxsystem(qq{rsync -rlpt $dataDir/iso "$imageDir/"})
unless $self->{'dry-run'};
# copy kernel (take the one from the given system info)
@@ -181,6 +194,16 @@ sub _createImage
my $initramfsName = qq{"$imageDir/iso/isolinux/initramfs"};
$self->_makePrebootInitRamFS($info, $initramfsName);
+ # write trivial isolinux config
+ my $isolinuxConfig = unshiftHereDoc(<<" End-of-Here");
+ DEFAULT OpenSLX
+ LABEL OpenSLX
+ SAY Now loading OpenSLX preboot environment ...
+ KERNEL vmlinuz
+ APPEND initrd=initramfs
+ End-of-Here
+ spitFile("$imageDir/iso/isolinux/isolinux.cfg", $isolinuxConfig);
+
my $mkisoCmd = unshiftHereDoc(<<" End-of-Here");
mkisofs
-o "$imageDir/../$client->{name}.iso"
@@ -199,7 +222,7 @@ sub _createImage
die _tr("unable to create ISO-image - log follows:\n%s", $log);
}
- rmtree($imageDir);
+# rmtree($imageDir);
return 1;
}