diff -ruN /usr/share/genkernel.orig/generic/linuxrc /usr/share/genkernel/generic/linuxrc --- /usr/share/genkernel.orig/generic/linuxrc 2008-10-20 13:38:45.000000000 +0200 +++ /usr/share/genkernel/generic/linuxrc 2008-10-20 13:20:31.000000000 +0200 @@ -180,6 +180,9 @@ real_rootflags\=*) REAL_ROOTFLAGS=`parse_opt "${x}"` ;; + tmprootsize\=*) + TMPROOTSIZE=`parse_opt "${x}"` + ;; keymap\=*) keymap=`parse_opt "${x}"` ;; @@ -354,8 +357,49 @@ continue fi ;; + IMAGE\=http:*|IMAGE\=ftp:*) + + ROOT_DEV=${REAL_ROOT#*=*} + retval=1 + + good_msg "Making tmpfs for ${NEW_ROOT}" + if [ -n "${TMPROOTSIZE}" ]; then + mount -t tmpfs tmpfs ${NEW_ROOT} -o size="${TMPROOTSIZE}" + else + mount -t tmpfs tmpfs ${NEW_ROOT} + fi + + good_msg "Starting retrieval of ${ROOT_DEV}" + case "${ROOT_DEV}" in + *.tgz|*.tar.gz) + wget -O- "${ROOT_DEV}" | tar -xzf- -C ${NEW_ROOT} + retval=$? + ;; + *.tar.bz2) + wget -O- "${ROOT_DEV}" | tar -xjf- -C ${NEW_ROOT} + retval=$? + ;; + *) + bad_msg "Only tgz, tar.gz, tar.bz2 images supported" + exit 1 + ;; + esac + + if [ "${retval}" -eq '0' ] + then + good_msg "Retrieval and unpacking of image successful" + got_good_root=1 + break 2 # tmpfs will be root, doesn't need mounting + else + bad_msg "Retrieval or unpacking failed, will unmount and retry..." + umount ${NEW_ROOT} + sleep 10 + got_good_root=0 + continue + fi + ;; esac - + if [ "${REAL_ROOT}" = '' ] then # No REAL_ROOT determined/specified. Prompt user for root block device. diff -ruN /usr/share/genkernel.orig/x86/busy-config /usr/share/genkernel/x86/busy-config --- /usr/share/genkernel.orig/x86/busy-config 2008-10-20 13:38:46.000000000 +0200 +++ /usr/share/genkernel/x86/busy-config 2008-10-20 12:03:55.000000000 +0200 @@ -105,7 +105,7 @@ # CONFIG_FEATURE_RPM_BZ2 is not set CONFIG_TAR=y CONFIG_FEATURE_TAR_CREATE=y -# CONFIG_FEATURE_TAR_BZIP2 is not set +CONFIG_FEATURE_TAR_BZIP2=y # CONFIG_FEATURE_TAR_LZMA is not set # CONFIG_FEATURE_TAR_FROM is not set CONFIG_FEATURE_TAR_GZIP=y @@ -628,7 +628,7 @@ # CONFIG_FEATURE_UDHCP_DEBUG is not set # CONFIG_FEATURE_RFC3397 is not set # CONFIG_VCONFIG is not set -# CONFIG_WGET is not set +CONFIG_WGET=y # CONFIG_FEATURE_WGET_STATUSBAR is not set # CONFIG_FEATURE_WGET_AUTHENTICATION is not set # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set diff -ruN /usr/share/genkernel.orig/x86_64/busy-config /usr/share/genkernel/x86_64/busy-config --- /usr/share/genkernel.orig/x86_64/busy-config 2008-10-20 13:38:46.000000000 +0200 +++ /usr/share/genkernel/x86_64/busy-config 2008-10-20 12:03:46.000000000 +0200 @@ -105,7 +105,7 @@ # CONFIG_FEATURE_RPM_BZ2 is not set CONFIG_TAR=y CONFIG_FEATURE_TAR_CREATE=y -# CONFIG_FEATURE_TAR_BZIP2 is not set +CONFIG_FEATURE_TAR_BZIP2=y # CONFIG_FEATURE_TAR_LZMA is not set # CONFIG_FEATURE_TAR_FROM is not set CONFIG_FEATURE_TAR_GZIP=y @@ -628,7 +628,7 @@ # CONFIG_FEATURE_UDHCP_DEBUG is not set # CONFIG_FEATURE_RFC3397 is not set # CONFIG_VCONFIG is not set -# CONFIG_WGET is not set +CONFIG_WGET=y # CONFIG_FEATURE_WGET_STATUSBAR is not set # CONFIG_FEATURE_WGET_AUTHENTICATION is not set # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set