##// END OF EJS Templates
Use 4.14.y as default kernel version...
Use 4.14.y as default kernel version 4.14.y is used as default kernel version of many distros. Additionnaly the 4.14.y branch is the current default branch of the RPi kernel repo.

Fichier de la dernière révision:

r355:58f65a9f6e9d
r394:5d19d305a4db
Show More
13-kernel.sh
255 lines | 9.4 KiB | application/x-sh | BashLexer
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 #
drtyhlpr
Added Raspberry Pi 3 model support
r94 # Build and Setup RPi2/3 Kernel
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 #
Jan Wagner
spliting more files, fix-uboot, fix-fbturbo, fix-locale
r67 # Load utility functions
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 . ./functions.sh
# Fetch and build latest raspberry kernel
if [ "$BUILD_KERNEL" = true ] ; then
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 # Setup source directory
Unknown
use variables more often
r355 mkdir -p "${KERNEL_DIR}"
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 # Copy existing kernel sources into chroot directory
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ -n "$KERNELSRC_DIR" ] && [ -d "$KERNELSRC_DIR" ] ; then
drtyhlpr
Fix: copy of kernel .config...
r227 # Copy kernel sources and include hidden files
Unknown
use variables more often
r355 cp -r "${KERNELSRC_DIR}/". "${KERNEL_DIR}"
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72
# Clean the kernel sources
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ "$KERNELSRC_CLEAN" = true ] && [ "$KERNELSRC_PREBUILT" = false ] ; then
drtyhlpr
Added Raspberry Pi 3 model support
r94 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" mrproper
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 fi
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 else # KERNELSRC_DIR=""
drtyhlpr
Updated: Dropping privileges, chroot compiler install, dropbear sshd config
r142 # Create temporary directory for kernel sources
Petter Reinholdtsen
Introduce as_nobody() function to make it easier to control how it is done....
r174 temp_dir=$(as_nobody mktemp -d)
drtyhlpr
Updated: Dropping privileges, chroot compiler install, dropbear sshd config
r142
# Fetch current RPi2/3 kernel sources
Bobberty
Added variables to allow differnt branches and arm64.
r147 if [ -z "${KERNEL_BRANCH}" ] ; then
drtyhlpr
fix: kernel compilation, add ccache support
r248 as_nobody -H git -C "${temp_dir}" clone --depth=1 "${KERNEL_URL}" linux
Bobberty
Added variables to allow differnt branches and arm64.
r147 else
drtyhlpr
fix: kernel compilation, add ccache support
r248 as_nobody -H git -C "${temp_dir}" clone --depth=1 --branch "${KERNEL_BRANCH}" "${KERNEL_URL}" linux
Unknown
fixes...
r338 fi
drtyhlpr
Updated: Dropping privileges, chroot compiler install, dropbear sshd config
r142 # Copy downloaded kernel sources
Unknown
use variables more often
r355 cp -r "${temp_dir}/linux/"* "${KERNEL_DIR}"
drtyhlpr
Updated: Dropping privileges, chroot compiler install, dropbear sshd config
r142
# Remove temporary directory for kernel sources
rm -fr "${temp_dir}"
# Set permissions of the kernel sources
chown -R root:root "${R}/usr/src"
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 fi
Jan Wagner
spliting more files, fix-uboot, fix-fbturbo, fix-locale
r67
# Calculate optimal number of kernel building threads
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ "$KERNEL_THREADS" = "1" ] && [ -r /proc/cpuinfo ] ; then
KERNEL_THREADS=$(grep -c processor /proc/cpuinfo)
Jan Wagner
spliting more files, fix-uboot, fix-fbturbo, fix-locale
r67 fi
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56
Jan Wagner
Added: KERNEL_REDUCE - less than 128MB used space, Added: REDUCE_ parameters
r76 # Configure and build kernel
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ "$KERNELSRC_PREBUILT" = false ] ; then
Jan Wagner
Added: KERNEL_REDUCE - less than 128MB used space, Added: REDUCE_ parameters
r76 # Remove device, network and filesystem drivers from kernel configuration
if [ "$KERNEL_REDUCE" = true ] ; then
drtyhlpr
Added Raspberry Pi 3 model support
r94 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" "${KERNEL_DEFCONFIG}"
Jan Wagner
Added: KERNEL_REDUCE - less than 128MB used space, Added: REDUCE_ parameters
r76 sed -i\
-e "s/\(^CONFIG_SND.*\=\).*/\1n/"\
-e "s/\(^CONFIG_SOUND.*\=\).*/\1n/"\
-e "s/\(^CONFIG_AC97.*\=\).*/\1n/"\
-e "s/\(^CONFIG_VIDEO_.*\=\).*/\1n/"\
-e "s/\(^CONFIG_MEDIA_TUNER.*\=\).*/\1n/"\
-e "s/\(^CONFIG_DVB.*\=\)[ym]/\1n/"\
-e "s/\(^CONFIG_REISERFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_JFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_XFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_GFS2.*\=\).*/\1n/"\
-e "s/\(^CONFIG_OCFS2.*\=\).*/\1n/"\
-e "s/\(^CONFIG_BTRFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_HFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_JFFS2.*\=\)[ym]/\1n/"\
-e "s/\(^CONFIG_UBIFS.*\=\).*/\1n/"\
-e "s/\(^CONFIG_SQUASHFS.*\=\)[ym]/\1n/"\
-e "s/\(^CONFIG_W1.*\=\)[ym]/\1n/"\
-e "s/\(^CONFIG_HAMRADIO.*\=\).*/\1n/"\
-e "s/\(^CONFIG_CAN.*\=\).*/\1n/"\
-e "s/\(^CONFIG_IRDA.*\=\).*/\1n/"\
-e "s/\(^CONFIG_BT_.*\=\).*/\1n/"\
-e "s/\(^CONFIG_WIMAX.*\=\)[ym]/\1n/"\
-e "s/\(^CONFIG_6LOWPAN.*\=\).*/\1n/"\
-e "s/\(^CONFIG_IEEE802154.*\=\).*/\1n/"\
-e "s/\(^CONFIG_NFC.*\=\).*/\1n/"\
-e "s/\(^CONFIG_FB_TFT=.*\=\).*/\1n/"\
-e "s/\(^CONFIG_TOUCHSCREEN.*\=\).*/\1n/"\
-e "s/\(^CONFIG_USB_GSPCA_.*\=\).*/\1n/"\
-e "s/\(^CONFIG_DRM.*\=\).*/\1n/"\
drtyhlpr
Added Raspberry Pi 3 model support
r94 "${KERNEL_DIR}/.config"
Jan Wagner
Added: KERNEL_REDUCE - less than 128MB used space, Added: REDUCE_ parameters
r76 fi
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ "$KERNELSRC_CONFIG" = true ] ; then
# Load default raspberry kernel configuration
drtyhlpr
Added Raspberry Pi 3 model support
r94 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" "${KERNEL_DEFCONFIG}"
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72
drtyhlpr
Added: Initial QEMU emulation support
r259 # Set kernel configuration parameters to enable qemu emulation
if [ "$ENABLE_QEMU" = true ] ; then
Unknown
https://www.shellcheck.net/...
r336 echo "CONFIG_FHANDLE=y" >> "${KERNEL_DIR}"/.config
echo "CONFIG_LBDAF=y" >> "${KERNEL_DIR}"/.config
drtyhlpr
fix: QEMU with cryptfs
r263
if [ "$ENABLE_CRYPTFS" = true ] ; then
Unknown
https://www.shellcheck.net/...
r336 {
echo "CONFIG_EMBEDDED=y"
echo "CONFIG_EXPERT=y"
echo "CONFIG_DAX=y"
echo "CONFIG_MD=y"
echo "CONFIG_BLK_DEV_MD=y"
echo "CONFIG_MD_AUTODETECT=y"
echo "CONFIG_BLK_DEV_DM=y"
echo "CONFIG_BLK_DEV_DM_BUILTIN=y"
echo "CONFIG_DM_CRYPT=y"
echo "CONFIG_CRYPTO_BLKCIPHER=y"
echo "CONFIG_CRYPTO_CBC=y"
echo "CONFIG_CRYPTO_XTS=y"
echo "CONFIG_CRYPTO_SHA512=y"
Unknown
fixes...
r338 echo "CONFIG_CRYPTO_MANAGER=y"
Unknown
https://www.shellcheck.net/...
r336 } >> ${KERNEL_DIR}/.config
Unknown
fixes...
r338 fi
drtyhlpr
Added: Initial QEMU emulation support
r259 fi
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Copy custom kernel configuration file
Unknown
https://www.shellcheck.net/...
r336 if [ -n "$KERNELSRC_USRCONFIG" ] ; then
cp "$KERNELSRC_USRCONFIG" "${KERNEL_DIR}"/.config
root
Restart systemd.resolv only if not resolv.conf exists
r101 fi
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Set kernel configuration parameters to their default values
if [ "$KERNEL_OLDDEFCONFIG" = true ] ; then
make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" olddefconfig
fi
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 # Start menu-driven kernel configuration (interactive)
if [ "$KERNEL_MENUCONFIG" = true ] ; then
drtyhlpr
Added Raspberry Pi 3 model support
r94 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" menuconfig
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 fi
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 fi
Jan Wagner
comment-cleanup, net-cleanup, size-calc-fix, split-more, menuconfig
r71
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Use ccache to cross compile the kernel
if [ "$KERNEL_CCACHE" = true ] ; then
cc="ccache ${CROSS_COMPILE}gcc"
else
cc="${CROSS_COMPILE}gcc"
fi
# Cross compile kernel and dtbs
Unknown
https://www.shellcheck.net/...
r336 make -C "${KERNEL_DIR}" -j"${KERNEL_THREADS}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" CC="${cc}" "${KERNEL_BIN_IMAGE}" dtbs
drtyhlpr
fix: kernel compilation, add ccache support
r248
# Cross compile kernel modules
Unknown
https://www.shellcheck.net/...
r336 if [ "$(grep "CONFIG_MODULES=y" "${KERNEL_DIR}/.config")" ] ; then
make -C "${KERNEL_DIR}" -j"${KERNEL_THREADS}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" CC="${cc}" modules
drtyhlpr
fix: kernel compilation, add ccache support
r248 fi
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 fi
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 # Check if kernel compilation was successful
Bobberty
Added variables to allow differnt branches and arm64.
r147 if [ ! -r "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/${KERNEL_BIN_IMAGE}" ] ; then
echo "error: kernel compilation failed! (kernel image not found)"
Jan Wagner
Added: KERNEL_SRCDIR, path-checks, code-cleanup
r72 cleanup
exit 1
fi
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 # Install kernel modules
Jan Wagner
Added: ENABLE_REDUCE - down to 160MB used space,fix-resolve,fix-machineid
r73 if [ "$ENABLE_REDUCE" = true ] ; then
Unknown
https://www.shellcheck.net/...
r336 if [ "$(grep "CONFIG_MODULES=y" "${KERNEL_DIR}/.config")" ] ; then
drtyhlpr
fix: kernel compilation, add ccache support
r248 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=../../.. modules_install
fi
Jan Wagner
Added: ENABLE_REDUCE - down to 160MB used space,fix-resolve,fix-machineid
r73 else
Unknown
https://www.shellcheck.net/...
r336 if [ "$(grep "CONFIG_MODULES=y" "${KERNEL_DIR}/.config")" ] ; then
drtyhlpr
fix: kernel compilation, add ccache support
r248 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_MOD_PATH=../../.. modules_install
fi
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75
# Install kernel firmware
Unknown
https://www.shellcheck.net/...
r336 if [ "$(grep "^firmware_install:" "${KERNEL_DIR}/Makefile")" ] ; then
drtyhlpr
fixed: No rule to make target 'firmware_install'...
r244 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_FW_PATH=../../../lib firmware_install
fi
Jan Wagner
Added: ENABLE_REDUCE - down to 160MB used space,fix-resolve,fix-machineid
r73 fi
Filip Pytloun
Enhance kernel build by headers install, parallelism and cleanup
r60
# Install kernel headers
Jan Wagner
Added: KERNEL_REDUCE - less than 128MB used space, Added: REDUCE_ parameters
r76 if [ "$KERNEL_HEADERS" = true ] && [ "$KERNEL_REDUCE" = false ] ; then
drtyhlpr
Added Raspberry Pi 3 model support
r94 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_HDR_PATH=../.. headers_install
Filip Pytloun
Enhance kernel build by headers install, parallelism and cleanup
r60 fi
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 # Prepare boot (firmware) directory
drtyhlpr
Added Raspberry Pi 3 model support
r94 mkdir "${BOOT_DIR}"
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75
# Get kernel release version
Unknown
fixes...
r338 KERNEL_VERSION=$(cat "${KERNEL_DIR}/include/config/kernel.release")
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75
# Copy kernel configuration file to the boot directory
drtyhlpr
Added Raspberry Pi 3 model support
r94 install_readonly "${KERNEL_DIR}/.config" "${R}/boot/config-${KERNEL_VERSION}"
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Prepare device tree directory
drtyhlpr
Added Raspberry Pi 3 model support
r94 mkdir "${BOOT_DIR}/overlays"
Unknown
fixes...
r338
Bobberty
Added variables to allow differnt branches and arm64.
r147 # Ensure the proper .dtb is located
if [ "$KERNEL_ARCH" = "arm" ] ; then
drtyhlpr
fix: kernel compilation, add ccache support
r248 for dtb in "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/"*.dtb ; do
if [ -f "${dtb}" ] ; then
install_readonly "${dtb}" "${BOOT_DIR}/"
fi
done
Bobberty
Added variables to allow differnt branches and arm64.
r147 else
drtyhlpr
fix: kernel compilation, add ccache support
r248 for dtb in "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/broadcom/"*.dtb ; do
if [ -f "${dtb}" ] ; then
install_readonly "${dtb}" "${BOOT_DIR}/"
fi
done
Bobberty
Added variables to allow differnt branches and arm64.
r147 fi
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Copy compiled dtb device tree files
if [ -d "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/overlays" ] ; then
for dtb in "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/overlays/"*.dtb ; do
if [ -f "${dtb}" ] ; then
install_readonly "${dtb}" "${BOOT_DIR}/overlays/"
fi
done
if [ -f "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/overlays/README" ] ; then
install_readonly "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/dts/overlays/README" "${BOOT_DIR}/overlays/README"
fi
fi
Jan Wagner
fix: ENABLE_CRYPTFS -> UBOOT, SPLITFS, EXPANDROOT - cleanup
r82
if [ "$ENABLE_UBOOT" = false ] ; then
Bobberty
Added variables to allow differnt branches and arm64.
r147 # Convert and copy kernel image to the boot directory
"${KERNEL_DIR}/scripts/mkknlimg" "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/${KERNEL_BIN_IMAGE}" "${BOOT_DIR}/${KERNEL_IMAGE}"
Jan Wagner
fix: ENABLE_CRYPTFS -> UBOOT, SPLITFS, EXPANDROOT - cleanup
r82 else
Bobberty
Added variables to allow differnt branches and arm64.
r147 # Copy kernel image to the boot directory
install_readonly "${KERNEL_DIR}/arch/${KERNEL_ARCH}/boot/${KERNEL_BIN_IMAGE}" "${BOOT_DIR}/${KERNEL_IMAGE}"
Jan Wagner
fix: ENABLE_CRYPTFS -> UBOOT, SPLITFS, EXPANDROOT - cleanup
r82 fi
Jan Wagner
spliting more files, fix-uboot, fix-fbturbo, fix-locale
r67
# Remove kernel sources
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 if [ "$KERNEL_REMOVESRC" = true ] ; then
drtyhlpr
Added Raspberry Pi 3 model support
r94 rm -fr "${KERNEL_DIR}"
Michal Svamberg
Prepare kernel for module compilation (ex. dkms)
r104 else
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Prepare compiled kernel modules
Unknown
https://www.shellcheck.net/...
r336 if [ "$(grep "CONFIG_MODULES=y" "${KERNEL_DIR}/.config")" ] ; then
if [ "$(grep "^modules_prepare:" "${KERNEL_DIR}/Makefile")" ] ; then
drtyhlpr
fix: kernel compilation, add ccache support
r248 make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" modules_prepare
fi
drtyhlpr
Updated: Moved fstab stuff to new file 14-fstab.sh
r141
drtyhlpr
fix: kernel compilation, add ccache support
r248 # Create symlinks for kernel modules
chroot_exec ln -sf /usr/src/linux "/lib/modules/${KERNEL_VERSION}/build"
chroot_exec ln -sf /usr/src/linux "/lib/modules/${KERNEL_VERSION}/source"
fi
Stephen A. Brandli
Added FIRMWAREDIR option to use local copy of firmware.
r83 fi
Jan Wagner
Added: ENABLE_CRYPTFS - encrypted rootfs, use-latest-bootloader, cp-cleanup
r77
Jan Wagner
code cleanup and even more spliting
r70 else # BUILD_KERNEL=false
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 # Kernel installation
Jan Wagner
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
r75 chroot_exec apt-get -qq -y --no-install-recommends install linux-image-"${COLLABORA_KERNEL}" raspberrypi-bootloader-nokernel
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56
# Install flash-kernel last so it doesn't try (and fail) to detect the platform in the chroot
chroot_exec apt-get -qq -y install flash-kernel
Jan Wagner
Added: ENABLE_CRYPTFS - encrypted rootfs, use-latest-bootloader, cp-cleanup
r77 # Check if kernel installation was successful
Unknown
https://www.shellcheck.net/...
r336 VMLINUZ="$(ls -1 "${R}"/boot/vmlinuz-* | sort | tail -n 1)"
Jan Wagner
Added: ENABLE_CRYPTFS - encrypted rootfs, use-latest-bootloader, cp-cleanup
r77 if [ -z "$VMLINUZ" ] ; then
echo "error: kernel installation failed! (/boot/vmlinuz-* not found)"
cleanup
exit 1
fi
# Copy vmlinuz kernel to the boot directory
drtyhlpr
Added Raspberry Pi 3 model support
r94 install_readonly "${VMLINUZ}" "${BOOT_DIR}/${KERNEL_IMAGE}"
Filip Pytloun
Refactor: split bootstrap actions and allow custom
r56 fi