diff options
author | Oliver Tappe | 2008-09-03 22:35:37 +0200 |
---|---|---|
committer | Oliver Tappe | 2008-09-03 22:35:37 +0200 |
commit | bf596194239c23f0b1d8052e32e62431992582d6 (patch) | |
tree | daf14c963b7364d0d6615bf91db76d05426508a5 /boot-env/OpenSLX/BootEnvironment/PREBOOT_CD.pm | |
parent | * instead of picking the first system encountered, the preboot cd is now (diff) | |
download | core-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.pm | 37 |
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; } |