Revision
502
Author
pterjan
Date
2011-02-10 00:30:32 +0100 (Thu, 10 Feb 2011)

Log Message

Import rescue

Added Paths

Added: drakx/trunk/rescue/.perl_checker
===================================================================
--- drakx/trunk/rescue/.perl_checker	                        (rev 0)
+++ drakx/trunk/rescue/.perl_checker	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,39 @@
+bytes
+constant
+AutoLoader
+Carp::Heavy
+Compress::Zlib
+Config::IniFiles
+Convert::ASN1
+Cwd
+Date::Manip
+Digest::MD5
+Encode
+encoding
+feature
+File::Basename
+File::Find
+File::FnMatch
+File::GlobMapper
+File::Path
+File::Temp
+Gtk2::Gdk::Keysyms
+IO::Compress::Gzip
+IO::Handle
+IO::Socket::SSL
+IO::Socket::UNIX
+IO::Uncompress::Gunzip
+Net::DBus::Binding::Introspector
+Net::DBus::Binding::Iterator
+Net::DBus::Test::MockIterator
+Net::LDAP
+Net::LDAP::Constant
+Net::LDAP::Control
+Net::LDAP::Filter
+Net::LDAP::Schema
+Net::LDAP::Util
+Scalar::Util
+String::ShellQuote
+Term::ReadKey
+Text::ParseWords
+Time::ZoneInfo

Added: drakx/trunk/rescue/Makefile
===================================================================
--- drakx/trunk/rescue/Makefile	                        (rev 0)
+++ drakx/trunk/rescue/Makefile	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,26 @@
+include ../Makefile.config
+
+VERSION=1.21
+PRODUCT=drakx-installer-rescue
+
+RESCUE = rescue.sqfs
+
+all: $(RESCUE)
+
+install: $(RESCUE)
+	cp -f $< $(STAGE2_DEST)
+
+$(RESCUE): list.xml drvinst guessmounts lsparts rescue-doc make_rescue_img
+	DISTRIB_DESCR=$(DISTRIB_DESCR) ./make_rescue_img
+
+tar:
+	rm -rf $(PRODUCT)*.tar* $(PRODUCT)-$(VERSION)
+	mkdir -p $(PRODUCT)-$(VERSION)/tools
+	svn export -q -rBASE . $(PRODUCT)-$(VERSION)/rescue
+	cp ../Makefile.config $(PRODUCT)-$(VERSION)/
+	cp ../tools/install-xml-file-list $(PRODUCT)-$(VERSION)/tools
+	tar cfj $(PRODUCT)-$(VERSION).tar.bz2 $(PRODUCT)-$(VERSION)
+	rm -rf $(PRODUCT)-$(VERSION)
+
+clean: 
+	rm -f $(RESCUE) kernel_read_part


Property changes on: drakx/trunk/rescue/Makefile
___________________________________________________________________
Added: svn:eol-style
   + native

