blob: 798a5ce6dbd14e2acf1ed68f0063c15e495decc5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
#
# Build and Setup RPi2 Kernel
#
# Load utility functions
. ./functions.sh
# Fetch and build latest raspberry kernel
if [ "$BUILD_KERNEL" = true ] ; then
# Setup source directory
mkdir -p $R/usr/src
# Copy existing kernel sources into chroot directory
if [ -n "$KERNEL_SRCDIR" ] && [ -d "$KERNEL_SRCDIR" ] ; then
# Copy kernel sources
cp -r "${KERNEL_SRCDIR}" "${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
fi
else # KERNEL_SRCDIR=""
# Fetch current raspberrypi kernel sources
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
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}
# 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
# Cross compile kernel and modules
make -C $R/usr/src/linux -j${KERNEL_THREADS} ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} zImage modules dtbs
# Check if kernel compilation was successful
if [ ! -r $R/usr/src/linux/arch/${KERNEL_ARCH}/boot/zImage ] ; then
echo "error: kernel compilation failed!"
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
else
make -C $R/usr/src/linux ARCH=${KERNEL_ARCH} CROSS_COMPILE=${CROSS_COMPILE} INSTALL_MOD_PATH=../../.. modules_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
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
# 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/
# Remove kernel sources
if [ "$KERNEL_RMSRC" = 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
# 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
fi
# Setup firmware boot cmdline
if [ "$ENABLE_SPLITFS" = true ] ; then
CMDLINE="dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 rootflags=commit=100,data=writeback elevator=deadline rootwait net.ifnames=1 console=tty1 ${CMDLINE}"
else
CMDLINE="dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 rootflags=commit=100,data=writeback elevator=deadline rootwait net.ifnames=1 console=tty1 ${CMDLINE}"
fi
# Add serial console support
if [ "$ENABLE_CONSOLE" = true ] ; then
CMDLINE="${CMDLINE} console=ttyAMA0,115200 kgdboc=ttyAMA0,115200"
fi
# Remove IPv6 networking support
if [ "$ENABLE_IPV6" = false ] ; then
CMDLINE="${CMDLINE} ipv6.disable=1"
fi
# Install firmware boot cmdline
echo "${CMDLINE}" >$R/boot/firmware/cmdline.txt
# Install firmware config
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
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
# 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
# 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
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
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
# Install and setup fstab
install_readonly files/mount/fstab $R/etc/fstab
if [ "$ENABLE_SPLITFS" = true ] ; then
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
|