Added build hack to enforce Intel's "Turbo Boost". This should be harmless for single/virtual core processors. Now 'make' is always invoked with number of jobs higher than the available CPU cores.
This commit is contained in:
parent
cb775d98fa
commit
a6dbd498ac
@ -137,3 +137,10 @@ COPY_SOURCE_ISO=true
|
|||||||
# is 'true' for demonstration purposes.
|
# is 'true' for demonstration purposes.
|
||||||
USE_BOOT_LOGO=true
|
USE_BOOT_LOGO=true
|
||||||
|
|
||||||
|
# This property is the multiplicator which is used during the build process. The
|
||||||
|
# total number of each 'make' jobs will be equal to the number of detected CPU
|
||||||
|
# cores mutiplied by this property. For example, if your CPU has 4 cores, then
|
||||||
|
# the number of 'make' jobs will be 4 * 2 = 8. Don't change this value unless
|
||||||
|
# you know what 'make' jobs are!
|
||||||
|
JOB_FACTOR=2
|
||||||
|
|
||||||
|
@ -4,6 +4,15 @@ echo "*** BUILD KERNEL BEGIN ***"
|
|||||||
|
|
||||||
SRC_DIR=$(pwd)
|
SRC_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Read the 'JOB_FACTOR' property from '.config'
|
||||||
|
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')"
|
||||||
|
|
||||||
|
# Find the number of available CPU cores.
|
||||||
|
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
|
||||||
|
|
||||||
|
# Calculate the number of 'make' jobs to be used later.
|
||||||
|
NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
|
||||||
|
|
||||||
cd work/kernel
|
cd work/kernel
|
||||||
|
|
||||||
# Change to the kernel source directory which ls finds, e.g. 'linux-4.4.6'.
|
# Change to the kernel source directory which ls finds, e.g. 'linux-4.4.6'.
|
||||||
@ -11,7 +20,7 @@ cd $(ls -d linux-*)
|
|||||||
|
|
||||||
# Cleans up the kernel sources, including configuration files.
|
# Cleans up the kernel sources, including configuration files.
|
||||||
echo "Preparing kernel work area..."
|
echo "Preparing kernel work area..."
|
||||||
make mrproper
|
make mrproper -j $NUM_JOBS
|
||||||
|
|
||||||
# Read the 'USE_PREDEFINED_KERNEL_CONFIG' property from '.config'
|
# Read the 'USE_PREDEFINED_KERNEL_CONFIG' property from '.config'
|
||||||
USE_PREDEFINED_KERNEL_CONFIG="$(grep -i ^USE_PREDEFINED_KERNEL_CONFIG $SRC_DIR/.config | cut -f2 -d'=')"
|
USE_PREDEFINED_KERNEL_CONFIG="$(grep -i ^USE_PREDEFINED_KERNEL_CONFIG $SRC_DIR/.config | cut -f2 -d'=')"
|
||||||
@ -27,7 +36,7 @@ if [ "$USE_PREDEFINED_KERNEL_CONFIG" = "true" ] ; then
|
|||||||
cp -f $SRC_DIR/minimal_config/kernel.config .config
|
cp -f $SRC_DIR/minimal_config/kernel.config .config
|
||||||
else
|
else
|
||||||
# Create default configuration file for the kernel.
|
# Create default configuration file for the kernel.
|
||||||
make defconfig
|
make defconfig -j $NUM_JOBS
|
||||||
echo "Generated default kernel configuration."
|
echo "Generated default kernel configuration."
|
||||||
|
|
||||||
# Changes the name of the system to 'minimal'.
|
# Changes the name of the system to 'minimal'.
|
||||||
@ -66,12 +75,12 @@ fi
|
|||||||
echo "Building kernel..."
|
echo "Building kernel..."
|
||||||
make \
|
make \
|
||||||
CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE" \
|
CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE" \
|
||||||
bzImage -j $(grep ^processor /proc/cpuinfo | wc -l)
|
bzImage -j $NUM_JOBS
|
||||||
|
|
||||||
# Install kernel headers in './usr' (this is not '/usr') which are used later
|
# Install kernel headers in './usr' (this is not '/usr') which are used later
|
||||||
# when we build and configure the GNU C library (glibc).
|
# when we build and configure the GNU C library (glibc).
|
||||||
echo "Generating kernel headers..."
|
echo "Generating kernel headers..."
|
||||||
make headers_install
|
make headers_install -j $NUM_JOBS
|
||||||
|
|
||||||
cd $SRC_DIR
|
cd $SRC_DIR
|
||||||
|
|
||||||
|
@ -4,6 +4,15 @@ echo "*** BUILD GLIBC BEGIN ***"
|
|||||||
|
|
||||||
SRC_DIR=$(pwd)
|
SRC_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Read the 'JOB_FACTOR' property from '.config'
|
||||||
|
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')"
|
||||||
|
|
||||||
|
# Find the number of available CPU cores.
|
||||||
|
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
|
||||||
|
|
||||||
|
# Calculate the number of 'make' jobs to be used later.
|
||||||
|
NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
|
||||||
|
|
||||||
# Find the kernel build directory.
|
# Find the kernel build directory.
|
||||||
cd work/kernel
|
cd work/kernel
|
||||||
cd $(ls -d linux-*)
|
cd $(ls -d linux-*)
|
||||||
@ -48,13 +57,13 @@ $GLIBC_SRC/configure \
|
|||||||
|
|
||||||
# Compile glibc with optimization for "parallel jobs" = "number of processors".
|
# Compile glibc with optimization for "parallel jobs" = "number of processors".
|
||||||
echo "Building glibc..."
|
echo "Building glibc..."
|
||||||
make -j $(grep ^processor /proc/cpuinfo | wc -l)
|
make -j $NUM_JOBS
|
||||||
|
|
||||||
# Install glibc in the installation area, e.g. 'work/glibc/glibc_installed'.
|
# Install glibc in the installation area, e.g. 'work/glibc/glibc_installed'.
|
||||||
echo "Installing glibc..."
|
echo "Installing glibc..."
|
||||||
make install \
|
make install \
|
||||||
DESTDIR=$GLIBC_INSTALLED \
|
DESTDIR=$GLIBC_INSTALLED \
|
||||||
-j $(grep ^processor /proc/cpuinfo | wc -l)
|
-j $NUM_JOBS
|
||||||
|
|
||||||
cd $SRC_DIR
|
cd $SRC_DIR
|
||||||
|
|
||||||
|
@ -4,6 +4,15 @@ echo "*** BUILD BUSYBOX BEGIN ***"
|
|||||||
|
|
||||||
SRC_DIR=$(pwd)
|
SRC_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Read the 'JOB_FACTOR' property from '.config'
|
||||||
|
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')"
|
||||||
|
|
||||||
|
# Find the number of available CPU cores.
|
||||||
|
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
|
||||||
|
|
||||||
|
# Calculate the number of 'make' jobs to be used later.
|
||||||
|
NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
|
||||||
|
|
||||||
# Remember the glibc installation area.
|
# Remember the glibc installation area.
|
||||||
GLIBC_PREPARED=$(pwd)/work/glibc/glibc_prepared
|
GLIBC_PREPARED=$(pwd)/work/glibc/glibc_prepared
|
||||||
|
|
||||||
@ -17,7 +26,7 @@ cd $(ls -d busybox-*)
|
|||||||
|
|
||||||
# Remove previously generated artifacts.
|
# Remove previously generated artifacts.
|
||||||
echo "Preparing BusyBox work area. This may take a while..."
|
echo "Preparing BusyBox work area. This may take a while..."
|
||||||
make distclean
|
make distclean -j $NUM_JOBS
|
||||||
|
|
||||||
# Read the 'USE_PREDEFINED_BUSYBOX_CONFIG' property from '.config'
|
# Read the 'USE_PREDEFINED_BUSYBOX_CONFIG' property from '.config'
|
||||||
USE_PREDEFINED_BUSYBOX_CONFIG="$(grep -i ^USE_PREDEFINED_BUSYBOX_CONFIG $SRC_DIR/.config | cut -f2 -d'=')"
|
USE_PREDEFINED_BUSYBOX_CONFIG="$(grep -i ^USE_PREDEFINED_BUSYBOX_CONFIG $SRC_DIR/.config | cut -f2 -d'=')"
|
||||||
@ -34,7 +43,7 @@ if [ "$USE_PREDEFINED_BUSYBOX_CONFIG" = "true" ] ; then
|
|||||||
else
|
else
|
||||||
# Create default configuration file.
|
# Create default configuration file.
|
||||||
echo "Generating default BusyBox configuration..."
|
echo "Generating default BusyBox configuration..."
|
||||||
make defconfig
|
make defconfig -j $NUM_JOBS
|
||||||
|
|
||||||
# The 'inetd' applet fails to compile because we use the glibc installation area as
|
# The 'inetd' applet fails to compile because we use the glibc installation area as
|
||||||
# main pointer to the kernel headers (see 05_prepare_glibc.sh) and some headers are
|
# main pointer to the kernel headers (see 05_prepare_glibc.sh) and some headers are
|
||||||
@ -53,13 +62,13 @@ sed -i "s/.*CONFIG_SYSROOT.*/CONFIG_SYSROOT=$GLIBC_PREPARED_ESCAPED/" .config
|
|||||||
echo "Building BusyBox..."
|
echo "Building BusyBox..."
|
||||||
make \
|
make \
|
||||||
EXTRA_CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE" \
|
EXTRA_CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE" \
|
||||||
busybox -j $(grep ^processor /proc/cpuinfo | wc -l)
|
busybox -j $NUM_JOBS
|
||||||
|
|
||||||
# Create the symlinks for busybox. The file 'busybox.links' is used for this.
|
# Create the symlinks for busybox. The file 'busybox.links' is used for this.
|
||||||
echo "Generating BusyBox based initramfs area..."
|
echo "Generating BusyBox based initramfs area..."
|
||||||
make \
|
make \
|
||||||
CONFIG_PREFIX="../busybox_installed" \
|
CONFIG_PREFIX="../busybox_installed" \
|
||||||
install
|
install -j $NUM_JOBS
|
||||||
|
|
||||||
cd $SRC_DIR
|
cd $SRC_DIR
|
||||||
|
|
||||||
|
@ -2,6 +2,15 @@
|
|||||||
|
|
||||||
SRC_DIR=$(pwd)
|
SRC_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Read the 'JOB_FACTOR' property from '.config'
|
||||||
|
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')"
|
||||||
|
|
||||||
|
# Find the number of available CPU cores.
|
||||||
|
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
|
||||||
|
|
||||||
|
# Calculate the number of 'make' jobs to be used later.
|
||||||
|
NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
|
||||||
|
|
||||||
if [ ! -d $SRC_DIR/work/glibc/glibc_prepared ] ; then
|
if [ ! -d $SRC_DIR/work/glibc/glibc_prepared ] ; then
|
||||||
echo "Cannot continue - Dropbear SSH depends on GLIBC. Please buld GLIBC first."
|
echo "Cannot continue - Dropbear SSH depends on GLIBC. Please buld GLIBC first."
|
||||||
exit 1
|
exit 1
|
||||||
@ -13,7 +22,7 @@ cd work/overlay/dropbear
|
|||||||
cd $(ls -d dropbear-*)
|
cd $(ls -d dropbear-*)
|
||||||
|
|
||||||
echo "Preparing Dropbear work area. This may take a while..."
|
echo "Preparing Dropbear work area. This may take a while..."
|
||||||
make clean 2>/dev/null
|
make clean -j $NUM_JOBS 2>/dev/null
|
||||||
|
|
||||||
rm -rf ../dropbear_installed
|
rm -rf ../dropbear_installed
|
||||||
|
|
||||||
@ -25,10 +34,10 @@ echo "Configuring Dropbear..."
|
|||||||
CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE"
|
CFLAGS="-Os -s -fno-stack-protector -U_FORTIFY_SOURCE"
|
||||||
|
|
||||||
echo "Building Dropbear..."
|
echo "Building Dropbear..."
|
||||||
make
|
make -j $NUM_JOBS
|
||||||
|
|
||||||
echo "Installing Dropbear..."
|
echo "Installing Dropbear..."
|
||||||
make install
|
make install -j $NUM_JOBS
|
||||||
|
|
||||||
mkdir -p ../dropbear_installed/lib
|
mkdir -p ../dropbear_installed/lib
|
||||||
|
|
||||||
|
@ -2,13 +2,22 @@
|
|||||||
|
|
||||||
SRC_DIR=$(pwd)
|
SRC_DIR=$(pwd)
|
||||||
|
|
||||||
|
# Read the 'JOB_FACTOR' property from '.config'
|
||||||
|
JOB_FACTOR="$(grep -i ^JOB_FACTOR .config | cut -f2 -d'=')"
|
||||||
|
|
||||||
|
# Find the number of available CPU cores.
|
||||||
|
NUM_CORES=$(grep ^processor /proc/cpuinfo | wc -l)
|
||||||
|
|
||||||
|
# Calculate the number of 'make' jobs to be used later.
|
||||||
|
NUM_JOBS=$((NUM_CORES * JOB_FACTOR))
|
||||||
|
|
||||||
cd work/overlay/links
|
cd work/overlay/links
|
||||||
|
|
||||||
# Change to the Links source directory which ls finds, e.g. 'links-2.12'.
|
# Change to the Links source directory which ls finds, e.g. 'links-2.12'.
|
||||||
cd $(ls -d links-*)
|
cd $(ls -d links-*)
|
||||||
|
|
||||||
echo "Preparing Links work area. This may take a while..."
|
echo "Preparing Links work area. This may take a while..."
|
||||||
make clean 2>/dev/null
|
make clean -j $NUM_JOBS 2>/dev/null
|
||||||
|
|
||||||
rm -rf ../links_installed
|
rm -rf ../links_installed
|
||||||
|
|
||||||
@ -25,10 +34,10 @@ echo "Configuring Links..."
|
|||||||
sed -i "s/^CFLAGS = .*/CFLAGS = \\-Os \\-s \\-fno\\-stack\\-protector \\-U_FORTIFY_SOURCE/" Makefile
|
sed -i "s/^CFLAGS = .*/CFLAGS = \\-Os \\-s \\-fno\\-stack\\-protector \\-U_FORTIFY_SOURCE/" Makefile
|
||||||
|
|
||||||
echo "Building Links..."
|
echo "Building Links..."
|
||||||
make
|
make -j $NUM_JOBS
|
||||||
|
|
||||||
echo "Installing Links..."
|
echo "Installing Links..."
|
||||||
make install
|
make install -j $NUM_JOBS
|
||||||
|
|
||||||
echo "Reducing Links size..."
|
echo "Reducing Links size..."
|
||||||
strip -g ../links_installed/bin/* 2>/dev/null
|
strip -g ../links_installed/bin/* 2>/dev/null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user