From 0ba05084b60804d89e045edf4e236ccfa8e5bce3 Mon Sep 17 00:00:00 2001 From: Dirk von Suchodoletz Date: Mon, 22 Dec 2008 20:37:08 +0000 Subject: Adding inclusion of uclib-rootfs as suggested by Michael. It allows to run tools like hwinfo or busybox applets within stage4 for testing and other scenarios (like running a very small syslog daemon if no syslog plugin is installed). Found in Stage4 under /opt/openslx/uclib-rootfs. git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@2446 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSExport/FileSystem/NFS.pm | 39 ++++++++++++++++++++++- installer/OpenSLX/OSExport/FileSystem/SquashFS.pm | 15 ++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/installer/OpenSLX/OSExport/FileSystem/NFS.pm b/installer/OpenSLX/OSExport/FileSystem/NFS.pm index e034b127..86f7c128 100644 --- a/installer/OpenSLX/OSExport/FileSystem/NFS.pm +++ b/installer/OpenSLX/OSExport/FileSystem/NFS.pm @@ -61,7 +61,7 @@ sub exportVendorOS } $self->_copyViaRsync($source, $target); - + $self->_copyUclibEnv($target); return; } @@ -234,5 +234,42 @@ sub _isTargetBindMounted return 0; } +sub _copyUclibEnv +{ + my $self = shift; + my $target = shift; + + $target .= "/opt/openslx/uclib-rootfs"; + + if (system("mkdir -p $target")) { + die _tr("unable to create directory '%s', giving up! (%s)\n", + $target, $!); + } + + my $uclibcRootfs = "$openslxConfig{'base-path'}/share/uclib-rootfs"; + my @excludes = qw( + dialog + kexec + libcurses.so* + libncurses.so* + mconf + strace + ); + my $exclOpts = join ' ', map { "--exclude $_" } @excludes; + my $includeExcludeList = $self->_determineIncludeExcludeList(); + vlog(1, _tr("using exclude-filter:\n%s\n", $exclOpts)); + my $rsyncFH; + my $rsyncCmd + = "rsync -av --delete-excluded --exclude-from=-" . " $uclibcRootfs/ $target"; + vlog(2, "executing: $rsyncCmd\n"); + open($rsyncFH, '|-', $rsyncCmd) + or die _tr("unable to start rsync for source '%s', giving up! (%s)", + $uclibcRootfs, $!); + print $rsyncFH $exclOpts; + close($rsyncFH) + or die _tr("unable to copy to target '%s', giving up! (%s)", + $target, $!); + return; +} 1; diff --git a/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm b/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm index d9760642..fe70f8c2 100644 --- a/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm +++ b/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm @@ -207,11 +207,24 @@ sub _createSquashFS my $filterFile = "/tmp/slx-nbdsquash-filter-$$"; spitFile($filterFile, $includeExcludeList); + # add uclib-root environment to stage2 by mounting it temporarily to stage1 + # subdirectory of openslx stuff + my $uclibcRootfs = "$openslxConfig{'base-path'}/share/uclib-rootfs"; + vlog(0, _tr("preparing stage1 to add uclib-rootfs...")); + my $res = system("mkdir -p $source/opt/openslx/uclib-rootfs"); + $res = system("mount -o ro --bind $uclibcRootfs $source/opt/openslx/uclib-rootfs"); + if ($res) { + die _tr( + "unable to prepare addition of uclib-rootfs in '%s', giving up! (%s)", + $source, $!); + } + # ... invoke mksquashfs ... vlog(0, _tr("invoking mksquashfs...")); my $mksquashfsBinary = "$openslxConfig{'base-path'}/share/squashfs/mksquashfs"; - my $res = system("$mksquashfsBinary $source $target -ff $filterFile"); + $res = system("$mksquashfsBinary $source $target -ff $filterFile"); + $res = system("umount $source/opt/openslx/uclib-rootfs"); unlink($filterFile); # ... remove filter file if done if ($res) { -- cgit v1.2.3-55-g7522