You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-overlay/eclass/calculate.eclass

86 lines
2.4 KiB

# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header:
# @FUNCTION: calculate_update_kernel
# @USAGE: [kernelname] [kernelversion] [destination]
# @DESCRIPTION:
# Make symbolic link to vmlinuz, preserve old vmlinuz
# Copy initramfs to initrd and initrd-install
calculate_update_kernel() {
kname=$1
kversion=$2
dir=$3
# update vmlinuz
[ -f ${dir}/vmlinuz ] && rm -f ${dir}/vmlinuz.old &&
mv ${dir}/vmlinuz ${dir}/vmlinuz.old
ln -sf "linux-${kname}-${kversion}-calculate" ${dir}/vmlinuz
# update initrd
[ -f ${dir}/initrd ] && rm -f ${dir}/initrd.old &&
mv ${dir}/initrd ${dir}/initrd.old
cp ${dir}/initramfs-${kname}-${kversion}-calculate ${dir}/initrd
# update initrd-install
[ -f ${dir}/initrd-install ] && rm -f ${dir}/initrd-install.old &&
mv ${dir}/initrd-install ${dir}/initrd-install.old
cp ${dir}/initramfs-${kname}-${kversion}-calculate ${dir}/initrd-install
}
TMP_INITRAMFS=${T}/initramfs
SPLASH_DESCRIPTOR=/etc/splash/tty1/1024x768.cfg
initramfs_unpack() {
mkdir -p ${TMP_INITRAMFS}
cd ${TMP_INITRAMFS}
# select arch
UNPACKER="gzip"
lzma -dc ${BOOT_DIR}/$1 &>/dev/null && UNPACKER="lzma"
# unpack initramfs
gzip -dc ${BOOT_DIR}/$1 | cpio -di &>/dev/null
return $?
}
initramfs_change_spalsh() {
if [ -f ${SPLASH_DESCRIPTOR} ]
then
# get silentpic param
SILENTPIC=$( sed -nr '/^silentpic/ s/^[^=]+=(.*)$/\1/p' \
${SPLASH_DESCRIPTOR} )
# get pic param
PIC=$( sed -nr '/^pic/ s/^[^=]+=(.*)$/\1/p' \
${SPLASH_DESCRIPTOR} )
if [ -f ${SILENTPIC} ] && [ -f ${PIC} ]
then
cp ${SPLASH_DESCRIPTOR} \
${TMP_INITRAMFS}${SPLASH_DESCRIPTOR} &&
mkdir -p ${TMP_INITRAMFS}${SILENTPIC%$(basename $SILENTPIC)} &&
cp $SILENTPIC ${TMP_INITRAMFS}${SILENTPIC} &&
mkdir -p ${TMP_INITRAMFS}${PIC%$(basename $PIC)} &&
cp $PIC ${TMP_INITRAMFS}${PIC}
return $?
fi
else
return 1
fi
}
initramfs_pack() {
# pack new initramfs
cd ${TMP_INITRAMFS}
find * | cpio -o --quiet -H newc | gzip -9 >${BOOT_DIR}/$1.new
# remove old initramfs
rm ${BOOT_DIR}/$1
mv ${BOOT_DIR}/$1.new ${BOOT_DIR}/$1
}
# @FUNCTION: calculate_update_splash
# @USAGE: [initramfsfile]
# @DESCRIPTION:
# Install into initramfs splash data, which descripted by
# /etc/splash/tty1/1024x768.cfg
calculate_update_splash() {
einfo "Update splash screen"
initramfs_unpack $1 &&
initramfs_change_spalsh && initramfs_pack $1
}