diff options
Diffstat (limited to 'rescue/make_rescue_img')
| -rwxr-xr-x | rescue/make_rescue_img | 87 |
1 files changed, 22 insertions, 65 deletions
diff --git a/rescue/make_rescue_img b/rescue/make_rescue_img index c35be4399..8e3f64334 100755 --- a/rescue/make_rescue_img +++ b/rescue/make_rescue_img @@ -4,7 +4,6 @@ use MDK::Common; use lib "/usr/lib/libDrakX"; use keyboard; -my $lib = (arch() =~ /x86_64/ ? "lib64" : "lib"); my $tmp = "/tmp/rescue_tmp"; my $rescue = "rescue.sqfs"; @@ -16,41 +15,33 @@ BEGIN { undef *_ } sub __ { print @_, "\n"; system(@_) } sub _ { __ @_; $? and die } -sub installown($$) { - my ($own, $dir) = @_; - return if -e "$tmp$dir/" . basename($own); - mkdir_p("$tmp$dir"); - _ "cp -rL $own $tmp$dir"; -} - -sub install_perl_script { - my ($script, $dir) = @_; - my @gi_modules; - foreach (`../tools/get-needed-drakx-modules /usr/lib/libDrakX /usr/lib/libDrakX $script`) { - chomp; - my ($local, $dest) = split "\t"; - installown($local, dirname($dest || $local)); - push @gi_modules, "$tmp$dest" if $dest; - } - installown($script, $dir); - system('../tools/simplify-drakx-modules', @gi_modules, "$tmp$dir/$script"); -} - +my $arch = arch() =~ /i.86/ ? $MDK::Common::System::compat_arch{arch()} : arch(); _ "rm -rf $tmp" if -e $tmp; -_ "mkdir $tmp"; -_ 'find . -name "*~" | xargs rm -f'; -mkdir_p($tmp . chomp_($_)) foreach cat_("dirs"); +_ "mkdir -p $tmp"; _ "cp -a tree/* $tmp"; -_ "find $tmp -name .svn | xargs rm -rf"; -_ "perl devices.pl $tmp/dev"; -_ "mkfifo $tmp/dev/initctl"; +_ "find $tmp -name '*~' -delete"; +mkdir_p($tmp . chomp_($_)) foreach cat_("dirs"); +foreach (cat_("aliases")) { + chomp; my ($f, $dest) = split; + symlink $dest, "$tmp$f"; +} +if ($arch eq "x86_64") { + _ "mkdir $tmp/usr/lib64"; + _ "ln -s usr/lib64 $tmp/lib64"; +} substInFile { s/DISTRIB_DESCR/$ENV{DISTRIB_DESCR}/ } "$tmp/etc/issue"; _ "../tools/install-xml-file-list list.xml $tmp"; +_ "sed 's/Mageia \\([0-9]*\\)/Mageia Rescue \\1/' /etc/os-release >$tmp/etc/os-release"; +_ "ls -1 $tmp/etc | sed 's,\\(.*\\),/etc/\\1,' >>$tmp/usr/share/symlinks"; +# Loading the floppy module causes this service to fail so lets mask this to +# prevent a red "FAILED" briefly showing on the screen +_ "sed -i s/ExecStart=/ExecStart=-/ $tmp/usr/lib/systemd/system/systemd-modules-load.service"; + my %keytable_conflicts; -my @less_important_keytables = qw(am_old am_phonetic no-dvorak); -foreach (keyboard::loadkeys_files()) { +my @less_important_keytables = qw(am_old am_phonetic no-dvorak de-latin1); +foreach (keyboard::loadkeys_files(sub { warn @_ })) { my ($dir, $fname) = (dirname($_), basename($_)); my ($name) = $fname =~ /(.*)\.map\.gz/ or next; next if member($name, @less_important_keytables); @@ -63,48 +54,14 @@ foreach (keyboard::loadkeys_files()) { } } -foreach (cat_("aliases")) { - chomp; my ($f, $dest) = split; - symlink $dest, "$tmp$f"; -} - - if (my ($LANGUAGE) = map { if_(/LANGUAGE_(.*)/, $1) } keys %ENV) { substInFile { $_ = "export LANGUAGE=$LANGUAGE\n" . "export LC_ALL=$LANGUAGE\n" if /^#LANGUAGE/; - } "$tmp/etc/rc.sysinit"; -} - -if ($ENV{PARTIMAGE_RPM}) { - - _ "rpm2cpio $ENV{PARTIMAGE_RPM} | (cd $tmp ; cpio -idu ./usr/sbin/partimage)"; - my $server = 'partimaged'; - $server = 'leia'; - - my $default_dir = '/data/box'; - - substInFile { - $_ = " server=$server\n" . " default_dir=$default_dir\n" . <<'EOF' if /^\s*rescue-gui/; - - partimage_dir=`perl -lne 'print $1 if /BOX=(\S+)/' /proc/cmdline` - [ -z "$partimage_dir" ] && partimage_dir=$default_dir - - if grep -q save_all /proc/cmdline; then - partimage_whole_disk -s $server save_all $default_dir - fi - if grep -q rest_all /proc/cmdline; then - if [ -d /tmp/image$partimage_dir ]; then - partimage_whole_disk rest_all /tmp/image$partimage_dir - else - partimage_whole_disk -s $server rest_all $partimage_dir - fi - fi -EOF - } "$tmp/etc/rc.sysinit"; + } "$tmp/usr/bin/mageia-rescue"; } exit 0 if $ARGV[0]; _ "mksquashfs $tmp $rescue -all-root -noappend >/dev/null"; _ "chmod 755 $rescue"; -_ "rm -rf $tmp"; +#_ "rm -rf $tmp"; |
