#!/bin/bash ORIGDIR=`pwd` DEBUG="" NEEDGR=yes if [ "$1" == "--debug" ]; then DEBUG="--debug" shift fi if [ "$1" == "--nogr" ]; then NEEDGR="" shift fi if [ -z "$1" ]; then echo "upd-instroot: updates instimage from a Red Hat RPMS directory" echo "usage: $0 <packagedir> [templatedir] [instroot]" exit 1 fi if [ ! -d $1 ]; then if [ -z "$ARCH" ]; then echo "ARCH must be set" >&2 exit 1 fi fi PACKAGEDIR=$1 if [ -z "$ARCH" ]; then ARCH=`rpm --nodigest --nosignature -qp --qf "%{ARCH}" $PACKAGEDIR/anaconda-runtime*.rpm` fi if [ $ARCH = x86_64 -o $ARCH = s390x -o $ARCH = ppc64 ]; then LIBDIR=lib64 else LIBDIR=lib fi prunePackageList() { PACKAGEPATH=$1 PACKAGES="$2" PATTERN="" PACKAGEFILES="" #CJS added code to look in PACKAGEPATH if did not find exact rpm in # <site>/$SITERPMDIR . Case is where something like rpm-* find something other # than what we are looking for such as rpm-analyzer, but rpm-4* is not in # <site>/SITERPMDIR . The first find finds something but not what # we want, before this code it would just go to next item, this code goes and # looks in <default>/RPMS if specific item is not found for PKG in $PACKAGES; do SITEPATH=`dirname $PACKAGEPATH` if [ -d $SITEPATH/$SITERPMDIR/ ]; then path=$SITEPATH/$SITERPMDIR/ this=$(ls $path/${PKG}*{${ARCH},noarch}.rpm 2>/dev/null) # this=$(ls $path/${PKG}[.-]*{${ARCH},noarch}.rpm 2>/dev/null) fi myi=0 while [ $myi -lt 2 ] do if [ -z "$this" ]; then path=$PACKAGEPATH this=$(ls $path/${PKG}[.-]*{${ARCH},noarch}.rpm 2>/dev/null) fi if [ -z "$this" ]; then MYRESULT="" myi=2 continue # echo "Did not find $PKG" else # libstdc++, enough said PATTERN=$(echo $PKG | sed 's,[\+\*],\\&,g') if [ $PATTERN = "krb5-libs-1" ]; then PATTERN="krb5-libs" fi # PACKAGEFILES="$PACKAGEFILES $(rpm --nodigest --nosignature -qp $this --qf "%{NAME} $path/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n" | egrep "(^$PATTERN )" | sed 's/.* //')" MYRESULT=`rpm --nodigest --nosignature -qp $this --qf "%{NAME} $path/%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n" | egrep "(^$PATTERN )" | sed 's/.* //'` if [ -z "$MYRESULT" ]; then this="" myi=`expr $myi + 1` else myi=2 fi fi done # of while loop PACKAGEFILES="$PACKAGEFILES $MYRESULT" done # of for loop ls -1 $PACKAGEFILES |sort -u #CJS end of change } expandPackageSet() { RPMS=$1 PKGDEST=$2 KEEPFILES=$3 [ -d $PKGDEST ] || die "ERROR: directory missing: $PKGDEST" for n in $RPMS; do [ -n "$DEBUG" ] && echo -e "\rExpanding packages..." $(basename $n) rpm2cpio $n | (cd $PKGDEST; cpio -E $KEEPFILES --quiet -iumd) [ -n "$DEBUG" ] && echo -e "\rExpanding packages..." "$(basename $n | sed 's/./ /g')" done pushd $PKGDEST/$LIBDIR >/dev/null 2>&1 if [ -d obsolete/linuxthreads/ ]; then for x in obsolete/linuxthreads/*-* ; do lib_base=$(basename $x | cut -d- -f1) rm -f ./$lib_base[.-]* mv -f obsolete/linuxthreads/$lib_base[.-]* . done rmdir obsolete/linuxthreads obsolete fi popd >/dev/null 2>&1 } die () { echo "$@" echo "Aborting instroot creation..." exit 1 } if [ -z "$2" ]; then DEST=/tmp/upd-instroot else DEST=$2 fi if [ -z "$3" ]; then DESTGR=/tmp/upd-instroot else DESTGR=$3 fi rm -rf $DEST $DESTGR mkdir -p $DEST mkdir -p $DESTGR PACKAGES="glibc glibc-common setup openssl python python-libs newt slang libselinux libsepol libtermcap zlib ash e2fsprogs util-linux raidtools popt procps rpm rpm-libs XFree86 Xconfigurator anaconda tzdata anaconda-runtime kudzu hwdata bzip2 beecrypt mdadm libsemanage bzip2-libs dosfstools pciutils reiserfs-utils parted sed busybox rpm-python booty hdparm lvm2 beecrypt device-mapper rhpl pyxf86config libxml2 libxml2-python glib2 sqlite neon elfutils-libelf krb5-libs convertdb1 jfsutils audit-libs pam xfsprogs xfsdump dmapi libacl libattr attr acl python-urlgrabber policy policycoreutils pyparted xorg-x11 selinux-policy-targeted libstdc++ expat libgcc readline ncurses yum python-sqlite python-elementtree pykickstart e2fsprogs-libs iscsi-initiator-utils db4 rhpxl xorg-x11-server-Xorg libuser system-config-date yum-metadata-parser gfs-utils kmod-gfs gfs2-utils libvolume_id rhel-instnum yum-kmod libdhcp libnl libdhcp6client libdhcp4client device-mapper-multipath kpartx dmraid python-pyblock mkinitrd libbdevid libbdevid-python libselinux-python nss udev keyutils-libs nspr python-iniparse cryptsetup-luks e4fsprogs fipscheck fipscheck-lib libdrm libmlx4 subscription-manager python-dmidecode python-ethtool python-rhsm python-simplejson PyXML m2crypto portmap" if [ $ARCH = i386 -o $ARCH = x86_64 ]; then PACKAGES="$PACKAGES pcmciautils" fi if [ $ARCH = i386 -o $ARCH = x86_64 -o $ARCH = ia64 ]; then PACKAGES="$PACKAGES dmidecode" fi if [ $ARCH = ia64 ]; then PACKAGES="$PACKAGES elilo" fi if [ $ARCH = s390 -o $ARCH = s390x ]; then PACKAGES="$PACKAGES s390utils binutils libgcc tcp_wrappers sed net-tools xinetd openssl openssh openssh-server coreutils login initscripts XFree86-xauth bash pam telnet-server login mount grep modutils gawk XFree86-libs strace xorg-x11-xauth xorg-x11-libs" fi if [ $ARCH = ppc -o $ARCH = ppc64 ]; then PACKAGES="$PACKAGES pcmciautils pdisk yaboot hfsutils" fi # xpm is missing # Some packages are listed twice, but that's okay # # The packages in this list are needed for the graphical installer to run # # Extra stuff we want for rescue mode should go in PACKAGESRESCUE # PACKAGESGR="anaconda XFree86-libs libpng XFree86-75dpi-fonts XFree86-ISO8859-2-75dpi-fonts gtk2 libglade2 XFree86-ISO8859-9-75dpi-fonts XFree86-100dpi-fonts fonts-ISO8859-2 fonts-ISO8859-9 XFree86-xfs e2fsprogs coreutils glibc glibc-common popt specspo util-linux rpm rpm-libs tzdata procps bash cpio gpm pygtk2-libglade pygobject2 XFree86 Xconfigurator pygtk2 gdk-pixbuf XFree86-KOI8-R XFree86-KOI8-R-75dpi-fonts libpixman reiserfs-utils atk pango freetype gnome-python2-canvas cairo libgnomecanvas libart_lgpl libgcc libacl libattr libstdc++ expat anaconda-images anaconda-help XFree86-base-fonts ttfonts-ko taipeifonts XFree86-ISO8859-15-75dpi-fonts rhpl system-config-keyboard Xft fontconfig gtk2-engines gnome-themes gtkhtml2 gnome-python2-gtkhtml2 gail ttfonts-ja ttfonts-zh_TW bitmap-fonts-cjk urw-fonts fonts-arabic comps-extras XFree86-libs-data convertdb1 fonts-bengali vnc-server libjpeg tcp_wrappers system-config-date xfsprogs xfsdump dmapi attr acl policy policycoreutils selinux-policy-targeted ttfonts-zh_CN redhat-artwork xorg-x11-libs xorg-x11-ISO8859-2-75dpi-fonts xorg-x11-ISO8859-9-75dpi-fonts xorg-x11-100dpi-fonts xorg-x11-xfs xorg-x11 xorg-x11-KOI8-R xorg-x11-KOI8-R-75dpi-fonts xorg-x11-base-fonts xorg-x11-ISO8859-15-75dpi-fonts fonts-xorg-ISO8859-2-75dpi fonts-xorg-ISO8859-15-75dpi fonts-xorg-ISO8859-9-75dpi fonts-xorg-100dpi fonts-xorg-KOI8-R fonts-xorg-KOI8-R-75dpi fonts-xorg-base xorg-x11-base xorg-x11-ISO8859-15-75dpi system-logos xorg-x11-libs-data xorg-x11-xfs prelink redhat-logos fedora-logos ttfonts-ta ttfonts-bn ttfonts-gu ttfonts-hi ttfonts-pa fonts-japanese fonts-chinese fonts-korean fonts-indic fonts-sinhala fonts-malayalam fonts-oriya fonts-kannada fonts-telugu fonts-gujarati fonts-hindi fonts-punjabi fonts-tamil synaptics firstboot pycairo pirut dejavu-lgc-fonts dmraid python-pyblock libbdevid libbdevid-python e4fsprogs" # # stuff ONLY included for rescue mode # # these packages are combined with the PACKAGES and PACKAGESGR for big stage 2 # PACKAGESRESCUE="bzip2 bzip2-libs dump groff xfsprogs xfsdump dmapi 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-multipath kpartx dmraid dhclient dhcpv6-client" if [ $ARCH = i386 -o $ARCH = x86_64 ]; then PACKAGESRESCUE="$PACKAGESRESCUE gpart grub" fi # turn off options we dont want, ie. set package list to something harmless if [ -z "$NEEDGR" ]; then PACKAGESGR="bash" PACKAGESRESCUE="bash" fi # # add bootloader for particular arch # if [ $ARCH = sparc ]; then PACKAGESGR="$PACKAGESGR tilo silo" fi if [ $ARCH = i386 -o $ARCH = x86_64 ]; then PACKAGESGR="$PACKAGESGR syslinux syslinux-perl memtest86+" fi if [ $ARCH = alpha ]; then PACKAGESGR="$PACKAGESGR aboot" fi if [ $ARCH = ia64 ]; then PACKAGESGR="$PACKAGESGR elilo" fi if [ $ARCH = ppc ]; then PACKAGESGR="$PACKAGESGR fbset yaboot ppc64-utils" fi # dogtail stuff... PACKAGESGR="$PACKAGESGR gail at-spi libbonobo ORBit2" # modular xorg... XORGLIBS="libICE libSM libX11 libXcursor libXext libXfixes libXft libXi libxkbfile libXmu libXpm libXrandr libXrender libXt libXxf86misc libXaw liblbxutil libXfont libfontenc libXau libXdmcp libXfont libXinerama" XORGDRIVERS="xorg-x11-drv-acecad xorg-x11-drv-aiptek xorg-x11-drv-apm xorg-x11-drv-ark xorg-x11-drv-ast xorg-x11-drv-ati xorg-x11-drv-calcomp xorg-x11-drv-chips xorg-x11-drv-cirrus xorg-x11-drv-citron xorg-x11-drv-cyrix xorg-x11-drv-digitaledge xorg-x11-drv-dmc xorg-x11-drv-dummy xorg-x11-drv-dynapro xorg-x11-drv-elo2300 xorg-x11-drv-elographics xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-fpit xorg-x11-drv-glint xorg-x11-drv-hyperpen xorg-x11-drv-i128 xorg-x11-drv-i740 xorg-x11-drv-i810 xorg-x11-drv-jamstudio xorg-x11-drv-joystick xorg-x11-drv-keyboard xorg-x11-drv-magellan xorg-x11-drv-magictouch xorg-x11-drv-mga xorg-x11-drv-microtouch xorg-x11-drv-mouse xorg-x11-drv-mutouch xorg-x11-drv-neomagic xorg-x11-drv-nsc xorg-x11-drv-nv xorg-x11-drv-palmax xorg-x11-drv-penmount xorg-x11-drv-qxl xorg-x11-drv-rendition xorg-x11-drv-s3 xorg-x11-drv-s3virge xorg-x11-drv-savage xorg-x11-drv-siliconmotion xorg-x11-drv-sis xorg-x11-drv-sisusb xorg-x11-drv-spaceorb xorg-x11-drv-summa xorg-x11-drv-tdfx xorg-x11-drv-tek4957 xorg-x11-drv-trident xorg-x11-drv-tseng xorg-x11-drv-v4l xorg-x11-drv-vesa xorg-x11-drv-vga xorg-x11-drv-via xorg-x11-drv-vmware xorg-x11-drv-void xorg-x11-drv-voodoo" XORGFONTS="xorg-x11-fonts-75dpi xorg-x11-fonts-base xorg-x11-fonts-cyrillic xorg-x11-fonts-ISO8859-15-75dpi xorg-x11-fonts-ISO8859-1-75dpi xorg-x11-fonts-ISO8859-2-75dpi xorg-x11-fonts-ISO8859-9-75dpi xorg-x11-fonts-misc xorg-x11-fonts-ethiopic" XORG="$XORGLIBS $XORGDRIVERS $XORGFONTS xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-font-utils xorg-x11-xkb-utils xorg-x11-xkbdata xorg-x11-server-utils xkeyboard-config" PACKAGES="$PACKAGES $XORGDRIVERS" PACKAGESGR="$PACKAGESGR $XORG" # # KEEPFILE is all files to keep from the packages in PACKAGES # # This is what is present in http, ftp, and hard drive installs, and is # supposed to be a small image because these methods keep it in RAM. # # It also is the base on which the other install images build on top of, # so if something is needed by all images it should go here # KEEPFILE=/tmp/keepfile.$$ cat > $KEEPFILE <<EOF boot/efi/EFI/redhat/elilo.efi bin/ash bin/fdisk* bin/mkfs* bin/sed etc/group etc/passwd etc/iscsid.conf etc/mke2fs.conf etc/mke4fs.conf etc/pcmcia/* etc/protocols etc/services etc/selinux/targeted/booleans etc/selinux/targeted/policy/policy.* etc/selinux/targeted/contexts/files/* etc/selinux/targeted/contexts/* etc/selinux/targeted/* usr/share/selinux/targeted/* etc/security/selinux/policy.* etc/security/selinux/file_contexts etc/yum/pluginconf.d/kmod.conf etc/modprobe.d/libmlx4.conf $LIBDIR/bdevid/* $LIBDIR/libaudit*.so* $LIBDIR/libc[-.]* $LIBDIR/libm[-.]* $LIBDIR/libpthread* $LIBDIR/librt[-.]* $LIBDIR/ld*.so* $LIBDIR/libblkid* $LIBDIR/libcom_err* $LIBDIR/libcrypt* $LIBDIR/libdb-* $LIBDIR/libdevmapper* $LIBDIR/libdl* $LIBDIR/libe2p* $LIBDIR/libexpat* $LIBDIR/libext2fs* $LIBDIR/libkeyutils* $LIBDIR/liblvm-10.so* $LIBDIR/libgcc_s* $LIBDIR/libnsl* $LIBDIR/libnss_dns* $LIBDIR/libnss_files* $LIBDIR/libpam* $LIBDIR/libresolv* $LIBDIR/libselinux* $LIBDIR/libsemanage* $LIBDIR/libsepol* $LIBDIR/libss* $LIBDIR/libtermcap* $LIBDIR/libhandle* $LIBDIR/libattr* $LIBDIR/libdm* $LIBDIR/libutil* $LIBDIR/libuuid* $LIBDIR/libglib* $LIBDIR/libgmodule* $LIBDIR/libgobject* $LIBDIR/libgthread* $LIBDIR/libvolume_id* usr/$LIBDIR/libfipscheck* usr/lib/libfipscheck* sbin/dmraid.static sbin/dmsetup.static sbin/multipath.static sbin/kpartx.static sbin/mpath_prio_*.static lib/udev/scsi_id sbin/badblocks sbin/busybox sbin/clock sbin/cryptsetup sbin/debugfs sbin/dosfslabel sbin/dumpe4fs sbin/e2fsck sbin/e2fsadm sbin/e2label sbin/e4label sbin/fsck.ext2 sbin/fsck.ext3 sbin/fsck.ext4 sbin/fsck.jfs sbin/fsck.xfs sbin/fdisk sbin/hdparm sbin/hwclock sbin/jfs_tune sbin/ldconfig sbin/lspci sbin/lvm* sbin/mdadm sbin/mkdosfs sbin/mke2fs sbin/mke4fs sbin/mkfs.ext2 sbin/mkfs.ext3 sbin/mkfs.ext4 sbin/mkfs.jfs sbin/mkfs.xfs sbin/mkfs.msdos sbin/mkfs.vfat sbin/mkreiserfs sbin/mkraid sbin/mkswap sbin/parted sbin/pcmcia-socket-startup sbin/pdisk sbin/portmap sbin/probe sbin/reiserfstune sbin/resize2fs sbin/sfdisk sbin/tune2fs sbin/tune4fs sbin/xfsdump sbin/xfsrestore sbin/xfs_repair usr/sbin/xfs_db usr/sbin/xfs_check usr/sbin/xfs_copy sbin/*gfs* sbin/iscsid sbin/iscsiadm sbin/iscsistart usr/bin/python usr/bin/python?.? usr/bin/hmount usr/bin/humount usr/bin/hcopy usr/bin/hattrib usr/bin/hformat usr/lib/anaconda-runtime/* usr/lib/anaconda/* usr/lib/anaconda/installclasses/* usr/lib/anaconda/textw/* usr/lib/booty/* usr/kerberos/$LIBDIR/libkrb5.so* usr/kerberos/$LIBDIR/libkrb5support.so* usr/kerberos/$LIBDIR/libk5crypto.so* usr/kerberos/$LIBDIR/libcom_err.so* usr/kerberos/$LIBDIR/libgssapi_krb5.so* usr/$LIBDIR/libbdevid.so* usr/$LIBDIR/libdmraid.so* usr/$LIBDIR/libkrb5.so* usr/$LIBDIR/libkrb5support.so* usr/$LIBDIR/libk5crypto.so* usr/$LIBDIR/libcom_err.so* usr/$LIBDIR/libgssapi_krb5.so* usr/$LIBDIR/gconv/ISO8859-1.so usr/$LIBDIR/gconv/gconv-modules usr/$LIBDIR/libbeecrypt* usr/$LIBDIR/libssl* usr/$LIBDIR/libcrypto* usr/$LIBDIR/libbz2* usr/$LIBDIR/libdhcp* usr/$LIBDIR/libelf* usr/$LIBDIR/libiscsi.so* usr/$LIBDIR/libncurses* usr/$LIBDIR/libnewt* usr/$LIBDIR/libnl* usr/$LIBDIR/libnssutil3.so usr/$LIBDIR/libparted* usr/$LIBDIR/libpopt* usr/$LIBDIR/libpython* usr/$LIBDIR/libneon* usr/$LIBDIR/libnspr* usr/$LIBDIR/libplc4* usr/$LIBDIR/libplds4* usr/$LIBDIR/libsqlite3* usr/$LIBDIR/libsoftokn3* usr/$LIBDIR/librpm-*4.?.so* usr/$LIBDIR/librpmbuild-*4.?.so* usr/$LIBDIR/librpmdb*4.?.so* usr/$LIBDIR/librpmio*4.?.so* usr/$LIBDIR/libslang* usr/$LIBDIR/libstdc++.so.6* usr/$LIBDIR/libuser.so* usr/$LIBDIR/libuser/* usr/$LIBDIR/libxml2.so* usr/$LIBDIR/libz.* $LIBDIR/libz.* usr/$LIBDIR/libreadline* usr/$LIBDIR/python?.?/* usr/$LIBDIR/libfreebl3.so usr/$LIBDIR/libnss3.so usr/$LIBDIR/libnssckbi.so usr/$LIBDIR/libnsspem.so usr/$LIBDIR/libsmime3.so usr/$LIBDIR/libssl3.so usr/$LIBDIR/libdrm.so.* usr/$LIBDIR/python?.?/email/* usr/$LIBDIR/python?.?/site-packages/libxml2* usr/$LIBDIR/python?.?/site-packages/*kudzu* usr/$LIBDIR/python?.?/site-packages/bdevid.so usr/$LIBDIR/python?.?/site-packages/rpmmodule.so usr/$LIBDIR/python?.?/site-packages/partedmodule.so usr/$LIBDIR/python?.?/site-packages/ixf86configmodule.so usr/$LIBDIR/python?.?/site-packages/xf86config.py usr/$LIBDIR/python?.?/site-packages/libiscsimodule.so usr/$LIBDIR/python?.?/site-packages/libusermodule.so usr/$LIBDIR/python?.?/site-packages/*sqlite* usr/$LIBDIR/python?.?/site-packages/rhpl usr/$LIBDIR/python?.?/site-packages/cElementTree.so usr/$LIBDIR/python?.?/site-packages/block usr/$LIBDIR/python?.?/site-packages/*.pth usr/$LIBDIR/python?.?/site-packages/*selinux* usr/lib/locale/* usr/lib/python?.?/site-packages/elementtree/* usr/lib/python?.?/site-packages/iniparse/* usr/lib/python?.?/site-packages/rpmUtils/* usr/lib/python?.?/site-packages/urlgrabber/* usr/lib/python?.?/site-packages/yum/* usr/lib/python?.?/site-packages/repomd/* usr/lib/python?.?/site-packages/pirut/* usr/lib/python?.?/site-packages/pykickstart/* usr/lib/python?.?/site-packages/rhpxl/* usr/lib/python?.?/site-packages/instnum.* usr/lib/python?.?/site-packages/*rhsm* usr/lib/rpm/macros usr/lib/rpm/rpmpopt usr/lib/rpm/rpmrc usr/lib/yaboot/addnote usr/lib/yaboot/ofboot usr/lib/yaboot/yaboot usr/lib/yum-plugins/kmod.py* usr/libexec/convertdb1 usr/share/locale/*/LC_MESSAGES/anaconda.mo usr/share/locale/locale.alias usr/sbin/anaconda usr/sbin/ddcprobe usr/sbin/dmidecode usr/sbin/mkofboot usr/sbin/ofpath usr/sbin/ybin usr/sbin/load_policy usr/sbin/semodule usr/sbin/genhomedircon sbin/setfiles usr/sbin/lvm usr/sbin/gptsync usr/share/anaconda/anaconda.conf usr/share/selinux/targeted/base.pp usr/share/system-config-date/zonetab.py* usr/share/terminfo/a/ansi usr/share/terminfo/l/linux usr/share/terminfo/v/vt100 usr/share/terminfo/v/vt100-nav usr/share/terminfo/v/vt102 usr/share/terminfo/v/vt320 usr/share/terminfo/v/vt320-w usr/share/hwdata/pci.ids usr/share/hwdata/videoaliases usr/share/hwdata/videoaliases/* usr/share/hwdata/videodrivers usr/share/hwdata/MonitorsDB usr/share/xorg/extramodes usr/share/xorg/vesamodes usr/share/zoneinfo/* usr/share/rhsm/* usr/lib/yum-plugins/product-id.py* var/log/rhsm etc/rhsm/* etc/yum/pluginconf.d/product-id.conf 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/vt100 usr/share/terminfo/v/vt100-nav 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/printf usr/bin/strace usr/bin/ldd usr/sbin/chroot usr/sbin/sshd usr/sbin/glibc_post_upgrade usr/sbin/in.telnetd usr/sbin/xinetd sbin/cmsfslst sbin/cmsfscat sbin/busybox sbin/ifconfig sbin/route sbin/fdasd sbin/dasdfmt sbin/swapon sbin/swapoff sbin/mkswap sbin/udevsettle sbin/udevd bin/ipcalc bin/bash bin/dd bin/gawk bin/mount bin/umount bin/mknod bin/sleep bin/login bin/cat bin/chmod bin/sort $LIBDIR/libpam.so* $LIBDIR/libdl.so* $LIBDIR/libdl-*.so* usr/$LIBDIR/libz.so* $LIBDIR/libnsl.so* $LIBDIR/libnsl-*.so* $LIBDIR/libnss* $LIBDIR/libutil.so* $LIBDIR/libutil-*.so* $LIBDIR/libcrypt* $LIBDIR/libc.so* $LIBDIR/libc-*so* lib/ld*.so* $LIBDIR/ld*.so* $LIBDIR/libresolv.so* $LIBDIR/libresolv-*.so* $LIBDIR/libvtoc*.so* lib/modules/ibm/* etc/xinetd.conf etc/pam.d/sshd etc/pam.d/other etc/security/limits.conf etc/security/pam_env.conf lib/security $LIBDIR/security/pam_* $LIBDIR/libwrap.so* usr/$LIBDIR/libwrap.so* usr/$LIBDIR/libXmuu.so* usr/$LIBDIR/libX11.so* usr/$LIBDIR/libXext.so* usr/$LIBDIR/libXxf86misc.so* usr/bin/xauth EOF fi # # KEEPFILEGR is all files to keep from the packages in PACKAGESGR # # This defines the files in addition to KEEPFILE that make up the install # images for NFS and CD/DVD based installs. This image is not loaded into # memory so it can be considerably larger. # # 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). # KEEPFILEGR=/tmp/keepfilegr.$$ cp $KEEPFILE $KEEPFILEGR cat >> $KEEPFILEGR <<EOF boot/efi/EFI/redhat/elilo.efi boot/memtest86* bin/bash bin/cat bin/chmod bin/cp bin/cpio bin/dd bin/df bin/du bin/ln bin/ls bin/mkdir bin/mv bin/ps bin/rm bin/rpm bin/touch boot/*.b boot/bootlx etc/fb.modes etc/gtk-2.0/gtkrc* etc/im_palette.pal etc/imrc etc/man.config etc/pango/* etc/fonts/* etc/prelink.conf etc/rpm/macros.prelink $LIBDIR/bdevid/* $LIBDIR/libacl* $LIBDIR/libattr* $LIBDIR/libgcc* $LIBDIR/libnss_dns* $LIBDIR/libproc* $LIBDIR/libwrap* sbin/addRamDisk sbin/addSystemMap sbin/debugfs sbin/e2fsck sbin/e2label sbin/reiserfsck sbin/reiserfstune sbin/fsck sbin/fsck.ext2 sbin/fsck.ext3 sbin/fsck.jfs sbin/fsck.reiserfs sbin/parted sbin/silo sbin/tune2fs sbin/tune4fs usr/bin/Xorg usr/bin/setxkbmap usr/bin/xkbcomp usr/share/X11/XKeysymDB usr/share/X11/fonts/misc/6x13* usr/share/X11/fonts/misc/fonts* usr/share/X11/fonts/misc/cursor* usr/share/X11/fonts/misc/olcursor* usr/share/X11/fonts/Type1/l047013t* usr/share/X11/fonts/Type1/* usr/share/X11/fonts/TTF/GohaTibebZemen.ttf usr/share/X11/locale/* usr/share/X11/rgb* usr/share/X11/xkb/* usr/$LIBDIR/xserver/SecurityPolicy usr/$LIBDIR/libbdevid.so* usr/$LIBDIR/libICE* usr/$LIBDIR/libSM* usr/$LIBDIR/libXaw.so* usr/$LIBDIR/libX11* usr/$LIBDIR/libXcursor* usr/$LIBDIR/libXext* usr/$LIBDIR/libXfixes* usr/$LIBDIR/libXft* usr/$LIBDIR/libXi* usr/$LIBDIR/libxkbfile* usr/$LIBDIR/libXmu* usr/$LIBDIR/libXpm* usr/$LIBDIR/libXrandr* usr/$LIBDIR/libXrender* usr/$LIBDIR/libXt* usr/$LIBDIR/libXxf86misc* usr/$LIBDIR/liblbxutil* usr/$LIBDIR/libXfont* usr/$LIBDIR/libfontenc* usr/$LIBDIR/libXau* usr/$LIBDIR/libXdmcp* usr/$LIBDIR/xorg/modules/* usr/$LIBDIR/xorg/modules/input/* usr/bin/chattr* usr/bin/fc-cache usr/bin/gtk-query* usr/bin/gdk-pixbuf-query-loaders* usr/bin/head usr/bin/lsattr* usr/bin/maketilo usr/bin/mini-wm usr/bin/pango* usr/bin/syslinux usr/bin/mkzimage usr/bin/tac usr/bin/tail usr/bin/tilo usr/bin/uniq usr/bin/Xvnc usr/bin/vncconfig usr/bin/vncpasswd usr/bin/reduce-font usr/lib/anaconda/iw usr/$LIBDIR/gconv/* usr/$LIBDIR/gdk-pixbuf/loaders/*xpm* usr/$LIBDIR/gdk-pixbuf/loaders/*png* usr/$LIBDIR/gdk-pixbuf/loaders/*la* usr/$LIBDIR/gtk-2.0/*/engines/libclearlooks.so usr/$LIBDIR/gtk-2.0/*/loaders/*xpm* usr/$LIBDIR/gtk-2.0/*/loaders/*png* usr/$LIBDIR/gtk-2.0/*/loaders/*la* usr/$LIBDIR/gtk-2.0/immodules/ usr/$LIBDIR/libImlib* usr/$LIBDIR/libXft* usr/$LIBDIR/libart* usr/$LIBDIR/libatk* usr/$LIBDIR/libaudio* usr/$LIBDIR/libpixman* usr/$LIBDIR/libcairo* usr/$LIBDIR/libesd* usr/$LIBDIR/libfontconfig* usr/$LIBDIR/libfreetype* usr/$LIBDIR/libgailutil* usr/$LIBDIR/libgdk* usr/$LIBDIR/libglade* usr/$LIBDIR/libgnomecanvas* usr/$LIBDIR/libgnomeui* usr/$LIBDIR/libgpm* usr/$LIBDIR/libgtk* usr/$LIBDIR/libjpeg* usr/$LIBDIR/libpango* usr/$LIBDIR/libpng.so.3* usr/$LIBDIR/libpng12.so* usr/$LIBDIR/libstdc++.so.* usr/$LIBDIR/libwrap* usr/$LIBDIR/pango/* usr/$LIBDIR/python?.?/site-packages/cairo/* usr/$LIBDIR/python?.?/site-packages/gtk*/gtk/* usr/$LIBDIR/python?.?/site-packages/gtk*/* usr/$LIBDIR/rpm/rpmpopt usr/share/syslinux/* usr/lib/yaboot/* usr/sbin/chroot usr/sbin/ddcprobe usr/sbin/fbset usr/sbin/prelink usr/sbin/smartctl usr/share/anaconda/* usr/share/firstboot/firstboot_module_window* usr/share/icons/default/* usr/share/icons/gnome/cursors/* usr/share/icons/gnome/*/stock/* usr/share/icons/gnome/index.theme usr/share/icons/Bluecurve/cursors/* usr/share/icons/Bluecurve/*/stock/* usr/share/icons/Bluecurve/index.theme usr/share/fonts/dejavu-lgc/DejaVuLGCSans.ttf usr/share/fonts/dejavu-lgc/DejaVuLGCSans-Bold.ttf usr/share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf usr/share/fonts/default/Type1/n019003l* usr/share/fonts/default/Type1/n019004l* usr/share/fonts/default/Type1/n019023l* usr/share/fonts/default/Type1/n019024l* usr/share/fonts/default/Type1/n021003l* usr/share/fonts/default/Type1/n021004l* usr/share/fonts/default/Type1/n021023l* usr/share/fonts/default/Type1/n021024l* usr/share/fonts/korean/TrueType/dotum.ttf usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf usr/share/fonts/chinese/TrueType/uming*.ttf usr/share/fonts/bengali/MuktiNarrow.ttf usr/share/fonts/arabic/KacstFarsi.ttf usr/share/fonts/arabic/KacstQura.ttf usr/share/fonts/tamil/lohit_ta.ttf usr/share/fonts/gujarati/lohit_gu.ttf usr/share/fonts/bengali/lohit_bn.ttf usr/share/fonts/hindi/lohit_hi.ttf usr/share/fonts/punjabi/lohit_pa.ttf usr/share/fonts/oriya/lohit_or.ttf usr/share/fonts/malayalam/lohit_ml.ttf usr/share/fonts/kannada/lohit_kn.ttf usr/share/fonts/telugu/lohit_te.ttf usr/share/fonts/sinhala/lklug.ttf usr/share/locale/*/LC_MESSAGES/anaconda.mo usr/share/locale/*/LC_MESSAGES/system-config-date.mo usr/share/locale/*/LC_MESSAGES/redhat-dist.mo usr/share/locale/*/LC_MESSAGES/system-config-keyboard.mo usr/share/locale/*/LC_MESSAGES/gtk20.mo usr/share/locale/*/LC_MESSAGES/libc.mo usr/share/locale/*/LC_MESSAGES/rhpl.mo usr/share/locale/*/LC_MESSAGES/rhpxl.mo usr/share/locale/*/LC_MESSAGES/parted.mo usr/share/locale/*/LC_MESSAGES/pirut.mo usr/share/pirut/* 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-keyboard/* usr/share/system-config-date/* usr/share/terminfo/l/linux usr/share/terminfo/x/xterm usr/share/terminfo/v/vt100 usr/share/terminfo/v/vt100-nav usr/share/terminfo/v/vt320 usr/share/terminfo/v/vt320-w usr/share/themes/Clearlooks/gtk-2.0/* usr/share/themes/Clearlooks/index.theme usr/share/vte/termcap/xterm usr/share/zoneinfo/* EOF # more dogtail stuff... cat >> $KEEPFILEGR <<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/libORBit* usr/$LIBDIR/libbonobo* usr/$LIBDIR/libspi* usr/$LIBDIR/libcspi* usr/$LIBDIR/bonobo/servers/* usr/$LIBDIR/libXevie* EOF # # KEEPFILERESCUE is all files to keep from the packages in PACKAGESRESCUE # # This defines the files in addition to KEEPFILE and KEEPFILEGR 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=/tmp/keepfilerescue.$$ cat > $KEEPFILERESCUE <<EOF bin/gunzip bin/gzip bin/mt bin/ping bin/sync bin/tar bin/zcat etc/joe/* sbin/arp sbin/depmod sbin/dhclient sbin/dhcp6c sbin/dump sbin/ifconfig sbin/insmod sbin/lsmod sbin/modinfo sbin/modprobe sbin/netstat sbin/restore sbin/rrestore sbin/rmmod sbin/route sbin/xfs_repair 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/groff usr/bin/iconv usr/kerberos/$LIBDIR/libgssapi* usr/kerberos/$LIBDIR/libkrb5* usr/kerberos/$LIBDIR/libk5crypto* usr/kerberos/$LIBDIR/libcom_err* usr/sbin/mtr usr/sbin/smartctl usr/sbin/traceroute usr/sbin/xfs_check usr/sbin/xfs_copy usr/sbin/xfs_db usr/sbin/xfsdump usr/sbin/xfsrestore EOF if [ $ARCH = i386 -o $ARCH = x86_64 ]; then cat >> $KEEPFILERESCUE <<-EOF boot/grub sbin/grub sbin/grub-install sbin/grub-md5-crypt sbin/grub-set-default usr/bin/gpart usr/bin/mbchk usr/share/grub/* EOF fi echo "Assembling package list..." RPMS=$(prunePackageList $PACKAGEDIR "$PACKAGES") [ -n "$DEBUG" ] && echo "RPMS are $RPMS" RPMSGR=$(prunePackageList $PACKAGEDIR "$PACKAGESGR $PACKAGESRESCUE") [ -n "$DEBUG" ] && echo "RPMSGR are $RPMSGR" rm -rf $DEST; mkdir -p $DEST/usr/sbin rm -rf $DESTGR; mkdir -p $DESTGR/usr/sbin $DESTGR/var/lib $DESTGR/boot ln -s /tmp $DESTGR/var/lib/xkb # # concat KEEPFILEGR and KEEPFILERESCUE lists # cat $KEEPFILERESCUE >> $KEEPFILEGR # # filter paths in keepfile lists for use by cpio # for file in $KEEPFILE $KEEPFILEGR; do cat $file | awk '{print $1 "\n./" $1}' > $file- mv -f $file- $file done echo "Expanding text packages..." expandPackageSet "$RPMS" $DEST $KEEPFILE (cd $DEST; tar cSpf - .) | (cd $DESTGR; tar xSpf -) echo "Expanding graphical packages..." expandPackageSet "$RPMSGR" $DESTGR $KEEPFILEGR chown -R root:root $DEST $DESTGR chmod -R a+rX-w $DEST $DESTGR if [ $ARCH = s390 -o $ARCH = s390x ]; then for i in $DEST $DESTGR; do mv $i/bin/sed $i/bin/sed_save mv $i/bin/sort $i/bin/sort_save done fi for i in $DEST $DESTGR; do # there's never a case with only one of these... for tool in dmraid dmsetup kpartx multipath ; do if [ -f $i/sbin/$tool.static ]; then mv $i/sbin/$tool.static $i/sbin/$tool fi done for mpath in $i/sbin/mpath_prio_*.static ; do if [ -f $mpath ]; then d=$(dirname $mpath) b=$(basename $mpath .static) mv $mpath $d/$b fi done done # change mtimes to 0 (to match what happens on the cramfs) for p in $DEST $DESTGR; do $p/usr/lib/anaconda-runtime/fixmtime.py $DEBUG $p done # Remove locales unused during the install cat $DESTGR/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 > $DESTGR/locales for p in lib share; do ( cd $DESTGR/usr/$p/locale && { ls | grep -v locale.alias | LC_ALL=C sort > $DESTGR/locales.list LC_ALL=C comm -13 $DESTGR/locales $DESTGR/locales.list | xargs rm -rf } ); done rm -f $DESTGR/locales $DESTGR/locales.list # fixup joe links if [ -n "$NEEDGR" ]; then ln -fs jpicorc $DESTGR/etc/joe/picorc ln -fs jpicorc $DESTGR/etc/joe/jnanorc ln -fs jpicorc $DESTGR/etc/joe/nanorc ln -fs jmacsrc $DESTGR/etc/joe/emacsrc ln -fs jmacs $DESTGR/usr/bin/emacs ln -fs jpico $DESTGR/usr/bin/pico ln -fs jpico $DESTGR/usr/bin/nano fi # create selinux config if [ -e $DEST/etc/selinux/targeted ]; then cat > $DEST/etc/selinux/config <<EOF SELINUX=permissive SELINUXTYPE=targeted EOF cp $DEST/etc/selinux/config $DESTGR/etc/selinux/config fi cat > $DEST/etc/shells <<EOF /bin/sh EOF echo "Creating nsswitch.conf" cat > $DEST/etc/nsswitch.conf <<EOF # munged nsswitch.conf with just what anaconda needs # created by upd-instroot # passwd: files shadow: files group: files hosts: files dns ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: files automount: files aliases: files EOF 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 echo "Creating multipath.conf" cat > $DEST/etc/multipath.conf <<EOF defaults { user_friendly_names yes } EOF cp $DEST/etc/shells $DESTGR/etc/shells cp $DEST/etc/nsswitch.conf $DESTGR/etc/nsswitch.conf cp $DEST/etc/libuser.conf $DESTGR/etc/libuser.conf cp $DEST/etc/multipath.conf $DESTGR/etc/multipath.conf sed -i 's|\(installforallkernels\) = 0|\1 = 1|' $DEST/etc/yum/pluginconf.d/kmod.conf cp $DEST/etc/yum/pluginconf.d/kmod.conf $DESTGR/etc/yum/pluginconf.d/ # fixup man.config to point into /mnt/sysimage for rescue if [ -n "$NEEDGR" ]; then echo "Fixing up /etc/man.config to point into /mnt/sysimage" mv $DESTGR/etc/man.config $DESTGR/etc/man.config-old cat $DESTGR/etc/man.config-old | sed 's^/usr/bin^/mnt/sysimage/usr/bin^' | sed 's^/bin/cat^/mnt/sysimage/usr/bin/cat^' > $DESTGR/etc/man.config rm -f $DESTGR/etc/man.config-old fi if [ -n "$NEEDGR" ]; then echo "Running mkfontdir..." mkfontdir $DESTGR/usr/share/X11/fonts/* fi echo "Creating SELinux policy..." if [ -x $DESTGR/usr/sbin/semodule ]; then ( cd $DESTGR x=$(ls usr/share/selinux/targeted/*.pp | grep -v -e base.pp -e enableaudit.pp | awk '{ print "-i /" $1 }') /usr/sbin/chroot $DESTGR /usr/sbin/semodule -b /usr/share/selinux/targeted/base.pp $x -n -s targeted ) fi rm -rf $DEST/etc/selinux mkdir $DEST/etc/selinux cp -r $DESTGR/etc/selinux/* $DEST/etc/selinux/ if [ -n "$NEEDGR" ]; then echo "Getting pango modules" # sick sick sick hack for pango-querymodules being -32 or -64 mv $DESTGR/usr/bin/pango-querymodules* $DESTGR/usr/bin/pango-querymodules /usr/sbin/chroot $DESTGR /usr/bin/pango-querymodules > $DESTGR/etc/pango/pango.modules rm -f $DESTGR/usr/bin/pango-querymodules # more sick hackery since it doesn't fall back to this like owen thought cat > $DESTGR/etc/pango/pangorc <<EOF [Pango] ModuleFiles=/etc/pango/pango.modules EOF fi host=`rpm --nodigest --nosignature -qp --qf "%{POSTIN}\n" $PACKAGEDIR/gtk2*.$ARCH.rpm |grep update-gdk-pixbuf |awk {'print $3;'}` case "$host" in *linux) canonhost="$host-gnu" ;; *) canonhost=$host ;; esac # autoconf uses powerpc not ppc HOSTTRIPLET=`echo $canonhost | sed "s/^ppc/powerpc/"` mkdir -p $DESTGR/etc/gtk-2.0/$HOSTTRIPLET if [ -n "$NEEDGR" ]; then echo "Getting gtk2 input method modules" mv $DESTGR/usr/bin/gtk-query-immodules-2.0* $DESTGR/usr/bin/gtk-query-immodules-2.0 /usr/sbin/chroot $DESTGR /usr/bin/gtk-query-immodules-2.0 > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gtk.immodules rm -f $DESTGR/usr/bin/gtk-query-immodules-2.0 fi if [ -n "$NEEDGR" ]; then echo "Getting gtk2 gdk-pixbuf loaders" mv $DESTGR/usr/bin/gdk-pixbuf-query-loaders* $DESTGR/usr/bin/gdk-pixbuf-query-loaders /usr/sbin/chroot $DESTGR /usr/bin/gdk-pixbuf-query-loaders > $DESTGR/etc/gtk-2.0/$HOSTTRIPLET/gdk-pixbuf.loaders rm -f $DESTGR/usr/bin/gdk-pixbuf-query-loaders fi rm -f $KEEPFILE $KEEPFILEGR $KEEPFILERESCUE for p in $DEST $DESTGR; do echo "Scrubbing trees..." "$p" cp $p/usr/lib/anaconda/raidstart-stub $p/usr/bin/raidstart cp $p/usr/lib/anaconda/raidstop-stub $p/usr/bin/raidstop cp $p/usr/lib/anaconda/losetup-stub $p/usr/bin/losetup cp $p/usr/lib/anaconda/pump-stub $p/usr/bin/pump cp $p/usr/lib/anaconda/list-harddrives-stub $p/usr/bin/list-harddrives cp $p/usr/lib/anaconda/kudzu-probe-stub $p/usr/bin/kudzu-probe cp $p/usr/lib/anaconda/loadkeys-stub $p/usr/bin/loadkeys cp $p/usr/lib/anaconda/mknod-stub $p/usr/bin/mknod cp $p/usr/lib/anaconda/syslogd-stub $p/usr/bin/syslogd mv $p/usr/sbin/anaconda $p/usr/bin/anaconda mv $p/usr/lib/anaconda-runtime/lib* $p/usr/$LIBDIR # we only want the libunicode-lite stuff on the minimal image if [ $p = $DESTGR ]; then rm -f $p/usr/$LIBDIR/libunicode-lite* fi find $p -type d | xargs chmod 755 if [ -f $p/bin/bash ]; then rm -f $p/bin/ash ln -s bash $p/bin/sh else ln -sf busybox $p/bin/sh fi [ -d $p/bin ] || die "ERROR: directory missing: $p/bin" [ -d $p/sbin ] || die "ERROR: directory missing: $p/sbin" (cd $p/bin; find) | (cd $p/bin; /bin/cpio --quiet -pdmu $p/usr/bin) (cd $p/sbin; find) | (cd $p/sbin; /bin/cpio --quiet -pdmu $p/usr/sbin) rm -rf $p/bin rm -rf $p/sbin # copy bootloader files for sparc if [ $ARCH = sparc -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot [ -d $p/boot ] || die "ERROR: directory missing: $p/boot" (cd $p/boot; find -name "*.b") | (cd $p/boot; /bin/cpio --quiet -pdmu $p/usr/lib/anaconda-runtime/boot) fi # copy bootloader file for alpha if [ $ARCH = alpha -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot cp -af $p/boot/bootlx $p/usr/lib/anaconda-runtime/boot fi # copy bootloader files for ia64 if [ $ARCH = ia64 -a $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot cp -af $p/boot/efi/EFI/redhat//* $p/usr/lib/anaconda-runtime/boot fi # copy bootloader files for i386/x86_64 if [ $ARCH = i386 -o $ARCH = x86_64 ]; then if [ $p = $DESTGR ]; then mkdir -p $p/usr/lib/anaconda-runtime/boot cp -af $p/boot/memtest* $p/usr/lib/anaconda-runtime/boot fi fi rm -rf $p/boot $p/home $p/root $p/tmp find $p -name "*.a" | xargs rm -rf find $p -name "lib*.la" |grep -v "usr/$LIBDIR/gtk-2.0" | xargs rm -rf for f in newt popt rpm rpmio; do rm -f $p/usr/$LIBDIR/lib$f.so done # 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 $p/$d done if [ "$ARCH" != "s390" -a "$ARCH" != "s390x" ]; then (cd $p/lib* && rm -f libnss_files.so.1 libnss_dns.so.1) fi $p/usr/lib/anaconda-runtime/scrubtree $p done echo "Compressing .mo files in stage2 images..." if [ -d $DEST/usr/share/locale ]; then for i in `find $DEST/usr/share/locale -name anaconda.mo`; do gzip -9 $i mv -f $i.gz $i done fi if [ -n "$NEEDGR" ]; then echo "Creating fontconfig cache" /usr/sbin/chroot $DESTGR /usr/bin/fc-cache rm -f $DESTGR/usr/bin/fc-cache fi echo "Creating debug dir" for p in $DEST $DESTGR ; do mkdir -p $p/usr/lib/debug mkdir -p $p/usr/src/debug done if [ $ARCH = "alpha" ]; then rm -rf $DEST/usr/share/locale rm -rf $DEST/usr/$LIBDIR/locale fi echo "Patching python library..." # always use passive mode for ftp installs cd $DEST/usr/$LIBDIR/python2.4 patch -p0 > /dev/null <<EOF --- urllib.py.orig Thu Oct 25 17:05:06 2001 +++ urllib.py Thu Oct 25 17:05:34 2001 @@ -453,6 +453,7 @@ path, attrs = splitattr(path) path = unquote(path) dirs = path.split('/') + dirs[0] = '/' + dirs[0] dirs, file = dirs[:-1], dirs[-1] if dirs and not dirs[0]: dirs = dirs[1:] if dirs and not dirs[0]: dirs[0] = '/' @@ -707,6 +708,7 @@ self.ftp = ftplib.FTP() self.ftp.connect(self.host, self.port) self.ftp.login(self.user, self.passwd) + self.ftp.set_pasv(1) for dir in self.dirs: self.ftp.cwd(dir) EOF cd - for p in $DEST $DESTGR; do find $p -name "*.py" | while read fn; do rm -f ${fn}o rm -f ${fn}c ln -sf /dev/null ${fn}c done done # do some stripping of debugging symbols find $DEST -type f -name '*.so' |xargs strip -g find $DESTGR -type f -name '*.so' |xargs strip -g # some python stuff we don't need for stage2 rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/distutils/ rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/lib-dynload/japanese rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/compiler/ rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/email/test/ rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/curses/ rm -rf $DESTGR/usr/$LIBDIR/python?.?/site-packages/pydoc.py # this is only for the minimal second stage echo "Cleaning ramdisk install images..." rm -rf $DEST/usr/lib/anaconda-runtime