diff --git a/BUILDME.sh b/BUILDME.sh index 3fce6e34..b9ef69bc 100755 --- a/BUILDME.sh +++ b/BUILDME.sh @@ -122,7 +122,7 @@ for i in $*; do # Update raspberrypi/linux rpi-4.1.y HEAD version in buildroot/.config to latest if [ $i = "update-kernel" ]; then - update_github_kernel_version raspberrypi/linux rpi-4.1.y + update_github_kernel_version raspberrypi/linux rpi-4.4.y fi # Option to build just recovery without completely rebuilding both kernels @@ -150,13 +150,13 @@ if [ $SKIP_KERNEL_REBUILD -ne 1 ]; then select_kernelconfig armv7 make linux-reconfigure # copy ARMv7 kernel - package/rpi-firmware/mkknlimg "$IMAGES_DIR/zImage" "$FINAL_OUTPUT_DIR/recovery7.img" + cp "$IMAGES_DIR/zImage" "$FINAL_OUTPUT_DIR/recovery7.img" # Rebuild kernel for ARMv6 select_kernelconfig armv6 make linux-reconfigure # copy ARMv6 kernel - package/rpi-firmware/mkknlimg "$IMAGES_DIR/zImage" "$FINAL_OUTPUT_DIR/recovery.img" + cp "$IMAGES_DIR/zImage" "$FINAL_OUTPUT_DIR/recovery.img" else echo "Warning: kernels in '$NOOBS_OUTPUT_DIR' directory haven't been updated" fi diff --git a/buildroot/.config b/buildroot/.config index 1ddb3208..83bac713 100644 --- a/buildroot/.config +++ b/buildroot/.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Buildroot 2015.02-git-gbcc0056-dirty Configuration +# Buildroot 2015.02-git-dirty Configuration # BR2_HAVE_DOT_CONFIG=y @@ -307,8 +307,8 @@ BR2_LINUX_KERNEL_CUSTOM_GIT=y # BR2_LINUX_KERNEL_CUSTOM_HG is not set # BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ca312f557513e057c456598528e663fe9d009498" -BR2_LINUX_KERNEL_VERSION="ca312f557513e057c456598528e663fe9d009498" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fa00f31867d8f7b7bb2ad2eb6c35f32fa468ca1e" +BR2_LINUX_KERNEL_VERSION="fa00f31867d8f7b7bb2ad2eb6c35f32fa468ca1e" BR2_LINUX_KERNEL_PATCH="" # BR2_LINUX_KERNEL_USE_DEFCONFIG is not set BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y @@ -978,7 +978,9 @@ BR2_PACKAGE_MONO_ARCH_SUPPORTS=y # # Compression and decompression # -# BR2_PACKAGE_LIBARCHIVE is not set +BR2_PACKAGE_LIBARCHIVE=y +BR2_PACKAGE_LIBARCHIVE_BSDTAR=y +# BR2_PACKAGE_LIBARCHIVE_BSDCPIO is not set # BR2_PACKAGE_LIBZIP is not set # BR2_PACKAGE_LZO is not set # BR2_PACKAGE_SNAPPY is not set @@ -1805,7 +1807,7 @@ BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y # # System tools # -# BR2_PACKAGE_ACL is not set +BR2_PACKAGE_ACL=y BR2_PACKAGE_ATTR=y # BR2_PACKAGE_BOOTUTILS is not set # BR2_PACKAGE_COREUTILS is not set diff --git a/buildroot/board/raspberrypi/readme.txt b/buildroot/board/raspberrypi/readme.txt index ead9227a..b4c1e6f8 100644 --- a/buildroot/board/raspberrypi/readme.txt +++ b/buildroot/board/raspberrypi/readme.txt @@ -113,16 +113,10 @@ For example: $ cp output/images/rpi-firmware/* /mnt/mountpointboot -If your kernel does *not* have support for the Device Tree, then install -it with: +Install your kernel with: $ cp output/images/zImage /mnt/mountpointboot -If your kernel *does* have support for the Device Tree, then install it -with: - - $ ./output/host/usr/bin/mkknlimg output/images/zImage /mnt/mountpointboot/zImage - Note: The kernel image file name is defined in config.txt like this: kernel=zImage diff --git a/buildroot/kernelconfig-recovery.armv6 b/buildroot/kernelconfig-recovery.armv6 index f0f58be2..87299bc6 100644 --- a/buildroot/kernelconfig-recovery.armv6 +++ b/buildroot/kernelconfig-recovery.armv6 @@ -1,7 +1,6 @@ # CONFIG_ARM_PATCH_PHYS_VIRT is not set CONFIG_PHYS_OFFSET=0 CONFIG_LOCALVERSION="-rescue" -CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_SWAP is not set CONFIG_SYSVIPC=y @@ -11,13 +10,11 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_BLK_DEV_INITRD=y -CONFIG_RD_LZO=y CONFIG_EMBEDDED=y # CONFIG_SLUB_DEBUG is not set # CONFIG_COMPAT_BRK is not set # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_BCM2708=y -CONFIG_BCM2708_DT=y CONFIG_PREEMPT=y CONFIG_AEABI=y CONFIG_CMA=y @@ -46,6 +43,7 @@ CONFIG_SYN_COOKIES=y CONFIG_CFG80211=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_DMA_CMA=y CONFIG_CMA_SIZE_MBYTES=5 CONFIG_BLK_DEV_LOOP=y @@ -62,7 +60,6 @@ CONFIG_USB_NET_SMSC95XX=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set CONFIG_BRCMFMAC=y -CONFIG_BRCMFMAC_SDIO=y CONFIG_BRCMFMAC_USB=y # CONFIG_INPUT_MOUSEDEV_PSAUX is not set CONFIG_INPUT_EVDEV=y @@ -71,15 +68,18 @@ CONFIG_INPUT_EVDEV=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_RPI_FT5406=y # CONFIG_SERIO is not set +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VC_CMA=y # CONFIG_LEGACY_PTYS is not set # CONFIG_DEVKMEM is not set CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y # CONFIG_HW_RANDOM is not set CONFIG_RAW_DRIVER=y -CONFIG_BRCM_CHAR_DRIVERS=y -CONFIG_BCM_VC_CMA=y CONFIG_GPIO_SYSFS=y +CONFIG_POWER_SUPPLY=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y # CONFIG_HWMON is not set CONFIG_THERMAL=y CONFIG_THERMAL_BCM2835=y @@ -105,11 +105,11 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_DWCOTG=y CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_BCM2835=y CONFIG_MMC_BCM2835_DMA=y CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_GPIO=y @@ -123,23 +123,25 @@ CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_LEDS_TRIGGER_INPUT=y CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y CONFIG_DMA_BCM2708=y CONFIG_MAILBOX=y CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_RASPBERRYPI_FIRMWARE=y CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y CONFIG_FANOTIFY=y CONFIG_FUSE_FS=y -CONFIG_UDF_FS=y CONFIG_FSCACHE=y CONFIG_CACHEFILES=y +CONFIG_UDF_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_CONFIGFS_FS=y -CONFIG_MISC_FILESYSTEMS=y CONFIG_SQUASHFS=y CONFIG_SQUASHFS_LZO=y # CONFIG_NETWORK_FILESYSTEMS is not set @@ -166,5 +168,4 @@ CONFIG_MAGIC_SYSRQ=y # CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_FTRACE is not set # CONFIG_ARM_UNWIND is not set -# CONFIG_CRYPTO_ANSI_CPRNG is not set # CONFIG_CRYPTO_HW is not set diff --git a/buildroot/kernelconfig-recovery.armv7 b/buildroot/kernelconfig-recovery.armv7 index e3567638..a9ed3096 100644 --- a/buildroot/kernelconfig-recovery.armv7 +++ b/buildroot/kernelconfig-recovery.armv7 @@ -1,5 +1,4 @@ CONFIG_LOCALVERSION="-rescue-v7" -CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y # CONFIG_LOCALVERSION_AUTO is not set # CONFIG_SWAP is not set CONFIG_SYSVIPC=y @@ -9,14 +8,12 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_BLK_DEV_INITRD=y -CONFIG_RD_LZO=y CONFIG_EMBEDDED=y # CONFIG_SLUB_DEBUG is not set # CONFIG_COMPAT_BRK is not set # CONFIG_BLK_DEV_BSG is not set CONFIG_ARCH_BCM2709=y # CONFIG_ARM_THUMB is not set -CONFIG_BCM2709_DT=y # CONFIG_CACHE_L2X0 is not set CONFIG_SMP=y CONFIG_HAVE_ARM_ARCH_TIMER=y @@ -51,6 +48,7 @@ CONFIG_SYN_COOKIES=y CONFIG_CFG80211=y CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y CONFIG_DMA_CMA=y CONFIG_CMA_SIZE_MBYTES=5 CONFIG_BLK_DEV_LOOP=y @@ -67,7 +65,6 @@ CONFIG_USB_NET_SMSC95XX=y # CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_ZAURUS is not set CONFIG_BRCMFMAC=y -CONFIG_BRCMFMAC_SDIO=y CONFIG_BRCMFMAC_USB=y # CONFIG_INPUT_MOUSEDEV_PSAUX is not set CONFIG_INPUT_EVDEV=y @@ -76,15 +73,19 @@ CONFIG_INPUT_EVDEV=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_RPI_FT5406=y # CONFIG_SERIO is not set +CONFIG_BRCM_CHAR_DRIVERS=y +CONFIG_BCM_VC_CMA=y # CONFIG_LEGACY_PTYS is not set # CONFIG_DEVKMEM is not set CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y # CONFIG_HW_RANDOM is not set CONFIG_RAW_DRIVER=y -CONFIG_BRCM_CHAR_DRIVERS=y -CONFIG_BCM_VC_CMA=y CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_BCM_VIRT=y +CONFIG_POWER_SUPPLY=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y # CONFIG_HWMON is not set CONFIG_THERMAL=y CONFIG_THERMAL_BCM2835=y @@ -110,11 +111,11 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y CONFIG_USB_DWCOTG=y CONFIG_MMC=y CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_BCM2835=y CONFIG_MMC_BCM2835_DMA=y CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_GPIO=y @@ -128,23 +129,25 @@ CONFIG_LEDS_TRIGGER_GPIO=y CONFIG_LEDS_TRIGGER_DEFAULT_ON=y CONFIG_LEDS_TRIGGER_INPUT=y CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y CONFIG_DMA_BCM2708=y CONFIG_MAILBOX=y CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_RASPBERRYPI_FIRMWARE=y CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y CONFIG_FANOTIFY=y CONFIG_FUSE_FS=y -CONFIG_UDF_FS=y CONFIG_FSCACHE=y CONFIG_CACHEFILES=y +CONFIG_UDF_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_CONFIGFS_FS=y -CONFIG_MISC_FILESYSTEMS=y CONFIG_SQUASHFS=y CONFIG_SQUASHFS_LZO=y # CONFIG_NETWORK_FILESYSTEMS is not set @@ -171,5 +174,4 @@ CONFIG_MAGIC_SYSRQ=y # CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_FTRACE is not set # CONFIG_ARM_UNWIND is not set -# CONFIG_CRYPTO_ANSI_CPRNG is not set # CONFIG_CRYPTO_HW is not set diff --git a/buildroot/package/dhcpcd/dhcpcd.conf b/buildroot/package/dhcpcd/dhcpcd.conf new file mode 100644 index 00000000..263b813c --- /dev/null +++ b/buildroot/package/dhcpcd/dhcpcd.conf @@ -0,0 +1,42 @@ +# A sample configuration for dhcpcd. +# See dhcpcd.conf(5) for details. + +# Allow users of this group to interact with dhcpcd via the control socket. +#controlgroup wheel + +# Inform the DHCP server of our hostname for DDNS. +hostname + +# Use the hardware address of the interface for the Client ID. +clientid +# or +# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361. +#duid + +# Persist interface configuration when dhcpcd exits. +persistent + +# Rapid commit support. +# Safe to enable by default because it requires the equivalent option set +# on the server to actually work. +option rapid_commit + +# A list of options to request from the DHCP server. +option domain_name_servers, domain_name, domain_search, host_name +option classless_static_routes +# Most distributions have NTP support. +option ntp_servers +# Respect the network MTU. +# Some interface drivers reset when changing the MTU so disabled by default. +#option interface_mtu + +# A ServerID is required by RFC2131. +require dhcp_server_identifier + +# Generate Stable Private IPv6 Addresses instead of hardware based ones +slaac private + +# A hook script is provided to lookup the hostname if not set by the DHCP +# server, but it should not be run by default. +nohook lookup-hostname + diff --git a/buildroot/package/dhcpcd/dhcpcd.mk b/buildroot/package/dhcpcd/dhcpcd.mk index 9c658260..45721168 100644 --- a/buildroot/package/dhcpcd/dhcpcd.mk +++ b/buildroot/package/dhcpcd/dhcpcd.mk @@ -36,9 +36,11 @@ endef define DHCPCD_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) + $(INSTALL) -D -m 0664 package/dhcpcd/dhcpcd.conf $(TARGET_DIR)/etc/dhcpcd.conf endef # NOTE: Even though this package has a configure script, it is not generated # using the autotools, so we have to use the generic package infrastructure. $(eval $(generic-package)) + diff --git a/buildroot/package/rpi-firmware/mkknlimg b/buildroot/package/rpi-firmware/mkknlimg deleted file mode 100755 index f3779473..00000000 --- a/buildroot/package/rpi-firmware/mkknlimg +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env perl -# -# Originaly from: https://github.com/raspberrypi/tools/blob/master/mkimage/mkknlimg -# Original cset : 92a2df13b887f4799554bf92c4fc78d53668c868 - -use strict; -use integer; - -my $trailer_magic = 'RPTL'; - -my $tmpfile1 = "/tmp/mkknlimg_$$.1"; -my $tmpfile2 = "/tmp/mkknlimg_$$.2"; - -my $dtok = 0; - -while ($ARGV[0] =~ /^-/) -{ - my $arg = shift(@ARGV); - if ($arg eq '--dtok') - { - $dtok = 1; - } - else - { - print ("* Unknown option '$arg'\n"); - usage(); - } -} - -usage() if (@ARGV != 2); - -my $kernel_file = $ARGV[0]; -my $out_file = $ARGV[1]; - -my @wanted_config_lines = -( - 'CONFIG_BCM2708_DT' -); - -my @wanted_strings = -( - 'bcm2708_fb', - 'brcm,bcm2708-pinctrl', - 'brcm,bcm2835-gpio', - 'of_find_property' -); - -my $res = try_extract($kernel_file, $tmpfile1); - -$res = try_decompress('\037\213\010', 'xy', 'gunzip', 0, - $kernel_file, $tmpfile1, $tmpfile2) if (!$res); -$res = try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1, - $kernel_file, $tmpfile1, $tmpfile2) if (!$res); -$res = try_decompress('BZh', 'xy', 'bunzip2', 0, - $kernel_file, $tmpfile1, $tmpfile2) if (!$res); -$res = try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0, - $kernel_file, $tmpfile1, $tmpfile2) if (!$res); -$res = try_decompress('\211\114\132', 'xy', 'lzop -d', 0, - $kernel_file, $tmpfile1, $tmpfile2) if (!$res); - -my $append_trailer; -my $trailer; - -if ($res) -{ - print("Version: $res->{''}\n"); - - $append_trailer = $dtok; - if (!$dtok) - { - if (config_bool($res, 'bcm2708_fb')) - { - $dtok ||= config_bool($res, 'CONFIG_BCM2708_DT'); - $dtok ||= config_bool($res, 'brcm,bcm2708-pinctrl'); - $dtok ||= config_bool($res, 'brcm,bcm2835-gpio'); - $append_trailer = 1; - } - else - { - print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n"); - } - } -} -else -{ - print ("* Is this a valid kernel? In pass-through mode.\n"); -} - -if ($append_trailer) -{ - printf("DT: %s\n", $dtok ? "y" : "n"); - - my @atoms; - - push @atoms, [ $trailer_magic, pack('V', 0) ]; - push @atoms, [ 'KVer', $res->{''} ]; - push @atoms, [ 'DTOK', pack('V', $dtok) ]; - - $trailer = pack_trailer(\@atoms); - $atoms[0]->[1] = pack('V', length($trailer)); - - $trailer = pack_trailer(\@atoms); -} - -die "* Failed to open '$kernel_file'\n" if (!open(my $ifh, '<', $kernel_file)); -die "* Failed to create '$out_file'\n" if (!open(my $ofh, '>', $out_file)); - -my $copybuf; -my $total_len = 0; -while (1) -{ - my $bytes = sysread($ifh, $copybuf, 64*1024); - last if (!$bytes); - syswrite($ofh, $copybuf, $bytes); - $total_len += $bytes; -} - -if ($trailer) -{ - # Pad to word-alignment - syswrite($ofh, "\x000\x000\x000", (-$total_len & 0x3)); - syswrite($ofh, $trailer); -} - -close($ifh); -close($ofh); - -exit($trailer ? 0 : 1); - -END { - unlink($tmpfile1) if ($tmpfile1); - unlink($tmpfile2) if ($tmpfile2); -} - - -sub usage -{ - print ("Usage: mkknlimg [--dtok] \n"); - exit(1); -} - -sub try_extract -{ - my ($knl, $tmp) = @_; - - my $ver = `strings "$knl" | grep -a -E "^Linux version [1-9]"`; - - return undef if (!$ver); - - chomp($ver); - - my $res = { ''=>$ver }; - my $string_pattern = '^('.join('|', @wanted_strings).')$'; - - my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`; - foreach my $match (@matches) - { - chomp($match); - $res->{$match} = 1; - } - - my $config_pattern = '^('.join('|', @wanted_config_lines).')=(.*)$'; - my $cf1 = 'IKCFG_ST\037\213\010'; - my $cf2 = '0123456789'; - - my $pos = `tr "$cf1\n$cf2" "\n$cf2=" < "$knl" | grep -abo "^$cf2"`; - if ($pos) - { - $pos =~ s/:.*[\r\n]*$//s; - $pos += 8; - my $err = (system("tail -c+$pos \"$knl\" | zcat > $tmp 2> /dev/null") >> 8); - if (($err == 0) || ($err == 2)) - { - if (open(my $fh, '<', $tmp)) - { - while (my $line = <$fh>) - { - chomp($line); - $res->{$1} = $2 if ($line =~ /$config_pattern/); - } - - close($fh); - } - } - } - - return $res; -} - - -sub try_decompress -{ - my ($magic, $subst, $zcat, $idx, $knl, $tmp1, $tmp2) = @_; - - my $pos = `tr "$magic\n$subst" "\n$subst=" < "$knl" | grep -abo "^$subst"`; - if ($pos) - { - chomp($pos); - $pos = (split(/[\r\n]+/, $pos))[$idx]; - $pos =~ s/:.*[\r\n]*$//s; - my $cmd = "tail -c+$pos \"$knl\" | $zcat > $tmp2 2> /dev/null"; - my $err = (system($cmd) >> 8); - return undef if (($err != 0) && ($err != 2)); - - return try_extract($tmp2, $tmp1); - } - - return undef; -} - -sub pack_trailer -{ - my ($atoms) = @_; - my $trailer = pack('VV', 0, 0); - for (my $i = $#$atoms; $i>=0; $i--) - { - my $atom = $atoms->[$i]; - $trailer .= pack('a*x!4Va4', $atom->[1], length($atom->[1]), $atom->[0]); - } - return $trailer; -} - -sub config_bool -{ - my ($configs, $wanted) = @_; - return (($configs->{$wanted} eq 'y') || ($configs->{$wanted} eq '1')); -} diff --git a/buildroot/package/rpi-firmware/rpi-firmware.mk b/buildroot/package/rpi-firmware/rpi-firmware.mk index 683f2792..3b780d89 100644 --- a/buildroot/package/rpi-firmware/rpi-firmware.mk +++ b/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 3442862c10fab68c2e88d660d2e69c143bb1f00c +RPI_FIRMWARE_VERSION = 18b5b6977d021937d82fb94010c99d84b403a08a RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3c RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom @@ -18,12 +18,13 @@ define RPI_FIRMWARE_INSTALL_DTB $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b.dtb $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b-plus.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b-plus.dtb $(INSTALL) -D -m 0644 $(@D)/boot/bcm2709-rpi-2-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2709-rpi-2-b.dtb + $(INSTALL) -D -m 0644 $(@D)/boot/bcm2710-rpi-3-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2710-rpi-3-b.dtb endef endif ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS),y) define RPI_FIRMWARE_INSTALL_DTB_OVERLAYS - for ovldtb in $(@D)/boot/overlays/*.dtb; do \ + for ovldtb in $(@D)/boot/overlays/*.dtbo; do \ $(INSTALL) -D -m 0644 $${ovldtb} $(BINARIES_DIR)/rpi-firmware/overlays/$${ovldtb##*/} || exit 1; \ done endef @@ -51,9 +52,5 @@ endef HOST_RPI_FIRMWARE_SOURCE = HOST_RPI_FIRMWARE_DEPENDENCIES = -define HOST_RPI_FIRMWARE_INSTALL_CMDS - $(INSTALL) -D -m 0755 package/rpi-firmware/mkknlimg $(HOST_DIR)/usr/bin/mkknlimg -endef - $(eval $(generic-package)) $(eval $(host-generic-package)) diff --git a/recovery/config.h b/recovery/config.h index 1c0ce8be..dfcbfb76 100644 --- a/recovery/config.h +++ b/recovery/config.h @@ -2,7 +2,7 @@ #define CONFIG_H /* Version number displayed in the title bar */ -#define VERSION_NUMBER "1.7" +#define VERSION_NUMBER "2.1" /* Color of the background */ // #define BACKGROUND_COLOR Qt::white @@ -39,7 +39,7 @@ /* Partitioning settings */ #define PARTITION_ALIGNMENT 8192 #define PARTITION_GAP 2 -/* Allow partitions to be shrinked PARTITION_GAP sectors +/* Allow partitions to be shrunk PARTITION_GAP sectors if that prevents having a 4 MiB gap between the next one */ #define SHRINK_PARTITIONS_TO_MINIMIZE_GAPS diff --git a/recovery/mainwindow.cpp b/recovery/mainwindow.cpp index 313ba4b3..f0734816 100644 --- a/recovery/mainwindow.cpp +++ b/recovery/mainwindow.cpp @@ -160,6 +160,50 @@ MainWindow::MainWindow(const QString &defaultDisplay, QSplashScreen *splash, QWi _model = getFileContents("/proc/device-tree/model"); QString cmdline = getFileContents("/proc/cmdline"); + + if (QFile::exists("/mnt/os_list_v3.json")) + { + /* We have a local os_list_v3.json for testing purposes */ + _repo = "/mnt/os_list_v3.json"; + + /* We need a somewhat accurate date for https to work. Normally we retrieve that from the repo server, + but since we are in testing mode, just set date to last modification time of our local file */ + if (QDate::currentDate().year() < 2016) + { + QFileInfo fi(_repo); + + struct timeval tv; + tv.tv_sec = fi.lastModified().toTime_t(); + tv.tv_usec = 0; + settimeofday(&tv, NULL); + } + } + else if (cmdline.contains("repo=")) + { + QByteArray searchFor = "repo="; + int searchForLen = searchFor.length(); + int pos = cmdline.indexOf(searchFor); + int end; + + if (cmdline.length() > pos+searchForLen && cmdline.at(pos+searchForLen) == '"') + { + /* Value between quotes */ + searchForLen++; + end = cmdline.indexOf('"', pos+searchForLen); + } + else + { + end = cmdline.indexOf(' ', pos+searchForLen); + } + if (end != -1) + end = end-pos-searchForLen; + _repo = cmdline.mid(pos+searchForLen, end); + } + else + { + _repo = DEFAULT_REPO_SERVER; + } + if (cmdline.contains("showall")) { _showAll = true; @@ -544,6 +588,8 @@ void MainWindow::on_actionWrite_image_to_disk_triggered() { setEnabled(false); _numMetaFilesToDownload = 0; + if (_networkStatusPollTimer.isActive()) + _networkStatusPollTimer.stop(); QList selected = selectedItems(); foreach (QListWidgetItem *item, selected) @@ -721,7 +767,7 @@ void MainWindow::displayMode(int modenr, bool silent) QWSServer::instance()->refresh(); // In case they can't see the message box, inform that mode change - // is occuring by turning on the LED during the change + // is occurring by turning on the LED during the change QProcess *led_blink = new QProcess(this); connect(led_blink, SIGNAL(finished(int)), led_blink, SLOT(deleteLater())); led_blink->start("sh -c \"echo 1 > /sys/class/leds/led0/brightness; sleep 3; echo 0 > /sys/class/leds/led0/brightness\""); @@ -991,11 +1037,14 @@ void MainWindow::downloadList(const QString &urlstring) void MainWindow::downloadLists() { _numIconsToDownload = 0; - QStringList urls = QString(DEFAULT_REPO_SERVER).split(' ', QString::SkipEmptyParts); + QStringList urls = _repo.split(' ', QString::SkipEmptyParts); foreach (QString url, urls) { - downloadList(url); + if (url.startsWith("/")) + processJson( Json::parse(getFileContents(url)) ); + else + downloadList(url); } } diff --git a/recovery/mainwindow.h b/recovery/mainwindow.h index 802de809..895c4517 100644 --- a/recovery/mainwindow.h +++ b/recovery/mainwindow.h @@ -53,7 +53,7 @@ class MainWindow : public QMainWindow QMessageBox *_displayModeBox; QTimer _networkStatusPollTimer; QTime _time; - QString _model; + QString _model, _repo; QMap listImages(); virtual void changeEvent(QEvent * event); diff --git a/recovery/multiimagewritethread.cpp b/recovery/multiimagewritethread.cpp index a81b29db..37b464e9 100644 --- a/recovery/multiimagewritethread.cpp +++ b/recovery/multiimagewritethread.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include #include @@ -666,7 +668,16 @@ bool MultiImageWriteThread::untar(const QString &tarball) { cmd += " "+tarball; } - cmd += " | tar x -C /mnt2 "; + + cmd += " | bsdtar -xf - -C /mnt2 "; + + struct statfs st; + if (statfs("/mnt2", &st) == 0 && st.f_type == MSDOS_SUPER_MAGIC) + { + /* File system does not support uid/gid, tell bsdtar not to set those or it will error out */ + cmd += " --no-same-owner "; + } + cmd += "\""; QTime t1; diff --git a/recovery/wifisettingsdialog.cpp b/recovery/wifisettingsdialog.cpp index d0510d75..befe4162 100644 --- a/recovery/wifisettingsdialog.cpp +++ b/recovery/wifisettingsdialog.cpp @@ -159,7 +159,7 @@ void WifiSettingsDialog::on_passwordRadio_toggled(bool checked) void WifiSettingsDialog::on_list_currentItemChanged(QListWidgetItem *current) { - /* Enable authentication options appropiate for the SSID selected */ + /* Enable authentication options appropriate for the SSID selected */ QVariantMap properties = current->data(Qt::UserRole).toMap(); QStringList keymgmt = properties.value("WPA").toMap().value("KeyMgmt").toStringList(); QStringList keymgmt_wpa2 = properties.value("RSN").toMap().value("KeyMgmt").toStringList(); diff --git a/screenshots/boot_select.png b/screenshots/boot_select.png new file mode 100755 index 00000000..d8aba7f2 Binary files /dev/null and b/screenshots/boot_select.png differ diff --git a/screenshots/browser.png b/screenshots/browser.png new file mode 100755 index 00000000..3ec793d2 Binary files /dev/null and b/screenshots/browser.png differ diff --git a/screenshots/config_editor.png b/screenshots/config_editor.png new file mode 100755 index 00000000..bc96eca6 Binary files /dev/null and b/screenshots/config_editor.png differ diff --git a/screenshots/installer_slides.png b/screenshots/installer_slides.png new file mode 100755 index 00000000..3b49c2f2 Binary files /dev/null and b/screenshots/installer_slides.png differ diff --git a/screenshots/interface.png b/screenshots/interface.png new file mode 100755 index 00000000..a6435649 Binary files /dev/null and b/screenshots/interface.png differ diff --git a/screenshots/os_installed.png b/screenshots/os_installed.png new file mode 100755 index 00000000..62b2e6ba Binary files /dev/null and b/screenshots/os_installed.png differ diff --git a/screenshots/os_selected.png b/screenshots/os_selected.png new file mode 100755 index 00000000..dc3f1a8f Binary files /dev/null and b/screenshots/os_selected.png differ diff --git a/screenshots/wifi_selector.png b/screenshots/wifi_selector.png new file mode 100755 index 00000000..1f9005a9 Binary files /dev/null and b/screenshots/wifi_selector.png differ