Do not hardcode /mnt/cdrom path across the whole code, use CDROOT_PATH

instead. At the same time, mount cdrom into /mnt/cdrom instead of
/newroot/mnt/cdrom (which is now just a bind mount), this avoids
losetup to expose unavailable paths inside the live system, breaking
mkfs.btrfs (next upstream version, which does silly things with
/proc/mounts).
cleanup-cruft
Fabio Erculiani 13 years ago
parent 90b944fe4e
commit 84cc7ccdfb

@ -5,6 +5,15 @@
# Distributed under the GPL v2 # Distributed under the GPL v2
# $Id$ # $Id$
08 Oct 2011; Fabio Erculiani <lxnay@gentoo.org> defaults/initrd.defaults,
defaults/initrd.scripts, defaults/linuxrc:
Do not hardcode /mnt/cdrom path across the whole code, use CDROOT_PATH
instead. At the same time, mount cdrom into /mnt/cdrom instead of
/newroot/mnt/cdrom (which is now just a bind mount), this avoids
losetup to expose unavailable paths inside the live system, breaking
mkfs.btrfs (next upstream version, which does silly things with
/proc/mounts).
07 Oct 2011; Robin H. Johnson <robbat2@gentoo.org> 07 Oct 2011; Robin H. Johnson <robbat2@gentoo.org>
patches/busybox/1.18.1/1.18.1-mdstart.diff: patches/busybox/1.18.1/1.18.1-mdstart.diff:
Fix patch typo that broke compile. Fix patch typo that broke compile.

@ -71,6 +71,7 @@ CDROOT='0'
CDROOT_DEV='' CDROOT_DEV=''
CDROOT_TYPE='auto' CDROOT_TYPE='auto'
NEW_ROOT='/newroot' NEW_ROOT='/newroot'
CDROOT_PATH='/mnt/cdrom'
CONSOLE='/dev/console' CONSOLE='/dev/console'
LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop' LOOPS='/livecd.loop /zisofs /livecd.squashfs /image.squashfs /livecd.gcloop'

