diff options
author | Jan Wagner <mail@jwagner.eu> | 2016-03-15 15:03:31 +0100 |
---|---|---|
committer | Jan Wagner <mail@jwagner.eu> | 2016-03-15 15:03:31 +0100 |
commit | 24bd7e97cf9d07454c9cde74e4d80a1b3de9dfac (patch) | |
tree | ecafd5cf7a2ff7dc25a343098ccdf66a659334f5 /bootstrap.d/13-kernel.sh | |
parent | d4ab3cfce58c908c8bdf85c96ea300c47db3ac85 (diff) | |
download | rpi2-gen-image-24bd7e97cf9d07454c9cde74e4d80a1b3de9dfac.tar.gz rpi2-gen-image-24bd7e97cf9d07454c9cde74e4d80a1b3de9dfac.tar.bz2 rpi2-gen-image-24bd7e97cf9d07454c9cde74e4d80a1b3de9dfac.zip |
Added: KERNELSRC_PREBUILT, KERNELSRC_ rename, fix-quotes
Diffstat (limited to 'bootstrap.d/13-kernel.sh')
-rw-r--r-- | bootstrap.d/13-kernel.sh | 113 |
1 files changed, 62 insertions, 51 deletions
diff --git a/bootstrap.d/13-kernel.sh b/bootstrap.d/13-kernel.sh index 798a5ce..a8e4f4a 100644 --- a/bootstrap.d/13-kernel.sh +++ b/bootstrap.d/13-kernel.sh @@ -8,88 +8,99 @@ # Fetch and build latest raspberry kernel if [ "$BUILD_KERNEL" = true ] ; then # Setup source directory - mkdir -p $R/usr/src + mkdir -p "$R/usr/src" # Copy existing kernel sources into chroot directory - if [ -n "$KERNEL_SRCDIR" ] && [ -d "$KERNEL_SRCDIR" ] ; then + if [ -n "$KERNELSRC_DIR" ] && [ -d "$KERNELSRC_DIR" ] ; then # Copy kernel sources - cp -r "${KERNEL_SRCDIR}" "${R}/usr/src" + cp -r "${KERNELSRC_DIR}" "${R}/usr/src" # Clean the kernel sources - if [ "$KERNEL_CLEANSRC" = true ] ; then - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} mrproper + if [ "$KERNELSRC_CLEAN" = true ] && [ "$KERNELSRC_PREBUILT" = false ] ; then + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" mrproper fi - else # KERNEL_SRCDIR="" + else # KERNELSRC_DIR="" # Fetch current raspberrypi kernel sources - git -C $R/usr/src clone --depth=1 https://github.com/raspberrypi/linux + git -C "$R/usr/src" clone --depth=1 https://github.com/raspberrypi/linux fi # Calculate optimal number of kernel building threads - if [ "$KERNEL_THREADS" = "1" ] ; then - if [ -r /proc/cpuinfo ] ; then - KERNEL_THREADS=$(grep -c processor /proc/cpuinfo) - fi + if [ "$KERNEL_THREADS" = "1" ] && [ -r /proc/cpuinfo ] ; then + KERNEL_THREADS=$(grep -c processor /proc/cpuinfo) fi - if [ "$KERNEL_CONFIGSRC" = true ] ; then - # Load default raspberry kernel configuration - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} ${KERNEL_DEFCONFIG} + if [ "$KERNELSRC_PREBUILT" = false ] ; then + if [ "$KERNELSRC_CONFIG" = true ] ; then + # Load default raspberry kernel configuration + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" "${KERNEL_DEFCONFIG}" - # Start menu-driven kernel configuration (interactive) - if [ "$KERNEL_MENUCONFIG" = true ] ; then - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} menuconfig + # Start menu-driven kernel configuration (interactive) + if [ "$KERNEL_MENUCONFIG" = true ] ; then + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" menuconfig + fi fi - fi - # Cross compile kernel and modules - make -C $R/usr/src/linux -j${KERNEL_THREADS} ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} zImage modules dtbs + # Cross compile kernel and modules + make -C "$R/usr/src/linux" -j${KERNEL_THREADS} ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" zImage modules dtbs + fi # Check if kernel compilation was successful - if [ ! -r $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/zImage ] ; then - echo "error: kernel compilation failed!" + if [ ! -r "$R/usr/src/linux/arch/${KERNEL_ARCH}/boot/zImage" ] ; then + echo "error: kernel compilation failed! (zImage not found)" cleanup exit 1 fi # Install kernel modules if [ "$ENABLE_REDUCE" = true ] ; then - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=../../.. modules_install + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=../../.. modules_install else - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} INSTALL_MOD_PATH=../../.. modules_install + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_MOD_PATH=../../.. modules_install + + # Install kernel firmware + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_FW_PATH=../../../lib firmware_install fi # Install kernel headers if [ "$KERNEL_HEADERS" = true ] ; then - make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} INSTALL_HDR_PATH=../.. headers_install + make -C "$R/usr/src/linux" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" INSTALL_HDR_PATH=../.. headers_install fi - # Copy and rename compiled kernel to boot directory - mkdir $R/boot/firmware/ - $R/usr/src/linux/scripts/mkknlimg $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/zImage $R/boot/firmware/kernel7.img + # Prepare boot (firmware) directory + mkdir "$R/boot/firmware/" + + # Get kernel release version + KERNEL_VERSION=`cat "$R/usr/src/linux/include/config/kernel.release"` + + # Copy kernel configuration file to the boot directory + cp "$R/usr/src/linux/.config" "$R/boot/config-${KERNEL_VERSION}" + + # Copy dts and dtb device tree sources and binaries + mkdir "$R/boot/firmware/overlays/" + cp "$R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/"*.dtb "$R/boot/firmware/" + cp "$R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/overlays/"*.dtb* "$R/boot/firmware/overlays/" + cp "$R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/overlays/README" "$R/boot/firmware/overlays/" - # Copy dts and dtb device definitions - mkdir $R/boot/firmware/overlays/ - cp $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/*.dtb $R/boot/firmware/ - cp $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/overlays/*.dtb* $R/boot/firmware/overlays/ - cp $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/dts/overlays/README $R/boot/firmware/overlays/ + # Convert kernel zImage and copy it to the boot directory + "$R/usr/src/linux/scripts/mkknlimg" "$R/usr/src/linux/arch/${KERNEL_ARCH}/boot/zImage" "$R/boot/firmware/kernel7.img" # Remove kernel sources - if [ "$KERNEL_RMSRC" = true ] ; then - rm -fr $R/usr/src/linux + if [ "$KERNEL_REMOVESRC" = true ] ; then + rm -fr "$R/usr/src/linux" fi # Install raspberry bootloader and flash-kernel packages chroot_exec apt-get -qq -y --no-install-recommends install raspberrypi-bootloader-nokernel else # BUILD_KERNEL=false # Kernel installation - chroot_exec apt-get -qq -y --no-install-recommends install linux-image-${COLLABORA_KERNEL} raspberrypi-bootloader-nokernel + chroot_exec apt-get -qq -y --no-install-recommends install linux-image-"${COLLABORA_KERNEL}" raspberrypi-bootloader-nokernel # 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 VMLINUZ="$(ls -1 $R/boot/vmlinuz-* | sort | tail -n 1)" [ -z "$VMLINUZ" ] && exit 1 - cp $VMLINUZ $R/boot/firmware/kernel7.img + cp "$VMLINUZ" "$R/boot/firmware/kernel7.img" fi # Setup firmware boot cmdline @@ -110,43 +121,43 @@ if [ "$ENABLE_IPV6" = false ] ; then fi # Install firmware boot cmdline -echo "${CMDLINE}" >$R/boot/firmware/cmdline.txt +echo "${CMDLINE}" > "$R/boot/firmware/cmdline.txt" # Install firmware config -install_readonly files/boot/config.txt $R/boot/firmware/config.txt +install_readonly files/boot/config.txt "$R/boot/firmware/config.txt" # Setup minimal GPU memory allocation size: 16MB (no X) if [ "$ENABLE_MINGPU" = true ] ; then - echo "gpu_mem=16" >>$R/boot/firmware/config.txt + echo "gpu_mem=16" >> "$R/boot/firmware/config.txt" fi # Create firmware configuration and cmdline symlinks -ln -sf firmware/config.txt $R/boot/config.txt -ln -sf firmware/cmdline.txt $R/boot/cmdline.txt +ln -sf firmware/config.txt "$R/boot/config.txt" +ln -sf firmware/cmdline.txt "$R/boot/cmdline.txt" # Install and setup kernel modules to load at boot -mkdir -p $R/lib/modules-load.d/ -install_readonly files/modules/rpi2.conf $R/lib/modules-load.d/rpi2.conf +mkdir -p "$R/lib/modules-load.d/" +install_readonly files/modules/rpi2.conf "$R/lib/modules-load.d/rpi2.conf" # Load hardware random module at boot if [ "$ENABLE_HWRANDOM" = true ] ; then - sed -i "s/^# bcm2708_rng/bcm2708_rng/" $R/lib/modules-load.d/rpi2.conf + sed -i "s/^# bcm2708_rng/bcm2708_rng/" "$R/lib/modules-load.d/rpi2.conf" fi # Load sound module at boot if [ "$ENABLE_SOUND" = true ] ; then - sed -i "s/^# snd_bcm2835/snd_bcm2835/" $R/lib/modules-load.d/rpi2.conf + sed -i "s/^# snd_bcm2835/snd_bcm2835/" "$R/lib/modules-load.d/rpi2.conf" fi # Install kernel modules blacklist -mkdir -p $R/etc/modprobe.d/ -install_readonly files/modules/raspi-blacklist.conf $R/etc/modprobe.d/raspi-blacklist.conf +mkdir -p "$R/etc/modprobe.d/" +install_readonly files/modules/raspi-blacklist.conf "$R/etc/modprobe.d/raspi-blacklist.conf" # Install and setup fstab -install_readonly files/mount/fstab $R/etc/fstab +install_readonly files/mount/fstab "$R/etc/fstab" if [ "$ENABLE_SPLITFS" = true ] ; then - sed -i 's/mmcblk0p2/sda1/' $R/etc/fstab + sed -i 's/mmcblk0p2/sda1/' "$R/etc/fstab" fi # Install sysctl.d configuration files -install_readonly files/sysctl.d/81-rpi-vm.conf $R/etc/sysctl.d/81-rpi-vm.conf +install_readonly files/sysctl.d/81-rpi-vm.conf "$R/etc/sysctl.d/81-rpi-vm.conf" |