diff --git a/build-all.sh b/build-all.sh index e92ace506f..ee8f03db88 100644 --- a/build-all.sh +++ b/build-all.sh @@ -15,6 +15,18 @@ source $SRC/lib/general.sh # when we want to build from certain start from=0 +free_cpu=$(grep -c 'processor' /proc/cpuinfo) +free_cpu=$(($free_cpu + $free_cpu/2)) + +echo $MULTITHREAD +free_cpu=1001 +[[ $MULTITHREAD != yes ]] && free_cpu=0 + + + +rm -rf /run/armbian +mkdir -p /run/armbian + RELEASE_LIST=("trusty" "xenial" "wheezy" "jessie") BRANCH_LIST=("default" "next" "dev") @@ -109,15 +121,25 @@ for line in "${buildlist[@]}"; do CPUMIN CPUMAX UBOOT_VER KERNEL_VER GOVERNOR BOOTSIZE UBOOT_TOOLCHAIN KERNEL_TOOLCHAIN PACKAGE_LIST_EXCLUDE KERNEL_IMAGE_TYPE \ write_uboot_platform family_tweaks setup_write_uboot_platform BOOTSCRIPT UBOOT_FILES LOCALVERSION UBOOT_COMPILER KERNEL_COMPILER \ UBOOT_TARGET MODULES MODULES_NEXT MODULES_DEV INITRD_ARCH HAS_UUID_SUPPORT BOOTENV_FILE BOOTDELAY MODULES_BLACKLIST MODULES_BLACKLIST_NEXT \ - MODULES_BLACKLIST_DEV + MODULES_BLACKLIST_DEV MOUNT SDCARD buildtext read BOARD BRANCH RELEASE BUILD_DESKTOP <<< $line n=$[$n+1] - if [[ $from -le $n && ! -f "/run/Armbian_${BOARD^}_${BRANCH}_${RELEASE}_$BUILD_DESKTOP.pid" ]]; then - display_alert "Building $n / ${#buildlist[@]}" "Board: $BOARD Kernel:$BRANCH${RELEASE:+ Release: $RELEASE}${BUILD_DESKTOP:+ Desktop: $BUILD_DESKTOP}" "ext" - #touch "/run/Armbian_${BOARD^}_${BRANCH}_${RELEASE}_$BUILD_DESKTOP.pid" - source $SRC/lib/main.sh - #rm "/run/Armbian_${BOARD^}_${BRANCH}_${RELEASE}_$BUILD_DESKTOP.pid" + + if [[ $from -le $n ]]; then + + touch "/run/armbian/Armbian_${BOARD^}_${BRANCH}_${RELEASE}_$BUILD_DESKTOP.pid" + jobs=$(ls /run/armbian | wc -l) + if [[ $jobs -lt $free_cpu ]]; then + display_alert "Building in the back $n / ${#buildlist[@]}" "Board: $BOARD Kernel:$BRANCH${RELEASE:+ Release: $RELEASE}${BUILD_DESKTOP:+ Desktop: $BUILD_DESKTOP}" "ext" + source $SRC/lib/main.sh >/dev/null & 2>&1 + else + display_alert "Building $buildtext $n / ${#buildlist[@]}" "Board: $BOARD Kernel:$BRANCH${RELEASE:+ Release: $RELEASE}${BUILD_DESKTOP:+ Desktop: $BUILD_DESKTOP}" "ext" + source $SRC/lib/main.sh + fi + # + # fake load + #sleep $[ ( $RANDOM % 3 ) + 1 ]s fi done diff --git a/chroot-buildpackages.sh b/chroot-buildpackages.sh index d447475064..bf73d41fca 100644 --- a/chroot-buildpackages.sh +++ b/chroot-buildpackages.sh @@ -261,13 +261,13 @@ chroot_installpackages_local() -gpg-key="925644A6" -passphrase="testkey1234" -component=temp -distribution=$RELEASE publish repo temp aptly -config=$conf -listen=":8189" serve & local aptly_pid=$! - cp $SRC/lib/extras-buildpkgs/buildpkg.key $CACHEDIR/$sdcard/tmp/buildpkg.key - cat <<-'EOF' > $CACHEDIR/$sdcard/etc/apt/preferences.d/90-armbian-temp.pref + cp $SRC/lib/extras-buildpkgs/buildpkg.key $CACHEDIR/$SDCARD/tmp/buildpkg.key + cat <<-'EOF' > $CACHEDIR/$SDCARD/etc/apt/preferences.d/90-armbian-temp.pref Package: * Pin: origin "localhost" Pin-Priority: 550 EOF - cat <<-EOF > $CACHEDIR/$sdcard/etc/apt/sources.list.d/armbian-temp.list + cat <<-EOF > $CACHEDIR/$SDCARD/etc/apt/sources.list.d/armbian-temp.list deb http://localhost:8189/ $RELEASE temp EOF chroot_installpackages @@ -288,7 +288,7 @@ chroot_installpackages() unset package_install_target package_checkinstall done [[ $NO_APT_CACHER != yes ]] && local apt_extra="-o Acquire::http::Proxy=\"http://${APT_PROXY_ADDR:-localhost:3142}\" -o Acquire::http::Proxy::localhost=\"DIRECT\"" - cat <<-EOF > $CACHEDIR/$sdcard/tmp/install.sh + cat <<-EOF > $CACHEDIR/$SDCARD/tmp/install.sh #!/bin/bash [[ "$remote_only" != yes ]] && apt-key add /tmp/buildpkg.key apt-get $apt_extra -q update @@ -308,6 +308,6 @@ chroot_installpackages() rm /tmp/buildpkg.key 2>/dev/null rm -- "\$0" EOF - chmod +x $CACHEDIR/$sdcard/tmp/install.sh - chroot $CACHEDIR/$sdcard /bin/bash -c "/tmp/install.sh" + chmod +x $CACHEDIR/$SDCARD/tmp/install.sh + chroot $CACHEDIR/$SDCARD /bin/bash -c "/tmp/install.sh" } ############################################################################# diff --git a/common.sh b/common.sh index a59ceac714..cc20148b5f 100644 --- a/common.sh +++ b/common.sh @@ -397,19 +397,19 @@ customize_image() { # for users that need to prepare files at host [[ -f $SRC/userpatches/customize-image-host.sh ]] && source $SRC/userpatches/customize-image-host.sh - cp $SRC/userpatches/customize-image.sh $CACHEDIR/$sdcard/tmp/customize-image.sh - chmod +x $CACHEDIR/$sdcard/tmp/customize-image.sh - mkdir -p $CACHEDIR/$sdcard/tmp/overlay + cp $SRC/userpatches/customize-image.sh $CACHEDIR/$SDCARD/tmp/customize-image.sh + chmod +x $CACHEDIR/$SDCARD/tmp/customize-image.sh + mkdir -p $CACHEDIR/$SDCARD/tmp/overlay if [[ $(lsb_release -sc) == xenial ]]; then # util-linux >= 2.27 required - mount -o bind,ro $SRC/userpatches/overlay $CACHEDIR/$sdcard/tmp/overlay + mount -o bind,ro $SRC/userpatches/overlay $CACHEDIR/$SDCARD/tmp/overlay else - mount -o bind $SRC/userpatches/overlay $CACHEDIR/$sdcard/tmp/overlay + mount -o bind $SRC/userpatches/overlay $CACHEDIR/$SDCARD/tmp/overlay fi display_alert "Calling image customization script" "customize-image.sh" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "/tmp/customize-image.sh $RELEASE $FAMILY $BOARD $BUILD_DESKTOP" - umount $CACHEDIR/$sdcard/tmp/overlay - mountpoint -q $CACHEDIR/$sdcard/tmp/overlay || rm -r $CACHEDIR/$sdcard/tmp/overlay + chroot $CACHEDIR/$SDCARD /bin/bash -c "/tmp/customize-image.sh $RELEASE $FAMILY $BOARD $BUILD_DESKTOP" + umount $CACHEDIR/$SDCARD/tmp/overlay + mountpoint -q $CACHEDIR/$SDCARD/tmp/overlay || rm -r $CACHEDIR/$SDCARD/tmp/overlay } userpatch_create() diff --git a/config/bootscripts/boot-pine64-next.cmd b/config/bootscripts/boot-pine64-next.cmd index 3f8e535eff..9b620ebfdb 100644 --- a/config/bootscripts/boot-pine64-next.cmd +++ b/config/bootscripts/boot-pine64-next.cmd @@ -11,7 +11,7 @@ setenv rootfstype "ext4" # temp fix: increase cpufreq and bus clock / speeds things up with vanilla images mw.l 0x1c2005c 1 -mw.l 0x1c20000 0x80001110 +mw.l 0x1c20000 0x80001010 if load mmc 0 ${load_addr} /boot/armbianEnv.txt || load mmc 0 ${load_addr} armbianEnv.txt; then env import -t ${load_addr} ${filesize} diff --git a/config/fex/orangepi2.fex b/config/fex/orangepi2.fex index bb14228567..17fd9df072 100644 --- a/config/fex/orangepi2.fex +++ b/config/fex/orangepi2.fex @@ -1099,7 +1099,7 @@ ir_tx = port:PH07<2> pmuic_type = 2 pmu_gpio0 = port:PL06<1><1><2><1> pmu_level0 = 11300 -pmu_level1 = 01100 +pmu_level1 = 1100 extremity_freq = 1296000000 max_freq = 1200000000 min_freq = 480000000 diff --git a/config/fex/orangepiplus.fex b/config/fex/orangepiplus.fex index 9eeb3ad2e4..1a3a380cda 100644 --- a/config/fex/orangepiplus.fex +++ b/config/fex/orangepiplus.fex @@ -1115,7 +1115,7 @@ ir_tx = port:PH07<2> pmuic_type = 2 pmu_gpio0 = port:PL06<1><1><2><1> pmu_level0 = 11300 -pmu_level1 = 01100 +pmu_level1 = 1100 extremity_freq = 1296000000 max_freq = 1200000000 min_freq = 480000000 diff --git a/config/kernel/linux-pine64-default.config b/config/kernel/linux-pine64-default.config index 147897ddc3..8865b4d7c3 100644 --- a/config/kernel/linux-pine64-default.config +++ b/config/kernel/linux-pine64-default.config @@ -23,8 +23,6 @@ CONFIG_SWIOTLB=y CONFIG_IOMMU_HELPER=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_KERNEL_MODE_NEON=y -CONFIG_ARM64_MODULE_CMODEL_LARGE=y -CONFIG_ARM64_ERRATUM_843419=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y @@ -351,6 +349,8 @@ CONFIG_CMA=y # CONFIG_CMA_DEBUG is not set CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_SECCOMP=y +CONFIG_ARM64_MODULE_CMODEL_LARGE=y +CONFIG_ARM64_ERRATUM_843419=y # # Boot options @@ -3074,6 +3074,7 @@ CONFIG_QUOTACTL=y CONFIG_AUTOFS4_FS=y CONFIG_FUSE_FS=y CONFIG_CUSE=y +CONFIG_OVERLAYFS_FS=y CONFIG_GENERIC_ACL=y # diff --git a/config/kernel/linux-pine64-dev.config b/config/kernel/linux-pine64-dev.config index 9ce2d5933a..6c35dfb28c 100644 --- a/config/kernel/linux-pine64-dev.config +++ b/config/kernel/linux-pine64-dev.config @@ -3073,7 +3073,7 @@ CONFIG_USB_STORAGE=y # CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set # CONFIG_USB_STORAGE_ENE_UB6250 is not set -# CONFIG_USB_UAS is not set +CONFIG_USB_UAS=y # # USB Imaging devices diff --git a/config/kernel/linux-sun8i-default.config b/config/kernel/linux-sun8i-default.config index 13e9c4a516..ab1fef9bb0 100644 --- a/config/kernel/linux-sun8i-default.config +++ b/config/kernel/linux-sun8i-default.config @@ -2794,7 +2794,7 @@ CONFIG_FB_BACKLIGHT=y CONFIG_FB_CONSOLE_SUNXI=y CONFIG_DISP2_SUNXI=y CONFIG_HDMI_DISP2_SUNXI=y -CONFIG_TV_DISP2_SUNXI=m +CONFIG_TV_DISP2_SUNXI=y # CONFIG_HDMI_EP952 is not set # CONFIG_DISP2_SUNXI_BOOT_COLORBAR is not set CONFIG_DISP2_SUNXI_DEBUG=y diff --git a/config/sources/cubox.conf b/config/sources/cubox.conf index 259ca04c76..680a2d4efd 100644 --- a/config/sources/cubox.conf +++ b/config/sources/cubox.conf @@ -44,14 +44,14 @@ write_uboot_platform() family_tweaks() { # default lirc configuration - sed -e 's/DEVICE=""/DEVICE="\/dev\/lirc0"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="default"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - cp $SRC/lib/config/lirc.conf.cubox-i $CACHEDIR/$sdcard/etc/lirc/lircd.conf - install -m 755 $SRC/lib/bin/brcm_patchram_plus_cubox $CACHEDIR/$sdcard/usr/local/bin/brcm_patchram_plus - cp $SRC/lib/scripts/brcm4330 $CACHEDIR/$sdcard/etc/default - install -m 755 $SRC/lib/scripts/brcm4330-patch $CACHEDIR/$sdcard/etc/init.d/brcm4330-patch - #chroot $CACHEDIR/$sdcard /bin/bash -c "LC_ALL=C LANG=C update-rc.d brcm4330-patch defaults>> /dev/null" - if [[ $BRANCH == next && -f $CACHEDIR/$sdcard/boot/boot.cmd ]]; then - sed -e 's/console=tty1 //g' -i $CACHEDIR/$sdcard/boot/boot.cmd + sed -e 's/DEVICE=""/DEVICE="\/dev\/lirc0"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="default"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + cp $SRC/lib/config/lirc.conf.cubox-i $CACHEDIR/$SDCARD/etc/lirc/lircd.conf + install -m 755 $SRC/lib/bin/brcm_patchram_plus_cubox $CACHEDIR/$SDCARD/usr/local/bin/brcm_patchram_plus + cp $SRC/lib/scripts/brcm4330 $CACHEDIR/$SDCARD/etc/default + install -m 755 $SRC/lib/scripts/brcm4330-patch $CACHEDIR/$SDCARD/etc/init.d/brcm4330-patch + #chroot $CACHEDIR/$SDCARD /bin/bash -c "LC_ALL=C LANG=C update-rc.d brcm4330-patch defaults>> /dev/null" + if [[ $BRANCH == next && -f $CACHEDIR/$SDCARD/boot/boot.cmd ]]; then + sed -e 's/console=tty1 //g' -i $CACHEDIR/$SDCARD/boot/boot.cmd fi } diff --git a/config/sources/marvell.conf b/config/sources/marvell.conf index 3e54192747..e645044655 100644 --- a/config/sources/marvell.conf +++ b/config/sources/marvell.conf @@ -42,5 +42,5 @@ write_uboot_platform() family_tweaks() { - chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get -y -qq remove --auto-remove lirc linux-sound-base alsa-base alsa-utils bluez>/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove lirc linux-sound-base alsa-base alsa-utils bluez>/dev/null 2>&1" } diff --git a/config/sources/odroidc1.conf b/config/sources/odroidc1.conf index e11593b91d..c48e73ce0e 100644 --- a/config/sources/odroidc1.conf +++ b/config/sources/odroidc1.conf @@ -39,8 +39,8 @@ write_uboot_platform() family_tweaks() { - install -m 755 $SRC/lib/scripts/c1_init.sh $CACHEDIR/$sdcard/etc/ - sed -e 's/exit 0//g' -i $CACHEDIR/$sdcard/etc/rc.local - echo "/etc/c1_init.sh" >> $CACHEDIR/$sdcard/etc/rc.local - echo "exit 0" >> $CACHEDIR/$sdcard/etc/rc.local + install -m 755 $SRC/lib/scripts/c1_init.sh $CACHEDIR/$SDCARD/etc/ + sed -e 's/exit 0//g' -i $CACHEDIR/$SDCARD/etc/rc.local + echo "/etc/c1_init.sh" >> $CACHEDIR/$SDCARD/etc/rc.local + echo "exit 0" >> $CACHEDIR/$SDCARD/etc/rc.local } diff --git a/config/sources/odroidc2.conf b/config/sources/odroidc2.conf index b43708bd11..532c82b386 100644 --- a/config/sources/odroidc2.conf +++ b/config/sources/odroidc2.conf @@ -33,14 +33,14 @@ write_uboot_platform() family_tweaks() { - sed -i 's/MODULES=.*/MODULES="meson-ir"/' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -i 's/LOAD_MODULES=.*/LOAD_MODULES="true"/' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -i 's/DEVICE=.*/DEVICE="\/dev\/lirc0"/' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -i 's/LIRCD_ARGS=.*/LIRCD_ARGS="--uinput"/' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - cp $SRC/lib/config/lirc.conf.odroidc2 $CACHEDIR/$sdcard/etc/lirc/lircd.conf + sed -i 's/MODULES=.*/MODULES="meson-ir"/' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -i 's/LOAD_MODULES=.*/LOAD_MODULES="true"/' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -i 's/DEVICE=.*/DEVICE="\/dev\/lirc0"/' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -i 's/LIRCD_ARGS=.*/LIRCD_ARGS="--uinput"/' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + cp $SRC/lib/config/lirc.conf.odroidc2 $CACHEDIR/$SDCARD/etc/lirc/lircd.conf - install -m 755 $SRC/lib/scripts/c2_init.sh $CACHEDIR/$sdcard/etc/ - sed -e 's/exit 0//g' -i $CACHEDIR/$sdcard/etc/rc.local - echo "/etc/c2_init.sh" >> $CACHEDIR/$sdcard/etc/rc.local - echo "exit 0" >> $CACHEDIR/$sdcard/etc/rc.local + install -m 755 $SRC/lib/scripts/c2_init.sh $CACHEDIR/$SDCARD/etc/ + sed -e 's/exit 0//g' -i $CACHEDIR/$SDCARD/etc/rc.local + echo "/etc/c2_init.sh" >> $CACHEDIR/$SDCARD/etc/rc.local + echo "exit 0" >> $CACHEDIR/$SDCARD/etc/rc.local } diff --git a/config/sources/odroidxu4.conf b/config/sources/odroidxu4.conf index a4dc5a4d22..1ce94adf61 100644 --- a/config/sources/odroidxu4.conf +++ b/config/sources/odroidxu4.conf @@ -61,6 +61,6 @@ write_uboot_platform() family_tweaks() { - echo "blacklist ina231_sensor" > $CACHEDIR/$sdcard/etc/modprobe.d/blacklist-odroid.conf - chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" + echo "blacklist ina231_sensor" > $CACHEDIR/$SDCARD/etc/modprobe.d/blacklist-odroid.conf + chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" } diff --git a/config/sources/pine64.conf b/config/sources/pine64.conf index 06b81aea56..494db99ec8 100644 --- a/config/sources/pine64.conf +++ b/config/sources/pine64.conf @@ -43,7 +43,7 @@ write_uboot_platform() [[ -f $1/u-boot-with-dtb.bin ]] && dd if=$1/u-boot-with-dtb.bin of=$2 bs=1k seek=8 conv=fsync > /dev/null 2>&1 || true if [[ -f $1/pine64-plus.dtb ]]; then if [[ -n $CACHEDIR ]]; then - cp $1/{pine64-plus.dtb,pine64.dtb,pine64drm-plus.dtb,pine64drm.dtb} $CACHEDIR/mount/boot + cp $1/{pine64-plus.dtb,pine64.dtb,pine64drm-plus.dtb,pine64drm.dtb} $CACHEDIR/$MOUNT/boot else cp $1/{pine64-plus.dtb,pine64.dtb,pine64drm-plus.dtb,pine64drm.dtb} /boot fi @@ -55,7 +55,7 @@ write_uboot_platform() family_tweaks() { if [[ $BRANCH == default ]]; then - mkdir -p $CACHEDIR/$sdcard/var/lib/alsa/ - cp $SRC/lib/config/asound.state.pine64-default $CACHEDIR/$sdcard/var/lib/alsa/asound.state + mkdir -p $CACHEDIR/$SDCARD/var/lib/alsa/ + cp $SRC/lib/config/asound.state.pine64-default $CACHEDIR/$SDCARD/var/lib/alsa/asound.state fi } diff --git a/config/sources/s500.conf b/config/sources/s500.conf index 029b5f2856..f980ea7dc1 100644 --- a/config/sources/s500.conf +++ b/config/sources/s500.conf @@ -38,7 +38,7 @@ write_uboot_platform() family_tweaks() { - printf "blacklist wlan_8723bs_vq0\nblacklist ctp_gslX680\nblacklist ctp_gsl3680\n" > $CACHEDIR/$sdcard/etc/modprobe.d/blacklist-guitar.conf - printf "blacklist gsensor_mir3da\nblacklist gsensor_stk8313\nblacklist gsensor_bma222\nblacklist lightsensor_ltr301\n" >> $CACHEDIR/$sdcard/etc/modprobe.d/blacklist-guitar.conf - gzip < $SRC/lib/bin/armbian-u-boot.bmp > $CACHEDIR/$sdcard/boot/boot_logo.bmp.gz + printf "blacklist wlan_8723bs_vq0\nblacklist ctp_gslX680\nblacklist ctp_gsl3680\n" > $CACHEDIR/$SDCARD/etc/modprobe.d/blacklist-guitar.conf + printf "blacklist gsensor_mir3da\nblacklist gsensor_stk8313\nblacklist gsensor_bma222\nblacklist lightsensor_ltr301\n" >> $CACHEDIR/$SDCARD/etc/modprobe.d/blacklist-guitar.conf + gzip < $SRC/lib/bin/armbian-u-boot.bmp > $CACHEDIR/$SDCARD/boot/boot_logo.bmp.gz } diff --git a/config/sources/sun4i.conf b/config/sources/sun4i.conf index cd18e7d376..d9648ad02d 100644 --- a/config/sources/sun4i.conf +++ b/config/sources/sun4i.conf @@ -29,11 +29,11 @@ family_tweaks() # TODO: replace with udev rule # default lirc configuration sed -i '1i sed -i \x27s/DEVICE="\\/dev\\/input.*/DEVICE="\\/dev\\/input\\/\x27$str\x27"/g\x27 /etc/lirc/hardware.conf' \ - $CACHEDIR/$sdcard/etc/lirc/hardware.conf + $CACHEDIR/$SDCARD/etc/lirc/hardware.conf sed -i '1i str=$(cat /proc/bus/input/devices | grep "H: Handlers=sysrq rfkill kbd event" | awk \x27{print $(NF)}\x27)' \ - $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -i '1i # Cubietruck automatic lirc device detection by Igor Pecovnik' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DEVICE=""/DEVICE="\/dev\/input\/event1"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="devinput"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$sdcard/etc/lirc/lircd.conf + $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -i '1i # Cubietruck automatic lirc device detection by Igor Pecovnik' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DEVICE=""/DEVICE="\/dev\/input\/event1"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="devinput"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$SDCARD/etc/lirc/lircd.conf } diff --git a/config/sources/sun7i.conf b/config/sources/sun7i.conf index 9040742ce5..5e9d8fcb24 100644 --- a/config/sources/sun7i.conf +++ b/config/sources/sun7i.conf @@ -38,15 +38,15 @@ family_tweaks() # TODO: replace with udev rule # default lirc configuration sed -i '1i sed -i \x27s/DEVICE="\\/dev\\/input.*/DEVICE="\\/dev\\/input\\/\x27$str\x27"/g\x27 /etc/lirc/hardware.conf' \ - $CACHEDIR/$sdcard/etc/lirc/hardware.conf + $CACHEDIR/$SDCARD/etc/lirc/hardware.conf sed -i '1i str=$(cat /proc/bus/input/devices | grep "H: Handlers=sysrq rfkill kbd event" | awk \x27{print $(NF)}\x27)' \ - $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -i '1i # Cubietruck automatic lirc device detection by Igor Pecovnik' $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DEVICE=""/DEVICE="\/dev\/input\/event1"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="devinput"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$sdcard/etc/lirc/lircd.conf + $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -i '1i # Cubietruck automatic lirc device detection by Igor Pecovnik' $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DEVICE=""/DEVICE="\/dev\/input\/event1"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="devinput"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$SDCARD/etc/lirc/lircd.conf if [[ $BRANCH == next ]]; then - mkdir -p $CACHEDIR/$sdcard/var/lib/alsa/ - cp $SRC/lib/config/asound.state.sunxi-next $CACHEDIR/$sdcard/var/lib/alsa/asound.state + mkdir -p $CACHEDIR/$SDCARD/var/lib/alsa/ + cp $SRC/lib/config/asound.state.sunxi-next $CACHEDIR/$SDCARD/var/lib/alsa/asound.state fi } diff --git a/config/sources/sun8i.conf b/config/sources/sun8i.conf index 5f60c89ae0..238ef0d0e2 100644 --- a/config/sources/sun8i.conf +++ b/config/sources/sun8i.conf @@ -29,30 +29,30 @@ esac family_tweaks() { # this is for legacy kernel only - sed -e 's/DEVICE=""/DEVICE="\/dev\/lirc0"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/MODULES=""/MODULES="sunxi_cir"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="default"/g' -i $CACHEDIR/$sdcard/etc/lirc/hardware.conf - cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$sdcard/etc/lirc/lircd.conf + sed -e 's/DEVICE=""/DEVICE="\/dev\/lirc0"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/MODULES=""/MODULES="sunxi_cir"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + sed -e 's/DRIVER="UNCONFIGURED"/DRIVER="default"/g' -i $CACHEDIR/$SDCARD/etc/lirc/hardware.conf + cp $SRC/lib/config/lirc.conf.cubietruck $CACHEDIR/$SDCARD/etc/lirc/lircd.conf if [[ $BRANCH == default ]]; then - mkdir -p $CACHEDIR/$sdcard/var/lib/alsa/ - cp $SRC/lib/config/asound.state.sun8i-default $CACHEDIR/$sdcard/var/lib/alsa/asound.state + mkdir -p $CACHEDIR/$SDCARD/var/lib/alsa/ + cp $SRC/lib/config/asound.state.sun8i-default $CACHEDIR/$SDCARD/var/lib/alsa/asound.state fi # enable serial gadget on OTG port since the board doesn't have Ethernet if [[ ( $BOARD == orangepilite || $BOARD == nanopiair ) && $BRANCH == default && ( $RELEASE == jessie || $RELEASE == xenial ) ]]; then - mkdir -p $CACHEDIR/$sdcard/etc/systemd/system/serial-getty@ttyGS0.service.d - cat <<-EOF > $CACHEDIR/$sdcard/etc/systemd/system/serial-getty@ttyGS0.service.d/10-switch-role.conf + mkdir -p $CACHEDIR/$SDCARD/etc/systemd/system/serial-getty@ttyGS0.service.d + cat <<-EOF > $CACHEDIR/$SDCARD/etc/systemd/system/serial-getty@ttyGS0.service.d/10-switch-role.conf [Service] ExecStartPre=-/bin/sh -c "echo 2 > /sys/bus/platform/devices/sunxi_usb_udc/otg_role" EOF - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload enable serial-getty@ttyGS0.service > /dev/null" - echo "ttyGS0" >> $CACHEDIR/$sdcard/etc/securetty + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload enable serial-getty@ttyGS0.service > /dev/null" + echo "ttyGS0" >> $CACHEDIR/$SDCARD/etc/securetty fi # u-boot default is nonsec. Legacy requires sec, mainline requires nonsec for SMP - if [[ ! -f $CACHEDIR/$sdcard/boot/armbianEnv.txt ]]; then + if [[ ! -f $CACHEDIR/$SDCARD/boot/armbianEnv.txt ]]; then local boot_mode=nonsec [[ $BRANCH == default ]] && boot_mode=sec sed -i -e "1s/^/gpio set PL10\ngpio set PG11\nsetenv machid 1029\nsetenv bootm_boot_mode $boot_mode\n/" \ - -e 's/\ disp.screen0_output_mode=1920x1080p60//' -e 's/\ hdmi.audio=EDID:0//' $CACHEDIR/$sdcard/boot/boot.cmd + -e 's/\ disp.screen0_output_mode=1920x1080p60//' -e 's/\ hdmi.audio=EDID:0//' $CACHEDIR/$SDCARD/boot/boot.cmd fi } diff --git a/config/sources/udoo-neo.conf b/config/sources/udoo-neo.conf index ec8c3d2f9c..df9b0517a5 100644 --- a/config/sources/udoo-neo.conf +++ b/config/sources/udoo-neo.conf @@ -44,18 +44,18 @@ write_uboot_platform() family_tweaks() { - chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.default - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.bonding - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.hostapd + chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.default + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.bonding + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.hostapd if [[ $BOARD == udoo-neo ]]; then # SD card is elsewhere - sed 's/mmcblk0p1/mmcblk1p1/' -i $CACHEDIR/$sdcard/etc/fstab + sed 's/mmcblk0p1/mmcblk1p1/' -i $CACHEDIR/$SDCARD/etc/fstab # firmware for M4 - mkdir -p $CACHEDIR/$sdcard/boot/bin/ - cp $SRC/lib/bin/m4startup.fw* $CACHEDIR/$sdcard/boot/bin/ + mkdir -p $CACHEDIR/$SDCARD/boot/bin/ + cp $SRC/lib/bin/m4startup.fw* $CACHEDIR/$SDCARD/boot/bin/ # fix for BT - cp $SRC/lib/bin/udoo-neo-debs/udooneo-bluetooth_1.2-1_armhf.deb $CACHEDIR/$sdcard/tmp - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/udooneo-bluetooth_1.2-1_armhf.deb >/dev/null 2>&1" + cp $SRC/lib/bin/udoo-neo-debs/udooneo-bluetooth_1.2-1_armhf.deb $CACHEDIR/$SDCARD/tmp + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/udooneo-bluetooth_1.2-1_armhf.deb >/dev/null 2>&1" fi } diff --git a/config/sources/udoo.conf b/config/sources/udoo.conf index ec8c3d2f9c..df9b0517a5 100644 --- a/config/sources/udoo.conf +++ b/config/sources/udoo.conf @@ -44,18 +44,18 @@ write_uboot_platform() family_tweaks() { - chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.default - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.bonding - sed 's/wlan0/wlan2/' -i $CACHEDIR/$sdcard/etc/network/interfaces.hostapd + chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove lirc >/dev/null 2>&1" + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.default + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.bonding + sed 's/wlan0/wlan2/' -i $CACHEDIR/$SDCARD/etc/network/interfaces.hostapd if [[ $BOARD == udoo-neo ]]; then # SD card is elsewhere - sed 's/mmcblk0p1/mmcblk1p1/' -i $CACHEDIR/$sdcard/etc/fstab + sed 's/mmcblk0p1/mmcblk1p1/' -i $CACHEDIR/$SDCARD/etc/fstab # firmware for M4 - mkdir -p $CACHEDIR/$sdcard/boot/bin/ - cp $SRC/lib/bin/m4startup.fw* $CACHEDIR/$sdcard/boot/bin/ + mkdir -p $CACHEDIR/$SDCARD/boot/bin/ + cp $SRC/lib/bin/m4startup.fw* $CACHEDIR/$SDCARD/boot/bin/ # fix for BT - cp $SRC/lib/bin/udoo-neo-debs/udooneo-bluetooth_1.2-1_armhf.deb $CACHEDIR/$sdcard/tmp - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/udooneo-bluetooth_1.2-1_armhf.deb >/dev/null 2>&1" + cp $SRC/lib/bin/udoo-neo-debs/udooneo-bluetooth_1.2-1_armhf.deb $CACHEDIR/$SDCARD/tmp + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/udooneo-bluetooth_1.2-1_armhf.deb >/dev/null 2>&1" fi } diff --git a/configuration.sh b/configuration.sh index d2c256dbe4..fa3fe5eb3d 100644 --- a/configuration.sh +++ b/configuration.sh @@ -43,7 +43,11 @@ ARMBIAN_MAINLINE_KERNEL_VERSION='4.8' MAINLINE_KERNEL_BRANCH=tag:v$(wget -qO- https://www.kernel.org/finger_banner | awk '{print $NF}' | grep -oE "^${ARMBIAN_MAINLINE_KERNEL_VERSION//./\\.}\.?[[:digit:]]*" | tail -1) MAINLINE_KERNEL_DIR='linux-vanilla' -MAINLINE_UBOOT_SOURCE='git://git.denx.de/u-boot.git' +if [[ $USE_GITHUB_UBOOT_MIRROR == yes ]]; then + MAINLINE_UBOOT_SOURCE='https://github.com/RobertCNelson/u-boot' +else + MAINLINE_UBOOT_SOURCE='git://git.denx.de/u-boot.git' +fi #MAINLINE_UBOOT_BRANCH="v$(git ls-remote git://git.denx.de/u-boot.git | grep -v rc | grep -v '\^' | tail -1 | cut -d'v' -f 2)" MAINLINE_UBOOT_BRANCH='tag:v2016.11' MAINLINE_UBOOT_DIR='u-boot' @@ -59,8 +63,8 @@ SERIALCON=ttyS0 BOOTSIZE=0 # set unique mounting directory -sdcard="sdcard-${BRANCH}-${BOARD}-${RELEASE}" -mount="mount-${BRANCH}-${BOARD}-${RELEASE}" +SDCARD="sdcard-${BRANCH}-${BOARD}-${RELEASE}" +MOUNT="mount-${BRANCH}-${BOARD}-${RELEASE}" if [[ -f $SRC/lib/config/sources/$LINUXFAMILY.conf ]]; then source $SRC/lib/config/sources/$LINUXFAMILY.conf diff --git a/debootstrap-ng.sh b/debootstrap-ng.sh index ca176396e9..a9599b9232 100644 --- a/debootstrap-ng.sh +++ b/debootstrap-ng.sh @@ -30,8 +30,8 @@ debootstrap_ng() trap unmount_on_exit INT TERM EXIT # stage: clean and create directories - rm -rf $CACHEDIR/{$sdcard,$mount} - mkdir -p $CACHEDIR/{$sdcard,$mount,rootfs} $DEST/images + rm -rf $CACHEDIR/{$SDCARD,$MOUNT} + mkdir -p $CACHEDIR/{$SDCARD,$MOUNT,rootfs} $DEST/images # stage: verify tmpfs configuration and mount # default maximum size for tmpfs mount is 1/2 of available RAM @@ -44,7 +44,7 @@ debootstrap_ng() local use_tmpfs=yes fi - [[ $use_tmpfs == yes ]] && mount -t tmpfs -o size=${tmpfs_max_size}M tmpfs $CACHEDIR/$sdcard + [[ $use_tmpfs == yes ]] && mount -t tmpfs -o size=${tmpfs_max_size}M tmpfs $CACHEDIR/$SDCARD # stage: prepare basic rootfs: unpack cache or create from scratch create_rootfs_cache @@ -52,8 +52,8 @@ debootstrap_ng() # stage: install kernel and u-boot packages # install distribution and board specific applications - mkdir -p $CACHEDIR/$sdcard/tmp/debs - mount --bind $DEST/debs/ $CACHEDIR/$sdcard/tmp/debs + mkdir -p $CACHEDIR/$SDCARD/tmp/debs + mount --bind $DEST/debs/ $CACHEDIR/$SDCARD/tmp/debs install_distribution_specific install_common @@ -72,27 +72,27 @@ debootstrap_ng() fi # cleanup for install_kernel and install_board_specific - umount $CACHEDIR/$sdcard/tmp/debs - mountpoint -q $CACHEDIR/$sdcard/tmp/debs || rm -rf $CACHEDIR/$sdcard/tmp/debs + umount $CACHEDIR/$SDCARD/tmp/debs + mountpoint -q $CACHEDIR/$SDCARD/tmp/debs || rm -rf $CACHEDIR/$SDCARD/tmp/debs # stage: user customization script # NOTE: installing too many packages may fill tmpfs mount customize_image # stage: cleanup - rm -f $CACHEDIR/$sdcard/sbin/initctl $CACHEDIR/$sdcard/sbin/start-stop-daemon - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg-divert --quiet --local --rename --remove /sbin/initctl" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg-divert --quiet --local --rename --remove /sbin/start-stop-daemon" - rm -f $CACHEDIR/$sdcard/usr/sbin/policy-rc.d $CACHEDIR/$sdcard/usr/bin/$QEMU_BINARY + rm -f $CACHEDIR/$SDCARD/sbin/initctl $CACHEDIR/$SDCARD/sbin/start-stop-daemon + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --remove /sbin/initctl" + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --remove /sbin/start-stop-daemon" + rm -f $CACHEDIR/$SDCARD/usr/sbin/policy-rc.d $CACHEDIR/$SDCARD/usr/bin/$QEMU_BINARY - umount_chroot "$CACHEDIR/$sdcard" + umount_chroot "$CACHEDIR/$SDCARD" # to prevent creating swap file on NFS (needs specific kernel options) # and f2fs/btrfs (not recommended or needs specific kernel options) - [[ $ROOTFS_TYPE != ext4 ]] && touch $CACHEDIR/$sdcard/var/swap + [[ $ROOTFS_TYPE != ext4 ]] && touch $CACHEDIR/$SDCARD/var/swap if [[ $ROOTFS_TYPE == fel ]]; then - FEL_ROOTFS=$CACHEDIR/$sdcard/ + FEL_ROOTFS=$CACHEDIR/$SDCARD/ display_alert "Starting FEL boot" "$BOARD" "info" source $SRC/lib/fel-load.sh else @@ -101,9 +101,9 @@ debootstrap_ng() fi # stage: unmount tmpfs - [[ $use_tmpfs = yes ]] && umount $CACHEDIR/$sdcard + [[ $use_tmpfs = yes ]] && umount $CACHEDIR/$SDCARD - rm -rf $CACHEDIR/$sdcard + rm -rf $CACHEDIR/$SDCARD # remove exit trap trap - INT TERM EXIT @@ -121,7 +121,7 @@ create_rootfs_cache() if [[ -f $cache_fname ]]; then local date_diff=$(( ($(date +%s) - $(stat -c %Y $cache_fname)) / 86400 )) display_alert "Extracting $display_name" "$date_diff days old" "info" - pv -p -b -r -c -N "$display_name" "$cache_fname" | pigz -dc | tar xp --xattrs -C $CACHEDIR/$sdcard/ + pv -p -b -r -c -N "$display_name" "$cache_fname" | pigz -dc | tar xp --xattrs -C $CACHEDIR/$SDCARD/ else display_alert "Creating new rootfs for" "$RELEASE" "info" @@ -139,75 +139,75 @@ create_rootfs_cache() display_alert "Installing base system" "Stage 1/2" "info" eval 'debootstrap --include=locales ${PACKAGE_LIST_EXCLUDE:+ --exclude=${PACKAGE_LIST_EXCLUDE// /,}} \ - --arch=$ARCH --foreign $RELEASE $CACHEDIR/$sdcard/ $apt_mirror' \ + --arch=$ARCH --foreign $RELEASE $CACHEDIR/$SDCARD/ $apt_mirror' \ ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 1/2)..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - [[ ${PIPESTATUS[0]} -ne 0 || ! -f $CACHEDIR/$sdcard/debootstrap/debootstrap ]] && exit_with_error "Debootstrap base system first stage failed" + [[ ${PIPESTATUS[0]} -ne 0 || ! -f $CACHEDIR/$SDCARD/debootstrap/debootstrap ]] && exit_with_error "Debootstrap base system first stage failed" - cp /usr/bin/$QEMU_BINARY $CACHEDIR/$sdcard/usr/bin/ + cp /usr/bin/$QEMU_BINARY $CACHEDIR/$SDCARD/usr/bin/ - mkdir -p $CACHEDIR/$sdcard/usr/share/keyrings/ - cp /usr/share/keyrings/debian-archive-keyring.gpg $CACHEDIR/$sdcard/usr/share/keyrings/ + mkdir -p $CACHEDIR/$SDCARD/usr/share/keyrings/ + cp /usr/share/keyrings/debian-archive-keyring.gpg $CACHEDIR/$SDCARD/usr/share/keyrings/ display_alert "Installing base system" "Stage 2/2" "info" - eval 'chroot $CACHEDIR/$sdcard /bin/bash -c "/debootstrap/debootstrap --second-stage"' \ + eval 'chroot $CACHEDIR/$SDCARD /bin/bash -c "/debootstrap/debootstrap --second-stage"' \ ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Debootstrap (stage 2/2)..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - [[ ${PIPESTATUS[0]} -ne 0 || ! -f $CACHEDIR/$sdcard/bin/bash ]] && exit_with_error "Debootstrap base system second stage failed" + [[ ${PIPESTATUS[0]} -ne 0 || ! -f $CACHEDIR/$SDCARD/bin/bash ]] && exit_with_error "Debootstrap base system second stage failed" - mount_chroot "$CACHEDIR/$sdcard" + mount_chroot "$CACHEDIR/$SDCARD" # policy-rc.d script prevents starting or reloading services during image creation - printf '#!/bin/sh\nexit 101' > $CACHEDIR/$sdcard/usr/sbin/policy-rc.d - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/initctl" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/start-stop-daemon" - printf '#!/bin/sh\necho "Warning: Fake start-stop-daemon called, doing nothing"' > $CACHEDIR/$sdcard/sbin/start-stop-daemon - printf '#!/bin/sh\necho "Warning: Fake initctl called, doing nothing"' > $CACHEDIR/$sdcard/sbin/initctl - chmod 755 $CACHEDIR/$sdcard/usr/sbin/policy-rc.d - chmod 755 $CACHEDIR/$sdcard/sbin/initctl - chmod 755 $CACHEDIR/$sdcard/sbin/start-stop-daemon + printf '#!/bin/sh\nexit 101' > $CACHEDIR/$SDCARD/usr/sbin/policy-rc.d + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/initctl" + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg-divert --quiet --local --rename --add /sbin/start-stop-daemon" + printf '#!/bin/sh\necho "Warning: Fake start-stop-daemon called, doing nothing"' > $CACHEDIR/$SDCARD/sbin/start-stop-daemon + printf '#!/bin/sh\necho "Warning: Fake initctl called, doing nothing"' > $CACHEDIR/$SDCARD/sbin/initctl + chmod 755 $CACHEDIR/$SDCARD/usr/sbin/policy-rc.d + chmod 755 $CACHEDIR/$SDCARD/sbin/initctl + chmod 755 $CACHEDIR/$SDCARD/sbin/start-stop-daemon # stage: configure language and locales display_alert "Configuring locales" "$DEST_LANG" "info" - [[ -f $CACHEDIR/$sdcard/etc/locale.gen ]] && sed -i "s/^# $DEST_LANG/$DEST_LANG/" $CACHEDIR/$sdcard/etc/locale.gen - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "locale-gen $DEST_LANG"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "update-locale LANG=$DEST_LANG LANGUAGE=$DEST_LANG LC_MESSAGES=$DEST_LANG"' \ + [[ -f $CACHEDIR/$SDCARD/etc/locale.gen ]] && sed -i "s/^# $DEST_LANG/$DEST_LANG/" $CACHEDIR/$SDCARD/etc/locale.gen + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "locale-gen $DEST_LANG"' ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "update-locale LANG=$DEST_LANG LANGUAGE=$DEST_LANG LC_MESSAGES=$DEST_LANG"' \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - if [[ -f $CACHEDIR/$sdcard/etc/default/console-setup ]]; then + if [[ -f $CACHEDIR/$SDCARD/etc/default/console-setup ]]; then sed -e 's/CHARMAP=.*/CHARMAP="UTF-8"/' -e 's/FONTSIZE=.*/FONTSIZE="8x16"/' \ - -e 's/CODESET=.*/CODESET="guess"/' -i $CACHEDIR/$sdcard/etc/default/console-setup - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "setupcon --save"' + -e 's/CODESET=.*/CODESET="guess"/' -i $CACHEDIR/$SDCARD/etc/default/console-setup + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "setupcon --save"' fi # stage: create apt sources list - create_sources_list "$RELEASE" "$CACHEDIR/$sdcard/" + create_sources_list "$RELEASE" "$CACHEDIR/$SDCARD/" # stage: add armbian repository and install key case $RELEASE in wheezy|trusty) - echo "deb http://apt.armbian.com $RELEASE main" > $CACHEDIR/$sdcard/etc/apt/sources.list.d/armbian.list + echo "deb http://apt.armbian.com $RELEASE main" > $CACHEDIR/$SDCARD/etc/apt/sources.list.d/armbian.list ;; jessie|xenial) - echo "deb http://apt.armbian.com $RELEASE main utils ${RELEASE}-desktop" > $CACHEDIR/$sdcard/etc/apt/sources.list.d/armbian.list + echo "deb http://apt.armbian.com $RELEASE main utils ${RELEASE}-desktop" > $CACHEDIR/$SDCARD/etc/apt/sources.list.d/armbian.list ;; esac - cp $SRC/lib/bin/armbian.key $CACHEDIR/$sdcard - eval 'chroot $CACHEDIR/$sdcard /bin/bash -c "cat armbian.key | apt-key add -"' \ + cp $SRC/lib/bin/armbian.key $CACHEDIR/$SDCARD + eval 'chroot $CACHEDIR/$SDCARD /bin/bash -c "cat armbian.key | apt-key add -"' \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} - rm $CACHEDIR/$sdcard/armbian.key + rm $CACHEDIR/$SDCARD/armbian.key # add armhf arhitecture to arm64 - [[ $ARCH == arm64 ]] && eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg --add-architecture armhf"' + [[ $ARCH == arm64 ]] && eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg --add-architecture armhf"' # stage: update packages list display_alert "Updating package list" "$RELEASE" "info" - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get -q -y $apt_extra update"' \ + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get -q -y $apt_extra update"' \ ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Updating package lists..." $TTY_Y $TTY_X'} \ ${OUTPUT_VERYSILENT:+' >/dev/null 2>/dev/null'} @@ -216,7 +216,7 @@ create_rootfs_cache() # stage: upgrade base packages from xxx-updates and xxx-backports repository branches display_alert "Upgrading base packages" "Armbian" "info" - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ $apt_extra $apt_extra_progress upgrade"' \ ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Upgrading base packages..." $TTY_Y $TTY_X'} \ @@ -226,7 +226,7 @@ create_rootfs_cache() # stage: install additional packages display_alert "Installing packages for" "Armbian" "info" - eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$sdcard /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ + eval 'LC_ALL=C LANG=C chroot $CACHEDIR/$SDCARD /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt-get -y -q \ $apt_extra $apt_extra_progress --no-install-recommends install $PACKAGE_LIST"' \ ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} \ ${OUTPUT_DIALOG:+' | dialog --backtitle "$backtitle" --progressbox "Installing Armbian system..." $TTY_Y $TTY_X'} \ @@ -239,19 +239,19 @@ create_rootfs_cache() eval 'df -h | grep "$CACHEDIR/"' ${PROGRESS_LOG_TO_FILE:+' | tee -a $DEST/debug/debootstrap.log'} # stage: remove downloaded packages - chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get clean" + chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get clean" # stage: make rootfs cache archive display_alert "Ending debootstrap process and preparing cache" "$RELEASE" "info" sync # the only reason to unmount here is compression progress display # based on rootfs size calculation - umount_chroot "$CACHEDIR/$sdcard" + umount_chroot "$CACHEDIR/$SDCARD" - tar cp --xattrs --directory=$CACHEDIR/$sdcard/ --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ - --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/$sdcard/ | cut -f1) -N "$display_name" | pigz --fast > $cache_fname + tar cp --xattrs --directory=$CACHEDIR/$SDCARD/ --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ + --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/$SDCARD/ | cut -f1) -N "$display_name" | pigz --fast > $cache_fname fi - mount_chroot "$CACHEDIR/$sdcard" + mount_chroot "$CACHEDIR/$SDCARD" } ############################################################################# # prepare_partitions @@ -311,7 +311,7 @@ prepare_partitions() # mountopts[nfs] is empty # stage: calculate rootfs size - local rootfs_size=$(du -sm $CACHEDIR/$sdcard/ | cut -f1) # MiB + local rootfs_size=$(du -sm $CACHEDIR/$SDCARD/ | cut -f1) # MiB display_alert "Current rootfs size" "$rootfs_size MiB" "info" if [[ -n $FIXED_IMAGE_SIZE && $FIXED_IMAGE_SIZE =~ ^[0-9]+$ ]]; then display_alert "Using user-defined image size" "$FIXED_IMAGE_SIZE MiB" "info" @@ -329,7 +329,7 @@ prepare_partitions() # stage: create blank image display_alert "Creating blank image for rootfs" "$sdsize MiB" "info" - dd if=/dev/zero bs=1M status=none count=$sdsize | pv -p -b -r -s $(( $sdsize * 1024 * 1024 )) | dd status=none of=$CACHEDIR/tmprootfs.raw + dd if=/dev/zero bs=1M status=none count=$sdsize | pv -p -b -r -s $(( $sdsize * 1024 * 1024 )) | dd status=none of=$CACHEDIR/${sdcard}.raw # stage: determine partition configuration if [[ $BOOTSIZE != 0 ]]; then @@ -360,17 +360,17 @@ prepare_partitions() # stage: create partition table display_alert "Creating partitions" "${bootfs:+/boot: $bootfs }root: $ROOTFS_TYPE" "info" - parted -s $CACHEDIR/tmprootfs.raw -- mklabel msdos + parted -s $CACHEDIR/${sdcard}.raw -- mklabel msdos if [[ $ROOTFS_TYPE == nfs ]]; then # single /boot partition - parted -s $CACHEDIR/tmprootfs.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s -1s + parted -s $CACHEDIR/${sdcard}.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s -1s elif [[ $BOOTSIZE == 0 ]]; then # single root partition - parted -s $CACHEDIR/tmprootfs.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s -1s + parted -s $CACHEDIR/${sdcard}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s -1s else # /boot partition + root partition - parted -s $CACHEDIR/tmprootfs.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s ${bootend}s - parted -s $CACHEDIR/tmprootfs.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s -1s + parted -s $CACHEDIR/${sdcard}.raw -- mkpart primary ${parttype[$bootfs]} ${bootstart}s ${bootend}s + parted -s $CACHEDIR/${sdcard}.raw -- mkpart primary ${parttype[$ROOTFS_TYPE]} ${rootstart}s -1s fi # stage: mount image @@ -381,50 +381,50 @@ prepare_partitions() # NOTE: losetup -P option is not available in Trusty [[ $CONTAINER_COMPAT == yes ]] && mknod -m0660 $LOOP b 7 ${LOOP//\/dev\/loop} > /dev/null - losetup $LOOP $CACHEDIR/tmprootfs.raw + losetup $LOOP $CACHEDIR/${sdcard}.raw partprobe $LOOP # stage: create fs, mount partitions, create fstab - rm -f $CACHEDIR/$sdcard/etc/fstab + rm -f $CACHEDIR/$SDCARD/etc/fstab if [[ -n $rootpart ]]; then display_alert "Creating rootfs" "$ROOTFS_TYPE" [[ $CONTAINER_COMPAT == yes ]] && mknod -m0660 $LOOPp${rootpart} b 259 ${rootpart} > /dev/null mkfs.${mkfs[$ROOTFS_TYPE]} ${mkopts[$ROOTFS_TYPE]} ${LOOP}p${rootpart} [[ $ROOTFS_TYPE == ext4 ]] && tune2fs -o journal_data_writeback ${LOOP}p${rootpart} > /dev/null [[ $ROOTFS_TYPE == btrfs ]] && local fscreateopt="-o compress=zlib" - mount ${fscreateopt} ${LOOP}p${rootpart} $CACHEDIR/$mount/ + mount ${fscreateopt} ${LOOP}p${rootpart} $CACHEDIR/$MOUNT/ local rootfs="UUID=$(blkid -s UUID -o value ${LOOP}p${rootpart})" - echo "$rootfs / ${mkfs[$ROOTFS_TYPE]} defaults,noatime,nodiratime${mountopts[$ROOTFS_TYPE]} 0 1" >> $CACHEDIR/$sdcard/etc/fstab + echo "$rootfs / ${mkfs[$ROOTFS_TYPE]} defaults,noatime,nodiratime${mountopts[$ROOTFS_TYPE]} 0 1" >> $CACHEDIR/$SDCARD/etc/fstab fi if [[ -n $bootpart ]]; then display_alert "Creating /boot" "$bootfs" [[ $CONTAINER_COMPAT == yes ]] && mknod -m0660 $LOOPp${bootpart} b 259 ${bootpart} > /dev/null mkfs.${mkfs[$bootfs]} ${mkopts[$bootfs]} ${LOOP}p${bootpart} - mkdir -p $CACHEDIR/$mount/boot/ - mount ${LOOP}p${bootpart} $CACHEDIR/$mount/boot/ - echo "UUID=$(blkid -s UUID -o value ${LOOP}p${bootpart}) /boot ${mkfs[$bootfs]} defaults${mountopts[$bootfs]} 0 2" >> $CACHEDIR/$sdcard/etc/fstab + mkdir -p $CACHEDIR/$MOUNT/boot/ + mount ${LOOP}p${bootpart} $CACHEDIR/$MOUNT/boot/ + echo "UUID=$(blkid -s UUID -o value ${LOOP}p${bootpart}) /boot ${mkfs[$bootfs]} defaults${mountopts[$bootfs]} 0 2" >> $CACHEDIR/$SDCARD/etc/fstab fi - [[ $ROOTFS_TYPE == nfs ]] && echo "/dev/nfs / nfs defaults 0 0" >> $CACHEDIR/$sdcard/etc/fstab - echo "tmpfs /tmp tmpfs defaults,nosuid 0 0" >> $CACHEDIR/$sdcard/etc/fstab + [[ $ROOTFS_TYPE == nfs ]] && echo "/dev/nfs / nfs defaults 0 0" >> $CACHEDIR/$SDCARD/etc/fstab + echo "tmpfs /tmp tmpfs defaults,nosuid 0 0" >> $CACHEDIR/$SDCARD/etc/fstab # stage: adjust boot script or boot environment - if [[ -f $CACHEDIR/$sdcard/boot/armbianEnv.txt ]]; then + if [[ -f $CACHEDIR/$SDCARD/boot/armbianEnv.txt ]]; then if [[ $HAS_UUID_SUPPORT == yes ]]; then - echo "rootdev=$rootfs" >> $CACHEDIR/$sdcard/boot/armbianEnv.txt + echo "rootdev=$rootfs" >> $CACHEDIR/$SDCARD/boot/armbianEnv.txt elif [[ $rootpart != 1 ]]; then - echo "rootdev=/dev/mmcblk0p${rootpart}" >> $CACHEDIR/$sdcard/boot/armbianEnv.txt + echo "rootdev=/dev/mmcblk0p${rootpart}" >> $CACHEDIR/$SDCARD/boot/armbianEnv.txt fi - echo "rootfstype=$ROOTFS_TYPE" >> $CACHEDIR/$sdcard/boot/armbianEnv.txt + echo "rootfstype=$ROOTFS_TYPE" >> $CACHEDIR/$SDCARD/boot/armbianEnv.txt elif [[ $rootpart != 1 ]]; then local bootscript_dst=${BOOTSCRIPT##*:} - sed -i 's/mmcblk0p1/mmcblk0p2/' $CACHEDIR/$sdcard/boot/$bootscript_dst + sed -i 's/mmcblk0p1/mmcblk0p2/' $CACHEDIR/$SDCARD/boot/$bootscript_dst sed -i -e "s/rootfstype=ext4/rootfstype=$ROOTFS_TYPE/" \ - -e "s/rootfstype \"ext4\"/rootfstype \"$ROOTFS_TYPE\"/" $CACHEDIR/$sdcard/boot/$bootscript_dst + -e "s/rootfstype \"ext4\"/rootfstype \"$ROOTFS_TYPE\"/" $CACHEDIR/$SDCARD/boot/$bootscript_dst fi # recompile .cmd to .scr if boot.cmd exists - [[ -f $CACHEDIR/$sdcard/boot/boot.cmd ]] && \ - mkimage -C none -A arm -T script -d $CACHEDIR/$sdcard/boot/boot.cmd $CACHEDIR/$sdcard/boot/boot.scr > /dev/null 2>&1 + [[ -f $CACHEDIR/$SDCARD/boot/boot.cmd ]] && \ + mkimage -C none -A arm -T script -d $CACHEDIR/$SDCARD/boot/boot.cmd $CACHEDIR/$SDCARD/boot/boot.scr > /dev/null 2>&1 } ############################################################################# @@ -440,23 +440,23 @@ create_image() [[ $ROOTFS_TYPE == nfs ]] && version=${version}_nfsboot if [[ $ROOTFS_TYPE != nfs ]]; then - display_alert "Copying files to image" "tmprootfs.raw" "info" + display_alert "Copying files to image" "${sdcard}.raw" "info" rsync -aHWXh --exclude="/boot/*" --exclude="/dev/*" --exclude="/proc/*" --exclude="/run/*" --exclude="/tmp/*" \ - --exclude="/sys/*" --info=progress2,stats1 $CACHEDIR/$sdcard/ $CACHEDIR/$mount/ + --exclude="/sys/*" --info=progress2,stats1 $CACHEDIR/$SDCARD/ $CACHEDIR/$MOUNT/ else display_alert "Creating rootfs archive" "rootfs.tgz" "info" - tar cp --xattrs --directory=$CACHEDIR/$sdcard/ --exclude='./boot/*' --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ - --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/$sdcard/ | cut -f1) -N "rootfs.tgz" | pigz > $DEST/images/${version}-rootfs.tgz + tar cp --xattrs --directory=$CACHEDIR/$SDCARD/ --exclude='./boot/*' --exclude='./dev/*' --exclude='./proc/*' --exclude='./run/*' --exclude='./tmp/*' \ + --exclude='./sys/*' . | pv -p -b -r -s $(du -sb $CACHEDIR/$SDCARD/ | cut -f1) -N "rootfs.tgz" | pigz > $DEST/images/${version}-rootfs.tgz fi # stage: rsync /boot - display_alert "Copying files to /boot partition" "tmprootfs.raw" "info" - if [[ $(findmnt --target $CACHEDIR/$mount/boot -o FSTYPE -n) == vfat ]]; then + display_alert "Copying files to /boot partition" "${sdcard}.raw" "info" + if [[ $(findmnt --target $CACHEDIR/$MOUNT/boot -o FSTYPE -n) == vfat ]]; then # fat32 - rsync -rLtWh --info=progress2,stats1 $CACHEDIR/$sdcard/boot $CACHEDIR/$mount + rsync -rLtWh --info=progress2,stats1 $CACHEDIR/$SDCARD/boot $CACHEDIR/$MOUNT else # ext4 - rsync -aHWXh --info=progress2,stats1 $CACHEDIR/$sdcard/boot $CACHEDIR/$mount + rsync -aHWXh --info=progress2,stats1 $CACHEDIR/$SDCARD/boot $CACHEDIR/$MOUNT fi # DEBUG: print free space @@ -468,19 +468,19 @@ create_image() # unmount /boot first, rootfs second, image file last sync - [[ $BOOTSIZE != 0 ]] && umount -l $CACHEDIR/$mount/boot - [[ $ROOTFS_TYPE != nfs ]] && umount -l $CACHEDIR/$mount + [[ $BOOTSIZE != 0 ]] && umount -l $CACHEDIR/$MOUNT/boot + [[ $ROOTFS_TYPE != nfs ]] && umount -l $CACHEDIR/$MOUNT losetup -d $LOOP if [[ $BUILD_ALL == yes ]]; then TEMP_DIR="$(mktemp -d $CACHEDIR/${version}.XXXXXX)" - cp $CACHEDIR/$sdcard/etc/armbian.txt "${TEMP_DIR}/" - mv "$CACHEDIR/tmprootfs.raw" "${TEMP_DIR}/${version}.img" + cp $CACHEDIR/$SDCARD/etc/armbian.txt "${TEMP_DIR}/" + mv "$CACHEDIR/${sdcard}.raw" "${TEMP_DIR}/${version}.img" cd "${TEMP_DIR}/" sign_and_compress & else - cp $CACHEDIR/$sdcard/etc/armbian.txt $CACHEDIR/ - mv $CACHEDIR/tmprootfs.raw $CACHEDIR/${version}.img + cp $CACHEDIR/$SDCARD/etc/armbian.txt $CACHEDIR/ + mv $CACHEDIR/${sdcard}.raw $CACHEDIR/${version}.img cd $CACHEDIR/ sign_and_compress fi @@ -559,12 +559,12 @@ umount_chroot() unmount_on_exit() { trap - INT TERM EXIT - umount_chroot "$CACHEDIR/$sdcard/" - umount -l $CACHEDIR/$sdcard/tmp >/dev/null 2>&1 - umount -l $CACHEDIR/$sdcard >/dev/null 2>&1 - umount -l $CACHEDIR/$mount/boot >/dev/null 2>&1 - umount -l $CACHEDIR/$mount >/dev/null 2>&1 + umount_chroot "$CACHEDIR/$SDCARD/" + umount -l $CACHEDIR/$SDCARD/tmp >/dev/null 2>&1 + umount -l $CACHEDIR/$SDCARD >/dev/null 2>&1 + umount -l $CACHEDIR/$MOUNT/boot >/dev/null 2>&1 + umount -l $CACHEDIR/$MOUNT >/dev/null 2>&1 losetup -d $LOOP >/dev/null 2>&1 - rm -rf $CACHEDIR/$sdcard + rm -rf $CACHEDIR/$SDCARD exit_with_error "debootstrap-ng was interrupted" } ############################################################################# diff --git a/desktop.sh b/desktop.sh index 672fea5343..13766013d7 100644 --- a/desktop.sh +++ b/desktop.sh @@ -13,64 +13,64 @@ install_desktop () { display_alert "Installing desktop" "XFCE" "info" - mkdir -p $CACHEDIR/$sdcard/tmp/bin - mount --bind $SRC/lib/bin/ $CACHEDIR/$sdcard/tmp/bin + mkdir -p $CACHEDIR/$SDCARD/tmp/bin + mount --bind $SRC/lib/bin/ $CACHEDIR/$SDCARD/tmp/bin # install default desktop settings - chroot $CACHEDIR/$sdcard /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /etc/skel/" - chroot $CACHEDIR/$sdcard /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /root/" + chroot $CACHEDIR/$SDCARD /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /etc/skel/" + chroot $CACHEDIR/$SDCARD /bin/bash -c "tar xfz /tmp/bin/$RELEASE-desktop.tgz -C /root/" # install wallpapers case $RELEASE in wheezy) - d=$CACHEDIR/$sdcard/usr/share/xfce4/backdrops/ + d=$CACHEDIR/$SDCARD/usr/share/xfce4/backdrops/ test -d "$d" || mkdir -p "$d" && cp $SRC/lib/bin/armbian*.jpg "$d" ;; jessie|xenial) - d=$CACHEDIR/$sdcard/usr/share/backgrounds/xfce/ + d=$CACHEDIR/$SDCARD/usr/share/backgrounds/xfce/ test -d "$d" || mkdir -p "$d" && cp $SRC/lib/bin/armbian*.jpg "$d" - mkdir -p $CACHEDIR/$sdcard/etc/polkit-1/localauthority/50-local.d - cp $SRC/lib/config/polkit-jessie/*.pkla $CACHEDIR/$sdcard/etc/polkit-1/localauthority/50-local.d/ + mkdir -p $CACHEDIR/$SDCARD/etc/polkit-1/localauthority/50-local.d + cp $SRC/lib/config/polkit-jessie/*.pkla $CACHEDIR/$SDCARD/etc/polkit-1/localauthority/50-local.d/ ;; trusty) - d=$CACHEDIR/$sdcard/usr/share/backgrounds/xfce/ + d=$CACHEDIR/$SDCARD/usr/share/backgrounds/xfce/ test -d "$d" || mkdir -p "$d" && cp $SRC/lib/bin/armbian*.jpg "$d" ;; esac # Install custom icons and theme - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/bin/vibrancy-colors_2.4-trusty-Noobslab.com_all.deb >/dev/null 2>&1" - chroot $CACHEDIR/$sdcard /bin/bash -c "unzip -qq /tmp/bin/NumixHolo.zip -d /usr/share/themes" + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/bin/vibrancy-colors_2.4-trusty-Noobslab.com_all.deb >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "unzip -qq /tmp/bin/NumixHolo.zip -d /usr/share/themes" # Enable network manager - if [[ -f ${CACHEDIR}/$sdcard/etc/NetworkManager/NetworkManager.conf ]]; then - sed "s/managed=\(.*\)/managed=true/g" -i $CACHEDIR/$sdcard/etc/NetworkManager/NetworkManager.conf + if [[ -f ${CACHEDIR}/$SDCARD/etc/NetworkManager/NetworkManager.conf ]]; then + sed "s/managed=\(.*\)/managed=true/g" -i $CACHEDIR/$SDCARD/etc/NetworkManager/NetworkManager.conf # Disable dns management withing NM - sed "s/\[main\]/\[main\]\ndns=none/g" -i $CACHEDIR/$sdcard/etc/NetworkManager/NetworkManager.conf - printf '[keyfile]\nunmanaged-devices=interface-name:p2p0\n' >> $CACHEDIR/$sdcard/etc/NetworkManager/NetworkManager.conf + sed "s/\[main\]/\[main\]\ndns=none/g" -i $CACHEDIR/$SDCARD/etc/NetworkManager/NetworkManager.conf + printf '[keyfile]\nunmanaged-devices=interface-name:p2p0\n' >> $CACHEDIR/$SDCARD/etc/NetworkManager/NetworkManager.conf fi # Disable Pulseaudio timer scheduling which does not work with sndhdmi driver - if [[ -f ${CACHEDIR}/$sdcard/etc/pulse/default.pa ]]; then - sed "s/load-module module-udev-detect$/& tsched=0/g" -i $CACHEDIR/$sdcard/etc/pulse/default.pa + if [[ -f ${CACHEDIR}/$SDCARD/etc/pulse/default.pa ]]; then + sed "s/load-module module-udev-detect$/& tsched=0/g" -i $CACHEDIR/$SDCARD/etc/pulse/default.pa fi # Disable desktop mode autostart for now to enforce creation of normal user account - sed "s/NODM_ENABLED=\(.*\)/NODM_ENABLED=false/g" -i $CACHEDIR/$sdcard/etc/default/nodm + sed "s/NODM_ENABLED=\(.*\)/NODM_ENABLED=false/g" -i $CACHEDIR/$SDCARD/etc/default/nodm # Compile Turbo Frame buffer for sunxi if [[ $LINUXFAMILY == sun* && $BRANCH == default ]]; then if [[ $RELEASE == jessie || $RELEASE == xenial ]]; then # Disable compositing by default - sed 's/name="use_compositing" type="bool" value="true"/name="use_compositing" type="bool" value="false"/' -i $CACHEDIR/$sdcard/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml - sed 's/name="use_compositing" type="bool" value="true"/name="use_compositing" type="bool" value="false"/' -i $CACHEDIR/$sdcard/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml + sed 's/name="use_compositing" type="bool" value="true"/name="use_compositing" type="bool" value="false"/' -i $CACHEDIR/$SDCARD/etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml + sed 's/name="use_compositing" type="bool" value="true"/name="use_compositing" type="bool" value="false"/' -i $CACHEDIR/$SDCARD/root/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml fi # Set default audio-output to HDMI for desktop-images - cat <<-EOF >> $CACHEDIR/$sdcard/etc/asound.conf + cat <<-EOF >> $CACHEDIR/$SDCARD/etc/asound.conf pcm.!default { type hw card 1 @@ -83,12 +83,12 @@ install_desktop () EOF # enable memory reservations - if [[ -f $CACHEDIR/$sdcard/boot/armbianEnv.txt ]]; then - echo "disp_mem_reserves=on" >> $CACHEDIR/$sdcard/boot/armbianEnv.txt + if [[ -f $CACHEDIR/$SDCARD/boot/armbianEnv.txt ]]; then + echo "disp_mem_reserves=on" >> $CACHEDIR/$SDCARD/boot/armbianEnv.txt else - sed "s/sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16 //g" -i $CACHEDIR/$sdcard/boot/boot.cmd + sed "s/sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16 //g" -i $CACHEDIR/$SDCARD/boot/boot.cmd fi fi - umount $CACHEDIR/$sdcard/tmp/bin && rm -rf $CACHEDIR/$sdcard/tmp/bin + umount $CACHEDIR/$SDCARD/tmp/bin && rm -rf $CACHEDIR/$SDCARD/tmp/bin } diff --git a/distributions.sh b/distributions.sh index d69770113f..d14b5397e8 100644 --- a/distributions.sh +++ b/distributions.sh @@ -17,94 +17,94 @@ install_common() display_alert "Applying common tweaks" "" "info" # add dummy fstab entry to make mkinitramfs happy - echo "/dev/mmcblk0p1 / $ROOTFS_TYPE defaults 0 1" >> $CACHEDIR/$sdcard/etc/fstab + echo "/dev/mmcblk0p1 / $ROOTFS_TYPE defaults 0 1" >> $CACHEDIR/$SDCARD/etc/fstab # create modules file if [[ $BRANCH == dev && -n $MODULES_DEV ]]; then - tr ' ' '\n' <<< "$MODULES_DEV" > $CACHEDIR/$sdcard/etc/modules + tr ' ' '\n' <<< "$MODULES_DEV" > $CACHEDIR/$SDCARD/etc/modules elif [[ $BRANCH == next || $BRANCH == dev ]]; then - tr ' ' '\n' <<< "$MODULES_NEXT" > $CACHEDIR/$sdcard/etc/modules + tr ' ' '\n' <<< "$MODULES_NEXT" > $CACHEDIR/$SDCARD/etc/modules else - tr ' ' '\n' <<< "$MODULES" > $CACHEDIR/$sdcard/etc/modules + tr ' ' '\n' <<< "$MODULES" > $CACHEDIR/$SDCARD/etc/modules fi # create blacklist files if [[ $BRANCH == dev && -n $MODULES_BLACKLIST_DEV ]]; then - tr ' ' '\n' <<< "$MODULES_BLACKLIST_DEV" | sed -e 's/^/blacklist /' > $CACHEDIR/$sdcard/etc/modprobe.d/${BOARD}.conf + tr ' ' '\n' <<< "$MODULES_BLACKLIST_DEV" | sed -e 's/^/blacklist /' > $CACHEDIR/$SDCARD/etc/modprobe.d/${BOARD}.conf elif [[ ($BRANCH == next || $BRANCH == dev) && -n $MODULES_BLACKLIST_NEXT ]]; then - tr ' ' '\n' <<< "$MODULES_BLACKLIST_NEXT" | sed -e 's/^/blacklist /' > $CACHEDIR/$sdcard/etc/modprobe.d/${BOARD}.conf + tr ' ' '\n' <<< "$MODULES_BLACKLIST_NEXT" | sed -e 's/^/blacklist /' > $CACHEDIR/$SDCARD/etc/modprobe.d/${BOARD}.conf elif [[ $BRANCH == default && -n $MODULES_BLACKLIST ]]; then - tr ' ' '\n' <<< "$MODULES_BLACKLIST" | sed -e 's/^/blacklist /' > $CACHEDIR/$sdcard/etc/modprobe.d/${BOARD}.conf + tr ' ' '\n' <<< "$MODULES_BLACKLIST" | sed -e 's/^/blacklist /' > $CACHEDIR/$SDCARD/etc/modprobe.d/${BOARD}.conf fi # remove default interfaces file if present # before installing board support package - rm -f $CACHEDIR/$sdcard/etc/network/interfaces + rm -f $CACHEDIR/$SDCARD/etc/network/interfaces - mkdir -p $CACHEDIR/$sdcard/selinux + mkdir -p $CACHEDIR/$SDCARD/selinux # console fix due to Debian bug - sed -e 's/CHARMAP=".*"/CHARMAP="'$CONSOLE_CHAR'"/g' -i $CACHEDIR/$sdcard/etc/default/console-setup + sed -e 's/CHARMAP=".*"/CHARMAP="'$CONSOLE_CHAR'"/g' -i $CACHEDIR/$SDCARD/etc/default/console-setup # change time zone data - echo $TZDATA > $CACHEDIR/$sdcard/etc/timezone - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg-reconfigure -f noninteractive tzdata >/dev/null 2>&1" + echo $TZDATA > $CACHEDIR/$SDCARD/etc/timezone + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg-reconfigure -f noninteractive tzdata >/dev/null 2>&1" # set root password - chroot $CACHEDIR/$sdcard /bin/bash -c "(echo $ROOTPWD;echo $ROOTPWD;) | passwd root >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "(echo $ROOTPWD;echo $ROOTPWD;) | passwd root >/dev/null 2>&1" # force change root password at first login - chroot $CACHEDIR/$sdcard /bin/bash -c "chage -d 0 root" + chroot $CACHEDIR/$SDCARD /bin/bash -c "chage -d 0 root" # tmpfs configuration # Takes effect only in Wheezy and Trusty - if [[ -f $CACHEDIR/$sdcard/etc/default/tmpfs ]]; then - sed -e 's/#RAMTMP=no/RAMTMP=yes/g' -i $CACHEDIR/$sdcard/etc/default/tmpfs - sed -e 's/#RUN_SIZE=10%/RUN_SIZE=128M/g' -i $CACHEDIR/$sdcard/etc/default/tmpfs - sed -e 's/#LOCK_SIZE=/LOCK_SIZE=/g' -i $CACHEDIR/$sdcard/etc/default/tmpfs - sed -e 's/#SHM_SIZE=/SHM_SIZE=128M/g' -i $CACHEDIR/$sdcard/etc/default/tmpfs - sed -e 's/#TMP_SIZE=/TMP_SIZE=1G/g' -i $CACHEDIR/$sdcard/etc/default/tmpfs + if [[ -f $CACHEDIR/$SDCARD/etc/default/tmpfs ]]; then + sed -e 's/#RAMTMP=no/RAMTMP=yes/g' -i $CACHEDIR/$SDCARD/etc/default/tmpfs + sed -e 's/#RUN_SIZE=10%/RUN_SIZE=128M/g' -i $CACHEDIR/$SDCARD/etc/default/tmpfs + sed -e 's/#LOCK_SIZE=/LOCK_SIZE=/g' -i $CACHEDIR/$SDCARD/etc/default/tmpfs + sed -e 's/#SHM_SIZE=/SHM_SIZE=128M/g' -i $CACHEDIR/$SDCARD/etc/default/tmpfs + sed -e 's/#TMP_SIZE=/TMP_SIZE=1G/g' -i $CACHEDIR/$SDCARD/etc/default/tmpfs fi # add custom bashrc loading - cat <<-EOF >> $CACHEDIR/$sdcard/etc/bash.bashrc + cat <<-EOF >> $CACHEDIR/$SDCARD/etc/bash.bashrc if [[ -f /etc/bash.bashrc.custom ]]; then . /etc/bash.bashrc.custom fi EOF # display welcome message at first root login - touch $CACHEDIR/$sdcard/root/.not_logged_in_yet + touch $CACHEDIR/$SDCARD/root/.not_logged_in_yet # NOTE: this needs to be executed before family_tweaks local bootscript_src=${BOOTSCRIPT%%:*} local bootscript_dst=${BOOTSCRIPT##*:} - cp $SRC/lib/config/bootscripts/$bootscript_src $CACHEDIR/$sdcard/boot/$bootscript_dst + cp $SRC/lib/config/bootscripts/$bootscript_src $CACHEDIR/$SDCARD/boot/$bootscript_dst [[ -n $BOOTENV_FILE && -f $SRC/lib/config/bootenv/$BOOTENV_FILE ]] && \ - cp $SRC/lib/config/bootenv/$BOOTENV_FILE $CACHEDIR/$sdcard/boot/armbianEnv.txt + cp $SRC/lib/config/bootenv/$BOOTENV_FILE $CACHEDIR/$SDCARD/boot/armbianEnv.txt # TODO: modify $bootscript_dst or armbianEnv.txt to make NFS boot universal # instead of copying sunxi-specific template if [[ $ROOTFS_TYPE == nfs ]]; then display_alert "Copying NFS boot script template" if [[ -f $SRC/userpatches/nfs-boot.cmd ]]; then - cp $SRC/userpatches/nfs-boot.cmd $CACHEDIR/$sdcard/boot/boot.cmd + cp $SRC/userpatches/nfs-boot.cmd $CACHEDIR/$SDCARD/boot/boot.cmd else - cp $SRC/lib/scripts/nfs-boot.cmd.template $CACHEDIR/$sdcard/boot/boot.cmd + cp $SRC/lib/scripts/nfs-boot.cmd.template $CACHEDIR/$SDCARD/boot/boot.cmd fi fi # initial date for fake-hwclock - date -u '+%Y-%m-%d %H:%M:%S' > $CACHEDIR/$sdcard/etc/fake-hwclock.data + date -u '+%Y-%m-%d %H:%M:%S' > $CACHEDIR/$SDCARD/etc/fake-hwclock.data - echo $HOST > $CACHEDIR/$sdcard/etc/hostname + echo $HOST > $CACHEDIR/$SDCARD/etc/hostname # this is needed for ubuntu - rm $CACHEDIR/$sdcard/etc/resolv.conf - echo "nameserver 8.8.8.8" >> $CACHEDIR/$sdcard/etc/resolv.conf + rm $CACHEDIR/$SDCARD/etc/resolv.conf + echo "nameserver 8.8.8.8" >> $CACHEDIR/$SDCARD/etc/resolv.conf # set hostname in hosts file - cat <<-EOF > $CACHEDIR/$sdcard/etc/hosts + cat <<-EOF > $CACHEDIR/$SDCARD/etc/hosts 127.0.0.1 localhost $HOST ::1 localhost $HOST ip6-localhost ip6-loopback fe00::0 ip6-localnet @@ -114,51 +114,51 @@ install_common() EOF display_alert "Installing kernel" "$CHOSEN_KERNEL" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 display_alert "Installing u-boot" "$CHOSEN_UBOOT" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "DEVICE=/dev/null dpkg -i /tmp/debs/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "DEVICE=/dev/null dpkg -i /tmp/debs/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 display_alert "Installing headers" "${CHOSEN_KERNEL/image/headers}" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/headers}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 # install firmware - #if [[ -f $CACHEDIR/$sdcard/tmp/debs/${CHOSEN_KERNEL/image/firmware-image}_${REVISION}_${ARCH}.deb ]]; then + #if [[ -f $CACHEDIR/$SDCARD/tmp/debs/${CHOSEN_KERNEL/image/firmware-image}_${REVISION}_${ARCH}.deb ]]; then # display_alert "Installing firmware" "${CHOSEN_KERNEL/image/firmware-image}" "info" - # chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/firmware-image}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + # chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/firmware-image}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 #fi - if [[ -f $CACHEDIR/$sdcard/tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb ]]; then + if [[ -f $CACHEDIR/$SDCARD/tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb ]]; then display_alert "Installing generic firmware" "armbian-firmware" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 fi - if [[ -f $CACHEDIR/$sdcard/tmp/debs/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then + if [[ -f $CACHEDIR/$SDCARD/tmp/debs/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then display_alert "Installing DTB" "${CHOSEN_KERNEL/image/dtb}" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 fi # install board support package display_alert "Installing board support package" "$BOARD" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1 # copy boot splash image - cp $SRC/lib/bin/armbian.bmp $CACHEDIR/$sdcard/boot/boot.bmp + cp $SRC/lib/bin/armbian.bmp $CACHEDIR/$SDCARD/boot/boot.bmp # execute $LINUXFAMILY-specific tweaks from $BOARD.conf [[ $(type -t family_tweaks) == function ]] && family_tweaks # enable firstrun script - chroot $CACHEDIR/$sdcard /bin/bash -c "update-rc.d firstrun defaults >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "update-rc.d firstrun defaults >/dev/null 2>&1" # remove .old on new image - rm -rf $CACHEDIR/$sdcard/boot/dtb.old + rm -rf $CACHEDIR/$SDCARD/boot/dtb.old # enable verbose kernel messages on first boot - touch $CACHEDIR/$sdcard/boot/.verbose + touch $CACHEDIR/$SDCARD/boot/.verbose # copy "first run automated config, optional user configured" - cp $SRC/lib/config/armbian_first_run.txt $CACHEDIR/$sdcard/boot/armbian_first_run.txt + cp $SRC/lib/config/armbian_first_run.txt $CACHEDIR/$SDCARD/boot/armbian_first_run.txt } install_distribution_specific() @@ -169,53 +169,53 @@ install_distribution_specific() wheezy) # add serial console - echo T0:2345:respawn:/sbin/getty -L $SERIALCON 115200 vt100 >> $CACHEDIR/$sdcard/etc/inittab + echo T0:2345:respawn:/sbin/getty -L $SERIALCON 115200 vt100 >> $CACHEDIR/$SDCARD/etc/inittab # don't clear screen on boot console - sed -e 's/getty 38400 tty1/getty --noclear 38400 tty1/g' -i $CACHEDIR/$sdcard/etc/inittab + sed -e 's/getty 38400 tty1/getty --noclear 38400 tty1/g' -i $CACHEDIR/$SDCARD/etc/inittab # disable some getties - sed -e 's/5:23:respawn/#5:23:respawn/g' -i $CACHEDIR/$sdcard/etc/inittab - sed -e 's/6:23:respawn/#6:23:respawn/g' -i $CACHEDIR/$sdcard/etc/inittab + sed -e 's/5:23:respawn/#5:23:respawn/g' -i $CACHEDIR/$SDCARD/etc/inittab + sed -e 's/6:23:respawn/#6:23:respawn/g' -i $CACHEDIR/$SDCARD/etc/inittab # install ramlog - cp $SRC/lib/bin/ramlog_2.0.0_all.deb $CACHEDIR/$sdcard/tmp - chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/ramlog_2.0.0_all.deb >/dev/null 2>&1" + cp $SRC/lib/bin/ramlog_2.0.0_all.deb $CACHEDIR/$SDCARD/tmp + chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/ramlog_2.0.0_all.deb >/dev/null 2>&1" # enabled back at first run. To remove errors - chroot $CACHEDIR/$sdcard /bin/bash -c "service ramlog disable >/dev/null 2>&1" - rm $CACHEDIR/$sdcard/tmp/ramlog_2.0.0_all.deb - sed -e 's/TMPFS_RAMFS_SIZE=/TMPFS_RAMFS_SIZE=512m/g' -i $CACHEDIR/$sdcard/etc/default/ramlog - sed -e 's/$remote_fs $time/$remote_fs $time ramlog/g' -i $CACHEDIR/$sdcard/etc/init.d/rsyslog - sed -e 's/umountnfs $time/umountnfs $time ramlog/g' -i $CACHEDIR/$sdcard/etc/init.d/rsyslog + chroot $CACHEDIR/$SDCARD /bin/bash -c "service ramlog disable >/dev/null 2>&1" + rm $CACHEDIR/$SDCARD/tmp/ramlog_2.0.0_all.deb + sed -e 's/TMPFS_RAMFS_SIZE=/TMPFS_RAMFS_SIZE=512m/g' -i $CACHEDIR/$SDCARD/etc/default/ramlog + sed -e 's/$remote_fs $time/$remote_fs $time ramlog/g' -i $CACHEDIR/$SDCARD/etc/init.d/rsyslog + sed -e 's/umountnfs $time/umountnfs $time ramlog/g' -i $CACHEDIR/$SDCARD/etc/init.d/rsyslog ;; jessie) # enable root login for latest ssh on jessie - sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/$sdcard/etc/ssh/sshd_config + sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/$SDCARD/etc/ssh/sshd_config # add serial console - #cp $SRC/lib/config/ttyS0.conf $CACHEDIR/$sdcard/etc/init/$SERIALCON.conf - #sed -e "s/ttyS0/$SERIALCON/g" -i $CACHEDIR/$sdcard/etc/init/$SERIALCON.conf - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1" - mkdir -p "$CACHEDIR/$sdcard/etc/systemd/system/serial-getty@$SERIALCON.service.d" - printf "[Service]\nExecStart=\nExecStart=-/sbin/agetty -L 115200 %%I $TERM" > "$CACHEDIR/$sdcard/etc/systemd/system/serial-getty@$SERIALCON.service.d/10-rate.conf" + #cp $SRC/lib/config/ttyS0.conf $CACHEDIR/$SDCARD/etc/init/$SERIALCON.conf + #sed -e "s/ttyS0/$SERIALCON/g" -i $CACHEDIR/$SDCARD/etc/init/$SERIALCON.conf + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1" + mkdir -p "$CACHEDIR/$SDCARD/etc/systemd/system/serial-getty@$SERIALCON.service.d" + printf "[Service]\nExecStart=\nExecStart=-/sbin/agetty -L 115200 %%I $TERM" > "$CACHEDIR/$SDCARD/etc/systemd/system/serial-getty@$SERIALCON.service.d/10-rate.conf" # don't clear screen tty1 - mkdir -p "$CACHEDIR/$sdcard/etc/systemd/system/getty@tty1.service.d/" - printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/$sdcard/etc/systemd/system/getty@tty1.service.d/10-noclear.conf" + mkdir -p "$CACHEDIR/$SDCARD/etc/systemd/system/getty@tty1.service.d/" + printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/$SDCARD/etc/systemd/system/getty@tty1.service.d/10-noclear.conf" # seting timeout - mkdir -p $CACHEDIR/$sdcard/etc/systemd/system/systemd-modules-load.service.d/ - printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/$sdcard/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf + mkdir -p $CACHEDIR/$SDCARD/etc/systemd/system/systemd-modules-load.service.d/ + printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/$SDCARD/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf # handle PMU power button - mkdir -p $CACHEDIR/$sdcard/etc/udev/rules.d/ - cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/$sdcard/etc/udev/rules.d/ + mkdir -p $CACHEDIR/$SDCARD/etc/udev/rules.d/ + cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/$SDCARD/etc/udev/rules.d/ ;; trusty) # add serial console - cat <<-EOF > $CACHEDIR/$sdcard/etc/init/$SERIALCON.conf + cat <<-EOF > $CACHEDIR/$SDCARD/etc/init/$SERIALCON.conf start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] @@ -224,66 +224,66 @@ install_distribution_specific() EOF # don't clear screen tty1 - sed -e s,"exec /sbin/getty","exec /sbin/getty --noclear",g -i $CACHEDIR/$sdcard/etc/init/tty1.conf + sed -e s,"exec /sbin/getty","exec /sbin/getty --noclear",g -i $CACHEDIR/$SDCARD/etc/init/tty1.conf # disable some getties - rm -f $CACHEDIR/$sdcard/etc/init/tty5.conf - rm -f $CACHEDIR/$sdcard/etc/init/tty6.conf + rm -f $CACHEDIR/$SDCARD/etc/init/tty5.conf + rm -f $CACHEDIR/$SDCARD/etc/init/tty6.conf # enable root login for latest ssh on trusty - sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/$sdcard/etc/ssh/sshd_config + sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/$SDCARD/etc/ssh/sshd_config # remove legal info from Ubuntu - [[ -f $CACHEDIR/$sdcard/etc/legal ]] && rm $CACHEDIR/$sdcard/etc/legal + [[ -f $CACHEDIR/$SDCARD/etc/legal ]] && rm $CACHEDIR/$SDCARD/etc/legal # that my custom motd works well - if [[ -d $CACHEDIR/$sdcard/etc/update-motd.d ]]; then - mv $CACHEDIR/$sdcard/etc/update-motd.d $CACHEDIR/$sdcard/etc/update-motd.d-backup + if [[ -d $CACHEDIR/$SDCARD/etc/update-motd.d ]]; then + mv $CACHEDIR/$SDCARD/etc/update-motd.d $CACHEDIR/$SDCARD/etc/update-motd.d-backup fi # remove what's anyway not working - #chroot $CACHEDIR/$sdcard /bin/bash -c "apt-get remove --auto-remove ureadahead" - rm $CACHEDIR/$sdcard/etc/init/ureadahead* - rm $CACHEDIR/$sdcard/etc/init/plymouth* + #chroot $CACHEDIR/$SDCARD /bin/bash -c "apt-get remove --auto-remove ureadahead" + rm $CACHEDIR/$SDCARD/etc/init/ureadahead* + rm $CACHEDIR/$SDCARD/etc/init/plymouth* ;; xenial) # enable root login for latest ssh on jessie - sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' $CACHEDIR/$sdcard/etc/ssh/sshd_config + sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' $CACHEDIR/$SDCARD/etc/ssh/sshd_config # remove legal info from Ubuntu - [[ -f $CACHEDIR/$sdcard/etc/legal ]] && rm $CACHEDIR/$sdcard/etc/legal + [[ -f $CACHEDIR/$SDCARD/etc/legal ]] && rm $CACHEDIR/$SDCARD/etc/legal - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1" # Fix for PuTTY/KiTTY & ncurses-based dialogs (i.e. alsamixer) over serial # may break other terminals like screen #printf "[Service]\nEnvironment=TERM=xterm-256color" > /etc/systemd/system/serial-getty@.service.d/10-term.conf # don't clear screen tty1 - mkdir -p "$CACHEDIR/$sdcard/etc/systemd/system/getty@tty1.service.d/" - printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/$sdcard/etc/systemd/system/getty@tty1.service.d/10-noclear.conf" + mkdir -p "$CACHEDIR/$SDCARD/etc/systemd/system/getty@tty1.service.d/" + printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/$SDCARD/etc/systemd/system/getty@tty1.service.d/10-noclear.conf" # seting timeout - mkdir -p $CACHEDIR/$sdcard/etc/systemd/system/systemd-modules-load.service.d/ - printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/$sdcard/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf + mkdir -p $CACHEDIR/$SDCARD/etc/systemd/system/systemd-modules-load.service.d/ + printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/$SDCARD/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf # Fix for haveged service - mkdir -p -m755 $CACHEDIR/$sdcard/etc/systemd/system/haveged.service.d - cat <<-EOF > $CACHEDIR/$sdcard/etc/systemd/system/haveged.service.d/10-no-new-privileges.conf + mkdir -p -m755 $CACHEDIR/$SDCARD/etc/systemd/system/haveged.service.d + cat <<-EOF > $CACHEDIR/$SDCARD/etc/systemd/system/haveged.service.d/10-no-new-privileges.conf [Service] NoNewPrivileges=false EOF # handle PMU power button - mkdir -p $CACHEDIR/$sdcard/etc/udev/rules.d/ - cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/$sdcard/etc/udev/rules.d/ + mkdir -p $CACHEDIR/$SDCARD/etc/udev/rules.d/ + cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/$SDCARD/etc/udev/rules.d/ # disable not working on unneeded services # ureadahead needs kernel tracing options that AFAIK are present only in mainline - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload mask ureadahead.service >/dev/null 2>&1" - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload mask setserial.service etc-setserial.service >/dev/null 2>&1" - chroot $CACHEDIR/$sdcard /bin/bash -c "systemctl --no-reload mask ondemand.service >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload mask ureadahead.service >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload mask setserial.service etc-setserial.service >/dev/null 2>&1" + chroot $CACHEDIR/$SDCARD /bin/bash -c "systemctl --no-reload mask ondemand.service >/dev/null 2>&1" ;; esac } diff --git a/extras/firmware.sh b/extras/firmware.sh index b8f4897131..e730a129a0 100644 --- a/extras/firmware.sh +++ b/extras/firmware.sh @@ -57,4 +57,4 @@ REPLACE="" # install basic firmware by default display_alert "Installing linux firmware" "$REVISION" "info" -chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log +chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log diff --git a/extras/mt7601.sh b/extras/mt7601.sh index 8c86383216..5a672781e2 100644 --- a/extras/mt7601.sh +++ b/extras/mt7601.sh @@ -65,14 +65,14 @@ install_mt7601() cd src make -s ARCH=$ARCHITECTURE CROSS_COMPILE="$CCACHE $KERNEL_COMPILER" clean >> $DEST/debug/compilation.log 2>&1 make -s -j4 ARCH=$ARCHITECTURE CROSS_COMPILE="$CCACHE $KERNEL_COMPILER" LINUX_SRC=$SOURCES/$LINUXSOURCEDIR/ >> $DEST/debug/compilation.log 2>&1 - cp os/linux/*.ko $CACHEDIR/$sdcard/lib/modules/$VER-$LINUXFAMILY/kernel/net/wireless/ - mkdir -p $CACHEDIR/$sdcard/etc/Wireless/RT2870STA - cp RT2870STA.dat $CACHEDIR/$sdcard/etc/Wireless/RT2870STA/ - depmod -b $CACHEDIR/$sdcard/ $VER-$LINUXFAMILY + cp os/linux/*.ko $CACHEDIR/$SDCARD/lib/modules/$VER-$LINUXFAMILY/kernel/net/wireless/ + mkdir -p $CACHEDIR/$SDCARD/etc/Wireless/RT2870STA + cp RT2870STA.dat $CACHEDIR/$SDCARD/etc/Wireless/RT2870STA/ + depmod -b $CACHEDIR/$SDCARD/ $VER-$LINUXFAMILY make -s clean >/dev/null cd .. - mkdir -p $CACHEDIR/$sdcard/usr/src/ - cp -R src $CACHEDIR/$sdcard/usr/src/mt7601-3.0.0.4 + mkdir -p $CACHEDIR/$SDCARD/usr/src/ + cp -R src $CACHEDIR/$SDCARD/usr/src/mt7601-3.0.0.4 # TODO: Set the module to build automatically via dkms in the future here } diff --git a/extras/rtl8192cu.sh b/extras/rtl8192cu.sh index 8342906eb4..689d1d9efb 100644 --- a/extras/rtl8192cu.sh +++ b/extras/rtl8192cu.sh @@ -52,9 +52,9 @@ install_rtl8192cu() # GCC5 compatibility patch end make ARCH=$ARCHITECTURE CROSS_COMPILE=$KERNEL_COMPILER KSRC=$SOURCES/$LINUXSOURCEDIR/ >> $DEST/debug/compilation.log - cp *.ko $CACHEDIR/$sdcard/lib/modules/$VER-$LINUXFAMILY/kernel/net/wireless/ - depmod -b $CACHEDIR/$sdcard/ $VER-$LINUXFAMILY - #cp blacklist*.conf $CACHEDIR/$sdcard/etc/modprobe.d/ + cp *.ko $CACHEDIR/$SDCARD/lib/modules/$VER-$LINUXFAMILY/kernel/net/wireless/ + depmod -b $CACHEDIR/$SDCARD/ $VER-$LINUXFAMILY + #cp blacklist*.conf $CACHEDIR/$SDCARD/etc/modprobe.d/ } if [[ $BRANCH == default && $ARCHITECTURE == arm ]]; then diff --git a/extras/tools.sh b/extras/tools.sh index 281ba99992..db5fc76524 100644 --- a/extras/tools.sh +++ b/extras/tools.sh @@ -11,7 +11,7 @@ compile_tools() { - local tmpdir=$CACHEDIR/$sdcard/root/tools + local tmpdir=$CACHEDIR/$SDCARD/root/tools display_alert "Building deb" "armbian-tools" "info" @@ -66,8 +66,8 @@ compile_tools() compiling() { display_alert "... compiling" "temper" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "cd /root/tools/temper/src; make clean" >> $DEST/debug/tools-build.log 2>&1 - chroot $CACHEDIR/$sdcard /bin/bash -c "cd /root/tools/temper/src; make $CTHREADS" >> $DEST/debug/tools-build.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "cd /root/tools/temper/src; make clean" >> $DEST/debug/tools-build.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "cd /root/tools/temper/src; make $CTHREADS" >> $DEST/debug/tools-build.log 2>&1 if [[ $? -ne 0 || ! -f $tmpdir/temper/src/pcsensor ]]; then cd $CACHEDIR rm -rf $tmpdir @@ -75,7 +75,7 @@ compile_tools() return fi display_alert "... compiling" "bluetooth utils" "info" - chroot $CACHEDIR/$sdcard /bin/bash -c "cd /root/tools/brcm; make $CTHREADS" >> $DEST/debug/tools-build.log 2>&1 + chroot $CACHEDIR/$SDCARD /bin/bash -c "cd /root/tools/brcm; make $CTHREADS" >> $DEST/debug/tools-build.log 2>&1 if [[ $? -ne 0 || ! -f $tmpdir/brcm/brcm_bt_reset ]]; then cd $CACHEDIR rm -rf $tmpdir @@ -93,4 +93,4 @@ if [[ ! -f $DEST/debs/armbian-tools-${RELEASE}_${REVISION}_${ARCH}.deb ]]; then fi display_alert "Installing" "armbian-tools-${RELEASE}_${REVISION}_${ARCH}.deb" "info" -chroot $CACHEDIR/$sdcard /bin/bash -c "dpkg -i /tmp/debs/armbian-tools-${RELEASE}_${REVISION}_${ARCH}.deb" >> $DEST/debug/tools-build.log +chroot $CACHEDIR/$SDCARD /bin/bash -c "dpkg -i /tmp/debs/armbian-tools-${RELEASE}_${REVISION}_${ARCH}.deb" >> $DEST/debug/tools-build.log diff --git a/extras/usb-redirector.sh b/extras/usb-redirector.sh index c6eab02938..7fe79f31e8 100644 --- a/extras/usb-redirector.sh +++ b/extras/usb-redirector.sh @@ -39,11 +39,11 @@ install_usb_redirector() sed -e 's/%DAEMONNAME_TAG%/usbsrvd/g' $SOURCES/usb-redirector-linux-arm-eabi/files/rc.usbsrvd1 > $SOURCES/usb-redirector-linux-arm-eabi/files/rc.usbsrvd chmod +x $SOURCES/usb-redirector-linux-arm-eabi/files/rc.usbsrvd # copy to root - cp $SOURCES/usb-redirector-linux-arm-eabi/files/usb* $CACHEDIR/$sdcard/usr/local/bin/ - cp $SOURCES/usb-redirector-linux-arm-eabi/files/modules/src/tusbd/tusbd.ko $CACHEDIR/$sdcard/usr/local/bin/ - cp $SOURCES/usb-redirector-linux-arm-eabi/files/rc.usbsrvd $CACHEDIR/$sdcard/etc/init.d/ + cp $SOURCES/usb-redirector-linux-arm-eabi/files/usb* $CACHEDIR/$SDCARD/usr/local/bin/ + cp $SOURCES/usb-redirector-linux-arm-eabi/files/modules/src/tusbd/tusbd.ko $CACHEDIR/$SDCARD/usr/local/bin/ + cp $SOURCES/usb-redirector-linux-arm-eabi/files/rc.usbsrvd $CACHEDIR/$SDCARD/etc/init.d/ # not started by default ----- update.rc rc.usbsrvd defaults - # chroot $CACHEDIR/$sdcard /bin/bash -c "update-rc.d rc.usbsrvd defaults + # chroot $CACHEDIR/$SDCARD /bin/bash -c "update-rc.d rc.usbsrvd defaults } display_alert "Installing additional application" "USB redirector" "info" diff --git a/main.sh b/main.sh index 694274bff6..f637da8931 100644 --- a/main.sh +++ b/main.sh @@ -214,7 +214,7 @@ overlayfs_wrapper "cleanup" VER=$(dpkg --info $DEST/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb | grep Descr | awk '{print $(NF)}') VER="${VER/-$LINUXFAMILY/}" -[[ -n $RELEASE ]] && create_board_package +[[ -n $RELEASE && ! -f $DEST/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb && ! -d $DEST/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH} ]] && create_board_package # chroot-buildpackages [[ $EXTERNAL_NEW == compile ]] && chroot_build_packages @@ -230,3 +230,4 @@ fi end=`date +%s` runtime=$(((end-start)/60)) display_alert "Runtime" "$runtime min" "info" +rm -f "/run/armbian/Armbian_${BOARD^}_${BRANCH}_${RELEASE}_$BUILD_DESKTOP.pid" \ No newline at end of file diff --git a/patch/kernel/marvell-dev/patch-4.4.32-33.patch b/patch/kernel/marvell-dev/patch-4.4.32-33.patch new file mode 100644 index 0000000000..4a02c8081b --- /dev/null +++ b/patch/kernel/marvell-dev/patch-4.4.32-33.patch @@ -0,0 +1,1230 @@ +diff --git a/Makefile b/Makefile +index fba9b09a1330..a513c045c8de 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,6 @@ + VERSION = 4 + PATCHLEVEL = 4 +-SUBLEVEL = 32 ++SUBLEVEL = 33 + EXTRAVERSION = + NAME = Blurry Fish Butt + +diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c +index dfad287f1db1..dbedc576e4ca 100644 +--- a/arch/arc/kernel/time.c ++++ b/arch/arc/kernel/time.c +@@ -130,14 +130,17 @@ static cycle_t arc_counter_read(struct clocksource *cs) + cycle_t full; + } stamp; + +- +- __asm__ __volatile( +- "1: \n" +- " lr %0, [AUX_RTC_LOW] \n" +- " lr %1, [AUX_RTC_HIGH] \n" +- " lr %2, [AUX_RTC_CTRL] \n" +- " bbit0.nt %2, 31, 1b \n" +- : "=r" (stamp.low), "=r" (stamp.high), "=r" (status)); ++ /* ++ * hardware has an internal state machine which tracks readout of ++ * low/high and updates the CTRL.status if ++ * - interrupt/exception taken between the two reads ++ * - high increments after low has been read ++ */ ++ do { ++ stamp.low = read_aux_reg(AUX_RTC_LOW); ++ stamp.high = read_aux_reg(AUX_RTC_HIGH); ++ status = read_aux_reg(AUX_RTC_CTRL); ++ } while (!(status & _BITUL(31))); + + return stamp.full; + } +diff --git a/arch/mips/include/asm/kvm_host.h b/arch/mips/include/asm/kvm_host.h +index dd7cee795709..c8c04a1f1c9f 100644 +--- a/arch/mips/include/asm/kvm_host.h ++++ b/arch/mips/include/asm/kvm_host.h +@@ -400,7 +400,10 @@ struct kvm_vcpu_arch { + /* Host KSEG0 address of the EI/DI offset */ + void *kseg0_commpage; + +- u32 io_gpr; /* GPR used as IO source/target */ ++ /* Resume PC after MMIO completion */ ++ unsigned long io_pc; ++ /* GPR used as IO source/target */ ++ u32 io_gpr; + + struct hrtimer comparecount_timer; + /* Count timer control KVM register */ +@@ -422,8 +425,6 @@ struct kvm_vcpu_arch { + /* Bitmask of pending exceptions to be cleared */ + unsigned long pending_exceptions_clr; + +- unsigned long pending_load_cause; +- + /* Save/Restore the entryhi register when are are preempted/scheduled back in */ + unsigned long preempt_entryhi; + +diff --git a/arch/mips/kvm/emulate.c b/arch/mips/kvm/emulate.c +index 4298aeb1e20f..4c85ab808f99 100644 +--- a/arch/mips/kvm/emulate.c ++++ b/arch/mips/kvm/emulate.c +@@ -1473,6 +1473,7 @@ enum emulation_result kvm_mips_emulate_load(uint32_t inst, uint32_t cause, + struct kvm_vcpu *vcpu) + { + enum emulation_result er = EMULATE_DO_MMIO; ++ unsigned long curr_pc; + int32_t op, base, rt, offset; + uint32_t bytes; + +@@ -1481,7 +1482,18 @@ enum emulation_result kvm_mips_emulate_load(uint32_t inst, uint32_t cause, + offset = inst & 0xffff; + op = (inst >> 26) & 0x3f; + +- vcpu->arch.pending_load_cause = cause; ++ /* ++ * Find the resume PC now while we have safe and easy access to the ++ * prior branch instruction, and save it for ++ * kvm_mips_complete_mmio_load() to restore later. ++ */ ++ curr_pc = vcpu->arch.pc; ++ er = update_pc(vcpu, cause); ++ if (er == EMULATE_FAIL) ++ return er; ++ vcpu->arch.io_pc = vcpu->arch.pc; ++ vcpu->arch.pc = curr_pc; ++ + vcpu->arch.io_gpr = rt; + + switch (op) { +@@ -2461,9 +2473,8 @@ enum emulation_result kvm_mips_complete_mmio_load(struct kvm_vcpu *vcpu, + goto done; + } + +- er = update_pc(vcpu, vcpu->arch.pending_load_cause); +- if (er == EMULATE_FAIL) +- return er; ++ /* Restore saved resume PC */ ++ vcpu->arch.pc = vcpu->arch.io_pc; + + switch (run->mmio.len) { + case 4: +@@ -2485,11 +2496,6 @@ enum emulation_result kvm_mips_complete_mmio_load(struct kvm_vcpu *vcpu, + break; + } + +- if (vcpu->arch.pending_load_cause & CAUSEF_BD) +- kvm_debug("[%#lx] Completing %d byte BD Load to gpr %d (0x%08lx) type %d\n", +- vcpu->arch.pc, run->mmio.len, vcpu->arch.io_gpr, *gpr, +- vcpu->mmio_needed); +- + done: + return er; + } +diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c +index 045035796ca7..b63b9a42af70 100644 +--- a/arch/s390/hypfs/hypfs_diag.c ++++ b/arch/s390/hypfs/hypfs_diag.c +@@ -525,11 +525,11 @@ static int diag224(void *ptr) + static int diag224_get_name_table(void) + { + /* memory must be below 2GB */ +- diag224_cpu_names = kmalloc(PAGE_SIZE, GFP_KERNEL | GFP_DMA); ++ diag224_cpu_names = (char *) __get_free_page(GFP_KERNEL | GFP_DMA); + if (!diag224_cpu_names) + return -ENOMEM; + if (diag224(diag224_cpu_names)) { +- kfree(diag224_cpu_names); ++ free_page((unsigned long) diag224_cpu_names); + return -EOPNOTSUPP; + } + EBCASC(diag224_cpu_names + 16, (*diag224_cpu_names + 1) * 16); +@@ -538,7 +538,7 @@ static int diag224_get_name_table(void) + + static void diag224_delete_name_table(void) + { +- kfree(diag224_cpu_names); ++ free_page((unsigned long) diag224_cpu_names); + } + + static int diag224_idx2name(int index, char *name) +diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c +index 3dd9c462d22a..8f8da9f92090 100644 +--- a/drivers/acpi/apei/ghes.c ++++ b/drivers/acpi/apei/ghes.c +@@ -657,7 +657,7 @@ static int ghes_proc(struct ghes *ghes) + ghes_do_proc(ghes, ghes->estatus); + out: + ghes_clear_estatus(ghes); +- return 0; ++ return rc; + } + + static void ghes_add_timer(struct ghes *ghes) +diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c +index 74d97f4bac34..1d58854c4a9f 100644 +--- a/drivers/block/drbd/drbd_main.c ++++ b/drivers/block/drbd/drbd_main.c +@@ -1802,7 +1802,7 @@ int drbd_send(struct drbd_connection *connection, struct socket *sock, + * do we need to block DRBD_SIG if sock == &meta.socket ?? + * otherwise wake_asender() might interrupt some send_*Ack ! + */ +- rv = kernel_sendmsg(sock, &msg, &iov, 1, size); ++ rv = kernel_sendmsg(sock, &msg, &iov, 1, iov.iov_len); + if (rv == -EAGAIN) { + if (we_should_drop_the_connection(connection, sock)) + break; +diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c +index 6f497aa1b276..cf25020576fa 100644 +--- a/drivers/char/hw_random/core.c ++++ b/drivers/char/hw_random/core.c +@@ -84,14 +84,14 @@ static size_t rng_buffer_size(void) + + static void add_early_randomness(struct hwrng *rng) + { +- unsigned char bytes[16]; + int bytes_read; ++ size_t size = min_t(size_t, 16, rng_buffer_size()); + + mutex_lock(&reading_mutex); +- bytes_read = rng_get_data(rng, bytes, sizeof(bytes), 1); ++ bytes_read = rng_get_data(rng, rng_buffer, size, 1); + mutex_unlock(&reading_mutex); + if (bytes_read > 0) +- add_device_randomness(bytes, bytes_read); ++ add_device_randomness(rng_buffer, bytes_read); + } + + static inline void cleanup_rng(struct kref *kref) +diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c +index 8b77abb6bc22..a5070f9cb0d4 100644 +--- a/drivers/clk/clk-qoriq.c ++++ b/drivers/clk/clk-qoriq.c +@@ -700,6 +700,7 @@ static struct clk * __init create_mux_common(struct clockgen *cg, + struct mux_hwclock *hwc, + const struct clk_ops *ops, + unsigned long min_rate, ++ unsigned long max_rate, + unsigned long pct80_rate, + const char *fmt, int idx) + { +@@ -728,6 +729,8 @@ static struct clk * __init create_mux_common(struct clockgen *cg, + continue; + if (rate < min_rate) + continue; ++ if (rate > max_rate) ++ continue; + + parent_names[j] = div->name; + hwc->parent_to_clksel[j] = i; +@@ -759,7 +762,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx) + struct mux_hwclock *hwc; + const struct clockgen_pll_div *div; + unsigned long plat_rate, min_rate; +- u64 pct80_rate; ++ u64 max_rate, pct80_rate; + u32 clksel; + + hwc = kzalloc(sizeof(*hwc), GFP_KERNEL); +@@ -787,8 +790,8 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx) + return NULL; + } + +- pct80_rate = clk_get_rate(div->clk); +- pct80_rate *= 8; ++ max_rate = clk_get_rate(div->clk); ++ pct80_rate = max_rate * 8; + do_div(pct80_rate, 10); + + plat_rate = clk_get_rate(cg->pll[PLATFORM_PLL].div[PLL_DIV1].clk); +@@ -798,7 +801,7 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx) + else + min_rate = plat_rate / 2; + +- return create_mux_common(cg, hwc, &cmux_ops, min_rate, ++ return create_mux_common(cg, hwc, &cmux_ops, min_rate, max_rate, + pct80_rate, "cg-cmux%d", idx); + } + +@@ -813,7 +816,7 @@ static struct clk * __init create_one_hwaccel(struct clockgen *cg, int idx) + hwc->reg = cg->regs + 0x20 * idx + 0x10; + hwc->info = cg->info.hwaccel[idx]; + +- return create_mux_common(cg, hwc, &hwaccel_ops, 0, 0, ++ return create_mux_common(cg, hwc, &hwaccel_ops, 0, ULONG_MAX, 0, + "cg-hwaccel%d", idx); + } + +diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c +index 9d05d7dbcfa9..66c073fc8afc 100644 +--- a/drivers/dma/at_xdmac.c ++++ b/drivers/dma/at_xdmac.c +@@ -864,8 +864,12 @@ at_xdmac_interleaved_queue_desc(struct dma_chan *chan, + * access. Hopefully we can access DDR through both ports (at least on + * SAMA5D4x), so we can use the same interface for source and dest, + * that solves the fact we don't know the direction. ++ * ERRATA: Even if useless for memory transfers, the PERID has to not ++ * match the one of another channel. If not, it could lead to spurious ++ * flag status. + */ +- u32 chan_cc = AT_XDMAC_CC_DIF(0) ++ u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) ++ | AT_XDMAC_CC_DIF(0) + | AT_XDMAC_CC_SIF(0) + | AT_XDMAC_CC_MBSIZE_SIXTEEN + | AT_XDMAC_CC_TYPE_MEM_TRAN; +@@ -1042,8 +1046,12 @@ at_xdmac_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, + * access DDR through both ports (at least on SAMA5D4x), so we can use + * the same interface for source and dest, that solves the fact we + * don't know the direction. ++ * ERRATA: Even if useless for memory transfers, the PERID has to not ++ * match the one of another channel. If not, it could lead to spurious ++ * flag status. + */ +- u32 chan_cc = AT_XDMAC_CC_DAM_INCREMENTED_AM ++ u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) ++ | AT_XDMAC_CC_DAM_INCREMENTED_AM + | AT_XDMAC_CC_SAM_INCREMENTED_AM + | AT_XDMAC_CC_DIF(0) + | AT_XDMAC_CC_SIF(0) +@@ -1144,8 +1152,12 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan, + * access. Hopefully we can access DDR through both ports (at least on + * SAMA5D4x), so we can use the same interface for source and dest, + * that solves the fact we don't know the direction. ++ * ERRATA: Even if useless for memory transfers, the PERID has to not ++ * match the one of another channel. If not, it could lead to spurious ++ * flag status. + */ +- u32 chan_cc = AT_XDMAC_CC_DAM_UBS_AM ++ u32 chan_cc = AT_XDMAC_CC_PERID(0x3f) ++ | AT_XDMAC_CC_DAM_UBS_AM + | AT_XDMAC_CC_SAM_INCREMENTED_AM + | AT_XDMAC_CC_DIF(0) + | AT_XDMAC_CC_SIF(0) +diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c +index 3b92cad8bef2..1ea8532f5ab2 100644 +--- a/drivers/gpu/drm/i915/intel_hdmi.c ++++ b/drivers/gpu/drm/i915/intel_hdmi.c +@@ -1997,6 +1997,50 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c + intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_NONE; + } + ++static u8 intel_hdmi_ddc_pin(struct drm_i915_private *dev_priv, ++ enum port port) ++{ ++ const struct ddi_vbt_port_info *info = ++ &dev_priv->vbt.ddi_port_info[port]; ++ u8 ddc_pin; ++ ++ if (info->alternate_ddc_pin) { ++ DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (VBT)\n", ++ info->alternate_ddc_pin, port_name(port)); ++ return info->alternate_ddc_pin; ++ } ++ ++ switch (port) { ++ case PORT_B: ++ if (IS_BROXTON(dev_priv)) ++ ddc_pin = GMBUS_PIN_1_BXT; ++ else ++ ddc_pin = GMBUS_PIN_DPB; ++ break; ++ case PORT_C: ++ if (IS_BROXTON(dev_priv)) ++ ddc_pin = GMBUS_PIN_2_BXT; ++ else ++ ddc_pin = GMBUS_PIN_DPC; ++ break; ++ case PORT_D: ++ if (IS_CHERRYVIEW(dev_priv)) ++ ddc_pin = GMBUS_PIN_DPD_CHV; ++ else ++ ddc_pin = GMBUS_PIN_DPD; ++ break; ++ default: ++ MISSING_CASE(port); ++ ddc_pin = GMBUS_PIN_DPB; ++ break; ++ } ++ ++ DRM_DEBUG_KMS("Using DDC pin 0x%x for port %c (platform default)\n", ++ ddc_pin, port_name(port)); ++ ++ return ddc_pin; ++} ++ + void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector) + { +@@ -2006,7 +2050,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct drm_device *dev = intel_encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_dig_port->port; +- uint8_t alternate_ddc_pin; + + DRM_DEBUG_KMS("Adding HDMI connector on port %c\n", + port_name(port)); +@@ -2019,12 +2062,10 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + connector->doublescan_allowed = 0; + connector->stereo_allowed = 1; + ++ intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port); ++ + switch (port) { + case PORT_B: +- if (IS_BROXTON(dev_priv)) +- intel_hdmi->ddc_bus = GMBUS_PIN_1_BXT; +- else +- intel_hdmi->ddc_bus = GMBUS_PIN_DPB; + /* + * On BXT A0/A1, sw needs to activate DDIA HPD logic and + * interrupts to check the external panel connection. +@@ -2035,46 +2076,17 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + intel_encoder->hpd_pin = HPD_PORT_B; + break; + case PORT_C: +- if (IS_BROXTON(dev_priv)) +- intel_hdmi->ddc_bus = GMBUS_PIN_2_BXT; +- else +- intel_hdmi->ddc_bus = GMBUS_PIN_DPC; + intel_encoder->hpd_pin = HPD_PORT_C; + break; + case PORT_D: +- if (WARN_ON(IS_BROXTON(dev_priv))) +- intel_hdmi->ddc_bus = GMBUS_PIN_DISABLED; +- else if (IS_CHERRYVIEW(dev_priv)) +- intel_hdmi->ddc_bus = GMBUS_PIN_DPD_CHV; +- else +- intel_hdmi->ddc_bus = GMBUS_PIN_DPD; + intel_encoder->hpd_pin = HPD_PORT_D; + break; + case PORT_E: +- /* On SKL PORT E doesn't have seperate GMBUS pin +- * We rely on VBT to set a proper alternate GMBUS pin. */ +- alternate_ddc_pin = +- dev_priv->vbt.ddi_port_info[PORT_E].alternate_ddc_pin; +- switch (alternate_ddc_pin) { +- case DDC_PIN_B: +- intel_hdmi->ddc_bus = GMBUS_PIN_DPB; +- break; +- case DDC_PIN_C: +- intel_hdmi->ddc_bus = GMBUS_PIN_DPC; +- break; +- case DDC_PIN_D: +- intel_hdmi->ddc_bus = GMBUS_PIN_DPD; +- break; +- default: +- MISSING_CASE(alternate_ddc_pin); +- } + intel_encoder->hpd_pin = HPD_PORT_E; + break; +- case PORT_A: +- intel_encoder->hpd_pin = HPD_PORT_A; +- /* Internal port only for eDP. */ + default: +- BUG(); ++ MISSING_CASE(port); ++ return; + } + + if (IS_VALLEYVIEW(dev)) { +diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c +index dc33c1dd5191..b5beea53d6f6 100644 +--- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c ++++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c +@@ -30,26 +30,26 @@ static struct { + u32 usage_id; + int unit; /* 0 for default others from HID sensor spec */ + int scale_val0; /* scale, whole number */ +- int scale_val1; /* scale, fraction in micros */ ++ int scale_val1; /* scale, fraction in nanos */ + } unit_conversion[] = { +- {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650}, ++ {HID_USAGE_SENSOR_ACCEL_3D, 0, 9, 806650000}, + {HID_USAGE_SENSOR_ACCEL_3D, + HID_USAGE_SENSOR_UNITS_METERS_PER_SEC_SQRD, 1, 0}, + {HID_USAGE_SENSOR_ACCEL_3D, +- HID_USAGE_SENSOR_UNITS_G, 9, 806650}, ++ HID_USAGE_SENSOR_UNITS_G, 9, 806650000}, + +- {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453}, ++ {HID_USAGE_SENSOR_GYRO_3D, 0, 0, 17453293}, + {HID_USAGE_SENSOR_GYRO_3D, + HID_USAGE_SENSOR_UNITS_RADIANS_PER_SECOND, 1, 0}, + {HID_USAGE_SENSOR_GYRO_3D, +- HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453}, ++ HID_USAGE_SENSOR_UNITS_DEGREES_PER_SECOND, 0, 17453293}, + +- {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000}, ++ {HID_USAGE_SENSOR_COMPASS_3D, 0, 0, 1000000}, + {HID_USAGE_SENSOR_COMPASS_3D, HID_USAGE_SENSOR_UNITS_GAUSS, 1, 0}, + +- {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453}, ++ {HID_USAGE_SENSOR_INCLINOMETER_3D, 0, 0, 17453293}, + {HID_USAGE_SENSOR_INCLINOMETER_3D, +- HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453}, ++ HID_USAGE_SENSOR_UNITS_DEGREES, 0, 17453293}, + {HID_USAGE_SENSOR_INCLINOMETER_3D, + HID_USAGE_SENSOR_UNITS_RADIANS, 1, 0}, + +@@ -57,7 +57,7 @@ static struct { + {HID_USAGE_SENSOR_ALS, HID_USAGE_SENSOR_UNITS_LUX, 1, 0}, + + {HID_USAGE_SENSOR_PRESSURE, 0, 100, 0}, +- {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000}, ++ {HID_USAGE_SENSOR_PRESSURE, HID_USAGE_SENSOR_UNITS_PASCAL, 0, 1000000}, + }; + + static int pow_10(unsigned power) +@@ -266,15 +266,15 @@ EXPORT_SYMBOL(hid_sensor_write_raw_hyst_value); + /* + * This fuction applies the unit exponent to the scale. + * For example: +- * 9.806650 ->exp:2-> val0[980]val1[665000] +- * 9.000806 ->exp:2-> val0[900]val1[80600] +- * 0.174535 ->exp:2-> val0[17]val1[453500] +- * 1.001745 ->exp:0-> val0[1]val1[1745] +- * 1.001745 ->exp:2-> val0[100]val1[174500] +- * 1.001745 ->exp:4-> val0[10017]val1[450000] +- * 9.806650 ->exp:-2-> val0[0]val1[98066] ++ * 9.806650000 ->exp:2-> val0[980]val1[665000000] ++ * 9.000806000 ->exp:2-> val0[900]val1[80600000] ++ * 0.174535293 ->exp:2-> val0[17]val1[453529300] ++ * 1.001745329 ->exp:0-> val0[1]val1[1745329] ++ * 1.001745329 ->exp:2-> val0[100]val1[174532900] ++ * 1.001745329 ->exp:4-> val0[10017]val1[453290000] ++ * 9.806650000 ->exp:-2-> val0[0]val1[98066500] + */ +-static void adjust_exponent_micro(int *val0, int *val1, int scale0, ++static void adjust_exponent_nano(int *val0, int *val1, int scale0, + int scale1, int exp) + { + int i; +@@ -285,32 +285,32 @@ static void adjust_exponent_micro(int *val0, int *val1, int scale0, + if (exp > 0) { + *val0 = scale0 * pow_10(exp); + res = 0; +- if (exp > 6) { ++ if (exp > 9) { + *val1 = 0; + return; + } + for (i = 0; i < exp; ++i) { +- x = scale1 / pow_10(5 - i); ++ x = scale1 / pow_10(8 - i); + res += (pow_10(exp - 1 - i) * x); +- scale1 = scale1 % pow_10(5 - i); ++ scale1 = scale1 % pow_10(8 - i); + } + *val0 += res; + *val1 = scale1 * pow_10(exp); + } else if (exp < 0) { + exp = abs(exp); +- if (exp > 6) { ++ if (exp > 9) { + *val0 = *val1 = 0; + return; + } + *val0 = scale0 / pow_10(exp); + rem = scale0 % pow_10(exp); + res = 0; +- for (i = 0; i < (6 - exp); ++i) { +- x = scale1 / pow_10(5 - i); +- res += (pow_10(5 - exp - i) * x); +- scale1 = scale1 % pow_10(5 - i); ++ for (i = 0; i < (9 - exp); ++i) { ++ x = scale1 / pow_10(8 - i); ++ res += (pow_10(8 - exp - i) * x); ++ scale1 = scale1 % pow_10(8 - i); + } +- *val1 = rem * pow_10(6 - exp) + res; ++ *val1 = rem * pow_10(9 - exp) + res; + } else { + *val0 = scale0; + *val1 = scale1; +@@ -332,14 +332,14 @@ int hid_sensor_format_scale(u32 usage_id, + unit_conversion[i].unit == attr_info->units) { + exp = hid_sensor_convert_exponent( + attr_info->unit_expo); +- adjust_exponent_micro(val0, val1, ++ adjust_exponent_nano(val0, val1, + unit_conversion[i].scale_val0, + unit_conversion[i].scale_val1, exp); + break; + } + } + +- return IIO_VAL_INT_PLUS_MICRO; ++ return IIO_VAL_INT_PLUS_NANO; + } + EXPORT_SYMBOL(hid_sensor_format_scale); + +diff --git a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c +index b98b9d94d184..a97e802ca523 100644 +--- a/drivers/iio/orientation/hid-sensor-rotation.c ++++ b/drivers/iio/orientation/hid-sensor-rotation.c +@@ -335,6 +335,7 @@ static struct platform_driver hid_dev_rot_platform_driver = { + .id_table = hid_dev_rot_ids, + .driver = { + .name = KBUILD_MODNAME, ++ .pm = &hid_sensor_pm_ops, + }, + .probe = hid_dev_rot_probe, + .remove = hid_dev_rot_remove, +diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c +index 0397985a2601..5975d76ce755 100644 +--- a/drivers/iommu/amd_iommu.c ++++ b/drivers/iommu/amd_iommu.c +@@ -1833,6 +1833,9 @@ static void dma_ops_domain_free(struct dma_ops_domain *dom) + kfree(dom->aperture[i]); + } + ++ if (dom->domain.id) ++ domain_id_free(dom->domain.id); ++ + kfree(dom); + } + +diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c +index b7f852d824a3..5baa830ce49f 100644 +--- a/drivers/iommu/intel-iommu.c ++++ b/drivers/iommu/intel-iommu.c +@@ -1672,6 +1672,7 @@ static void disable_dmar_iommu(struct intel_iommu *iommu) + if (!iommu->domains || !iommu->domain_ids) + return; + ++again: + spin_lock_irqsave(&device_domain_lock, flags); + list_for_each_entry_safe(info, tmp, &device_domain_list, global) { + struct dmar_domain *domain; +@@ -1684,10 +1685,19 @@ static void disable_dmar_iommu(struct intel_iommu *iommu) + + domain = info->domain; + +- dmar_remove_one_dev_info(domain, info->dev); ++ __dmar_remove_one_dev_info(info); + +- if (!domain_type_is_vm_or_si(domain)) ++ if (!domain_type_is_vm_or_si(domain)) { ++ /* ++ * The domain_exit() function can't be called under ++ * device_domain_lock, as it takes this lock itself. ++ * So release the lock here and re-run the loop ++ * afterwards. ++ */ ++ spin_unlock_irqrestore(&device_domain_lock, flags); + domain_exit(domain); ++ goto again; ++ } + } + spin_unlock_irqrestore(&device_domain_lock, flags); + +diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c +index 0d248ce02a9b..ab58f0b9da5c 100644 +--- a/drivers/media/usb/dvb-usb/dib0700_core.c ++++ b/drivers/media/usb/dvb-usb/dib0700_core.c +@@ -677,7 +677,7 @@ static void dib0700_rc_urb_completion(struct urb *purb) + struct dvb_usb_device *d = purb->context; + struct dib0700_rc_response *poll_reply; + enum rc_type protocol; +- u32 uninitialized_var(keycode); ++ u32 keycode; + u8 toggle; + + deb_info("%s()\n", __func__); +@@ -719,7 +719,8 @@ static void dib0700_rc_urb_completion(struct urb *purb) + poll_reply->nec.data == 0x00 && + poll_reply->nec.not_data == 0xff) { + poll_reply->data_state = 2; +- break; ++ rc_repeat(d->rc_dev); ++ goto resubmit; + } + + if ((poll_reply->nec.data ^ poll_reply->nec.not_data) != 0xff) { +diff --git a/drivers/misc/mei/bus-fixup.c b/drivers/misc/mei/bus-fixup.c +index 020de5919c21..bdc7fcd80eca 100644 +--- a/drivers/misc/mei/bus-fixup.c ++++ b/drivers/misc/mei/bus-fixup.c +@@ -151,7 +151,7 @@ static int mei_nfc_if_version(struct mei_cl *cl, + + ret = 0; + bytes_recv = __mei_cl_recv(cl, (u8 *)reply, if_version_length); +- if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) { ++ if (bytes_recv < if_version_length) { + dev_err(bus->dev, "Could not read IF version\n"); + ret = -EIO; + goto err; +diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c +index d839147e591d..44ecebd1ea8c 100644 +--- a/drivers/mmc/host/mxs-mmc.c ++++ b/drivers/mmc/host/mxs-mmc.c +@@ -661,13 +661,13 @@ static int mxs_mmc_probe(struct platform_device *pdev) + + platform_set_drvdata(pdev, mmc); + ++ spin_lock_init(&host->lock); ++ + ret = devm_request_irq(&pdev->dev, irq_err, mxs_mmc_irq_handler, 0, + dev_name(&pdev->dev), host); + if (ret) + goto out_free_dma; + +- spin_lock_init(&host->lock); +- + ret = mmc_add_host(mmc); + if (ret) + goto out_free_dma; +diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c +index 979cc024bca7..4edbab6ca7ef 100644 +--- a/drivers/net/ethernet/intel/i40e/i40e_main.c ++++ b/drivers/net/ethernet/intel/i40e/i40e_main.c +@@ -8595,7 +8595,7 @@ static int i40e_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, + return 0; + + return ndo_dflt_bridge_getlink(skb, pid, seq, dev, veb->bridge_mode, +- nlflags, 0, 0, filter_mask, NULL); ++ 0, 0, nlflags, filter_mask, NULL); + } + + #define I40E_MAX_TUNNEL_HDR_LEN 80 +diff --git a/drivers/nfc/mei_phy.c b/drivers/nfc/mei_phy.c +index 83deda4bb4d6..6f9563a96488 100644 +--- a/drivers/nfc/mei_phy.c ++++ b/drivers/nfc/mei_phy.c +@@ -133,7 +133,7 @@ static int mei_nfc_if_version(struct nfc_mei_phy *phy) + return -ENOMEM; + + bytes_recv = mei_cldev_recv(phy->cldev, (u8 *)reply, if_version_length); +- if (bytes_recv < 0 || bytes_recv < sizeof(struct mei_nfc_reply)) { ++ if (bytes_recv < 0 || bytes_recv < if_version_length) { + pr_err("Could not read IF version\n"); + r = -EIO; + goto err; +diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c +index 4e377599d266..a009ae34c5ef 100644 +--- a/drivers/pinctrl/intel/pinctrl-cherryview.c ++++ b/drivers/pinctrl/intel/pinctrl-cherryview.c +@@ -1564,12 +1564,15 @@ static int chv_pinctrl_remove(struct platform_device *pdev) + } + + #ifdef CONFIG_PM_SLEEP +-static int chv_pinctrl_suspend(struct device *dev) ++static int chv_pinctrl_suspend_noirq(struct device *dev) + { + struct platform_device *pdev = to_platform_device(dev); + struct chv_pinctrl *pctrl = platform_get_drvdata(pdev); ++ unsigned long flags; + int i; + ++ raw_spin_lock_irqsave(&chv_lock, flags); ++ + pctrl->saved_intmask = readl(pctrl->regs + CHV_INTMASK); + + for (i = 0; i < pctrl->community->npins; i++) { +@@ -1590,15 +1593,20 @@ static int chv_pinctrl_suspend(struct device *dev) + ctx->padctrl1 = readl(reg); + } + ++ raw_spin_unlock_irqrestore(&chv_lock, flags); ++ + return 0; + } + +-static int chv_pinctrl_resume(struct device *dev) ++static int chv_pinctrl_resume_noirq(struct device *dev) + { + struct platform_device *pdev = to_platform_device(dev); + struct chv_pinctrl *pctrl = platform_get_drvdata(pdev); ++ unsigned long flags; + int i; + ++ raw_spin_lock_irqsave(&chv_lock, flags); ++ + /* + * Mask all interrupts before restoring per-pin configuration + * registers because we don't know in which state BIOS left them +@@ -1643,12 +1651,15 @@ static int chv_pinctrl_resume(struct device *dev) + chv_writel(0xffff, pctrl->regs + CHV_INTSTAT); + chv_writel(pctrl->saved_intmask, pctrl->regs + CHV_INTMASK); + ++ raw_spin_unlock_irqrestore(&chv_lock, flags); ++ + return 0; + } + #endif + + static const struct dev_pm_ops chv_pinctrl_pm_ops = { +- SET_LATE_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend, chv_pinctrl_resume) ++ SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(chv_pinctrl_suspend_noirq, ++ chv_pinctrl_resume_noirq) + }; + + static const struct acpi_device_id chv_pinctrl_acpi_match[] = { +diff --git a/drivers/platform/x86/toshiba-wmi.c b/drivers/platform/x86/toshiba-wmi.c +index feac4576b837..2df07ee8f3c3 100644 +--- a/drivers/platform/x86/toshiba-wmi.c ++++ b/drivers/platform/x86/toshiba-wmi.c +@@ -24,14 +24,15 @@ + #include + #include + #include ++#include + + MODULE_AUTHOR("Azael Avalos"); + MODULE_DESCRIPTION("Toshiba WMI Hotkey Driver"); + MODULE_LICENSE("GPL"); + +-#define TOSHIBA_WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100" ++#define WMI_EVENT_GUID "59142400-C6A3-40FA-BADB-8A2652834100" + +-MODULE_ALIAS("wmi:"TOSHIBA_WMI_EVENT_GUID); ++MODULE_ALIAS("wmi:"WMI_EVENT_GUID); + + static struct input_dev *toshiba_wmi_input_dev; + +@@ -63,6 +64,16 @@ static void toshiba_wmi_notify(u32 value, void *context) + kfree(response.pointer); + } + ++static struct dmi_system_id toshiba_wmi_dmi_table[] __initdata = { ++ { ++ .ident = "Toshiba laptop", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), ++ }, ++ }, ++ {} ++}; ++ + static int __init toshiba_wmi_input_setup(void) + { + acpi_status status; +@@ -81,7 +92,7 @@ static int __init toshiba_wmi_input_setup(void) + if (err) + goto err_free_dev; + +- status = wmi_install_notify_handler(TOSHIBA_WMI_EVENT_GUID, ++ status = wmi_install_notify_handler(WMI_EVENT_GUID, + toshiba_wmi_notify, NULL); + if (ACPI_FAILURE(status)) { + err = -EIO; +@@ -95,7 +106,7 @@ static int __init toshiba_wmi_input_setup(void) + return 0; + + err_remove_notifier: +- wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID); ++ wmi_remove_notify_handler(WMI_EVENT_GUID); + err_free_keymap: + sparse_keymap_free(toshiba_wmi_input_dev); + err_free_dev: +@@ -105,7 +116,7 @@ static int __init toshiba_wmi_input_setup(void) + + static void toshiba_wmi_input_destroy(void) + { +- wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID); ++ wmi_remove_notify_handler(WMI_EVENT_GUID); + sparse_keymap_free(toshiba_wmi_input_dev); + input_unregister_device(toshiba_wmi_input_dev); + } +@@ -114,7 +125,8 @@ static int __init toshiba_wmi_init(void) + { + int ret; + +- if (!wmi_has_guid(TOSHIBA_WMI_EVENT_GUID)) ++ if (!wmi_has_guid(WMI_EVENT_GUID) || ++ !dmi_check_system(toshiba_wmi_dmi_table)) + return -ENODEV; + + ret = toshiba_wmi_input_setup(); +@@ -130,7 +142,7 @@ static int __init toshiba_wmi_init(void) + + static void __exit toshiba_wmi_exit(void) + { +- if (wmi_has_guid(TOSHIBA_WMI_EVENT_GUID)) ++ if (wmi_has_guid(WMI_EVENT_GUID)) + toshiba_wmi_input_destroy(); + } + +diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c +index 0969cea1089a..2d867c5bfd9f 100644 +--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c ++++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c +@@ -1275,9 +1275,9 @@ scsih_target_alloc(struct scsi_target *starget) + sas_target_priv_data->handle = raid_device->handle; + sas_target_priv_data->sas_address = raid_device->wwid; + sas_target_priv_data->flags |= MPT_TARGET_FLAGS_VOLUME; +- sas_target_priv_data->raid_device = raid_device; + if (ioc->is_warpdrive) +- raid_device->starget = starget; ++ sas_target_priv_data->raid_device = raid_device; ++ raid_device->starget = starget; + } + spin_unlock_irqrestore(&ioc->raid_device_lock, flags); + return 0; +diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c +index fc6674db4f2d..c44cbf46221c 100644 +--- a/drivers/scsi/qla2xxx/qla_os.c ++++ b/drivers/scsi/qla2xxx/qla_os.c +@@ -2257,6 +2257,8 @@ qla2xxx_scan_finished(struct Scsi_Host *shost, unsigned long time) + { + scsi_qla_host_t *vha = shost_priv(shost); + ++ if (test_bit(UNLOADING, &vha->dpc_flags)) ++ return 1; + if (!vha->host) + return 1; + if (time > vha->hw->loop_reset_delay * HZ) +diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c +index 10c43dda0f5a..196da09e20a1 100644 +--- a/drivers/staging/iio/impedance-analyzer/ad5933.c ++++ b/drivers/staging/iio/impedance-analyzer/ad5933.c +@@ -647,6 +647,7 @@ static void ad5933_work(struct work_struct *work) + __be16 buf[2]; + int val[2]; + unsigned char status; ++ int ret; + + mutex_lock(&indio_dev->mlock); + if (st->state == AD5933_CTRL_INIT_START_FREQ) { +@@ -654,19 +655,22 @@ static void ad5933_work(struct work_struct *work) + ad5933_cmd(st, AD5933_CTRL_START_SWEEP); + st->state = AD5933_CTRL_START_SWEEP; + schedule_delayed_work(&st->work, st->poll_time_jiffies); +- mutex_unlock(&indio_dev->mlock); +- return; ++ goto out; + } + +- ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status); ++ ret = ad5933_i2c_read(st->client, AD5933_REG_STATUS, 1, &status); ++ if (ret) ++ goto out; + + if (status & AD5933_STAT_DATA_VALID) { + int scan_count = bitmap_weight(indio_dev->active_scan_mask, + indio_dev->masklength); +- ad5933_i2c_read(st->client, ++ ret = ad5933_i2c_read(st->client, + test_bit(1, indio_dev->active_scan_mask) ? + AD5933_REG_REAL_DATA : AD5933_REG_IMAG_DATA, + scan_count * 2, (u8 *)buf); ++ if (ret) ++ goto out; + + if (scan_count == 2) { + val[0] = be16_to_cpu(buf[0]); +@@ -678,8 +682,7 @@ static void ad5933_work(struct work_struct *work) + } else { + /* no data available - try again later */ + schedule_delayed_work(&st->work, st->poll_time_jiffies); +- mutex_unlock(&indio_dev->mlock); +- return; ++ goto out; + } + + if (status & AD5933_STAT_SWEEP_DONE) { +@@ -691,7 +694,7 @@ static void ad5933_work(struct work_struct *work) + ad5933_cmd(st, AD5933_CTRL_INC_FREQ); + schedule_delayed_work(&st->work, st->poll_time_jiffies); + } +- ++out: + mutex_unlock(&indio_dev->mlock); + } + +diff --git a/drivers/staging/nvec/nvec_ps2.c b/drivers/staging/nvec/nvec_ps2.c +index 0922dd3a08d3..196f6b0a288f 100644 +--- a/drivers/staging/nvec/nvec_ps2.c ++++ b/drivers/staging/nvec/nvec_ps2.c +@@ -106,13 +106,12 @@ static int nvec_mouse_probe(struct platform_device *pdev) + { + struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); + struct serio *ser_dev; +- char mouse_reset[] = { NVEC_PS2, SEND_COMMAND, PSMOUSE_RST, 3 }; + +- ser_dev = devm_kzalloc(&pdev->dev, sizeof(struct serio), GFP_KERNEL); ++ ser_dev = kzalloc(sizeof(struct serio), GFP_KERNEL); + if (!ser_dev) + return -ENOMEM; + +- ser_dev->id.type = SERIO_PS_PSTHRU; ++ ser_dev->id.type = SERIO_8042; + ser_dev->write = ps2_sendcommand; + ser_dev->start = ps2_startstreaming; + ser_dev->stop = ps2_stopstreaming; +@@ -127,9 +126,6 @@ static int nvec_mouse_probe(struct platform_device *pdev) + + serio_register_port(ser_dev); + +- /* mouse reset */ +- nvec_write_async(nvec, mouse_reset, sizeof(mouse_reset)); +- + return 0; + } + +diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c +index 7b5462eb8388..e0b89b961e1b 100644 +--- a/drivers/tty/serial/atmel_serial.c ++++ b/drivers/tty/serial/atmel_serial.c +@@ -2075,6 +2075,7 @@ static void atmel_serial_pm(struct uart_port *port, unsigned int state, + static void atmel_set_termios(struct uart_port *port, struct ktermios *termios, + struct ktermios *old) + { ++ struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); + unsigned long flags; + unsigned int old_mode, mode, imr, quot, baud; + +@@ -2178,11 +2179,29 @@ static void atmel_set_termios(struct uart_port *port, struct ktermios *termios, + mode |= ATMEL_US_USMODE_RS485; + } else if (termios->c_cflag & CRTSCTS) { + /* RS232 with hardware handshake (RTS/CTS) */ +- if (atmel_use_dma_rx(port) && !atmel_use_fifo(port)) { +- dev_info(port->dev, "not enabling hardware flow control because DMA is used"); +- termios->c_cflag &= ~CRTSCTS; +- } else { ++ if (atmel_use_fifo(port) && ++ !mctrl_gpio_to_gpiod(atmel_port->gpios, UART_GPIO_CTS)) { ++ /* ++ * with ATMEL_US_USMODE_HWHS set, the controller will ++ * be able to drive the RTS pin high/low when the RX ++ * FIFO is above RXFTHRES/below RXFTHRES2. ++ * It will also disable the transmitter when the CTS ++ * pin is high. ++ * This mode is not activated if CTS pin is a GPIO ++ * because in this case, the transmitter is always ++ * disabled (there must be an internal pull-up ++ * responsible for this behaviour). ++ * If the RTS pin is a GPIO, the controller won't be ++ * able to drive it according to the FIFO thresholds, ++ * but it will be handled by the driver. ++ */ + mode |= ATMEL_US_USMODE_HWHS; ++ } else { ++ /* ++ * For platforms without FIFO, the flow control is ++ * handled by the driver. ++ */ ++ mode |= ATMEL_US_USMODE_NORMAL; + } + } else { + /* RS232 without hadware handshake */ +diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c +index 7f374369e539..4d77745f439f 100644 +--- a/drivers/usb/class/cdc-acm.c ++++ b/drivers/usb/class/cdc-acm.c +@@ -877,8 +877,6 @@ static int wait_serial_change(struct acm *acm, unsigned long arg) + DECLARE_WAITQUEUE(wait, current); + struct async_icount old, new; + +- if (arg & (TIOCM_DSR | TIOCM_RI | TIOCM_CD )) +- return -EINVAL; + do { + spin_lock_irq(&acm->read_lock); + old = acm->oldcount; +diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c +index b644248f4b8e..7413f89660f7 100644 +--- a/drivers/usb/gadget/function/u_ether.c ++++ b/drivers/usb/gadget/function/u_ether.c +@@ -594,14 +594,6 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb, + + req->length = length; + +- /* throttle high/super speed IRQ rate back slightly */ +- if (gadget_is_dualspeed(dev->gadget)) +- req->no_interrupt = (((dev->gadget->speed == USB_SPEED_HIGH || +- dev->gadget->speed == USB_SPEED_SUPER)) && +- !list_empty(&dev->tx_reqs)) +- ? ((atomic_read(&dev->tx_qlen) % dev->qmult) != 0) +- : 0; +- + retval = usb_ep_queue(in, req, GFP_ATOMIC); + switch (retval) { + default: +diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c +index 4bc9dbf29a73..3cff6523f27d 100644 +--- a/fs/btrfs/inode.c ++++ b/fs/btrfs/inode.c +@@ -8691,9 +8691,14 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset, + * So even we call qgroup_free_data(), it won't decrease reserved + * space. + * 2) Not written to disk +- * This means the reserved space should be freed here. ++ * This means the reserved space should be freed here. However, ++ * if a truncate invalidates the page (by clearing PageDirty) ++ * and the page is accounted for while allocating extent ++ * in btrfs_check_data_free_space() we let delayed_ref to ++ * free the entire extent. + */ +- btrfs_qgroup_free_data(inode, page_start, PAGE_CACHE_SIZE); ++ if (PageDirty(page)) ++ btrfs_qgroup_free_data(inode, page_start, PAGE_SIZE); + if (!inode_evicting) { + clear_extent_bit(tree, page_start, page_end, + EXTENT_LOCKED | EXTENT_DIRTY | +diff --git a/fs/coredump.c b/fs/coredump.c +index dfc87c5f5a54..5d15c4975ba1 100644 +--- a/fs/coredump.c ++++ b/fs/coredump.c +@@ -1,6 +1,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -399,7 +400,9 @@ static int coredump_wait(int exit_code, struct core_state *core_state) + if (core_waiters > 0) { + struct core_thread *ptr; + ++ freezer_do_not_count(); + wait_for_completion(&core_state->startup); ++ freezer_count(); + /* + * Wait for all the threads to become inactive, so that + * all the thread context (extended register state, like +diff --git a/lib/genalloc.c b/lib/genalloc.c +index 116a166b096f..27aa9c629d13 100644 +--- a/lib/genalloc.c ++++ b/lib/genalloc.c +@@ -273,7 +273,7 @@ unsigned long gen_pool_alloc(struct gen_pool *pool, size_t size) + struct gen_pool_chunk *chunk; + unsigned long addr = 0; + int order = pool->min_alloc_order; +- int nbits, start_bit = 0, end_bit, remain; ++ int nbits, start_bit, end_bit, remain; + + #ifndef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG + BUG_ON(in_nmi()); +@@ -288,6 +288,7 @@ unsigned long gen_pool_alloc(struct gen_pool *pool, size_t size) + if (size > atomic_read(&chunk->avail)) + continue; + ++ start_bit = 0; + end_bit = chunk_size(chunk) >> order; + retry: + start_bit = pool->algo(chunk->bits, end_bit, start_bit, nbits, +diff --git a/mm/swapfile.c b/mm/swapfile.c +index 58877312cf6b..c1a0f3dea8b5 100644 +--- a/mm/swapfile.c ++++ b/mm/swapfile.c +@@ -2225,6 +2225,8 @@ static unsigned long read_swap_header(struct swap_info_struct *p, + swab32s(&swap_header->info.version); + swab32s(&swap_header->info.last_page); + swab32s(&swap_header->info.nr_badpages); ++ if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES) ++ return 0; + for (i = 0; i < swap_header->info.nr_badpages; i++) + swab32s(&swap_header->info.badpages[i]); + } +diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c +index a5d41dfa9f05..2c89f90cd7bc 100644 +--- a/net/netfilter/nf_log.c ++++ b/net/netfilter/nf_log.c +@@ -401,7 +401,7 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write, + size_t size = *lenp; + int r = 0; + int tindex = (unsigned long)table->extra1; +- struct net *net = current->nsproxy->net_ns; ++ struct net *net = table->extra2; + + if (write) { + if (size > sizeof(buf)) +@@ -453,7 +453,6 @@ static int netfilter_log_sysctl_init(struct net *net) + 3, "%d", i); + nf_log_sysctl_table[i].procname = + nf_log_sysctl_fnames[i]; +- nf_log_sysctl_table[i].data = NULL; + nf_log_sysctl_table[i].maxlen = NFLOGGER_NAME_LEN; + nf_log_sysctl_table[i].mode = 0644; + nf_log_sysctl_table[i].proc_handler = +@@ -463,6 +462,9 @@ static int netfilter_log_sysctl_init(struct net *net) + } + } + ++ for (i = NFPROTO_UNSPEC; i < NFPROTO_NUMPROTO; i++) ++ table[i].extra2 = net; ++ + net->nf.nf_log_dir_header = register_net_sysctl(net, + "net/netfilter/nf_log", + table); +diff --git a/sound/core/info.c b/sound/core/info.c +index 895362a696c9..8ab72e0f5932 100644 +--- a/sound/core/info.c ++++ b/sound/core/info.c +@@ -325,10 +325,15 @@ static ssize_t snd_info_text_entry_write(struct file *file, + size_t next; + int err = 0; + ++ if (!entry->c.text.write) ++ return -EIO; + pos = *offset; + if (!valid_pos(pos, count)) + return -EIO; + next = pos + count; ++ /* don't handle too large text inputs */ ++ if (next > 16 * 1024) ++ return -EIO; + mutex_lock(&entry->access); + buf = data->wbuffer; + if (!buf) { +@@ -366,7 +371,9 @@ static int snd_info_seq_show(struct seq_file *seq, void *p) + struct snd_info_private_data *data = seq->private; + struct snd_info_entry *entry = data->entry; + +- if (entry->c.text.read) { ++ if (!entry->c.text.read) { ++ return -EIO; ++ } else { + data->rbuffer->buffer = (char *)seq; /* XXX hack! */ + entry->c.text.read(entry, data->rbuffer); + } +diff --git a/sound/soc/codecs/cs4270.c b/sound/soc/codecs/cs4270.c +index e07807d96b68..3670086b9227 100644 +--- a/sound/soc/codecs/cs4270.c ++++ b/sound/soc/codecs/cs4270.c +@@ -148,11 +148,11 @@ SND_SOC_DAPM_OUTPUT("AOUTR"), + }; + + static const struct snd_soc_dapm_route cs4270_dapm_routes[] = { +- { "Capture", NULL, "AINA" }, +- { "Capture", NULL, "AINB" }, ++ { "Capture", NULL, "AINL" }, ++ { "Capture", NULL, "AINR" }, + +- { "AOUTA", NULL, "Playback" }, +- { "AOUTB", NULL, "Playback" }, ++ { "AOUTL", NULL, "Playback" }, ++ { "AOUTR", NULL, "Playback" }, + }; + + /** +diff --git a/sound/soc/sunxi/sun4i-codec.c b/sound/soc/sunxi/sun4i-codec.c +index 1bb896d78d09..1a4999f9d56f 100644 +--- a/sound/soc/sunxi/sun4i-codec.c ++++ b/sound/soc/sunxi/sun4i-codec.c +@@ -575,11 +575,11 @@ static struct snd_soc_card *sun4i_codec_create_card(struct device *dev) + + card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); + if (!card) +- return NULL; ++ return ERR_PTR(-ENOMEM); + + card->dai_link = sun4i_codec_create_link(dev, &card->num_links); + if (!card->dai_link) +- return NULL; ++ return ERR_PTR(-ENOMEM); + + card->dev = dev; + card->name = "sun4i-codec"; +@@ -661,7 +661,8 @@ static int sun4i_codec_probe(struct platform_device *pdev) + } + + card = sun4i_codec_create_card(&pdev->dev); +- if (!card) { ++ if (IS_ERR(card)) { ++ ret = PTR_ERR(card); + dev_err(&pdev->dev, "Failed to create our card\n"); + goto err_unregister_codec; + } diff --git a/patch/kernel/pine64-default/add_gt911_DB2_profile_to_gt9xxf_ts_driver.patch b/patch/kernel/pine64-default/add_gt911_DB2_profile_to_gt9xxf_ts_driver.patch deleted file mode 100644 index 9593a2ca77..0000000000 --- a/patch/kernel/pine64-default/add_gt911_DB2_profile_to_gt9xxf_ts_driver.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 832757c73ba9b69d0ee2d2753cca228f0d831386 Mon Sep 17 00:00:00 2001 -From: Martin Bergstrand -Date: Mon, 24 Oct 2016 17:00:54 -0500 -Subject: [PATCH] Use Correct I2C Touchscreen Driver - ---- - drivers/input/touchscreen/gt9xxf/gt9xxf.c | 5 +++++ - drivers/input/touchscreen/gt9xxf/gt9xxf.h | 2 +- - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/drivers/input/touchscreen/gt9xxf/gt9xxf.c b/drivers/input/touchscreen/gt9xxf/gt9xxf.c -index 83f2358..95b13f4 100755 ---- a/drivers/input/touchscreen/gt9xxf/gt9xxf.c -+++ b/drivers/input/touchscreen/gt9xxf/gt9xxf.c -@@ -1454,6 +1454,11 @@ static s32 gtp_init_panel(struct goodix_ts_data *ts) - GTP_INFO("gt9xx:index = %d\n",index); - - } -+ if (!strcmp(config_info.name,"gt911_DB2")){ -+ index = 4; -+ GTP_INFO("gt9xx:index = %d\n",index); -+ -+ } - } - #endif - -diff --git a/drivers/input/touchscreen/gt9xxf/gt9xxf.h b/drivers/input/touchscreen/gt9xxf/gt9xxf.h -index 3db7c68..dd2a729 100755 ---- a/drivers/input/touchscreen/gt9xxf/gt9xxf.h -+++ b/drivers/input/touchscreen/gt9xxf/gt9xxf.h -@@ -156,7 +156,7 @@ extern void gtp_io_init(int ms); - - // TODO: define your config for Sensor_ID == 4 here, if needed - #define CTP_CFG_GROUP5 {\ -- } -+ 0x42,0x00,0x04,0x58,0x02,0x0A,0x0D,0x00,0x01,0x08,0x28,0x08,0x5A,0x46,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x28,0x0A,0x41,0x43,0xB5,0x06,0x00,0x00,0x00,0x42,0x02,0x11,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x5A,0x94,0xC5,0x02,0x08,0x00,0x00,0x04,0x98,0x35,0x00,0x8A,0x3B,0x00,0x7C,0x43,0x00,0x72,0x4B,0x00,0x67,0x55,0x00,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x12,0x10,0x0E,0x0C,0x0A,0x08,0x06,0x04,0x02,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x24,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x0C,0x0A,0x08,0x06,0x04,0x02,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x01} - - // TODO: define your config for Sensor_ID == 5 here, if needed - #define CTP_CFG_GROUP6 {\ diff --git a/patch/kernel/pine64-default/backport-errata-843419.patch b/patch/kernel/pine64-default/backport-errata-843419.patch deleted file mode 100644 index cd8edc99c2..0000000000 --- a/patch/kernel/pine64-default/backport-errata-843419.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index bf428a1..bcfbbb5 100755 ---- a/arch/arm64/Kconfig -+++ b/arch/arm64/Kconfig -@@ -477,6 +477,31 @@ config SECCOMP - and the task is only allowed to execute a few safe syscalls - defined by each seccomp mode. - -+config ARM64_MODULE_CMODEL_LARGE -+ bool -+ -+config ARM64_ERRATUM_843419 -+ bool "Cortex-A53: 843419: A load or store might access an incorrect address" -+ depends on MODULES -+ default y -+ select ARM64_MODULE_CMODEL_LARGE -+ select ARM64_MODULE_CMODEL_LARGE if MODULES -+ help -+ This option builds kernel modules using the large memory model in -+ order to avoid the use of the ADRP instruction, which can cause -+ a subsequent memory access to use an incorrect address on Cortex-A53 -+ parts up to r0p4. -+ -+ Note that the kernel itself must be linked with a version of ld -+ which fixes potentially affected ADRP instructions through the -+ use of veneers. -+ This option links the kernel with '--fix-cortex-a53-843419' and -+ builds modules using the large memory model in order to avoid the use -+ of the ADRP instruction, which can cause a subsequent memory access -+ to use an incorrect address on Cortex-A53 parts up to r0p4. -+ -+ If unsure, say Y. -+ - endmenu - - menu "Boot options" -diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile -index e2782e1..4196f47 100755 ---- a/arch/arm64/Makefile -+++ b/arch/arm64/Makefile -@@ -34,6 +34,19 @@ AS += -EL - LD += -EL - endif - -+ifeq ($(CONFIG_ARM64_MODULE_CMODEL_LARGE), y) -+KBUILD_CFLAGS_MODULE += -mcmodel=large -+endif -+ -+ifeq ($(CONFIG_ARM64_ERRATUM_843419),y) -+ld-843419-workaround := $(call ld-option, --fix-cortex-a53-843419) -+ifeq ($(ld-843419-workaround),) -+$(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum) -+else -+LDFLAGS_vmlinux += --fix-cortex-a53-843419 -+endif -+endif -+ - comma = , - - CHECKFLAGS += -D__aarch64__ diff --git a/scripts/h3disp b/scripts/h3disp index 5f2af6cfd8..1e54074d3a 100755 --- a/scripts/h3disp +++ b/scripts/h3disp @@ -129,11 +129,11 @@ Main() { ;; 9|1080p50|1920x1080p50) # res HDMIMode=9 - pll_video=594 + pll_video=297 ;; 10|1080p60|1080p|1920x1080p60) # res HDMIMode=10 - pll_video=594 + pll_video=297 ;; 11|1080p25|1080p|1920x1080p25) # res HDMIMode=11 @@ -156,8 +156,8 @@ Main() { pll_video=594 ;; 23|1080p24_3d|1920x1080p24_3d) # res - HDMIMode=23 - pll_video=594 + HDMIMode=23 + pll_video=594 ;; 24|720p50_3d|1280x720p50_3d) # res HDMIMode=24 @@ -404,4 +404,4 @@ InstallSunxiTools() { make install } # InstallSunxiTools -Main "$@" \ No newline at end of file +Main "$@"