@ -53,11 +53,10 @@ findmediamount() {
# $1 = mount dir name / media name # $1 = mount dir name / media name
# $2 = recognition file # $2 = recognition file
# $3 = variable to have the device path # $3 = variable to have the device path
# $4 = directory before /mnt, like NEW_ROOT # $4 = actual mount dir path (full path)
# args remaining are possible devices # args remaining are possible devices
local media=$1 recon=$2 vrbl=$3 local media=$1 recon=$2 vrbl=$3 mntdir=$4
local mntdir="${4}/mnt/${media}"
shift 4 shift 4
good_msg "Looking for the ${media}" ${CRYPT_SILENT} good_msg "Looking for the ${media}" ${CRYPT_SILENT}
@ -100,11 +99,6 @@ findmediamount() {
fi fi
good_msg "Attempting to mount media:- ${x}" ${CRYPT_SILENT} good_msg "Attempting to mount media:- ${x}" ${CRYPT_SILENT}
# if [ "${media}" = "cdrom" ]; then
# mount -r -t iso9660 ${x} ${mntdir} &>/dev/null
# else
# mount -r -t auto ${x} ${mntdir} &>/dev/null
# fi
mount -r -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1 mount -r -t ${CDROOT_TYPE} ${x} ${mntcddir} >/dev/null 2>&1
if [ "$?" = '0' ] if [ "$?" = '0' ]
then then
@ -158,7 +152,7 @@ bootstrapCD() {
# a bunch of extra devices # a bunch of extra devices
[ -n "${CDROOT_DEV}" ] && DEVICES="${CDROOT_DEV}" [ -n "${CDROOT_DEV}" ] && DEVICES="${CDROOT_DEV}"
findmediamount "cdrom" "${SUBDIR}/livecd" "REAL_ROOT" "${NEW_ROOT}" ${DEVICES} findmediamount "cdrom" "${SUBDIR}/livecd" "REAL_ROOT" "${CDROOT_PATH}" ${DEVICES}
} }
bootstrapKey() { bootstrapKey() {
@ -166,7 +160,7 @@ bootstrapKey() {
local KEYDEVS=`devicelist` local KEYDEVS=`devicelist`
eval local keyloc='"${CRYPT_'${1}'_KEY}"' eval local keyloc='"${CRYPT_'${1}'_KEY}"'
findmediamount "key" "${keyloc}" "CRYPT_${1}_KEYDEV" "" ${KEYDEVS} findmediamount "key" "${keyloc}" "CRYPT_${1}_KEYDEV" "/mnt/key" ${KEYDEVS}
} }
cache_cd_contents() { cache_cd_contents() {
@ -187,7 +181,7 @@ cache_cd_contents() {
good_msg "Copying loop file for caching..." good_msg "Copying loop file for caching..."
# Verify that the needed directory exists # Verify that the needed directory exists
mkdir -p "$(dirname ${NEW_ROOT}/mnt/${LOOP})" mkdir -p "$(dirname ${NEW_ROOT}/mnt/${LOOP})"
cp -a ${NEW_ROOT}/mnt/cdrom/${LOOP} ${NEW_ROOT}/mnt/${LOOP} cp -a ${CDROOT_PATH}/${LOOP} ${NEW_ROOT}/mnt/${LOOP}
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
bad_msg "Failed to cache the loop file! Lack of space?" bad_msg "Failed to cache the loop file! Lack of space?"
@ -258,7 +252,7 @@ findnfsmount() {
if [ "${CDROOT}" != '0' ] if [ "${CDROOT}" != '0' ]
then then
good_msg "Attempting to mount NFS CD image on ${NFSROOT} with options ${NFSOPTIONS}" good_msg "Attempting to mount NFS CD image on ${NFSROOT} with options ${NFSOPTIONS}"
mount -t nfs -o ${NFSOPTIONS} ${NFSROOT} ${NEW_ROOT}/mnt/cdrom mount -t nfs -o ${NFSOPTIONS} ${NFSROOT} ${CDROOT_PATH}
if [ "$?" = '0' ] if [ "$?" = '0' ]
then then
REAL_ROOT="/dev/nfs" REAL_ROOT="/dev/nfs"
@ -283,7 +277,7 @@ findnfsmount() {
} }
check_loop() { check_loop() {
if [ "${LOOP}" = '' -o ! -e "mnt/cdrom/${LOOP}" ] if [ "${LOOP}" = '' -o ! -e "${CDROOT_PATH}/${LOOP}" ]
then then
bad_msg "Invalid loop location: ${LOOP}" bad_msg "Invalid loop location: ${LOOP}"
@ -947,10 +941,10 @@ verbose_kmsg() {
cdupdate() { cdupdate() {
if [ "${CDROOT}" = '1' ] if [ "${CDROOT}" = '1' ]
then then
if [ -x /${NEW_ROOT}/mnt/cdrom/cdupdate.sh ] if [ -x /${CDROOT_PATH}/cdupdate.sh ]
then then
good_msg "Running cdupdate.sh" good_msg "Running cdupdate.sh"
${NEW_ROOT}/mnt/cdrom/cdupdate.sh ${CDROOT_PATH}/cdupdate.sh
if [ "$?" != '0' ] if [ "$?" != '0' ]
then then
bad_msg "Executing cdupdate.sh failed!" bad_msg "Executing cdupdate.sh failed!"
@ -1065,10 +1059,9 @@ tuxonice_resume() {
} }
find_loop() { find_loop() {
CDROM="${NEW_ROOT}/mnt/cdrom"
for loop in ${LOOPS} for loop in ${LOOPS}
do do
if [ -e "${CDROM}""${loop}" ] if [ -e "${CDROOT_PATH}""${loop}" ]
then then
LOOP="${loop}" LOOP="${loop}"
fi fi
@ -1098,8 +1091,7 @@ setup_squashfs_aufs() {
good_msg "Loading aufs" good_msg "Loading aufs"
modprobe aufs > /dev/null 2>&1 modprobe aufs > /dev/null 2>&1
cd "${NEW_ROOT}" mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${static}"
mount -t squashfs -o loop,ro "mnt/cdrom${LOOPEXT}${LOOP}" "${static}"
mount -t tmpfs none "${overlay}" mount -t tmpfs none "${overlay}"
mount -t aufs -o br:${overlay}:${static} aufs "${NEW_ROOT}" mount -t aufs -o br:${overlay}:${static} aufs "${NEW_ROOT}"
@ -1108,9 +1100,10 @@ setup_squashfs_aufs() {
echo "aufs / aufs defaults 0 0" > "${NEW_ROOT}"/etc/fstab echo "aufs / aufs defaults 0 0" > "${NEW_ROOT}"/etc/fstab
for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done for i in "${overlay}" "${static}"; do mount --move "${i}" "${NEW_ROOT}${i}"; done
# have handy /mnt/cdrom as well # have handy /mnt/cdrom (CDROOT_PATH) as well
[ ! -d "${NEW_ROOT}/mnt/cdrom" ] && mkdir -p "${NEW_ROOT}/mnt/cdrom" local new_cdroot="${NEW_ROOT}${CDROOT_PATH}"
mount --bind mnt/cdrom "${NEW_ROOT}/mnt/cdrom" [ ! -d "${new_cdroot}" ] && mkdir -p "${new_cdroot}"
mount --bind "${CDROOT_PATH}" "${new_cdroot}"
) )
} }
@ -1171,6 +1164,8 @@ setup_unionfs() {
bad_msg "Can't setup union mount!" bad_msg "Can't setup union mount!"
USE_UNIONFS_NORMAL=0 USE_UNIONFS_NORMAL=0
fi fi
[ ! -d "${NEW_ROOT}${CDROOT_PATH}" ] && mkdir -p "${NEW_ROOT}${CDROOT_PATH}"
mount --bind "${CDROOT_PATH}" "${NEW_ROOT}${CDROOT_PATH}"
else else
USE_UNIONFS_NORMAL=0 USE_UNIONFS_NORMAL=0
fi fi

@ -345,11 +345,12 @@ then
good_msg "Making tmpfs for ${NEW_ROOT}" good_msg "Making tmpfs for ${NEW_ROOT}"
mount -n -t tmpfs tmpfs "${NEW_ROOT}" mount -n -t tmpfs tmpfs "${NEW_ROOT}"
for i in dev mnt mnt/cdrom mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys for i in dev mnt mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys
do do
mkdir -p "${NEW_ROOT}/${i}" mkdir -p "${NEW_ROOT}/${i}"
chmod 755 "${NEW_ROOT}/${i}" chmod 755 "${NEW_ROOT}/${i}"
done done
[ ! -d "${CDROOT_PATH}" ] && mkdir -p "${CDROOT_PATH}"
[ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3 [ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3
[ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console c 5 1 [ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console c 5 1
@ -524,11 +525,11 @@ then
# If encrypted, find key and mount, otherwise mount as usual # If encrypted, find key and mount, otherwise mount as usual
if [ -n "${CRYPT_ROOT}" ] if [ -n "${CRYPT_ROOT}" ]
then then
CRYPT_ROOT_KEY="$(head -n 1 ${NEW_ROOT}/mnt/cdrom/livecd)" CRYPT_ROOT_KEY="$(head -n 1 "${CDROOT_PATH}"/livecd)"
CRYPT_ROOT='/dev/loop0' CRYPT_ROOT='/dev/loop0'
good_msg 'You booted an encrypted livecd' "${CRYPT_SILENT}" good_msg 'You booted an encrypted livecd' "${CRYPT_SILENT}"
losetup /dev/loop0 "${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}" losetup /dev/loop0 "${CDROOT_PATH}/${LOOPEXT}${LOOP}"
test_success 'Preparing loop filesystem' test_success 'Preparing loop filesystem'
startLUKS startLUKS
@ -549,14 +550,14 @@ then
if [ "${LOOPTYPE}" = 'normal' ] if [ "${LOOPTYPE}" = 'normal' ]
then then
good_msg 'Mounting loop filesystem' good_msg 'Mounting loop filesystem'
mount -t ext2 -o loop,ro "${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd" mount -t ext2 -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd"
test_success 'Mount filesystem' test_success 'Mount filesystem'
FS_LOCATION='mnt/livecd' FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'squashfs' ] elif [ "${LOOPTYPE}" = 'squashfs' ]
then then
if [ "${USE_AUFS_NORMAL}" != '1' ]; then if [ "${USE_AUFS_NORMAL}" != '1' ]; then
good_msg 'Mounting squashfs filesystem' good_msg 'Mounting squashfs filesystem'
mount -t squashfs -o loop,ro "${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd" mount -t squashfs -o loop,ro "${CDROOT_PATH}/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd"
else else
good_msg 'Mounting squashfs & aufs filesystems' good_msg 'Mounting squashfs & aufs filesystems'
setup_squashfs_aufs setup_squashfs_aufs
@ -566,7 +567,7 @@ then
elif [ "${LOOPTYPE}" = 'gcloop' ] elif [ "${LOOPTYPE}" = 'gcloop' ]
then then
good_msg 'Mounting gcloop filesystem' good_msg 'Mounting gcloop filesystem'
echo ' ' | losetup -E 19 -e ucl-0 -p0 "${NEW_ROOT}/dev/loop0" "${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}" echo ' ' | losetup -E 19 -e ucl-0 -p0 "${NEW_ROOT}/dev/loop0" "${CDROOT_PATH}/${LOOPEXT}${LOOP}"
test_success 'losetup the loop device' test_success 'losetup the loop device'
mount -t ext2 -o ro "${NEW_ROOT}/dev/loop0" "${NEW_ROOT}/mnt/livecd" mount -t ext2 -o ro "${NEW_ROOT}/dev/loop0" "${NEW_ROOT}/mnt/livecd"
@ -574,10 +575,10 @@ then
FS_LOCATION='mnt/livecd' FS_LOCATION='mnt/livecd'
elif [ "${LOOPTYPE}" = 'zisofs' ] elif [ "${LOOPTYPE}" = 'zisofs' ]
then then
FS_LOCATION="mnt/cdrom/${LOOPEXT}${LOOP}" FS_LOCATION="${CDROOT_PATH/\/}/${LOOPEXT}${LOOP}"
elif [ "${LOOPTYPE}" = 'noloop' ] elif [ "${LOOPTYPE}" = 'noloop' ]
then then
FS_LOCATION='mnt/cdrom' FS_LOCATION="${CDROOT_PATH/\/}"
elif [ "${LOOPTYPE}" = 'sgimips' ] elif [ "${LOOPTYPE}" = 'sgimips' ]
then then
# getdvhoff finds the starting offset (in bytes) of the squashfs # getdvhoff finds the starting offset (in bytes) of the squashfs
@ -610,9 +611,9 @@ then
# We do this now, so that additional packages can add whereever they want. # We do this now, so that additional packages can add whereever they want.
if [ "${REAL_ROOT}" = '/dev/nfs' ] if [ "${REAL_ROOT}" = '/dev/nfs' ]
then then
if [ -e "${NEW_ROOT}/mnt/cdrom/add" ] if [ -e "${CDROOT_PATH}/add" ]
then then
for targz in $(ls ${NEW_ROOT}/mnt/cdrom/add/*.tar.gz) for targz in $(ls ${CDROOT_PATH}/add/*.tar.gz)
do do
tarname=$(basename ${targz}) tarname=$(basename ${targz})
good_msg "Adding additional package ${tarname}" good_msg "Adding additional package ${tarname}"
@ -624,7 +625,7 @@ then
if [ "${USE_UNIONFS_NORMAL}" = '1' ] if [ "${USE_UNIONFS_NORMAL}" = '1' ]
then then
setup_unionfs ${NEW_ROOT} ${NEW_ROOT}/${FS_LOCATION} setup_unionfs ${NEW_ROOT} /${FS_LOCATION}
CHROOT=/union CHROOT=/union
elif [ "${USE_AUFS_NORMAL}" != '1' ]; then elif [ "${USE_AUFS_NORMAL}" != '1' ]; then

Loading…
Cancel
Save