Added: drakx/trunk/rescue/NEWS
===================================================================
--- drakx/trunk/rescue/NEWS	                        (rev 0)
+++ drakx/trunk/rescue/NEWS	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,102 @@
+- include /etc/netconfig (needed by mount.nfs)
+
+Version 1.18 - 13 April 2010, by Olivier "blino" Blin
+
+- image restore script: use blkid instead of deprecated vol_id
+
+Version 1.17 - 12 April 2010, by Olivier "blino" Blin
+
+- Handle LVM (#44723)
+- image restore script: handle hybrid images (by matching main device)
+
+Version 1.16 - 9 October 2009, by Olivier "blino" Blin
+
+- work both with squashfs 3 and 4
+- image restore script (from Paulo Ricardo Zanoni):
+  o re-read partition table after writing image
+  o do not extend / to the end of the disk, it overlaps with swap
+    partition
+- do not make de-latin1 keymap a symlink/include loop (#45109)
+- use extipl from /usr/lib/extipl on x86_64 too
+  (to fix restore_ms_boot, hardcoding this path)
+
+Version 1.15 - 3 September 2009, by Thierry Vignaud
+
+- add back dumpe2fs
+- run /oem-rescue.sh if oem option is present on cmdline
+- allow to specify main partition in the restore config file
+  (MAIN_PART_NUMBER), if there is a restore partition at beginning of
+  disk
+- load ext4 module (#48816)
+- use blkid instead of vol_id which we no longer ship
+
+Version 1.14 - 27 May 2009, by Olivier "blino" Blin
+
+- adapt to new extipl location in x86_64
+- adapt to new magic.mgc location
+
+Version 1.13 - 27 May 2009, by Olivier "blino" Blin
+
+- include various commands
+- image restore script:
+  o better estimate of image dump progression
+  o fix detecting multiple partitions to avoid win32 detection
+  o fix guessing extension when filename contains a dot
+
+Version 1.12 - 20 February 2009, by Olivier "blino" Blin
+
+- image restore script:
+  o add swap partition
+  o use a minimum size for disks to be detected (Caio)
+  o resize Windows partitions if needed (Caio)
+- Flash rescue:
+  o add support for Flash 2009
+  o try to load squashfs-lzma too
+  o handle path to lzma distrib loopbacks
+- fix build:
+  o do not include dead parsehdlist
+  o do not include dead rpm helpers
+
+Version 1.11 - 25 September 2008, by Olivier "blino" Blin
+
+- add image restoration scripts ("restore" command line parameter)
+
+Version 1.10 - 25 April 2008, by Olivier "blino" Blin
+
+- fix "Mounting other partitions from fstab" which use UUID=xxx
+- fix build with latest file package, which only includes the
+  precompiled magic file
+
+Version 1.9 - 10 March 2008, by Olivier "blino" Blin
+
+- handle ntfs-3g in fstab
+- add missing modalias files (#38690)
+
+Version 1.8 - 28 February 2008, by Olivier "blino" Blin
+
+- support new modules location (#38207)
+- adapt to perl 5.10
+- fix build (fix a workaround in partimage_whole_disk)
+
+Version 1.7 - 25 September 2007, by Pascal "Pixel" Rigaux
+
+- add mount.nfs binary (since mount doesn't handle nfs fs anymore)
+
+Version 1.6 - 8 August 2007, by Pascal "Pixel" Rigaux
+
+- adapt to new libldetect together with drakx-installer-images 1.13
+- loadkeys file:
+  o handle new "kbd" rpm which have .map files instead of .kmap
+  o don't skip fr_CH-latin1
+  o handle "fr_CH"-like short names
+- remove rescuept (use testdisk instead, which is much nicer)
+
+Version 1.5 - 9 July 2007, by Pascal "Pixel" Rigaux
+
+- add /etc/mke2fs.conf in order to format ext3fs with 4k blocks (#27377)
+- add "mkfs.ext3" which is no more equivalent to "mkfs.ext2 -J"
+  (eg: dir_index & resize_inode features)
+
+Version 1.4 - 4 April 2007, by Pascal "Pixel" Rigaux
+
+- zcat and gunzip can't be symlinks anymore, they are scripts

Added: drakx/trunk/rescue/aliases
===================================================================
--- drakx/trunk/rescue/aliases	                        (rev 0)
+++ drakx/trunk/rescue/aliases	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,2 @@
+/bin/vi vim-minimal
+/lib/modules /modules

Added: drakx/trunk/rescue/devices.pl
===================================================================
--- drakx/trunk/rescue/devices.pl	                        (rev 0)
+++ drakx/trunk/rescue/devices.pl	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+
+@ARGV == 1 && chdir $ARGV[0] or die "usage: devices.pl <dir>\n";
+
+foreach (<DATA>) {
+    chomp;
+    my ($typ, $maj, $min, @l) = split;
+    foreach (@l) {
+	my @l2 = do {
+	    if (my ($prefix, $ini, $end) = /(.*)(\d+)-(\d+)$/) {
+		map { "$prefix$_" } $ini .. $end;
+	    } else {
+		$_;
+	    }
+	};
+	foreach (@l2) {
+	    my $cmd = "mknod-m600 $_ $typ $maj " . $min++;
+	    system($cmd) == 0 or die "$cmd failed\n";
+	}
+    }
+}
+
+__DATA__
+c   5   1 console
+b   2   0 fd0-1
+c   1   2 kmem
+b   7   0 loop0-15
+c   1   1 mem
+c   1   3 null
+c   1   4 port
+b   1   1 ram
+b   1   0 ram0-19
+b   1   0 ramdisk
+c   1   8 random
+b  11   0 scd0-7
+c   0   0 stderr
+c   0   0 stdin
+c   0   0 stdout
+c   5   0 tty
+c   4   0 tty0-9
+c   4  64 ttyS0-3
+c   1   9 urandom
+c   1   5 zero
+b   3   0 hda hda1-16
+b   3  64 hdb hdb1-16
+b  22   0 hdc hdc1-16
+b  22  64 hdd hdd1-16
+b  33   0 hde hde1-16
+b  33  64 hdf hdf1-16
+b  34   0 hdg hdg1-16
+b  34  64 hdh hdh1-16
+b   8   0 sda sda1-15 sdb sdb1-15 sdc sdc1-15 sdd sdd1-15 sde sde1-15 sdf sdf1-15 sdg sdg1-15 sdh sdh1-15
+b   9   0 md0-15
+c  10 144 nvram
+c   9   0 st0-15

Added: drakx/trunk/rescue/dirs
===================================================================
--- drakx/trunk/rescue/dirs	                        (rev 0)
+++ drakx/trunk/rescue/dirs	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,6 @@
+/lib
+/tmp
+/modules
+/proc
+/dev
+/dev/pts

Added: drakx/trunk/rescue/diskdrake-resize
===================================================================
--- drakx/trunk/rescue/diskdrake-resize	                        (rev 0)
+++ drakx/trunk/rescue/diskdrake-resize	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use lib qw(/usr/lib/libDrakX);
+
+use devices;
+use log;
+use resize_fat::main;
+use diskdrake::resize_ntfs;
+use diskdrake::resize_ext2;
+
+my ($device, $fs_type, $size) = @ARGV
+  or die "usage: $0 <device> <fs type> <size>\n";
+
+my %fs_pkgs = (
+    vfat => 'resize_fat::main',
+    ntfs => 'diskdrake::resize_ntfs',
+    ext2 => 'diskdrake::resize_ext2',
+    ext3 => 'diskdrake::resize_ext2',
+);
+
+my $resize_pkg = $fs_pkgs{$fs_type}
+  or die "no support for $fs_type type\n";
+
+log::l("resizing $device to $size");
+
+my $resize = $resize_pkg->new($device, devices::make($device))
+  or die "unable to initialize resize\n";
+$resize->resize($size);


Property changes on: drakx/trunk/rescue/diskdrake-resize
___________________________________________________________________
Added: svn:executable
   + *

Added: drakx/trunk/rescue/drvinst
===================================================================
--- drakx/trunk/rescue/drvinst	                        (rev 0)
+++ drakx/trunk/rescue/drvinst	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+#
+# Guillaume Cottenceau
+#
+# Copyright 2000-2005 Mandriva
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+use lib qw(/usr/lib/libDrakX);
+use common;
+use detect_devices;
+
+$ARGV[0] =~ /^--?h/ and die "usage: drivers_install [drivertype1 [drivertype2 ...]]\n";
+my @types = @ARGV;
+
+sub install_module_raw {
+    my ($driver, $o_descr) = @_;
+    print STDERR "Installing driver $driver", $o_descr ? " (for \"$o_descr\")" : '', "\n";
+    system("/sbin/modprobe", $driver) and print "\tfailed\n";
+}
+
+my $already_usb;
+sub install_module {
+    my ($driver, $descr) = @_;
+    install_module_raw($driver, $descr);
+    if (!$already_usb && $driver =~ /usb/) {
+	$already_usb = 1;
+	install_module_raw('usbkbd');
+	install_module_raw('keybdev');
+    }
+}
+
+#- start
+foreach my $card (detect_devices::pci_probe()) {
+    $card->{driver} eq 'unknown' || $card->{driver} =~ /:/ and next;
+    $card->{media_type} eq "DISPLAY_VGA" and next;
+
+    if (!@ARGV || find { $card->{media_type} =~ /$_/i } @types) {
+	install_module($card->{driver}, $card->{description});
+    }
+}


Property changes on: drakx/trunk/rescue/drvinst
___________________________________________________________________
Added: svn:executable
   + *

Added: drakx/trunk/rescue/guessmounts
===================================================================
--- drakx/trunk/rescue/guessmounts	                        (rev 0)
+++ drakx/trunk/rescue/guessmounts	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+#
+# Guillaume Cottenceau
+#
+# Copyright 2001-2005 Mandriva
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+use lib qw(/usr/lib/libDrakX);
+use common;
+use fs;
+use fs::proc_partitions;
+use fs::type;
+use lvm;
+use run_program;
+
+my @proc_mounts = fs::read_fstab('', '/proc/mounts');
+
+my $target = '/mnt';
+
+if (fs::get::mntpoint2part($target, \@proc_mounts)) {
+    print STDERR "$target is already mounted (according to /proc/mounts)\n";
+    exit 0;
+}
+
+system('drvinst', 'STORAGE');
+
+print STDERR "\nPlease wait, trying to find your root device...\n";
+
+mkdir_p($target);
+
+lvm::detect_during_install();
+
+my @parts = map {
+    $_->{device} = delete $_->{dev};
+    put_in_hash($_, fs::type::type_subpart_from_magic($_));   
+} fs::proc_partitions::read_raw();
+my ($raid_parts, $normal_parts) = partition { isRawRAID($_) } @parts;
+
+if (@$raid_parts) {
+    require raid;
+    raid::detect_during_install_once(@$raid_parts);
+    my $raids = raid::get_existing(@$raid_parts);
+    push @$normal_parts, @$raids;
+}
+
+my @fstab;
+my $root;
+
+foreach (@$normal_parts) {
+    my $dev = devices::make($_->{device});
+
+    my $fs = find {
+	system("mount -t $_ $dev $target 2>/dev/null") == 0;
+    } fs::type::true_local_fs_types() or next;
+
+    if (my $release_file = common::release_file($target)) {
+	print STDERR "=> found a %s root partition on $dev\n=> type $fs, version `",
+	  chomp_(cat_("$target$release_file")), "'\n";
+	@fstab = fs::read_fstab($target, '/etc/fstab');
+	$root = $dev;
+	last;
+    } else {
+	system('umount', $target) == 0 or die "error unmounting $target\n";
+    }
+}
+
+if ($root) {
+    print STDERR "\nMounting other partitions from fstab on $target...\n";
+    foreach (@fstab) {
+	my ($valued_options, $options) = fs::mount_options::unpack($_);
+
+	next if 
+	  !$_->{fs_type} || $_->{device} eq 'none'
+	    || $valued_options->{noauto}
+	    || $_->{mntpoint} eq '/'
+	    || member($_->{fs_type}, 'swap', 'nfs', 'ntfs', 'ntfs-3g');
+
+	delete $valued_options->{'iocharset='};
+	delete $valued_options->{'codepage='};
+	fs::mount_options::pack($_, $valued_options, $options); #- vfat opts, we don't have the modules in rescue
+
+	my $where = "$target$_->{mntpoint}";
+	my $dev = fs::wild_device::from_part('', $_);
+	mkdir_p($where);
+	print STDERR "\t$dev on $where type $_->{fs_type} options $_->{options}\n";
+	system("mount -t $_->{fs_type} $dev $where -o $_->{options}");
+	system("cp -f /etc/mtab $target/etc/mtab"); #- to allow a nice chrooted "mount" or "df"
+    }
+    print STDERR "\nYour system is ready on $target.\n\n";
+} else {
+    die "Could not find your root device :-(.\n";
+}
+


Property changes on: drakx/trunk/rescue/guessmounts
___________________________________________________________________
Added: svn:executable
   + *

Added: drakx/trunk/rescue/install_bootloader
===================================================================
--- drakx/trunk/rescue/install_bootloader	                        (rev 0)
+++ drakx/trunk/rescue/install_bootloader	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+#
+# Guillaume Cottenceau
+#
+# Copyright 2001-2005 Mandriva
+#
+# This software may be freely redistributed under the terms of the GNU
+# public license.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+
+use lib qw(/usr/lib/libDrakX);
+use common;
+use bootloader;
+use fs;
+
+if ($ARGV[0] eq '--auto') {
+    $auto = shift @ARGV;
+}
+
+$::prefix = '/mnt';
+
+my $release = common::mandrake_release($::prefix) || 
+  do {
+      system('guessmounts') == 0 or die 'guessmounts failed';
+      common::mandrake_release($::prefix);
+  };
+
+if ($release) {
+    $release =~ /Mageia|Mandriva/ or die "release file doesn't contain '%s', exiting.\n";
+} elsif (fs::get::mntpoint2part($::prefix, [ fs::read_fstab('', '/proc/mounts') ])) {
+    die "unknown distribution mounted in $::prefix\n";
+} else {
+    die "Your root device isn't mounted on $::prefix\n";
+}
+
+my @main_methods = bootloader::configured_main_methods();
+
+my $main_method;
+if (@main_methods == 0) {
+    die "Cannot find a configured boot loader\n";
+} elsif (@main_methods == 1) {
+    ($main_method) = @main_methods;
+} else {
+    while (1) {
+	print "Configuration files for Boot Loaders ", join(' and ', @main_methods), " were found.\n";
+	print "Which one one should be installed? ";
+	chomp($main_method = <STDIN>);
+	if (member($main_method, @main_methods)) {
+	    last;
+	} else {
+	    print "bad choice\n";
+	}
+    }
+}
+
+my $install = $bootloader::{'install_raw_' . $main_method} or die "unknown bootloader method install_raw_$main_method\n";
+
+print "About to re-install Boot Loader $main_method of following %s distribution:\n\t",
+  $release, "\n";
+if (!$auto) {
+    print "=> ok? <press Enter to continue, 'n' and Enter to cancel> ";
+    <STDIN> =~ /^n/i and exit 0;
+}
+
+$install->();


Property changes on: drakx/trunk/rescue/install_bootloader
___________________________________________________________________
Added: svn:executable
   + *

Added: drakx/trunk/rescue/list.xml
===================================================================
--- drakx/trunk/rescue/list.xml	                        (rev 0)
+++ drakx/trunk/rescue/list.xml	2011-02-09 23:30:32 UTC (rev 502)
@@ -0,0 +1,348 @@
+<list no-arch-libraries="on">
+
+<from expand="binary">
+  bash sh
+
+  false true
+  pwd reset
+
+  ls
+  cp ln mkdir mknod mv rm rmdir   
+  chmod chown
+  dd touch
+
+  cat less
+  tail head tee
+  sort split cut
+  grep
+
+  cmp diff
+  find
+  file md5sum
+
+  gzip zcat gunzip
+  bzip2 bunzip2 bzcat
+
+  df du
+
+  packdrake
+  cpio ftp tar
+  rsync
+  ssh scp
+  telnet
+  host
+
+  date
+  dmesg
+  chroot
+  sleep
+  sync
+
+  eject
+  mount mount.nfs umount
+  losetup
+
+  ldconfig
+  mingetty init
+  reboot halt shutdown
+  kill killall5 ps strace
+  sed tr
+  strings
+
+  loadkeys tset stty
+
+  ping hostname ifconfig route
+
+  fdformat badblocks
+  mkswap swapoff swapon
+  e2fsck fsck.ext2 fsck.ext3 fsck.ext4
+  mke2fs mkfs.ext2 mkfs.ext3 mkfs.ext4 
+  dumpe2fs tune2fs resize2fs debugfs
+
+  mkfs.reiserfs resize_reiserfs reiserfstune reiserfsck
+  mkfs.xfs xfs_admin xfs_repair fsck.xfs
+  mkfs.ntfs mkdosfs dosfslabel mkntfs ntfsresize ntfslabel 
+  <if ARCH="i.86|x86_64">
+    mkfs.jfs fsck.jfs jfs_tune
+  </if>
+  quotacheck
+  cryptsetup dmsetup
+
+  <if ARCH="ppc">
+    hformat
+  </if>
+
+  <if-not ARCH="ppc">
+    fdisk gpart
+    testdisk photorec
+  </if-not>
+
+  <if-not ARCH="ppc|sparc">
+    sfdisk
+  </if-not>
+                     
+  <if ARCH="ppc">
+    pdisk 
+  </if>
+  dump dump.ext2 restore restore.ext2 dump.ext3 restore.ext3 dump.xfs restore.xfs
+  parted partimage
+
+  mdadm lvm2
+  mdmon kpartx
+  dmevent_tool
+  dmeventd
+  <if ARCH="i.86|x86_64|ia64">
+    dmraid
+  </if>
+
+  lsmod
+  insmod
+  rmmod
+
+  setserial
+  mt stinit
+
+  lspci lspcidrake
+
+  rpm
+  rpm2cpio rpmdb
+  rpmquery rpmverify
+
+  vim-minimal hexedit
+
+  perl
+  uniq
+  wget
+
+  awk clear dialog wc
+  setterm
+
+  <if ARCH="i.86|x86_64|ia64">
+    dmidecode 
+  </if>
+
+  <if ARCH="i.86|x86_64">
+    grub grub-install
+  </if>
+  <if ARCH="ia64">
+    efibootmgr 
+  </if>
+  <if ARCH="ppc">
+    ybin
+    mkofboot ofpath
+    nvsetenv
+  </if>
+  <if ARCH="sparc">
+    silo
+  </if>
+</from>
+
+<from>
+  /usr/lib/kbd/keymaps/include
+  <if ARCH="i.86|x86_64">    
+    /usr/lib/kbd/keymaps/i386/include
+    /usr/lib/kbd/keymaps/i386/azerty/be-latin1.map.gz <!-- this one is needed by be2-latin1 -->
+  </if>
+  /usr/share/misc/magic.mgc
+  /usr/share/terminfo/l/linux
+  /usr/share/pci.ids
+  /var/run/utmp
+
+  <if ARCH="i.86|x86_64">    
+    <from dir="/lib/grub/ARCH-mageia" expand="glob">
+      stage1
+      stage2
+      *_stage1_5
+    </from>
+    /usr/lib/extipl/aldebaran.bin
+  </if>
+
+  <if ARCH="ppc">
+    /usr/lib/yaboot/ofboot
+    /usr/lib/yaboot/yaboot    
+  </if>
+
+  <from expand="command">
+    perl -Mkeyboard -I/usr/lib/libDrakX -le 'print foreach keyboard::loadkeys_files()'
+  </from>
+
+  <if set="LANGUAGE_fr_FR">
+    /usr/lib/gconv/gconv-modules
+    /usr/lib/gconv/ISO8859-15.so
+    /usr/share/locale/ISO-8859-15
+    /usr/share/locale/fr_FR
+    /usr/share/locale/fr/LC_MESSAGES/partimage.mo
+  </if>
+  <if set="LANGUAGE_pt_BR">
+    /usr/lib/gconv/gconv-modules
+    /usr/lib/gconv/ISO8859-15.so
+    /usr/share/locale/ISO-8859-15
+    /usr/share/locale/pt_BR
+    /usr/share/locale/pt/LC_MESSAGES/partimage.mo
+  </if>
+  <!-- needed by mlabel used during Flash upgrades -->
+  /usr/lib/gconv/IBM850.so
+
+
+  /sbin/mount.ntfs-3g <!-- can not be expanded as binary, not executable for all users -->
+  /sbin/blkid
+</from>
+
+<from dir="/usr/lib/rpm" expand="glob">
+  <mode copy="keep-links">
+    rpmrc

@@ Diff output truncated at 20000 characters. @@