initramfs-tools: performance and misc fixes.

mkinitramfs: run_bootloader shall be called if -B not specified for delete mode.
mkinitramfs: use find -L when copying scripts files, so that it works
	     in a chroot for xbps-src.
init: do not mount devpts, do not create /var/lock, umount /sys
      and /proc in initramfs.
scripts: simplify them and assume that blkid is used everywhere.
scripts: remove specific stuff for lilo compat.

--HG--
branch : gnome3
This commit is contained in:
Juan RP 2011-03-05 12:20:41 +01:00
parent 1f738d90d8
commit 01a9868a70
7 changed files with 35 additions and 93 deletions

View file

@ -12,8 +12,8 @@ catenate_cpiogz() {
force_load()
{
manual_add_modules ${@}
echo "${@}" >>"${DESTDIR}/conf/modules"
manual_add_modules ${@}
echo "${@}" >>"${DESTDIR}/conf/modules"
}
# Takes a file containing a list of modules to be added as an
@ -370,9 +370,6 @@ dep_add_modules()
if [ -d "${DESTDIR}/lib/modules/${version}/kernel/drivers/ide" ]; then
sys_walk_modalias ${root_dev_path}
manual_add_modules ide-gd_mod
# FIXME: remove post Squeeze
manual_add_modules ide-disk
manual_add_modules ide-cd
fi
if [ -d "${DESTDIR}/lib/modules/${version}/kernel/drivers/scsi" ]; then
@ -539,8 +536,14 @@ cache_run_scripts()
compare_versions()
{
local curv="$1" minv="$2"
local cmpver_cmd
xbps-uhelper cmpver $curv $minv
if ! command -v xbps-uhelper.static >/dev/null 2>&1; then
cmpver_cmd=xbps-uhelper.static
else
cmpver_cmd=xbps-uhelper
fi
${cmpver_cmd} cmpver $curv $minv
if [ $? -eq 0 ] || [ $? -eq 1 ]; then
return 0
fi

View file

@ -13,31 +13,23 @@ done
[ -d /sys ] || mkdir /sys
[ -d /proc ] || mkdir /proc
[ -d /tmp ] || mkdir /tmp
mkdir -p /var/lock
mount -t sysfs -o nodev,noexec,nosuid sysfs /sys
mount -t proc -o nodev,noexec,nosuid proc /proc
# Note that this only becomes /dev on the real filesystem if udev's scripts
# are used; which they will be, but it's worth pointing out
tmpfs_size="10M"
if [ -e /etc/udev/udev.conf ]; then
. /etc/udev/udev.conf
fi
if ! mount -t devtmpfs -o mode=0755 devtmpfs /dev; then
tmpfs_size="10M"
echo "W: devtmpfs not available, falling back to tmpfs for /dev"
mount -t tmpfs -o size=$tmpfs_size,mode=0755 udev /dev
[ -e /dev/console ] || mknod -m 0600 /dev/console c 5 1
[ -e /dev/null ] || mknod /dev/null c 1 3
fi
mkdir /dev/pts
mount -t devpts -o noexec,nosuid,gid=5,mode=0620 devpts /dev/pts || true
> /dev/.initramfs-tools
mkdir /dev/.initramfs
# Export the dpkg architecture
export DPKG_ARCH=
. /conf/arch.conf
# Set modprobe env
export MODPROBE_OPTIONS="-qb"
@ -202,36 +194,31 @@ fi
[ -n "${netconsole}" ] && modprobe netconsole netconsole="${netconsole}"
maybe_break top
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-top"
log_begin_msg "Running /scripts/init-top"
run_scripts /scripts/init-top
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
maybe_break modules
[ "$quiet" != "y" ] && log_begin_msg "Loading essential drivers"
log_begin_msg "Loading essential drivers"
load_modules
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
maybe_break premount
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-premount"
log_begin_msg "Running /scripts/init-premount"
run_scripts /scripts/init-premount
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
maybe_break mount
log_begin_msg "Mounting root file system"
. /scripts/${BOOT}
parse_numeric ${ROOT}
maybe_break mountroot
mountroot
log_end_msg
maybe_break bottom
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom"
log_begin_msg "Running /scripts/init-bottom"
run_scripts /scripts/init-bottom
[ "$quiet" != "y" ] && log_end_msg
# Move virtual filesystems over to the real filesystem
mount -n -o move /sys ${rootmnt}/sys
umount /proc
log_end_msg
validate_init() {
checktarget="${1}"
@ -286,7 +273,6 @@ maybe_break init
# (keep init, rootmnt)
unset debug
unset MODPROBE_OPTIONS
unset DPKG_ARCH
unset ROOTFLAGS
unset ROOTFSTYPE
unset ROOTDELAY
@ -304,6 +290,10 @@ unset readonly
unset resume
unset resume_offset
# Umount sysfs and procfs, they will be mounted by init scripts.
umount /sys
umount /proc
# Chain to real filesystem
exec switch_root ${rootmnt} ${init} "$@"
panic "Could not execute run-init."

View file

@ -239,21 +239,20 @@ hidden_dep_add_modules
cp -p /usr/share/initramfs-tools/init ${DESTDIR}/init
# add existant boot scripts
for b in $(cd /usr/share/initramfs-tools/scripts/ && find . \
for b in $(cd /usr/share/initramfs-tools/scripts/ && find -L . \
-regextype posix-extended -regex '.*/[[:alnum:]\._-]+$' -type f); do
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
cp -p "/usr/share/initramfs-tools/scripts/${b}" \
"${DESTDIR}/scripts/$(dirname "${b}")/"
done
for b in $(cd "${CONFDIR}/scripts" && find . \
for b in $(cd "${CONFDIR}/scripts" && find -L . \
-regextype posix-extended -regex '.*/[[:alnum:]\._-]+$' -type f); do
[ -d "${DESTDIR}/scripts/$(dirname "${b}")" ] \
|| mkdir -p "${DESTDIR}/scripts/$(dirname "${b}")"
cp -p "${CONFDIR}/scripts/${b}" "${DESTDIR}/scripts/$(dirname "${b}")/"
done
echo "DPKG_ARCH=${DPKG_ARCH}" > ${DESTDIR}/conf/arch.conf
cp -p "${CONFDIR}/initramfs.conf" ${DESTDIR}/conf
for i in ${EXTRA_CONF}; do
if [ -e "${CONFDIR}/conf.d/${i}" ]; then

View file

@ -2,7 +2,7 @@
_log_msg()
{
if [ "$quiet" = "y" ]; then return; fi
[ "$quiet" = "y" ] && return
printf "\033[1m"
printf "$@"
printf "\033[m\n"
@ -25,26 +25,16 @@ log_warning_msg()
log_begin_msg()
{
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "TEXT $@"
fi
_log_msg "$@ ..."
}
log_end_msg()
{
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "SUCCESS ok"
fi
:
}
panic()
{
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "QUIT"
fi
if command -v chvt >/dev/null 2>&1; then
chvt 1
fi
@ -271,33 +261,6 @@ load_modules()
fi
}
# lilo compatibility
parse_numeric() {
case $1 in
"")
return
;;
/*)
return
;;
[0-9]*:[0-9]*)
minor=${1#*:}
major=${1%:*}
;;
[A-Fa-f0-9]*)
value=$(( 0x${1} ))
minor=$(( ${value} % 256 ))
major=$(( ${value} / 256 ))
;;
*)
return
;;
esac
mknod -m 600 /dev/root b ${major} ${minor}
ROOT=/dev/root
}
# Parameter: device node to check
# Echos fstype to stdout
# Return value: indicates if an fs could be recognized
@ -306,13 +269,7 @@ get_fstype ()
local FS FSTYPE FSSIZE RET
FS="${1}"
# vol_id has a more complete list of file systems,
# but fstype is more robust
if command -v blkid >/dev/null 2>&1 ; then
FSTYPE=$(blkid -o value -s TYPE "${FS}")
elif [ "$FSTYPE" = "unknown" ] && [ -x /lib/udev/vol_id ]; then
FSTYPE=$(/lib/udev/vol_id -t "${FS}" 2> /dev/null)
fi
FSTYPE=$(blkid -o value -s TYPE "${FS}")
RET=$?
if [ -z "${FSTYPE}" ]; then

View file

@ -2,9 +2,9 @@
pre_mountroot()
{
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-top"
log_begin_msg "Running /scripts/local-top"
run_scripts /scripts/local-top
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
wait_for_udev 10
@ -29,10 +29,6 @@ pre_mountroot()
# Default delay is 30s
slumber=${ROOTDELAY:-30}
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "TIMEOUT ${slumber}" || true
fi
slumber=$(( ${slumber} * 10 ))
while [ ! -e "${ROOT}" ] \
|| ! $(get_fstype "${ROOT}" >/dev/null); do
@ -46,9 +42,6 @@ pre_mountroot()
else
log_end_msg 1 || true
fi
if [ -x /sbin/usplash_write ]; then
/sbin/usplash_write "TIMEOUT 15" || true
fi
fi
# We've given up, but we'll let the user fix matters if they can
@ -92,9 +85,9 @@ mountroot()
FSTYPE=${ROOTFSTYPE}
fi
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-premount"
log_begin_msg "Running /scripts/local-premount"
run_scripts /scripts/local-premount
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
if [ "${readonly}" = "y" ]; then
roflag=-r
@ -113,7 +106,7 @@ mountroot()
mount ${roflag} ${ROOTFLAGS} ${ROOT} ${rootmnt}
fi
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom"
log_begin_msg "Running /scripts/local-bottom"
run_scripts /scripts/local-bottom
[ "$quiet" != "y" ] && log_end_msg
log_end_msg
}

View file

@ -341,8 +341,6 @@ update()
generate_initramfs
[ -n "${dogrub}" ] && run_bootloader
backup_booted_initramfs
}
@ -371,6 +369,8 @@ delete()
delete_sha1
rm -f "${initramfs}" "${initramfs}.bak"
[ -n "${dogrub}" ] && run_bootloader
}
# Check for update mode on existing and modified initramfs

View file

@ -1,6 +1,6 @@
# Template file for 'initramfs-tools'
pkgname=initramfs-tools
_localver=0.99.8.4 # This is the XBPS version
_localver=0.99.9 # This is the XBPS version
_distver=0.98.8 # This should match debian version
version=${_localver}.${_distver}
build_style=custom-install