From f232e87ee2e4cdaa1814c82dab5f928b6ee98fa4 Mon Sep 17 00:00:00 2001 From: lace <> Date: Sun, 23 Jul 2006 08:04:46 +0000 Subject: [PATCH] RawHide bootstrapper, both intranet and extranet usable. --- src/rawhide-bootstrap | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100755 src/rawhide-bootstrap diff --git a/src/rawhide-bootstrap b/src/rawhide-bootstrap new file mode 100755 index 0000000..bbbd389 --- /dev/null +++ b/src/rawhide-bootstrap @@ -0,0 +1,248 @@ +#! /bin/bash +# Bootstrap for: RawHide +# $Id$ +# Latest: +# http://cvs.jankratochvil.net/viewcvs/nethome/src/rawhide-bootstrap?rev=HEAD + + +###RPMS_URL_BASE=http://sunsite.mff.cuni.cz/pub/fedora/development/`uname -i`/os +RPMS_URL_BASE=http://localhost/redhat/devel/rawhide-latest/rawhide-latest/latest/`uname -i`/os + + +if test $# != 1;then echo >&2 "Syntax: $0 ";exit 1;fi +ROOT="$1" +if test "${ROOT#/}" = "$ROOT";then echo >&2 "Absolute pathname required: $ROOT";exit 1;fi + +cd / +umount $ROOT/proc +umount $ROOT/sys +set -ex + +set +x;pkgs="`set -x;wget -q -O - $RPMS_URL_BASE/Fedora/RPMS/ | sed -n 's/^.*.*$/\1/p'`";set -x +function pkg +{ + for arch in `uname -m` `uname -i` noarch;do + r="`set +x;echo "$pkgs"|(set +e;grep -P '^\Q'"$1"'\E-[^-]+-[^-]+'".$arch.rpm"'$')`" + if [ `echo "$r"|wc -l` -ge 2 ];then break;fi + if [ -n "$r" ];then + echo "$RPMS_URL_BASE/Fedora/RPMS/$r" + return + fi + done + echo >&2 "ERROR: $1" + echo >&2 "$r" + kill $$ +} + +KEY=/tmp/fedora-bootstrap-$$-key +rm -rf $KEY +trap 'rm -f $KEY' EXIT +mkdir $KEY +cd $KEY +# wget(1) due to: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167483 +wget -q -O - `pkg fedora-release` | rpm2cpio | cpio -id + +rm -rf $ROOT +mkdir -p $ROOT/{etc,dev,var/log,sys} +awk '/^[ \t]*[^#]/ { if ($2 == "/" || $2 == "/sys" || $2 == "/proc") { print; }}' $ROOT/etc/fstab +if grep -q '^LABEL=' $ROOT/etc/fstab;then + awk <$ROOT/etc/fstab >$ROOT/etc/fstab2 '{ if ($2 == "/") $1="/dev/root"; }{ print; }' + mv -f $ROOT/etc/fstab2 $ROOT/etc/fstab +fi +cp -a /dev/{null,urandom,random} `awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' <$ROOT/etc/fstab` $ROOT/dev/ +touch $ROOT/{etc/mtab,var/log/lastlog} +mount -tsysfs sysfs $ROOT/sys +rpm --root=$ROOT --initdb +rpm --root=$ROOT --import $KEY/etc/pki/rpm-gpg/RPM-GPG-KEY* +rm -rf $KEY +cd $RPMS +# For rpm(1) http:// downloads: +mkdir -p $ROOT/var/tmp +RPM=rpm +while read -r key val;do + if test -n "$val";then RPM="$RPM $key $val";fi + done <j + +# rpm(8) +DOWNLOAD=/tmp/fedora-bootstrap-$$-download +rm -rf $DOWNLOAD +trap 'rm -rf $DOWNLOAD $KEY' EXIT +mkdir $DOWNLOAD +cd $DOWNLOAD +wget `set +x;while read -r line;do pkg $line;done <$repo +done + +chroot $ROOT mount /proc +# Prevent: socket.error: (2, 'No such file or directory') +patch $ROOT/usr/lib/python2.4/site-packages/yum/logginglevels.py <