echo " --bootsplash=<theme> Force bootsplash using <theme>"
echo " --gensplash=<theme> Force gensplash using <theme>"
echo " --do-keymap-auto Forces keymap selection at boot"
- echo " --no-lvm2 Don't include LVM2 support"
+ echo " --lvm2 Include LVM2 support"
echo " --bootloader=grub Add new kernel to GRUB configuration"
echo " --linuxrc=<file> Specifies a user created linuxrc"
echo " Internals"
CMD_NOEVMS2=1
print_info 2 'CMD_NOEVMS2: 1'
;;
- --no-lvm2)
- CMD_NOLVM2=1
- print_info 2 'CMD_NOLVM2: 1'
+ --lvm2)
+ CMD_LVM2=1
+ print_info 2 'CMD_LVM2: 1'
;;
--bootloader=*)
CMD_BOOTLOADER=`parse_opt "$*"`
fi
}
+compile_lvm2() {
+ compile_device_mapper
+ if [ ! -f "${LVM2_BINCACHE}" ]
+ then
+ [ -f "${LVM2_SRCTAR}" ] ||
+ gen_die "Could not find LVM2 source tarball: ${LVM2_SRCTAR}! Please place it there, or place another version, changing /etc/genkernel.conf as necessary!"
+ cd "${TEMP}"
+ rm -rf ${LVM2_DIR} > /dev/null
+ tar -zxpf ${LVM2_SRCTAR} ||
+ gen_die 'Could not extract LVM2 source tarball!'
+ [ -d "${LVM2_DIR}" ] ||
+ gen_die 'LVM2 directory ${LVM2_DIR} is invalid!'
+ rm -rf "${TEMP}/device-mapper" > /dev/null
+ tar -jxpf "${DEVICE_MAPPER_BINCACHE}" -C "${TEMP}" ||
+ gen_die "Could not extract device-mapper binary cache!";
+
+ cd "${LVM2_DIR}"
+ print_info 1 'lvm2: >> Configuring...'
+ LDFLAGS="-L${TEMP}/device-mapper/lib" \
+ CFLAGS="-I${TEMP}/device-mapper/include" \
+ CPPFLAGS="-I${TEMP}/device-mapper/include" \
+ ./configure --enable-static_link --prefix=${TEMP}/lvm2 >> ${DEBUGFILE} 2>&1 ||
+ gen_die 'Configure of lvm2 failed!'
+ print_info 1 'lvm2: >> Compiling...'
+ compile_generic '' utils
+ compile_generic 'install' utils
+
+ cd "${TEMP}/lvm2"
+ print_info 1 ' >> Copying to bincache...'
+ strip "sbin/lvm.static" ||
+ gen_die 'Could not strip lvm.static!'
+ tar -cjf "${LVM2_BINCACHE}" sbin/lvm.static ||
+ gen_die 'Could not create binary cache'
+
+ cd "${TEMP}"
+ rm -rf "${TEMP}/device-mapper" > /dev/null
+ rm -rf "${LVM2_DIR}" lvm2
+ fi
+}
+
compile_modutils() {
# I've disabled dietlibc support for the time being since the
# version we use misses a few needed system calls.
fi
}
+compile_device_mapper() {
+ if [ ! -f "${DEVICE_MAPPER_BINCACHE}" ]
+ then
+ [ ! -f "${DEVICE_MAPPER_SRCTAR}" ] &&
+ gen_die "Could not find device-mapper source tarball: ${DEVICE_MAPPER_SRCTAR}. Please place it there, or place another version, changing /etc/genkernel.conf as necessary!"
+ cd "${TEMP}"
+ rm -rf "${DEVICE_MAPPER_DIR}"
+ tar -zxpf "${DEVICE_MAPPER_SRCTAR}"
+ [ ! -d "${DEVICE_MAPPER_DIR}" ] &&
+ gen_die "device-mapper directory ${DEVICE_MAPPER_DIR} invalid"
+ cd "${DEVICE_MAPPER_DIR}"
+ ./configure --prefix=${TEMP}/device-mapper --enable-static_link >> ${DEBUGFILE} 2>&1 ||
+ gen_die 'Configuring device-mapper failed!'
+ print_info 1 'device-mapper: >> Compiling...'
+ compile_generic '' utils
+ compile_generic 'install' utils
+ print_info 1 ' >> Copying to cache...'
+ cd "${TEMP}"
+ rm -r "${TEMP}/device-mapper/man" ||
+ gen_die 'Could not remove manual pages!'
+ strip "${TEMP}/device-mapper/sbin/dmsetup" ||
+ gen_die 'Could not strip dmsetup binary!'
+ tar -jcpf "${DEVICE_MAPPER_BINCACHE}" device-mapper ||
+ gen_die 'Could not tar up the device-mapper binary!'
+ [ -f "${DEVICE_MAPPER_BINCACHE}" ] ||
+ gen_die 'device-mapper cache not created!'
+ cd "${TEMP}"
+ rm -rf "${DEVICE_MAPPER_DIR}" > /dev/null
+ rm -rf "${TEMP}/device-mapper" > /dev/null
+ fi
+}
+
compile_dietlibc() {
local BUILD_DIETLIBC
local ORIGTEMP
DEVFSD_BINCACHE=`cache_replace "${DEVFSD_BINCACHE}"`
DEVFSD_CONF_BINCACHE=`cache_replace "${DEVFSD_CONF_BINCACHE}"`
UDEV_BINCACHE=`cache_replace "${UDEV_BINCACHE}"`
+ DEVICE_MAPPER_BINCACHE=`cache_replace "${DEVICE_MAPPER_BINCACHE}"`
+ LVM2_BINCACHE=`cache_replace "${LVM2_BINCACHE}"`
DEFAULT_KERNEL_CONFIG=`arch_replace "${DEFAULT_KERNEL_CONFIG}"`
BUSYBOX_CONFIG=`arch_replace "${BUSYBOX_CONFIG}"`
DEVFSD_BINCACHE=`arch_replace "${DEVFSD_BINCACHE}"`
DEVFSD_CONF_BINCACHE=`arch_replace "${DEVFSD_CONF_BINCACHE}"`
UDEV_BINCACHE=`arch_replace "${UDEV_BINCACHE}"`
+ DEVICE_MAPPER_BINCACHE=`arch_replace "${DEVICE_MAPPER_BINCACHE}"`
+ LVM2_BINCACHE=`arch_replace "${LVM2_BINCACHE}"`
if [ "${CMD_BOOTSPLASH}" != '' ]
then
# gen_die "could not uncompress devfsd.conf"
# LVM2
- if [ -e '/sbin/lvm' ] && ldd /sbin/lvm|grep -q 'not a dynamic executable';
+ if [ "${CMD_LVM2}" -eq '1' ]
then
- if [ "${CMD_NOLVM2}" != '1' ]
+ if [ -e '/sbin/lvm' ] && ldd /sbin/lvm|grep -q 'not a dynamic executable';
then
- print_info 1 'lvm2: Adding support...'
+ print_info 1 'LVM2: Adding support (using local static binaries)...'
cp /sbin/lvm "${TEMP}/initrd-temp/bin/lvm" ||
gen_die 'Could not copy over lvm!'
- ln -sf "./lvm" "${TEMP}/initrd-temp/bin/vgscan" ||
+ ln -sf "${TEMP}/initrd-temp/bin/lvm" "${TEMP}/initrd-temp/bin/vgscan" ||
gen_die 'Could not symlink lvm -> vgscan!'
- ln -sf "./lvm" "${TEMP}/initrd-temp/bin/vgchange" ||
+ ln -sf "${TEMP}/initrd-temp/bin/lvm" "${TEMP}/initrd-temp/bin/vgchange" ||
gen_die 'Could not symlink lvm -> vgchange!'
+ else
+ print_info 1 'LVM2: Adding support (compiling binaries)...'
+ compile_lvm2
+
+ tar -jxpf "${LVM2_BINCACHE}" -C "${TEMP}/initrd-temp" ||
+ gen_die "Could not extract lvm2 binary cache!";
+ mv ${TEMP}/initrd-temp/bin/lvm.static ${TEMP}/initrd-temp/bin/lvm ||
+ gen_die 'LVM2 error: Could not move lvm.static to lvm!'
+ for i in vgchange vgscan; do
+ ln ${TEMP}/initrd-temp/bin/lvm ${TEMP}/initrd-temp/bin/$i ||
+ gen_die "LVM2 error: Could not link ${i}!"
+ done
+ fi
+ else # Deprecation warning; remove in a few versions.
+ if [ -e '/sbin/lvm' ]
+ then
+ if ldd /sbin/lvm|grep -q 'not a dynamic executable';
+ then
+ print_warning 1 'LVM2: For support, use --lvm2!'
+ fi
fi
fi
- #EVMS2
+ # EVMS2
if [ -e '/sbin/evms_activate' ]
then
if [ "${CMD_NOEVMS2}" -ne '1' ]
then
- print_info 1 'evms2: Adding support...'
+ print_info 1 'EVMS2: Adding support...'
mkdir -p ${TEMP}/initrd-temp/lib
cp -a /lib/ld-* "${TEMP}/initrd-temp/lib" || gen_die 'Could not copy files for EVMS2!'
cp -a /lib/libc-* /lib/libc.* "${TEMP}/initrd-temp/lib" || gen_die 'Could not copy files for EVMS2!'
fi
compile_devfsd
- #UDEV=0
- #[ "${VER}" -gt '2' ] || [ "${VER}" -eq '2' -a "${PAT}" -ge '6' -a "${NOUDEV}" -eq '0' ] && UDEV=1 && print_info 1 'udev: Target is a 2.6 kernel, support enabled.'
[ "${UDEV}" -eq '1' ] && compile_udev
# Create initrd
UDEV_DIR="udev-${UDEV_VER}"
UDEV_SRCTAR="${GK_SHARE}/pkg/udev-${UDEV_VER}.tar.bz2"
UDEV_BINCACHE="%%CACHE%%/udev-${UDEV_VER}-%%ARCH%%.tar.bz2"
+
+DEVICE_MAPPER_VER="1.00.17"
+DEVICE_MAPPER_DIR="device-mapper.${DEVICE_MAPPER_VER}"
+DEVICE_MAPPER_SRCTAR="${GK_SHARE}/pkg/device-mapper.${DEVICE_MAPPER_VER}.tgz"
+DEVICE_MAPPER_BINCACHE="%%CACHE%%/device-mapper-${DEVICE_MAPPER_VER}-%%ARCH%%.tar.bz2"
+
+LVM2_VER="2.00.25"
+LVM2_DIR="LVM2.${LVM2_VER}"
+LVM2_SRCTAR="${GK_SHARE}/pkg/LVM2.${LVM2_VER}.tgz"
+LVM2_BINCACHE="%%CACHE%%/LVM2.${LVM2_VER}-%%ARCH%%.tar.bz2"