From 7d6ba716d8f345188c2b4f087179a0565ec1f208 2018-11-18 21:43:43 From: burnbabyburn Date: 2018-11-18 21:43:43 Subject: [PATCH] Merge branch 'ref+fix' of https://github.com/burnbabyburn/rpi23-gen-image into ref+fix --- diff --git a/bootstrap.d/13-kernel.sh b/bootstrap.d/13-kernel.sh index e66e027..5936710 100644 --- a/bootstrap.d/13-kernel.sh +++ b/bootstrap.d/13-kernel.sh @@ -8,7 +8,7 @@ # Fetch and build latest raspberry kernel if [ "$BUILD_KERNEL" = true ] ; then # Setup source directory - mkdir -p "${R}/usr/src/linux" + mkdir -p "${KERNEL_DIR}" # Copy existing kernel sources into chroot directory if [ -n "$KERNELSRC_DIR" ] && [ -d "$KERNELSRC_DIR" ] ; then @@ -83,148 +83,147 @@ if [ "$BUILD_KERNEL" = true ] ; then "${KERNEL_DIR}/.config" fi - #Switch to KERNELSRC_DIR - pushd "${KERNEL_DIR}" + if [ "$KERNELSRC_CONFIG" = true ] ; then + # Load default raspberry kernel configuration + make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" "${KERNEL_DEFCONFIG}" + + #Switch to KERNELSRC_DIR + pushd "${KERNEL_DIR}" - # GPL v2.0 - #https://github.com/sakaki-/bcmrpi3-kernel-bis/blob/master/conform_config.sh - if [ "$KERNEL_ZSWAP" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then - # enable ZSWAP support for better performance during large builds etc. - # requires activation via kernel parameter or sysfs - # see e.g. https://askubuntu.com/a/472227 for a summary of ZSWAP (vs ZRAM etc.) - # and e.g. https://wiki.archlinux.org/index.php/zswap for parameters etc. - - set_kernel_config ZPOOL y - set_kernel_config ZSWAP y - set_kernel_config ZBUD y - set_kernel_config Z3FOLD y - set_kernel_config ZSMALLOC y - set_kernel_config PGTABLE_MAPPING y - fi + # GPL v2.0 + #https://github.com/sakaki-/bcmrpi3-kernel-bis/blob/master/conform_config.sh + if [ "$KERNEL_ZSWAP" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then + # enable ZSWAP support for better performance during large builds etc. + # requires activation via kernel parameter or sysfs + # see e.g. https://askubuntu.com/a/472227 for a summary of ZSWAP (vs ZRAM etc.) + # and e.g. https://wiki.archlinux.org/index.php/zswap for parameters etc. + set_kernel_config ZPOOL y + set_kernel_config ZSWAP y + set_kernel_config ZBUD y + set_kernel_config Z3FOLD y + set_kernel_config ZSMALLOC y + set_kernel_config PGTABLE_MAPPING y + fi - if [ "$KERNEL_VIRT" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then - # enable basic KVM support; see e.g. - # https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=210546&start=25#p1300453 - - set_kernel_config VIRTUALIZATION y - set_kernel_config KVM y - set_kernel_config VHOST_NET m - set_kernel_config VHOST_CROSS_ENDIAN_LEGACY y - fi - #See https://github.com/raspberrypi/linux/issues/2177#issuecomment-354647406 - # Netfilter kernel support - if [ "$KERNEL_NF" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then - # xtables - set_kernel_config NETFILTER_XTABLES m - # Netfilter nf_tables support - set_kernel_config NF_TABLES m + if [ "$KERNEL_VIRT" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then + # enable basic KVM support; see e.g. + # https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=210546&start=25#p1300453 + set_kernel_config VIRTUALIZATION y + set_kernel_config KVM y + set_kernel_config VHOST_NET m + set_kernel_config VHOST_CROSS_ENDIAN_LEGACY y + fi + #See https://github.com/raspberrypi/linux/issues/2177#issuecomment-354647406 + # Netfilter kernel support + if [ "$KERNEL_NF" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then + # xtables + set_kernel_config NETFILTER_XTABLES m + # Netfilter nf_tables support + set_kernel_config NF_TABLES m - set_kernel_config CONFIG_NETFILTER_XTABLES m - set_kernel_config CONFIG_NF_TABLES_BRIDGE m - - set_kernel_config CONFIG_NF_NAT_SIP m - set_kernel_config CONFIG_NF_NAT_TFTP m - set_kernel_config CONFIG_NF_NAT_REDIRECT m - set_kernel_config CONFIG_NF_TABLES_INET m - set_kernel_config CONFIG_NF_TABLES_NETDEV m - set_kernel_config CONFIG_NF_TABLES_ARP m - set_kernel_config CONFIG_NF_DUP_IPV4 m - set_kernel_config CONFIG_NF_LOG_IPV4 m - set_kernel_config CONFIG_NF_REJECT_IPV4 m - set_kernel_config CONFIG_NF_NAT_IPV4 m - set_kernel_config CONFIG_NF_DUP_NETDEV m - set_kernel_config CONFIG_NF_DEFRAG_IPV4 m - set_kernel_config CONFIG_NF_CONNTRACK_IPV4 m - set_kernel_config CONFIG_NF_TABLES_IPV4 m - set_kernel_config CONFIG_NF_NAT_MASQUERADE_IPV4 m - set_kernel_config CONFIG_NF_NAT_SNMP_BASIC m - set_kernel_config CONFIG_NF_NAT_PROTO_GRE m - set_kernel_config CONFIG_NF_NAT_PPTP m - set_kernel_config CONFIG_NF_DEFRAG_IPV6 m - set_kernel_config CONFIG_NF_CONNTRACK_IPV6 m - set_kernel_config CONFIG_NF_TABLES_IPV6 m - set_kernel_config CONFIG_NF_DUP_IPV6 m - set_kernel_config CONFIG_NF_REJECT_IPV6 m - set_kernel_config CONFIG_NF_LOG_IPV6 m - set_kernel_config CONFIG_NF_NAT_IPV6 m - set_kernel_config CONFIG_NF_NAT_MASQUERADE_IPV6 m + set_kernel_config CONFIG_NETFILTER_XTABLES m + set_kernel_config CONFIG_NF_TABLES_BRIDGE m + + set_kernel_config CONFIG_NF_NAT_SIP m + set_kernel_config CONFIG_NF_NAT_TFTP m + set_kernel_config CONFIG_NF_NAT_REDIRECT m + set_kernel_config CONFIG_NF_TABLES_INET m + set_kernel_config CONFIG_NF_TABLES_NETDEV m + set_kernel_config CONFIG_NF_TABLES_ARP m + set_kernel_config CONFIG_NF_DUP_IPV4 m + set_kernel_config CONFIG_NF_LOG_IPV4 m + set_kernel_config CONFIG_NF_REJECT_IPV4 m + set_kernel_config CONFIG_NF_NAT_IPV4 m + set_kernel_config CONFIG_NF_DUP_NETDEV m + set_kernel_config CONFIG_NF_DEFRAG_IPV4 m + set_kernel_config CONFIG_NF_CONNTRACK_IPV4 m + set_kernel_config CONFIG_NF_TABLES_IPV4 m + set_kernel_config CONFIG_NF_NAT_MASQUERADE_IPV4 m + set_kernel_config CONFIG_NF_NAT_SNMP_BASIC m + set_kernel_config CONFIG_NF_NAT_PROTO_GRE m + set_kernel_config CONFIG_NF_NAT_PPTP m + set_kernel_config CONFIG_NF_DEFRAG_IPV6 m + set_kernel_config CONFIG_NF_CONNTRACK_IPV6 m + set_kernel_config CONFIG_NF_TABLES_IPV6 m + set_kernel_config CONFIG_NF_DUP_IPV6 m + set_kernel_config CONFIG_NF_REJECT_IPV6 m + set_kernel_config CONFIG_NF_LOG_IPV6 m + set_kernel_config CONFIG_NF_NAT_IPV6 m + set_kernel_config CONFIG_NF_NAT_MASQUERADE_IPV6 m - set_kernel_config CONFIG_NFT_EXTHDR m - set_kernel_config CONFIG_NFT_META m - set_kernel_config CONFIG_NFT_NUMGEN m - set_kernel_config CONFIG_NFT_CT m - set_kernel_config CONFIG_NFT_SET_RBTREE m - set_kernel_config CONFIG_NFT_SET_HASH m - set_kernel_config CONFIG_NFT_COUNTER m - set_kernel_config CONFIG_NFT_LOG m - set_kernel_config CONFIG_NFT_LIMIT m - set_kernel_config CONFIG_NFT_MASQ m - set_kernel_config CONFIG_NFT_REDIR m - set_kernel_config CONFIG_NFT_NAT m - set_kernel_config CONFIG_NFT_QUEUE m - set_kernel_config CONFIG_NFT_QUOTA m - set_kernel_config CONFIG_NFT_REJECT m - set_kernel_config CONFIG_NFT_REJECT_INET m - set_kernel_config CONFIG_NFT_COMPAT m - set_kernel_config CONFIG_NFT_HASH m - set_kernel_config CONFIG_NFT_DUP_NETDEV m - set_kernel_config CONFIG_NFT_FWD_NETDEV m - set_kernel_config CONFIG_NFT_CHAIN_ROUTE_IPV4 m - set_kernel_config CONFIG_NFT_REJECT_IPV4 m - set_kernel_config CONFIG_NFT_DUP_IPV4 m - set_kernel_config CONFIG_NFT_CHAIN_NAT_IPV4 m - set_kernel_config CONFIG_NFT_MASQ_IPV4 m - set_kernel_config CONFIG_NFT_REDIR_IPV4 m - set_kernel_config CONFIG_NFT_CHAIN_ROUTE_IPV6 m - set_kernel_config CONFIG_NFT_REJECT_IPV6 m - set_kernel_config CONFIG_NFT_DUP_IPV6 m - set_kernel_config CONFIG_NFT_CHAIN_NAT_IPV6 m - set_kernel_config CONFIG_NFT_MASQ_IPV6 m - set_kernel_config CONFIG_NFT_REDIR_IPV6 m - set_kernel_config CONFIG_NFT_BRIDGE_META m - set_kernel_config CONFIG_NFT_BRIDGE_REJECT m + set_kernel_config CONFIG_NFT_EXTHDR m + set_kernel_config CONFIG_NFT_META m + set_kernel_config CONFIG_NFT_NUMGEN m + set_kernel_config CONFIG_NFT_CT m + set_kernel_config CONFIG_NFT_SET_RBTREE m + set_kernel_config CONFIG_NFT_SET_HASH m + set_kernel_config CONFIG_NFT_COUNTER m + set_kernel_config CONFIG_NFT_LOG m + set_kernel_config CONFIG_NFT_LIMIT m + set_kernel_config CONFIG_NFT_MASQ m + set_kernel_config CONFIG_NFT_REDIR m + set_kernel_config CONFIG_NFT_NAT m + set_kernel_config CONFIG_NFT_QUEUE m + set_kernel_config CONFIG_NFT_QUOTA m + set_kernel_config CONFIG_NFT_REJECT m + set_kernel_config CONFIG_NFT_REJECT_INET m + set_kernel_config CONFIG_NFT_COMPAT m + set_kernel_config CONFIG_NFT_HASH m + set_kernel_config CONFIG_NFT_DUP_NETDEV m + set_kernel_config CONFIG_NFT_FWD_NETDEV m + set_kernel_config CONFIG_NFT_CHAIN_ROUTE_IPV4 m + set_kernel_config CONFIG_NFT_REJECT_IPV4 m + set_kernel_config CONFIG_NFT_DUP_IPV4 m + set_kernel_config CONFIG_NFT_CHAIN_NAT_IPV4 m + set_kernel_config CONFIG_NFT_MASQ_IPV4 m + set_kernel_config CONFIG_NFT_REDIR_IPV4 m + set_kernel_config CONFIG_NFT_CHAIN_ROUTE_IPV6 m + set_kernel_config CONFIG_NFT_REJECT_IPV6 m + set_kernel_config CONFIG_NFT_DUP_IPV6 m + set_kernel_config CONFIG_NFT_CHAIN_NAT_IPV6 m + set_kernel_config CONFIG_NFT_MASQ_IPV6 m + set_kernel_config CONFIG_NFT_REDIR_IPV6 m + set_kernel_config CONFIG_NFT_BRIDGE_META m + set_kernel_config CONFIG_NFT_BRIDGE_REJECT m - set_kernel_config CONFIG_IP_SET_BITMAP_IPMAC m - set_kernel_config CONFIG_IP_SET_BITMAP_PORT m - set_kernel_config CONFIG_IP_SET_HASH_IP m - set_kernel_config CONFIG_IP_SET_HASH_IPMARK m - set_kernel_config CONFIG_IP_SET_HASH_IPPORT m - set_kernel_config CONFIG_IP_SET_HASH_IPPORTIP m - set_kernel_config CONFIG_IP_SET_HASH_IPPORTNET m - set_kernel_config CONFIG_IP_SET_HASH_MAC m - set_kernel_config CONFIG_IP_SET_HASH_NETPORTNET m - set_kernel_config CONFIG_IP_SET_HASH_NET m - set_kernel_config CONFIG_IP_SET_HASH_NETNET m - set_kernel_config CONFIG_IP_SET_HASH_NETPORT m - set_kernel_config CONFIG_IP_SET_HASH_NETIFACE m - set_kernel_config CONFIG_IP_SET_LIST_SET m + set_kernel_config CONFIG_IP_SET_BITMAP_IPMAC m + set_kernel_config CONFIG_IP_SET_BITMAP_PORT m + set_kernel_config CONFIG_IP_SET_HASH_IP m + set_kernel_config CONFIG_IP_SET_HASH_IPMARK m + set_kernel_config CONFIG_IP_SET_HASH_IPPORT m + set_kernel_config CONFIG_IP_SET_HASH_IPPORTIP m + set_kernel_config CONFIG_IP_SET_HASH_IPPORTNET m + set_kernel_config CONFIG_IP_SET_HASH_MAC m + set_kernel_config CONFIG_IP_SET_HASH_NETPORTNET m + set_kernel_config CONFIG_IP_SET_HASH_NET m + set_kernel_config CONFIG_IP_SET_HASH_NETNET m + set_kernel_config CONFIG_IP_SET_HASH_NETPORT m + set_kernel_config CONFIG_IP_SET_HASH_NETIFACE m + set_kernel_config CONFIG_IP_SET_LIST_SET m - set_kernel_config CONFIG_IP6_NF_IPTABLES m - set_kernel_config CONFIG_IP6_NF_MATCH_AH m - set_kernel_config CONFIG_IP6_NF_MATCH_EUI64 m - set_kernel_config CONFIG_IP6_NF_NAT m - set_kernel_config CONFIG_IP6_NF_TARGET_MASQUERADE m - set_kernel_config CONFIG_IP6_NF_TARGET_NPT m + set_kernel_config CONFIG_IP6_NF_IPTABLES m + set_kernel_config CONFIG_IP6_NF_MATCH_AH m + set_kernel_config CONFIG_IP6_NF_MATCH_EUI64 m + set_kernel_config CONFIG_IP6_NF_NAT m + set_kernel_config CONFIG_IP6_NF_TARGET_MASQUERADE m + set_kernel_config CONFIG_IP6_NF_TARGET_NPT m - set_kernel_config CONFIG_NF_LOG_BRIDGE m - set_kernel_config CONFIG_BRIDGE_NF_EBTABLES m - set_kernel_config CONFIG_BRIDGE_EBT_BROUTE m - set_kernel_config CONFIG_BRIDGE_EBT_T_FILTER m - fi - - #https://groups.google.com/forum/#!topic/linux.gentoo.user/_2aSc_ztGpA - #https://github.com/torvalds/linux/blob/master/init/Kconfig#L848 - # Enables BPF syscall for systemd-journald - if [ "$KERNEL_BPF" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then - set_kernel_config CONFIG_BPF_SYSCALL y - set_kernel_config CONFIG_CGROUP_BPF y - fi - - popd + set_kernel_config CONFIG_NF_LOG_BRIDGE m + set_kernel_config CONFIG_BRIDGE_NF_EBTABLES m + set_kernel_config CONFIG_BRIDGE_EBT_BROUTE m + set_kernel_config CONFIG_BRIDGE_EBT_T_FILTER m + fi - if [ "$KERNELSRC_CONFIG" = true ] ; then - # Load default raspberry kernel configuration - make -C "${KERNEL_DIR}" ARCH="${KERNEL_ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" "${KERNEL_DEFCONFIG}" + #https://groups.google.com/forum/#!topic/linux.gentoo.user/_2aSc_ztGpA + #https://github.com/torvalds/linux/blob/master/init/Kconfig#L848 + # Enables BPF syscall for systemd-journald + if [ "$KERNEL_BPF" = true ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] ) ; then + set_kernel_config CONFIG_BPF_SYSCALL y + set_kernel_config CONFIG_CGROUP_BPF y + fi + + #Revert to previous directory + popd # Set kernel configuration parameters to enable qemu emulation if [ "$ENABLE_QEMU" = true ] ; then @@ -396,7 +395,7 @@ if [ "$KERNEL_ARCH" = arm64 ] && ( [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ] rm -fr "${temp_dir}" # Set permissions of the kernel sources - chown -R root:root "${R}/boot" + chown -R root:root "${R}/boot/firmware" chown -R root:root "${R}/lib" fi diff --git a/bootstrap.d/15-rpi-config.sh b/bootstrap.d/15-rpi-config.sh index f810ab2..3fe22ce 100644 --- a/bootstrap.d/15-rpi-config.sh +++ b/bootstrap.d/15-rpi-config.sh @@ -135,17 +135,17 @@ 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 "${LIB_DIR}/modules-load.d/" +install_readonly files/modules/rpi2.conf "${LIB_DIR}/modules-load.d/rpi2.conf" # Load hardware random module at boot if [ "$ENABLE_HWRANDOM" = true ] && [ "$BUILD_KERNEL" = false ] ; then - sed -i "s/^# bcm2708_rng/bcm2708_rng/" "${R}/lib/modules-load.d/rpi2.conf" + sed -i "s/^# bcm2708_rng/bcm2708_rng/" "${LIB_DIR}/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/" "${LIB_DIR}/modules-load.d/rpi2.conf" else echo "dtparam=audio=off" >> "${BOOT_DIR}/config.txt" fi @@ -153,16 +153,16 @@ fi # Enable I2C interface if [ "$ENABLE_I2C" = true ] ; then echo "dtparam=i2c_arm=on" >> "${BOOT_DIR}/config.txt" - sed -i "s/^# i2c-bcm2708/i2c-bcm2708/" "${R}/lib/modules-load.d/rpi2.conf" - sed -i "s/^# i2c-dev/i2c-dev/" "${R}/lib/modules-load.d/rpi2.conf" + sed -i "s/^# i2c-bcm2708/i2c-bcm2708/" "${LIB_DIR}/modules-load.d/rpi2.conf" + sed -i "s/^# i2c-dev/i2c-dev/" "${LIB_DIR}/modules-load.d/rpi2.conf" fi # Enable SPI interface if [ "$ENABLE_SPI" = true ] ; then echo "dtparam=spi=on" >> "${BOOT_DIR}/config.txt" - echo "spi-bcm2708" >> "${R}/lib/modules-load.d/rpi2.conf" + echo "spi-bcm2708" >> "${LIB_DIR}/modules-load.d/rpi2.conf" if [ "$RPI_MODEL" = 3 ] || [ "$RPI_MODEL" = 3P ]; then - sed -i "s/spi-bcm2708/spi-bcm2835/" "${R}/lib/modules-load.d/rpi2.conf" + sed -i "s/spi-bcm2708/spi-bcm2835/" "${LIB_DIR}/modules-load.d/rpi2.conf" fi fi diff --git a/rpi23-gen-image.sh b/rpi23-gen-image.sh index 12615c5..8ba8102 100755 --- a/rpi23-gen-image.sh +++ b/rpi23-gen-image.sh @@ -83,7 +83,7 @@ ETC_DIR="${R}/etc" LIB_DIR="${R}/lib" BOOT_DIR="${R}/boot/firmware" KERNEL_DIR="${R}/usr/src/linux" -WLAN_FIRMWARE_DIR="${R}/lib/firmware/brcm" +WLAN_FIRMWARE_DIR="${LIB_DIR}/firmware/brcm" # Firmware directory: Blank if download from github RPI_FIRMWARE_DIR=${RPI_FIRMWARE_DIR:=""}