2aef98cb23
Placed here for reference as to what remains to be done. The orig/ subdir is the unmodified tools from anaconda. The scratch/ subdir is a merge of orig in to a working area. I delete blocks of code from there as I rewrite them.
1031 lines
27 KiB
Bash
Executable File
1031 lines
27 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# upd-instroot
|
|
#
|
|
# Copyright (C) 2007, 2008 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
ORIGDIR=`pwd`
|
|
DEBUG=""
|
|
ARCH=`uname -m`
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case $1 in
|
|
--debug)
|
|
DEBUG="--debug"
|
|
shift
|
|
;;
|
|
|
|
--arch)
|
|
ARCH=$2
|
|
shift; shift
|
|
;;
|
|
|
|
--imgdir)
|
|
DEST=$2
|
|
shift; shift
|
|
;;
|
|
|
|
# a filesystem tree to use as updates. could be the output
|
|
# of 'make install' from anaconda...
|
|
--updates)
|
|
UPDATES=$2
|
|
shift; shift
|
|
;;
|
|
|
|
--nogr)
|
|
echo "*** DeprecationWarning: ignoring --nogr option." >&2
|
|
shift
|
|
;;
|
|
|
|
--mindir)
|
|
echo "*** DeprecationWarning: ignoring --mindir option." >&2
|
|
shift; shift
|
|
;;
|
|
|
|
--stg2dir)
|
|
echo "*** DeprecationWarning: please use --imgdir instead of --stg2dir." >&2
|
|
shift; shift
|
|
;;
|
|
|
|
*)
|
|
yumconf=$1
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$yumconf" ]; then
|
|
echo "upd-instroot: updates instimage from a Red Hat RPMS directory"
|
|
echo "usage: $0 [--debug] [--arch arch] [--imgdir imgdir] [yumconf]"
|
|
exit 1
|
|
fi
|
|
|
|
if [ $ARCH = x86_64 -o $ARCH = s390x -o $ARCH = ppc64 ]; then
|
|
LIBDIR=lib64
|
|
else
|
|
LIBDIR=lib
|
|
fi
|
|
|
|
if [ -z "$DEST" ]; then
|
|
DEST=`mktemp -d ${TMPDIR:-/tmp}/dest.XXXXXX`
|
|
fi
|
|
|
|
if [ ! -f $yumconf ]; then
|
|
echo "Unable to find yum repo information!"
|
|
exit 1
|
|
fi
|
|
|
|
. $(dirname $0)/buildinstall.functions
|
|
|
|
expandPackageSet() {
|
|
YUMCONF=$1
|
|
YUMDIR=$2
|
|
RPMS=$3
|
|
PKGDEST=$4
|
|
KEEPFILES=$5
|
|
|
|
[ -d $PKGDEST ] || die "ERROR: directory missing: $PKGDEST"
|
|
if [ -z "$DEBUG" ]; then outlvl="--quiet" ; else outlvl="--verbose"; fi
|
|
yum $outlvl -c $YUMCONF -y --installroot=$YUMDIR install $RPMS 2>&1 || die "ERROR: could not install packages"
|
|
|
|
if [ -n "$UPDATES" ]; then
|
|
(cd $UPDATES; find) | (cd $UPDATES ; /bin/cpio --quiet -pmdu $YUMDIR)
|
|
fi
|
|
|
|
# figure out the theme to keep
|
|
if [ -f $YUMDIR/etc/gtk-2.0/gtkrc ]; then
|
|
gtktheme=$(grep "gtk-theme-name" $YUMDIR/etc/gtk-2.0/gtkrc | awk {'print $3;'} | sed -e 's/"//g')
|
|
echo "usr/share/themes/$gtktheme" >> $KEEPFILES
|
|
# find gtk engine needed
|
|
for engine in `grep engine $YUMDIR/usr/share/themes/$gtktheme/gtk-2.0/gtkrc | awk {'print $2;'} | sed -e 's/"//g' | sort -u` ; do
|
|
echo "usr/$LIBDIR/gtk-2.0/*/engines/*$engine*" >> $KEEPFILES
|
|
done
|
|
|
|
theme=$(grep "gtk-icon-theme-name" $YUMDIR/etc/gtk-2.0/gtkrc | awk {'print $3;'} | sed -e 's/"//g')
|
|
while [ -n "$theme" ]; do
|
|
echo "usr/share/icons/$theme" >> $KEEPFILES
|
|
theme=$(grep Inherits $YUMDIR/usr/share/icons/$theme/index.theme | cut -d = -f 2)
|
|
done
|
|
fi
|
|
|
|
echo `date` "Installing files"
|
|
pushd $YUMDIR >/dev/null
|
|
cat $KEEPFILES | while read spec ; do
|
|
#Pull off path
|
|
path=`echo "$spec" | sed 's,\([^[*\?]*\)/.*,\1,'`
|
|
for filespec in `find ./$path -path "./$spec" 2> /dev/null` ; do
|
|
if [ ! -e $filespec ]; then
|
|
continue
|
|
elif [ ! -d $filespec ]; then
|
|
instFile $filespec $PKGDEST
|
|
else
|
|
for i in `find $filespec -type f 2> /dev/null` ; do instFile $i $PKGDEST ; done
|
|
for i in `find $filespec -type l 2> /dev/null` ; do instFile $i $PKGDEST ; done
|
|
for d in `find $filespec -type d 2> /dev/null` ; do instDir $d $PKGDEST ; done
|
|
fi
|
|
done
|
|
done
|
|
popd >/dev/null
|
|
}
|
|
|
|
die () {
|
|
echo "$@"
|
|
echo "Aborting instroot creation..."
|
|
exit 1
|
|
}
|
|
|
|
PACKAGES="GConf2 NetworkManager ORBit2 PolicyKit VLGothic-fonts acl anaconda
|
|
anaconda-yum-plugins at-spi atk attr audit-libs bash bitmap-fonts-cjk
|
|
booty busybox-anaconda bzip2 bzip2-libs cairo cjkunifonts-ukai
|
|
comps-extras coreutils cpio cracklib-dicts cracklib-python
|
|
cryptsetup-luks db4 dbus dbus-python dejavu-fonts device-mapper
|
|
device-mapper-libs dhclient dhcpv6-client dmapi dmraid dmraid-libs
|
|
dogtail dosfstools e2fsprogs e2fsprogs-libs echo-icon-theme
|
|
elfutils-libelf expat firstboot fontconfig fonts-arabic fonts-bengali
|
|
fonts-chinese fonts-gujarati fonts-hindi fonts-indic fonts-ISO8859-2
|
|
fonts-kannada fonts-oriya fonts-punjabi
|
|
fonts-sinhala fonts-tamil fonts-telugu freetype gail gdk-pixbuf
|
|
gfs2-utils glib2 glibc-common gnome-python2-canvas gnome-python2-gconf
|
|
gnome-python2-gtkhtml2 gnome-themes gpm gtk2 gtk2-engines gtkhtml2 hal
|
|
hdparm hwdata initscripts iproute iputils iscsi-initiator-utils
|
|
jfsutils keyutils-libs krb5-libs libICE libSM libX11 libXau
|
|
libXaw libXcursor libXdmcp libXevie libXext libXfixes libXfont libXft
|
|
libXi libXinerama libXmu libXpm libXrandr libXrender libXt libXtst
|
|
libXxf86misc libacl libart_lgpl libattr libbdevid libbdevid-python
|
|
libbonobo libdhcp libdhcp4client libdhcp6client libfontenc libgcc
|
|
libglade2 libgnomecanvas libgcrypt libgpg-error libjpeg liblbxutil libnl
|
|
libpixman libpng libselinux libselinux-python libsemanage
|
|
libsemanage-python libsepol libstdc++ libtermcap libthai libuser
|
|
libuser-python libvolume_id libxcb libxkbfile libxml2 lvm2 mdadm
|
|
mesa-dri-drivers mkinitrd module-init-tools nash ncurses neon net-tools
|
|
newt newt-python nfs-utils nspr nss pam pango parted pciutils pcre
|
|
policy policycoreutils popt prelink procps pycairo pygobject2 pygtk2
|
|
pygtk2-libglade pykickstart pyparted pyspi python python-bugzilla
|
|
python-elementtree python-libs python-pyblock python-sqlite
|
|
python-urlgrabber pyxf86config raidtools readline redhat-artwork
|
|
reiserfs-utils rhpl rpm rpm-libs rpm-python sed selinux-policy-targeted
|
|
setup slang smc-fonts-meera specspo sqlite synaptics system-config-date
|
|
system-config-keyboard system-logos system-release taipeifonts
|
|
tcp_wrappers ttfonts-bn ttfonts-gu ttfonts-hi ttfonts-ja ttfonts-ko
|
|
ttfonts-pa ttfonts-ta ttfonts-zh_CN ttfonts-zh_TW tzdata udev
|
|
un-core-fonts-dotum urw-fonts
|
|
util-linux-ng vnc-libs vnc-server wpa_supplicant xkeyboard-config
|
|
xfsdump xfsprogs xorg-x11 xorg-x11-auth xorg-x11-base
|
|
xorg-x11-drivers xorg-x11-font-utils xorg-x11-fonts-100dpi
|
|
xorg-x11-fonts-75dpi xorg-x11-fonts-ISO8859-1-75dpi
|
|
xorg-x11-fonts-ISO8859-15-75dpi xorg-x11-fonts-ISO8859-2-75dpi
|
|
xorg-x11-fonts-ISO8859-9-75dpi xorg-x11-fonts-cyrillic
|
|
xorg-x11-fonts-ethiopic xorg-x11-fonts-misc xorg-x11-libs
|
|
xorg-x11-libs-data xorg-x11-server-utils xorg-x11-server-Xorg
|
|
xorg-x11-xkb-utils xorg-x11-xkbdata xorg-x11-xfs yum yum-fedorakmod
|
|
yum-metadata-parser zenity zlib /etc/gtk-2.0/gtkrc"
|
|
|
|
if [ $ARCH = i386 ]; then
|
|
PACKAGES="$PACKAGES glibc.i386 openssl.i386"
|
|
else
|
|
PACKAGES="$PACKAGES glibc openssl"
|
|
fi
|
|
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
|
|
PACKAGES="$PACKAGES pcmciautils grub"
|
|
fi
|
|
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 -o $ARCH = ia64 ]; then
|
|
PACKAGES="$PACKAGES dmidecode efibootmgr"
|
|
fi
|
|
|
|
if [ $ARCH = ia64 ]; then
|
|
# XXX this needs to switch to grub at some point...
|
|
PACKAGES="$PACKAGES elilo"
|
|
fi
|
|
|
|
if [ $ARCH = s390 -o $ARCH = s390x ]; then
|
|
PACKAGES="$PACKAGES s390utils binutils libgcc tcp_wrappers
|
|
sed net-tools openssh openssh-server coreutils
|
|
login initscripts bash portmap pam
|
|
login mount grep modutils gawk
|
|
strace xorg-x11-xauth xorg-x11-libs"
|
|
fi
|
|
|
|
if [ $ARCH = ppc -o $ARCH = ppc64 ]; then
|
|
PACKAGES="$PACKAGES pcmciautils pdisk yaboot hfsutils"
|
|
fi
|
|
|
|
#
|
|
# stuff ONLY included for rescue mode
|
|
#
|
|
# these packages are combined with the PACKAGES for big stage 2
|
|
#
|
|
PACKAGESRESCUE="bzip2 bzip2-libs dump libidn
|
|
findutils ftp gzip iputils joe krb5-libs less man
|
|
modutils mtools mt-st mtr net-tools open smartmontools
|
|
openssh openssh-clients pciutils rsh traceroute tar rsync
|
|
device-mapper device-mapper-libs dmraid ntfsprogs samba-client
|
|
firstaidkit-plugin-all"
|
|
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
|
|
PACKAGESRESCUE="$PACKAGESRESCUE gpart grub"
|
|
fi
|
|
|
|
#
|
|
# add bootloader for particular arch
|
|
#
|
|
if [ $ARCH = sparc ]; then
|
|
PACKAGES="$PACKAGES tilo silo"
|
|
fi
|
|
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
|
|
PACKAGES="$PACKAGES syslinux memtest86+ grub"
|
|
fi
|
|
|
|
if [ $ARCH = alpha ]; then
|
|
PACKAGES="$PACKAGES aboot"
|
|
fi
|
|
|
|
if [ $ARCH = ppc ]; then
|
|
PACKAGES="$PACKAGES fbset yaboot ppc64-utils"
|
|
fi
|
|
|
|
#
|
|
# KEEPFILE is all files to keep from the packages in PACKAGES
|
|
#
|
|
# The files in this list define the install image used for all installation
|
|
# methods.
|
|
#
|
|
# The rescue mode of anaconda uses these files as well as those defined
|
|
# by KEEPFILERESCUE below. The total size of this image should be
|
|
# under the size of the miniature CD used for the rescue CD (around 68MB).
|
|
#
|
|
KEEPFILE=${TMPDIR:-/tmp}/keepfile.$$
|
|
cat > $KEEPFILE <<EOF
|
|
$LIBDIR/bdevid
|
|
$LIBDIR/dbus-1
|
|
$LIBDIR/libfreebl3.so
|
|
$LIBDIR/libnss3.so
|
|
$LIBDIR/libnss_dns*
|
|
$LIBDIR/libnss_files*
|
|
$LIBDIR/libnssckbi.so
|
|
$LIBDIR/libnsspem.so
|
|
$LIBDIR/libsmime3.so
|
|
$LIBDIR/libsoftokn3.so
|
|
$LIBDIR/libssl3.so
|
|
bin/bash
|
|
bin/cat
|
|
bin/chmod
|
|
bin/cp
|
|
bin/cpio
|
|
bin/dbus-daemon
|
|
bin/dbus-uuidgen
|
|
bin/dd
|
|
bin/df
|
|
bin/du
|
|
bin/fdisk*
|
|
bin/ln
|
|
bin/ls
|
|
bin/mkdir
|
|
bin/mount
|
|
bin/mv
|
|
bin/ps
|
|
bin/rm
|
|
bin/rpm
|
|
bin/sed
|
|
bin/touch
|
|
bin/umount
|
|
boot/*.b
|
|
boot/bootlx
|
|
boot/efi/EFI/redhat/elilo.efi
|
|
boot/efi/EFI/redhat/grub.efi
|
|
boot/efika.forth
|
|
boot/memtest86*
|
|
etc/NetworkManager/nm-system-settings.conf
|
|
etc/NetworkManager/dispatcher.d
|
|
etc/PolicyKit/*
|
|
etc/dbus-1/*
|
|
etc/dbus-1/system.d/*
|
|
etc/fb.modes
|
|
etc/fonts
|
|
etc/group
|
|
etc/gtk-2.0/gtkrc*
|
|
etc/hal
|
|
etc/im_palette.pal
|
|
etc/imrc
|
|
etc/iscsid.conf
|
|
etc/man.config
|
|
etc/mke2fs.conf
|
|
etc/nsswitch.conf
|
|
etc/pango
|
|
etc/passwd
|
|
etc/pcmcia
|
|
etc/prelink.conf
|
|
etc/protocols
|
|
etc/rc.d/init.d/functions
|
|
etc/rpm/macros.prelink
|
|
etc/selinux/targeted
|
|
etc/services
|
|
etc/shells
|
|
etc/sysconfig/network-scripts/network-functions*
|
|
etc/udev
|
|
etc/wpa_supplicant/wpa_supplicant.conf
|
|
etc/yum.repos.d/*
|
|
etc/yum/pluginconf.d/blacklist.conf
|
|
etc/yum/pluginconf.d/fedorakmod.conf
|
|
etc/yum/pluginconf.d/whiteout.conf
|
|
lib/terminfo
|
|
lib/udev
|
|
sbin/*gfs*
|
|
sbin/arping
|
|
sbin/badblocks
|
|
sbin/busybox.anaconda
|
|
sbin/clock
|
|
sbin/consoletype
|
|
sbin/cryptsetup
|
|
sbin/debugfs
|
|
sbin/dhclient
|
|
sbin/dhclient-script
|
|
sbin/dhcp6c
|
|
sbin/dosfslabel
|
|
sbin/dumpe2fs
|
|
sbin/e2fsadm
|
|
sbin/e2fsck
|
|
sbin/e2label
|
|
sbin/fdisk
|
|
sbin/fsck
|
|
sbin/fsck.ext2
|
|
sbin/fsck.ext3
|
|
sbin/fsck.jfs
|
|
sbin/fsck.reiserfs
|
|
sbin/fsck.xfs
|
|
sbin/hdparm
|
|
sbin/hwclock
|
|
sbin/ifconfig
|
|
sbin/ip
|
|
sbin/iscsiadm
|
|
sbin/iscsid
|
|
sbin/iscsistart
|
|
sbin/jfs_tune
|
|
sbin/ldconfig
|
|
sbin/lspci
|
|
sbin/lvm*
|
|
sbin/mdadm
|
|
sbin/mkdosfs
|
|
sbin/mke2fs
|
|
sbin/mkfs.ext2
|
|
sbin/mkfs.ext3
|
|
sbin/mkfs.gfs2
|
|
sbin/mkfs.jfs
|
|
sbin/mkfs.msdos
|
|
sbin/mkfs.vfat
|
|
sbin/mkfs.xfs
|
|
sbin/mkraid
|
|
sbin/mkreiserfs
|
|
sbin/mkswap
|
|
sbin/mount.nfs*
|
|
sbin/parted
|
|
sbin/pcmcia-socket-startup
|
|
sbin/pdisk
|
|
sbin/probe
|
|
sbin/reiserfsck
|
|
sbin/reiserfstune
|
|
sbin/resize2fs
|
|
sbin/setfiles
|
|
sbin/sfdisk
|
|
sbin/silo
|
|
sbin/tune2fs
|
|
sbin/udev*
|
|
sbin/umount.nfs*
|
|
sbin/xfs_repair
|
|
sbin/xfsdump
|
|
sbin/xfsrestore
|
|
usr/$LIBDIR/NetworkManager
|
|
usr/$LIBDIR/dri
|
|
usr/$LIBDIR/gconv
|
|
usr/$LIBDIR/gdk-pixbuf/loaders/*la*
|
|
usr/$LIBDIR/gdk-pixbuf/loaders/*png*
|
|
usr/$LIBDIR/gdk-pixbuf/loaders/*xpm*
|
|
usr/$LIBDIR/gtk-2.0/*/engines/libclearlooks.so
|
|
usr/$LIBDIR/gtk-2.0/*/loaders/*la*
|
|
usr/$LIBDIR/gtk-2.0/*/loaders/*png*
|
|
usr/$LIBDIR/gtk-2.0/*/loaders/*xpm*
|
|
usr/$LIBDIR/gtk-2.0/immodules
|
|
usr/$LIBDIR/hal
|
|
usr/$LIBDIR/libuser/*
|
|
usr/$LIBDIR/pango
|
|
usr/$LIBDIR/python?.?
|
|
usr/$LIBDIR/python?.?/email
|
|
usr/$LIBDIR/python?.?/site-packages/*.pth
|
|
usr/$LIBDIR/python?.?/site-packages/*selinux*
|
|
usr/$LIBDIR/python?.?/site-packages/*sqlite*
|
|
usr/$LIBDIR/python?.?/site-packages/_dbus*
|
|
usr/$LIBDIR/python?.?/site-packages/bdevid.so
|
|
usr/$LIBDIR/python?.?/site-packages/block
|
|
usr/$LIBDIR/python?.?/site-packages/cElementTree.so
|
|
usr/$LIBDIR/python?.?/site-packages/cairo
|
|
usr/$LIBDIR/python?.?/site-packages/firstboot
|
|
usr/$LIBDIR/python?.?/site-packages/gtk*
|
|
usr/$LIBDIR/python?.?/site-packages/gtk*/gtk
|
|
usr/$LIBDIR/python?.?/site-packages/ixf86configmodule.so
|
|
usr/$LIBDIR/python?.?/site-packages/libusermodule.so
|
|
usr/$LIBDIR/python?.?/site-packages/partedmodule.so
|
|
usr/$LIBDIR/python?.?/site-packages/rhpl
|
|
usr/$LIBDIR/python?.?/site-packages/rpmmodule.so
|
|
usr/$LIBDIR/python?.?/site-packages/xf86config.py
|
|
usr/$LIBDIR/python?.?/xml/etree/
|
|
usr/$LIBDIR/rpm/rpmpopt
|
|
usr/$LIBDIR/libsqlite3.so*
|
|
usr/$LIBDIR/xorg/modules
|
|
usr/$LIBDIR/xserver/SecurityPolicy
|
|
usr/bin/Xorg
|
|
usr/bin/Xvnc
|
|
usr/bin/chattr*
|
|
usr/bin/gdialog
|
|
usr/bin/gdk-pixbuf-query-loaders*
|
|
usr/bin/gtk-query*
|
|
usr/bin/gtk-update-icon-cache*
|
|
usr/bin/hattrib
|
|
usr/bin/hcopy
|
|
usr/bin/head
|
|
usr/bin/hformat
|
|
usr/bin/hmount
|
|
usr/bin/humount
|
|
usr/bin/logger
|
|
usr/bin/lsattr*
|
|
usr/bin/lshal
|
|
usr/bin/maketilo
|
|
usr/bin/mini-wm
|
|
usr/bin/mkzimage
|
|
usr/bin/pango*
|
|
usr/bin/python
|
|
usr/bin/python?.?
|
|
usr/bin/reduce-font
|
|
usr/bin/setxkbmap
|
|
usr/bin/syslinux
|
|
usr/bin/tac
|
|
usr/bin/tail
|
|
usr/bin/tilo
|
|
usr/bin/udevinfo
|
|
usr/bin/uniq
|
|
usr/bin/vncconfig
|
|
usr/bin/vncpasswd
|
|
usr/bin/xkbcomp
|
|
usr/bin/xrandr
|
|
usr/bin/zenity
|
|
usr/lib/anaconda
|
|
usr/lib/anaconda-runtime
|
|
usr/lib/anaconda/installclasses
|
|
usr/lib/anaconda/iw
|
|
usr/lib/anaconda/textw
|
|
usr/lib/booty
|
|
usr/lib/kernel-wrapper
|
|
usr/lib/locale
|
|
usr/lib/python?.?/site-packages/bugzilla*
|
|
usr/lib/python?.?/site-packages/cracklibmodule.so
|
|
usr/lib/python?.?/site-packages/dbus
|
|
usr/lib/python?.?/site-packages/dbus_bindings.py*
|
|
usr/lib/python?.?/site-packages/elementtree
|
|
usr/lib/python?.?/site-packages/iniparse
|
|
usr/lib/python?.?/site-packages/pykickstart
|
|
usr/lib/python?.?/site-packages/repomd
|
|
usr/lib/python?.?/site-packages/rpmUtils
|
|
usr/lib/python?.?/site-packages/urlgrabber
|
|
usr/lib/python?.?/site-packages/yum
|
|
usr/lib/rpm/macros
|
|
usr/lib/rpm/rpmpopt
|
|
usr/lib/rpm/rpmrc
|
|
usr/lib/syslinux
|
|
usr/lib/yaboot
|
|
usr/lib/yum-plugins/blacklist.py*
|
|
usr/lib/yum-plugins/fedorakmod.py*
|
|
usr/lib/yum-plugins/whiteout.py*
|
|
usr/libexec/convertdb1
|
|
usr/libexec/hal*
|
|
usr/libexec/nm-crash-logger
|
|
usr/libexec/nm-dhcp-client.action
|
|
usr/libexec/nm-dispatcher.action
|
|
usr/libexec/polkit*
|
|
usr/sbin/NetworkManager
|
|
usr/sbin/nm-system-settings
|
|
usr/sbin/addRamDisk
|
|
usr/sbin/anaconda
|
|
usr/sbin/chroot
|
|
usr/sbin/ddcprobe
|
|
usr/sbin/dmidecode
|
|
usr/sbin/efibootmgr
|
|
usr/sbin/fbset
|
|
usr/sbin/genhomedircon
|
|
usr/sbin/gptsync
|
|
usr/sbin/hald
|
|
usr/sbin/load_policy
|
|
usr/sbin/lvm
|
|
usr/sbin/mkofboot
|
|
usr/sbin/ofpath
|
|
usr/sbin/prelink
|
|
usr/sbin/semodule
|
|
usr/sbin/showpart
|
|
usr/sbin/smartctl
|
|
usr/sbin/wpa_passphrase
|
|
usr/sbin/wpa_supplicant
|
|
usr/sbin/wrapper
|
|
usr/sbin/xfs_admin
|
|
usr/sbin/xfs_check
|
|
usr/sbin/xfs_copy
|
|
usr/sbin/xfs_db
|
|
usr/sbin/ybin
|
|
usr/share/PolicyKit/policy/*
|
|
usr/share/X11/XKeysymDB
|
|
usr/share/X11/fonts/TTF/GohaTibebZemen.ttf
|
|
usr/share/X11/fonts/misc/6x13*
|
|
usr/share/X11/fonts/misc/cursor*
|
|
usr/share/X11/fonts/misc/fonts*
|
|
usr/share/X11/fonts/misc/olcursor*
|
|
usr/share/X11/locale
|
|
usr/share/X11/rgb*
|
|
usr/share/X11/xkb
|
|
usr/share/anaconda
|
|
usr/share/anaconda/anaconda.conf
|
|
usr/share/cracklib
|
|
usr/share/dbus-1
|
|
usr/share/fonts/*/lklug.ttf
|
|
usr/share/fonts/*/lohit_bn.ttf
|
|
usr/share/fonts/*/lohit_gu.ttf
|
|
usr/share/fonts/*/lohit_hi.ttf
|
|
usr/share/fonts/*/lohit_kn.ttf
|
|
usr/share/fonts/*/lohit_or.ttf
|
|
usr/share/fonts/*/lohit_pa.ttf
|
|
usr/share/fonts/*/lohit_ta.ttf
|
|
usr/share/fonts/*/lohit_te.ttf
|
|
usr/share/fonts/VLGothic/VL-Gothic-Regular.ttf
|
|
usr/share/fonts/cjkunifonts-uming/uming*.ttf
|
|
usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
|
|
usr/share/fonts/dejavu/DejaVuSans.ttf
|
|
usr/share/fonts/dejavu/DejaVuSansMono.ttf
|
|
usr/share/fonts/kacst/KacstFarsi.ttf
|
|
usr/share/fonts/kacst/KacstQura.ttf
|
|
usr/share/fonts/un-core/UnDotum.ttf
|
|
usr/share/fonts/smc/Meera*.ttf
|
|
usr/share/hal
|
|
usr/share/hwdata/MonitorsDB
|
|
usr/share/hwdata/pci.ids
|
|
usr/share/hwdata/usb.ids
|
|
usr/share/hwdata/videoaliases
|
|
usr/share/hwdata/videodrivers
|
|
usr/share/locale/*/LC_MESSAGES/anaconda.mo
|
|
usr/share/locale/*/LC_MESSAGES/gtk20.mo
|
|
usr/share/locale/*/LC_MESSAGES/libc.mo
|
|
usr/share/locale/*/LC_MESSAGES/parted.mo
|
|
usr/share/locale/*/LC_MESSAGES/redhat-dist.mo
|
|
usr/share/locale/*/LC_MESSAGES/rhpl.mo
|
|
usr/share/locale/*/LC_MESSAGES/system-config-date.mo
|
|
usr/share/locale/*/LC_MESSAGES/system-config-keyboard.mo
|
|
usr/share/locale/*/LC_MESSAGES/zenity.mo
|
|
usr/share/locale/locale.alias
|
|
usr/share/pixmaps/comps/*.png
|
|
usr/share/pixmaps/gnome-default-dlg.png
|
|
usr/share/pixmaps/gnome-error.png
|
|
usr/share/pixmaps/gnome-info.png
|
|
usr/share/pixmaps/gnome-question.png
|
|
usr/share/pixmaps/gnome-warning.png
|
|
usr/share/pixmaps/no.xpm
|
|
usr/share/pixmaps/yes.xpm
|
|
usr/share/ppc64-utils
|
|
usr/share/system-config-date
|
|
usr/share/system-config-date/zonetab.py*
|
|
usr/share/system-config-keyboard
|
|
usr/share/terminfo/l/linux
|
|
usr/share/terminfo/v/vt100
|
|
usr/share/terminfo/v/vt100-nav
|
|
usr/share/terminfo/v/vt320
|
|
usr/share/terminfo/v/vt320-w
|
|
usr/share/terminfo/x/xterm
|
|
usr/share/xorg/extramodes
|
|
usr/share/xorg/vesamodes
|
|
usr/share/zenity
|
|
usr/share/zoneinfo/zone.tab
|
|
var/cache/hald
|
|
var/lib/PolicyKit*
|
|
var/lib/dbus
|
|
var/lib/hal
|
|
var/lib/misc/PolicyKit*
|
|
var/run/PolicyKit
|
|
var/run/dbus
|
|
EOF
|
|
|
|
if [ $ARCH = s390 -o $ARCH = s390x ]; then
|
|
cat >> $KEEPFILE <<EOF
|
|
usr/share/terminfo/a/ansi
|
|
usr/share/terminfo/d/dumb
|
|
usr/share/terminfo/k/kterm
|
|
usr/share/terminfo/s/screen
|
|
usr/share/terminfo/v/vt102
|
|
usr/share/terminfo/v/vt320
|
|
usr/share/terminfo/v/vt320-w
|
|
usr/share/terminfo/x/xterm
|
|
usr/share/terminfo/x/xterm-color
|
|
usr/bin/strace
|
|
usr/bin/ldd
|
|
usr/sbin/chroot
|
|
usr/sbin/sshd
|
|
usr/sbin/glibc_post_upgrade
|
|
sbin/cmsfslst
|
|
sbin/cmsfscat
|
|
sbin/busybox.anaconda
|
|
sbin/ifconfig
|
|
sbin/route
|
|
sbin/portmap
|
|
sbin/fdasd
|
|
sbin/dasdfmt
|
|
sbin/swapon
|
|
sbin/swapoff
|
|
sbin/mkswap
|
|
bin/bash
|
|
bin/dd
|
|
bin/gawk
|
|
bin/mount
|
|
bin/umount
|
|
bin/mknod
|
|
bin/sleep
|
|
bin/login
|
|
bin/cat
|
|
bin/chmod
|
|
bin/sort
|
|
lib/modules/ibm
|
|
etc/pam.d/sshd
|
|
etc/pam.d/other
|
|
etc/security/limits.conf
|
|
etc/security/pam_env.conf
|
|
lib/security
|
|
$LIBDIR/security/pam_*
|
|
usr/bin/xauth
|
|
EOF
|
|
fi
|
|
|
|
# more dogtail stuff...
|
|
cat >> $KEEPFILE <<EOF
|
|
usr/$LIBDIR/gtk-2.0/modules/libatk-bridge.so
|
|
usr/$LIBDIR/gtk-2.0/modules/libgail.so
|
|
usr/libexec/bonobo-activation-server
|
|
usr/libexec/at-spi-registryd
|
|
usr/$LIBDIR/bonobo/servers
|
|
usr/libexec/gconfd-2
|
|
usr/$LIBDIR/GConf/2/libgconfbackend-xml.so
|
|
usr/$LIBDIR/python?.?/site-packages/gtk-2.0/atk.so
|
|
usr/$LIBDIR/python?.?/site-packages/gtk-2.0/gconf.so
|
|
usr/$LIBDIR/python?.?/site-packages/atspi.so
|
|
usr/lib/python?.?/site-packages/dogtail/*.py
|
|
EOF
|
|
|
|
#
|
|
# KEEPFILERESCUE is all files to keep from the packages in PACKAGESRESCUE
|
|
#
|
|
# This defines the files in addition to KEEPFILE that make up
|
|
# the install images for NFS and CD/DVD based rescue mode installs. This
|
|
# image is not loaded into memory so it can be considerably larger.
|
|
#
|
|
# NOTE: hd, ftp, and http rescue mode use and image based on KEEPFILE since
|
|
# it has to be much smaller due to memory usage.
|
|
#
|
|
KEEPFILERESCUE=${TMPDIR:-/tmp}/keepfilerescue.$$
|
|
cat > $KEEPFILERESCUE <<EOF
|
|
bin/find
|
|
bin/gunzip
|
|
bin/gzip
|
|
bin/mt
|
|
bin/ping
|
|
bin/sync
|
|
bin/tar
|
|
bin/zcat
|
|
etc/joe
|
|
sbin/arp
|
|
sbin/blkid
|
|
sbin/depmod
|
|
sbin/dmraid
|
|
sbin/dmsetup
|
|
sbin/dump
|
|
sbin/ifconfig
|
|
sbin/insmod
|
|
sbin/lsmod
|
|
sbin/modinfo
|
|
sbin/modprobe
|
|
sbin/netstat
|
|
sbin/restore
|
|
sbin/rrestore
|
|
sbin/rmmod
|
|
sbin/route
|
|
sbin/mount.cifs
|
|
sbin/umount.cifs
|
|
usr/bin/bunzip2
|
|
usr/bin/bzcat
|
|
usr/bin/bzip2
|
|
usr/bin/emacs
|
|
usr/bin/find
|
|
usr/bin/ftp
|
|
usr/bin/jmacs
|
|
usr/bin/joe
|
|
usr/bin/jpico
|
|
usr/bin/less
|
|
usr/bin/mattrib
|
|
usr/bin/mbadblocks
|
|
usr/bin/mcd
|
|
usr/bin/mcopy
|
|
usr/bin/mdel
|
|
usr/bin/mdeltree
|
|
usr/bin/mdir
|
|
usr/bin/mdu
|
|
usr/bin/mformat
|
|
usr/bin/minfo
|
|
usr/bin/mlabel
|
|
usr/bin/mmd
|
|
usr/bin/mmount
|
|
usr/bin/mmove
|
|
usr/bin/mpartition
|
|
usr/bin/mrd
|
|
usr/bin/mread
|
|
usr/bin/mren
|
|
usr/bin/mshowfat
|
|
usr/bin/mtools
|
|
usr/bin/mtype
|
|
usr/bin/mzip
|
|
usr/bin/open
|
|
usr/bin/rcp
|
|
usr/bin/rlogin
|
|
usr/bin/rsh
|
|
usr/bin/rsync
|
|
usr/bin/scp
|
|
usr/bin/sftp
|
|
usr/bin/shred
|
|
usr/bin/ssh
|
|
usr/bin/termidx
|
|
usr/bin/xargs
|
|
usr/bin/ntfscat
|
|
usr/bin/ntfscluster
|
|
usr/bin/ntfscmp
|
|
usr/bin/ntfsdecrypt
|
|
usr/bin/ntfsdump_logfile
|
|
usr/bin/ntfsfix
|
|
usr/bin/ntfsinfo
|
|
usr/bin/ntfsls
|
|
usr/bin/ntfsmftalloc
|
|
usr/bin/ntfsmove
|
|
usr/bin/ntfstruncate
|
|
usr/bin/ntfswipe
|
|
usr/bin/firstaidkit
|
|
usr/sbin/mkntfs
|
|
usr/sbin/ntfsclone
|
|
usr/sbin/ntfscp
|
|
usr/sbin/ntfslabel
|
|
usr/sbin/ntfsresize
|
|
usr/sbin/ntfsundelete
|
|
usr/sbin/mtr
|
|
usr/sbin/smartctl
|
|
usr/sbin/traceroute
|
|
usr/$LIBDIR/firstaidkit/plugins/
|
|
usr/lib/python?.?/site-packages/pyfirstaidkit/
|
|
EOF
|
|
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
|
|
cat >> $KEEPFILERESCUE <<-EOF
|
|
sbin/grub
|
|
usr/bin/gpart
|
|
usr/share/grub
|
|
EOF
|
|
fi
|
|
|
|
echo "Assembling package list..."
|
|
RPMS="$PACKAGES $PACKAGESRESCUE"
|
|
[ -n "$DEBUG" ] && echo "RPMS are $RPMS"
|
|
|
|
rm -rf $DEST; mkdir -p $DEST/usr/sbin $DEST/var/lib $DEST/boot
|
|
ln -s /tmp $DEST/var/lib/xkb
|
|
|
|
#
|
|
# concat KEEPFILE and KEEPFILERESCUE lists
|
|
#
|
|
cat $KEEPFILERESCUE >> $KEEPFILE
|
|
|
|
echo `date` "Expanding packages..."
|
|
YUMDIR=${TMPDIR:-/tmp}/yumdir.$$
|
|
mkdir -p $YUMDIR/var/log
|
|
mkdir -p $YUMDIR/var/lib/yum
|
|
|
|
expandPackageSet $yumconf $YUMDIR "$RPMS" $DEST $KEEPFILE
|
|
echo `date` "Done Expanding packages..."
|
|
|
|
# Dogtail will check this
|
|
echo "Creating customized GConf2 settings for root"
|
|
mkdir -p $DEST/.gconf/desktop/gnome/interface
|
|
touch $DEST/.gconf/desktop/%gconf.xml
|
|
touch $DEST/.gconf/desktop/gnome/%gconf.xml
|
|
cat > $DEST/.gconf/desktop/gnome/interface/%gconf.xml <<EOF
|
|
<?xml version="1.0"?>
|
|
<gconf>
|
|
<entry name="accessibility" mtime="1176200664" type="bool" value="true">
|
|
</entry>
|
|
</gconf>
|
|
EOF
|
|
|
|
rm -rf $YUMDIR
|
|
|
|
chown -R root:root $DEST
|
|
chmod -R a+rX-w $DEST
|
|
|
|
# Remove locales unused during the install
|
|
cat $DEST/usr/lib/anaconda/lang-table* | awk '
|
|
{ gsub("-", "", $4);
|
|
print $4;
|
|
print gensub(/\..*$/,"","",$4);
|
|
print gensub(/_.*$/,"","",$4);
|
|
if (split ($4, a, ".") > 1) {
|
|
print gensub(/\..*$/,tolower("." a[2]),"",$4);
|
|
};
|
|
print $2;
|
|
}
|
|
' | sed -e 's/latn/Latn/g' | LC_ALL=C sort -u > $DEST/locales
|
|
for p in lib share; do (
|
|
cd $DEST/usr/$p/locale && {
|
|
ls | grep -v locale.alias | grep -v locale-archive | LC_ALL=C sort > $DEST/locales.list
|
|
LC_ALL=C comm -13 $DEST/locales $DEST/locales.list | xargs rm -rf
|
|
}
|
|
); done
|
|
rm -f $DEST/locales $DEST/locales.list
|
|
|
|
# fixup joe links
|
|
if [ -d "$DESTDIR"/etc/joe ]; then
|
|
ln -fs jpicorc $DEST/etc/joe/picorc
|
|
ln -fs jpicorc $DEST/etc/joe/jnanorc
|
|
ln -fs jpicorc $DEST/etc/joe/nanorc
|
|
ln -fs jmacsrc $DEST/etc/joe/emacsrc
|
|
ln -fs jmacs $DEST/usr/bin/emacs
|
|
ln -fs jpico $DEST/usr/bin/pico
|
|
ln -fs jpico $DEST/usr/bin/nano
|
|
fi
|
|
|
|
# fix up some links for man page related stuff
|
|
for file in nroff groff iconv geqn gtbl gpic grefer ; do
|
|
ln -fs /mnt/sysimage/usr/bin/$file $DEST/usr/bin/$file
|
|
done
|
|
|
|
# create selinux config
|
|
if [ -e $DEST/etc/selinux/targeted ]; then
|
|
cat > $DEST/etc/selinux/config <<EOF
|
|
SELINUX=permissive
|
|
SELINUXTYPE=targeted
|
|
EOF
|
|
fi
|
|
|
|
echo "Creating libuser.conf"
|
|
cat > $DEST/etc/libuser.conf <<EOF
|
|
[defaults]
|
|
skeleton = /mnt/sysimage/etc/skel
|
|
mailspooldir = /mnt/sysimage/var/mail
|
|
crypt_style = md5
|
|
modules = files shadow
|
|
create_modules = files shadow
|
|
[files]
|
|
directory = /mnt/sysimage/etc
|
|
[shadow]
|
|
directory = /mnt/sysimage/etc
|
|
EOF
|
|
|
|
sed -i 's|\(installforallkernels\) = 0|\1 = 1|' $DEST/etc/yum/pluginconf.d/fedorakmod.conf
|
|
|
|
#
|
|
# Manual pages in rescue: We dont have man pages in the image, so we point everything (The pages
|
|
# and the man scripts to the /mnt/sysimage. We want the man command to depend only on the
|
|
# man.conf file, so we don't use the $MANPATH env variable. The executables stay unchanged as
|
|
# they will be soft links to /mnt/sysimage.
|
|
#
|
|
echo "Fixing up /etc/man.config to point into /mnt/sysimage"
|
|
#
|
|
# Lets avoid the lines with MANPATH_MAP for now
|
|
#
|
|
sed -i "s,^MANPATH[^_MAP][ \t]*,&/mnt/sysimage," $DEST/etc/man.config
|
|
|
|
#
|
|
# Lets change the lines with MANPATH_MAP. Don't know how much of a difference this will make.
|
|
#
|
|
sed -i "s,^MANPATH_MAP[ \t]*[a-zA-Z0-9/]*[ \t]*,&/mnt/sysimage," $DEST/etc/man.config
|
|
|
|
echo "Scrubbing tree..." "$DEST"
|
|
mkdir -p $DEST/lib
|
|
mkdir -p $DEST/firmware
|
|
ln -snf /modules $DEST/lib/modules
|
|
ln -snf /firmware $DEST/lib/firmware
|
|
cp $DEST/usr/lib/anaconda/raidstart-stub $DEST/usr/bin/raidstart
|
|
cp $DEST/usr/lib/anaconda/raidstop-stub $DEST/usr/bin/raidstop
|
|
cp $DEST/usr/lib/anaconda/losetup-stub $DEST/usr/bin/losetup
|
|
cp $DEST/usr/lib/anaconda/list-harddrives-stub $DEST/usr/bin/list-harddrives
|
|
cp $DEST/usr/lib/anaconda/loadkeys-stub $DEST/usr/bin/loadkeys
|
|
cp $DEST/usr/lib/anaconda/mknod-stub $DEST/usr/bin/mknod
|
|
cp $DEST/usr/lib/anaconda/syslogd-stub $DEST/usr/bin/syslogd
|
|
mv $DEST/usr/sbin/anaconda $DEST/usr/bin/anaconda
|
|
mv $DEST/usr/lib/anaconda-runtime/lib* $DEST/usr/$LIBDIR 2>/dev/null
|
|
|
|
mv $DEST/etc/yum.repos.d $DEST/etc/anaconda.repos.d
|
|
|
|
rm -f $DEST/usr/$LIBDIR/libunicode-lite*
|
|
|
|
find $DEST -type d | xargs chmod 755
|
|
|
|
if [ -f $DEST/bin/bash ]; then
|
|
rm -f $DEST/bin/ash
|
|
ln -s bash $DEST/bin/sh
|
|
else
|
|
ln -sf busybox $DEST/bin/sh
|
|
fi
|
|
|
|
[ -d $DEST/bin ] || die "ERROR: directory missing: $DEST/bin"
|
|
[ -d $DEST/sbin ] || die "ERROR: directory missing: $DEST/sbin"
|
|
(cd $DEST/bin; find) | (cd $DEST/bin; /bin/cpio --quiet -pdmu $DEST/usr/bin)
|
|
(cd $DEST/sbin; find) | (cd $DEST/sbin; /bin/cpio --quiet -pdmu $DEST/usr/sbin)
|
|
rm -rf $DEST/bin
|
|
rm -rf $DEST/sbin
|
|
|
|
# Fix relative links like /usr/bin/udevinfo -> ../../sbin/udevadm
|
|
for brokenlink in $(find $DEST/usr/{bin,sbin} -follow -lname '*') ; do
|
|
target="$(readlink $brokenlink)"
|
|
for pathbit in bin sbin; do
|
|
# if it starts with "../../sbin/", remove that
|
|
newtarget="${target##../../$pathbit/}"
|
|
# if we removed something, replace it with the proper path
|
|
if [ "$newtarget" != "$target" ]; then
|
|
# make it ../sbin/ instead
|
|
ln -sf "../$pathbit/$newtarget" "$brokenlink"
|
|
fi
|
|
done
|
|
done
|
|
|
|
# copy bootloader files for sparc
|
|
if [ $ARCH = sparc ]; then
|
|
mkdir -p $DEST/usr/lib/anaconda-runtime/boot
|
|
[ -d $DEST/boot ] || die "ERROR: directory missing: $DEST/boot"
|
|
(cd $DEST/boot; find -name "*.b") | (cd $DEST/boot; /bin/cpio --quiet -pdmu $DEST/usr/lib/anaconda-runtime/boot)
|
|
fi
|
|
|
|
# copy bootloader file for ppc
|
|
if [ $ARCH = ppc -o $ARCH = ppc64 ]; then
|
|
mkdir -p $DEST/usr/lib/anaconda-runtime/boot
|
|
cp -af $DEST/boot/efika.forth $DEST/usr/lib/anaconda-runtime/boot
|
|
fi
|
|
|
|
# copy bootloader file for alpha
|
|
if [ $ARCH = alpha ]; then
|
|
mkdir -p $DEST/usr/lib/anaconda-runtime/boot
|
|
cp -af $DEST/boot/bootlx $DEST/usr/lib/anaconda-runtime/boot
|
|
fi
|
|
|
|
# copy bootloader files for ia64
|
|
if [ $ARCH = ia64 ]; then
|
|
mkdir -p $DEST/usr/lib/anaconda-runtime/boot
|
|
cp -af $DEST/boot/efi/EFI/redhat//* $DEST/usr/lib/anaconda-runtime/boot
|
|
fi
|
|
|
|
# copy bootloader files for i386/x86_64
|
|
if [ $ARCH = i386 -o $ARCH = x86_64 ]; then
|
|
mkdir -p $DEST/usr/lib/anaconda-runtime/boot
|
|
cp -af $DEST/boot/memtest* $DEST/usr/lib/anaconda-runtime/boot
|
|
fi
|
|
|
|
rm -rf $DEST/boot $DEST/home $DEST/root $DEST/tmp
|
|
|
|
find $DEST -name "*.a" | grep -v kernel-wrapper/wrapper.a | xargs rm -rf
|
|
find $DEST -name "lib*.la" |grep -v "usr/$LIBDIR/gtk-2.0" | xargs rm -rf
|
|
|
|
# nuke some python stuff we don't need
|
|
for d in idle distutils bsddb lib-old hotshot doctest.py pydoc.py site-packages/japanese site-packages/japanese.pth ; do
|
|
rm -rf $DEST/$d
|
|
done
|
|
|
|
$DEST/usr/lib/anaconda-runtime/scrubtree $DEST
|
|
|
|
echo "Creating debug dir"
|
|
mkdir -p $DEST/usr/lib/debug
|
|
mkdir -p $DEST/usr/src/debug
|
|
|
|
find $DEST -name "*.py" | while read fn; do
|
|
rm -f ${fn}o
|
|
rm -f ${fn}c
|
|
ln -sf /dev/null ${fn}c
|
|
done
|
|
|
|
# some python stuff we don't need for install image
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/distutils/
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/lib-dynload/japanese
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/encodings/
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/compiler/
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/email/test/
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/curses/
|
|
rm -rf $DEST/usr/$LIBDIR/python?.?/site-packages/pydoc.py
|