diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 22ccadd..b56e971 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,18 +13,13 @@ jobs: env: working-directory: ./builder steps: - - name: Clean project - id: clean - working-directory: ${{ env.working-directory }} - run: | - sudo rm -fr work deploy - name: Checkout code uses: actions/checkout@v2 - name: Build project id: builder working-directory: ${{ env.working-directory }} run: | - sudo bash build.sh + bash build-docker.sh echo ::set-output name=filename::$(ls deploy/*.tar.xz | xargs -n 1 basename) - name: Fix Permissions id: fix_perm_filename diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index bbc2d12..fa7b1fc 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -10,18 +10,13 @@ jobs: env: working-directory: ./builder steps: - - name: Clean project - id: clean - working-directory: ${{ env.working-directory }} - run: | - sudo rm -fr work deploy - name: Checkout code uses: actions/checkout@v2 - name: Build project id: builder working-directory: ${{ env.working-directory }} run: | - sudo bash build.sh + bash build-docker.sh echo ::set-output name=filename::$(ls deploy/*.tar.xz | xargs -n 1 basename) - name: Fix Permissions id: fix_perm_filename diff --git a/builder/build-docker.sh b/builder/build-docker.sh new file mode 100755 index 0000000..79b68d4 --- /dev/null +++ b/builder/build-docker.sh @@ -0,0 +1,108 @@ +#!/bin/bash -eu +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +BUILD_OPTS="$*" + +DOCKER="docker" + +if ! ${DOCKER} ps >/dev/null 2>&1; then + DOCKER="sudo docker" +fi +if ! ${DOCKER} ps >/dev/null; then + echo "error connecting to docker:" + ${DOCKER} ps + exit 1 +fi + +CONFIG_FILE="" +if [ -f "${DIR}/config" ]; then + CONFIG_FILE="${DIR}/config" +fi + +while getopts "c:" flag +do + case "${flag}" in + c) + CONFIG_FILE="${OPTARG}" + ;; + *) + ;; + esac +done + +# Ensure that the configuration file is an absolute path +if test -x /usr/bin/realpath; then + CONFIG_FILE=$(realpath -s "$CONFIG_FILE") +fi + +# Ensure that the confguration file is present +if test -z "${CONFIG_FILE}"; then + echo "Configuration file need to be present in '${DIR}/config' or path passed as parameter" + exit 1 +else + # shellcheck disable=SC1090 + source "${CONFIG_FILE}" +fi + +CONTAINER_NAME=${CONTAINER_NAME:-pigen_work} +CONTINUE=${CONTINUE:-0} +PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0} + +if [ -z "${IMG_NAME}" ]; then + echo "IMG_NAME not set in 'config'" 1>&2 + echo 1>&2 +exit 1 +fi + +# Ensure the Git Hash is recorded before entering the docker container +GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} + +CONTAINER_EXISTS=$(${DOCKER} ps -a --filter name="${CONTAINER_NAME}" -q) +CONTAINER_RUNNING=$(${DOCKER} ps --filter name="${CONTAINER_NAME}" -q) +if [ "${CONTAINER_RUNNING}" != "" ]; then + echo "The build is already running in container ${CONTAINER_NAME}. Aborting." + exit 1 +fi +if [ "${CONTAINER_EXISTS}" != "" ] && [ "${CONTINUE}" != "1" ]; then + echo "Container ${CONTAINER_NAME} already exists and you did not specify CONTINUE=1. Aborting." + echo "You can delete the existing container like this:" + echo " ${DOCKER} rm -v ${CONTAINER_NAME}" + exit 1 +fi + +# Modify original build-options to allow config file to be mounted in the docker container +BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')" + +${DOCKER} build -t pi-gen "${DIR}" +if [ "${CONTAINER_EXISTS}" != "" ]; then + trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}_cont' SIGINT SIGTERM + time ${DOCKER} run --rm --privileged \ + --volume "${CONFIG_FILE}":/config:ro \ + -e "GIT_HASH=${GIT_HASH}" \ + --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ + pi-gen \ + bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && + cd /pi-gen; ./build.sh ${BUILD_OPTS} && + rsync -av work/*/build.log deploy/" & + wait "$!" +else + trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}' SIGINT SIGTERM + time ${DOCKER} run --name "${CONTAINER_NAME}" --privileged \ + --volume "${CONFIG_FILE}":/config:ro \ + -e "GIT_HASH=${GIT_HASH}" \ + pi-gen \ + bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && + cd /pi-gen; ./build.sh ${BUILD_OPTS} && + rsync -av work/*/build.log deploy/" & + wait "$!" +fi +echo "copying results from deploy/" +${DOCKER} cp "${CONTAINER_NAME}":/pi-gen/deploy . +ls -lah deploy + +# cleanup +if [ "${PRESERVE_CONTAINER}" != "1" ]; then + ${DOCKER} rm -v "${CONTAINER_NAME}" +fi + +echo "Done! Your image(s) should be in deploy/" diff --git a/builder/export-noobs/00-release/00-run.sh b/builder/export-noobs/00-release/00-run.sh new file mode 100755 index 0000000..1d0b12f --- /dev/null +++ b/builder/export-noobs/00-release/00-run.sh @@ -0,0 +1,42 @@ +#!/bin/bash -e + +NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}" + +install -v -m 744 files/partition_setup.sh "${NOOBS_DIR}/" +install -v files/partitions.json "${NOOBS_DIR}/" +install -v files/os.json "${NOOBS_DIR}/" +install -v files/OS.png "${NOOBS_DIR}/" +install -v files/release_notes.txt "${NOOBS_DIR}/" + +tar -v -c -C files/marketing -f "${NOOBS_DIR}/marketing.tar" . + +BOOT_SHASUM="$(sha256sum "${NOOBS_DIR}/boot.tar.xz" | cut -f1 -d' ')" +ROOT_SHASUM="$(sha256sum "${NOOBS_DIR}/root.tar.xz" | cut -f1 -d' ')" + +BOOT_SIZE="$(xz --robot -l "${NOOBS_DIR}/boot.tar.xz" | grep totals | cut -f 5)" +ROOT_SIZE="$(xz --robot -l "${NOOBS_DIR}/root.tar.xz" | grep totals | cut -f 5)" + +BOOT_SIZE="$(( BOOT_SIZE / 1024 / 1024 + 1))" +ROOT_SIZE="$(( ROOT_SIZE / 1024 / 1024 + 1))" + +BOOT_NOM="256" +ROOT_NOM="$(( ROOT_SIZE + 400 ))" + +mv "${NOOBS_DIR}/OS.png" "${NOOBS_DIR}/${NOOBS_NAME// /_}.png" + +sed "${NOOBS_DIR}/partitions.json" -i -e "s|BOOT_SHASUM|${BOOT_SHASUM}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_SHASUM|${ROOT_SHASUM}|" + +sed "${NOOBS_DIR}/partitions.json" -i -e "s|BOOT_SIZE|${BOOT_SIZE}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_SIZE|${ROOT_SIZE}|" + +sed "${NOOBS_DIR}/partitions.json" -i -e "s|BOOT_NOM|${BOOT_NOM}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_NOM|${ROOT_NOM}|" + +sed "${NOOBS_DIR}/os.json" -i -e "s|UNRELEASED|${IMG_DATE}|" +sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_NAME|${NOOBS_NAME}|" +sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|" + +sed "${NOOBS_DIR}/release_notes.txt" -i -e "s|UNRELEASED|${IMG_DATE}|" + +cp -a "${NOOBS_DIR}" "${DEPLOY_DIR}/" diff --git a/builder/export-noobs/00-release/files/OS.png b/builder/export-noobs/00-release/files/OS.png new file mode 100644 index 0000000..02b67cf Binary files /dev/null and b/builder/export-noobs/00-release/files/OS.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/A.png b/builder/export-noobs/00-release/files/marketing/slides_vga/A.png new file mode 100644 index 0000000..1f2dc55 Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/A.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/B.png b/builder/export-noobs/00-release/files/marketing/slides_vga/B.png new file mode 100644 index 0000000..870730b Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/B.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/C.png b/builder/export-noobs/00-release/files/marketing/slides_vga/C.png new file mode 100644 index 0000000..96b46db Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/C.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/D.png b/builder/export-noobs/00-release/files/marketing/slides_vga/D.png new file mode 100644 index 0000000..4500a95 Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/D.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/E.png b/builder/export-noobs/00-release/files/marketing/slides_vga/E.png new file mode 100644 index 0000000..e046aef Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/E.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/F.png b/builder/export-noobs/00-release/files/marketing/slides_vga/F.png new file mode 100644 index 0000000..78b5537 Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/F.png differ diff --git a/builder/export-noobs/00-release/files/marketing/slides_vga/G.png b/builder/export-noobs/00-release/files/marketing/slides_vga/G.png new file mode 100644 index 0000000..a827932 Binary files /dev/null and b/builder/export-noobs/00-release/files/marketing/slides_vga/G.png differ diff --git a/builder/export-noobs/00-release/files/os.json b/builder/export-noobs/00-release/files/os.json new file mode 100644 index 0000000..afa9f9a --- /dev/null +++ b/builder/export-noobs/00-release/files/os.json @@ -0,0 +1,20 @@ +{ + "description": "NOOBS_DESCRIPTION", + "feature_level": 35120124, + "kernel": "4.19", + "name": "NOOBS_NAME", + "password": "raspberry", + "release_date": "UNRELEASED", + "supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041,0092,0093,2082", + "supported_models": [ + "Pi Model", + "Pi 2", + "Pi Zero", + "Pi 3", + "Pi Compute Module 3", + "Pi 4" + ], + "url": "http://www.raspbian.org/", + "username": "pi", + "version": "buster" +} diff --git a/builder/export-noobs/00-release/files/partition_setup.sh b/builder/export-noobs/00-release/files/partition_setup.sh new file mode 100644 index 0000000..851290e --- /dev/null +++ b/builder/export-noobs/00-release/files/partition_setup.sh @@ -0,0 +1,46 @@ +#!/bin/sh +#supports_backup in PINN + +set -ex + +# shellcheck disable=SC2154 +if [ -z "$part1" ] || [ -z "$part2" ]; then + printf "Error: missing environment variable part1 or part2\n" 1>&2 + exit 1 +fi + +mkdir -p /tmp/1 /tmp/2 + +mount "$part1" /tmp/1 +mount "$part2" /tmp/2 + +sed /tmp/1/cmdline.txt -i -e "s|root=[^ ]*|root=${part2}|" +sed /tmp/2/etc/fstab -i -e "s|^[^#].* / |${part2} / |" +sed /tmp/2/etc/fstab -i -e "s|^[^#].* /boot |${part1} /boot |" + +# shellcheck disable=SC2154 +if [ -z "$restore" ]; then + if [ -f /mnt/ssh ]; then + cp /mnt/ssh /tmp/1/ + fi + + if [ -f /mnt/ssh.txt ]; then + cp /mnt/ssh.txt /tmp/1/ + fi + + if [ -f /settings/wpa_supplicant.conf ]; then + cp /settings/wpa_supplicant.conf /tmp/1/ + fi + + if ! grep -q resize /proc/cmdline; then + if ! grep -q splash /tmp/1/cmdline.txt; then + sed -i "s| quiet||g" /tmp/1/cmdline.txt + fi + sed -i 's| init=/usr/lib/raspi-config/init_resize.sh||' /tmp/1/cmdline.txt + else + sed -i '1 s|.*|& sdhci.debug_quirks2=4|' /tmp/1/cmdline.txt + fi +fi + +umount /tmp/1 +umount /tmp/2 diff --git a/builder/export-noobs/00-release/files/partitions.json b/builder/export-noobs/00-release/files/partitions.json new file mode 100644 index 0000000..3d06017 --- /dev/null +++ b/builder/export-noobs/00-release/files/partitions.json @@ -0,0 +1,22 @@ +{ + "partitions": [ + { + "filesystem_type": "FAT", + "label": "boot", + "mkfs_options": "-F 32", + "partition_size_nominal": BOOT_NOM, + "uncompressed_tarball_size": BOOT_SIZE, + "want_maximised": false, + "sha256sum": "BOOT_SHASUM" + }, + { + "filesystem_type": "ext4", + "label": "root", + "mkfs_options": "-O ^huge_file", + "partition_size_nominal": ROOT_NOM, + "uncompressed_tarball_size": ROOT_SIZE, + "want_maximised": true, + "sha256sum": "ROOT_SHASUM" + } + ] +} diff --git a/builder/export-noobs/00-release/files/release_notes.txt b/builder/export-noobs/00-release/files/release_notes.txt new file mode 100644 index 0000000..45e8576 --- /dev/null +++ b/builder/export-noobs/00-release/files/release_notes.txt @@ -0,0 +1,456 @@ +UNRELEASED: + * +2019-09-26: + * rpi-eeprom included + - This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version. + See https://rpf.io/eeprom for more information. + * New icon theme for file manager icons + * Appearance Settings - option for identical desktop on both monitors + * Appearance Settings - option to show different desktop icons on both monitors + * Taskbar automatically moved to monitor 0 if monitor 1 not found at boot + * Switching of audio output between two HDMI devices added to volume plugin + * Switching of audio input devices added to volume plugin + * .asoundrc (ALSA config file) now uses 'plug' values to support more devices + * Audio Settings tool modified to integrate more closely with volume plugin to reduce duplicated code + * Screen Configuration tool now shows separate menus for resolution and refresh rate + * Primary and active monitor settings removed from Screen Configuration tool + * Overscan support added for FKMS driver + * New keyboard shortcuts added - Ctrl-Alt-End brings up shutdown menu; Ctrl-Alt-M moves taskbar between monitors + * Latest changes to Bluez ALSA interface integrated to improve connection to Bluetooth audio devices + * Mousepad used as simple text editor instead of leafpad + * Version 3.2 of Thonny added + * Version 74 of Chromium added + * Version 3.0.8 of VLC added + * Version 32.0.0.255 of Flash player added + * Version 6.5.0 of RealVNC Server added + * Version 6.19.715 of RealVNC Viewer added (full image only) + * Version 12.0.1 of Mathematica added (full image only) + * Version 0.20.8 of NodeRED added (full image only) + * Version 3.1.0 of Sonic Pi added (full image only) + * Scratch 3 added (full image only) + * Bug fix - URL handling in Terminal + * Bug fix - octal values in SSIDs in network plugin + * Bug fix - remaining value in progress bar when transferring files + * Bug fix - integration of xarchiver tool with file manager + * Bug fix - start menu opening on incorrect monitor + * Bug fix - minimised applications wrongly displayed on taskbar on second monitor + * Bug fix - Bluetooth icon disappearing on x86 platforms when Bluetooth turned off + * Bug fix - Screen Configuration tool not shown on x86 platforms and settings not being saved + * Various translation updates + * Various minor bug fixes + * Epiphany/Web removed + * ntfs-3g included + * pciutils added + * Linux kernel 4.19.75 + * Raspberry Pi firmware 01508e81ec1e918448227ca864616d56c430b46d +2019-07-10: + * Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration + * Option added to Appearance Settings to move taskbar to second monitor + * Option added to Recommended Software to restrict package installs by architecture + * New version of Adobe Flash player (32.0.0.223) + * Selection of screen refresh rates added to Screen Configuration + * Fix for missing text insertion cursor in LibreOffice on Pi 4 + * Fix for Wi-fi interruption when Wi-fi icon on taskbar is clicked + * FIx for incorrect desktop background behind desktop login prompt + * Fix for segmentation faults when launching obconf and lxapperarance + * Fix for unclosed file pointer in Screen Configuration + * Fix for Bluetooth plugin freeze when large numbers of devices detected + * Fix for opening URLs not working in lxterminal + * Fix for start menu opening on incorrect monitor when launched from keyboard + * Fix for taskbar item not having [] removed when un-minimising on second monitor + * Fix for Chromium video playback and WebGL performance on Pi 4 + * Remove 4kp60 option from Raspberry Pi Configuration + * Rename hdmi_enable_4k to hdmi_enable_4kp60 in /boot/config.txt and raspi-config + * Linux kernel 4.19.57 + * Raspberry Pi firmware 356f5c2880a3c7e8774025aa6fc934a617553e7b +2019-06-20: + * Based on Debian Buster + * Support for Raspberry Pi 4 hardware + * FKMS OpenGL desktop graphics driver and xcompmgr compositing window manager used when running on Raspberry Pi 4 + * Screen Configuration application added for use with FKMS driver + * Raspberry Pi 4 video output options added to Raspberry Pi Configuration + * Uses new PiXflat UI theme for GTK and Openbox + * CPU activity gauge plugin no longer shown on taskbar by default + * CPU temperature gauge plugin added (not shown by default) + * USB ejecter and Bluetooth taskbar icons hidden when not appropriate + * Version 74.0.3729.157 of Chromium web browser included + * Version 32.0.0.207 of Flash player included + * IDLE Python IDE removed + * Wolfram Mathematica removed temporarily due to incompatibility with Buster + * Display of package sizes removed from Recommended Software + * Appearance Settings modified to support independent settings for two monitors + * Oracle Java 7 and 8 replaced with OpenJDK 11 + * Miscellaneous small bug fixes + * On-board 5GHz WiFi blocked by rfkill by default + The block is removed when taking one of the following actions: + - Selecting a locale in the first run wizard + - Setting the WiFi country in the Raspberry Pi Configuration tool or the Network Settings applet + - Setting the WiFi country in raspi-config + - Providing a wpa_supplicant.conf file through the boot partition + - Running 'rfkill unblock wifi' + * Boot partition size set to 256M + * Linux kernel 4.19.50 + * Raspberry Pi firmware 88ca9081f5e51cdedd16d5dbc85ed12a25123201 +2019-04-08: + * Chromium browser updated to version 72 + * VLC media player updated to version 3.0.6 + * RealVNC Server updated to version 6.4.0 + * Flash player updated to version 32.0.0.156 + * Performance improvements to SDL library + * Performance improvements to pixman library + * Option to set display underscan added to startup wizard + * Mounted external drives now displayed on desktop by default + * Network plugin modified for improved compatibility with wpa_passphrase + * SD Card Copier tweaks to reduce copy failures + * Various minor bug fixes and appearance tweaks + * Added ethtool + * Added rng-tools + * Add PINN restore support + * Linux kernel 4.14.98 + * Raspberry Pi firmware f8939644f7bd3065068787f1f92b3f3c79cf3de9 +2018-11-13: + * Two versions of image created - "base" image has no optional software packages included; "full" image has all optional packages + - Removed from "base" image - LibreOffice, Thonny, Scratch, Scratch 2, Sonic Pi, Minecraft, Python Games, SmartSim, SenseHAT Emulator + - Added to "full" image - Mathematica, BlueJ, Greenfoot, Node-RED, Claws Mail, VNC Viewer + * Python Games and SmartSim added to Recommended Software + * VLC media player with VideoCore hardware acceleration included in image + * Version 3.0.5 of Thonny included + * Modifications to LXDE components to enable local configuration to override global configuration correctly + * Modifications to Appearance Settings to support above configuration changes + * Modifications to various initial config defaults and relevant package to support above configuration changes + * Selecting default option in Appearance Settings now deletes relevant local configuration files + * PiX theme modified so that all changes made in Appearance Settings are in override files rather than in theme files + * Design of scrollbar buttons changed + * Image Viewer moved into Graphics category on main menu + * Recommended Software now installs LibreOffice language support files if needed, and suggests reboot if needed + * Latest version of Pepper Flash plugin included + * Chromium h264ify plugin permissions set correctly by default + * Corrections to various MIME types so that files open in sensible default applications + * Set default timezone to 'Europe/London' + * Linux kernel 4.14.79 + * Raspberry Pi firmware 12e0bf86e08d6067372bc0a45d7e8a10d3113210 +2018-10-09: + * Raspberry Pi 3A+ support + * In startup wizard, assign keyboard to country as per Debian installer recommendations + * In startup wizard, add option to use US keyboard in preference to country-specific option + * In startup wizard, show IP address on first page + * In startup wizard, check for existing wifi network connection and show it if there is one + * In startup wizard, install language support packages for LibreOffice and other applications + * In startup wizard, improve operation with keyboard only and no mouse + * Password change in Raspberry Pi Configuration and startup wizard now works properly if passwords contain shell characters + * Battery indicator plugin modified to cope with Pi-top hardware monitor crashing + * Networking plugin hides wifi password characters by default + * In Scratch 2 GPIO plugin, set pin from dropdown list rather than free text + * In Scratch 2 SenseHAT plugin, swap x and y axis values for LED array + * Include latest Adobe Flash player (31.0.0.108) + * Include latest RealVNC Server (6.3.1) + * Include libav-tools + * Include ssh-import-id + * Removed Mathematica + * Merge in latest third-party code for Bluetooth ALSA interface + * Add ability to prevent software update changing configuration files, by creating ~/.config/.lock file + * Various other small bug fixes, tweaks and changes to text + * Make dhcpcd work with 3G devices + * Add hw acceleration to ffmpeg + * Improved WiFi-BT coexistence parameters + * Run fake-hwclock before systemd-fsck-root + * Raspberry Pi PoE HAT support + * Linux kernel 4.14.71 + * Raspberry Pi firmware 5b49caa17e91d0e64024380119ad739bb201c674 +2018-06-27: + * New first-boot configuration wizard added + * Recommended Software installer added + * Bluej, Greenfoot, NodeRED, Claws Mail, VNC Viewer removed from image - can now be installed from Recommended Applications + * Qpdfview PDF viewer installed instead of Xpdf + * Version 65.0 of Chromium browser included, with latest Flash player + * Volume up / down keys now change by 5% increments and affect currently-selected output device rather than internal device only + * Network plugin now remembers previously-entered WiFi network passwords when prompting for reconnection + * Serial port and serial console can now be switched separately in Raspberry Pi Configuration + * Lxkeymap keyboard language setting application removed - replaced with dialog within Raspberry Pi Configuration + * Wifi country and keyboard language setting dialogs in Raspberry Pi Configuration now callable from other applications + * New version of Piboto font included to render with correct weight under some rogue applications + * Reconnection to Bluetooth audio devices on reboot improved + * Disable click-to-rename behaviour in file manager if single-click selection enabled + * Appearance Settings dialog makes config changes to some Qt files to match selected theme + * MIME file type associations improved + * Multiple desktop management options removed from mouse middle-click menu + * Menu shortcuts to Raspberry Pi website amended + * Python 2 IDLE menu link removed + * Sample Magpi PDF installed in /home/pi/MagPi + * Various minor tweaks, bug fixes and appearance changes + * Bluetooth updates + - Firmware with Bluetooth 4.2 features + - SCO profile suppot added via bthelper.service + * Linux kernel 4.14.50+ + * Raspberry Pi firmware 748fb17992426bb29d99224b93cb962fefbdc833 +2018-04-18: + * Fixed race between wifi-country.service and raspberrypi-net-mods.service + * Linux kernel 4.14.34+ + * Raspberry Pi firmware 5db8e4e1c63178e200d6fbea23ed4a9bf4656658 +2018-03-13: + * Raspberry Pi 3 B+ support + * WiFi is disabled until wireless regulatory domain is set (Pi 3 B+ only) + - The domain can be done through 'Raspberry Pi Configuration' (rc_gui), + 'raspi-config' or by setting 'country=' to an appropriate ISO 3166 + alpha2 country code in /etc/wpa_supplicant/wpa_supplicant.conf. + * Default wireless regulatory domain is now unset + * Added support to desktop for different screen sizes and resolutions, + including multiple preset options in Appearance Settings and pixel doubling + option in Raspberry Pi Configuration + * Version 2.1.16 of Thonny included + * Version 29.0.0.113 of Adobe PepperFlash player included + * Version 1.2.post1 of Pygame Zero included + * Bluetooth plugin now supports connection to Bluetooth LE HID devices + * Network plugin now indicates 5G-compatible APs + * Latest changes to Bluez ALSA service merged + - service now started on CLI boot as well as GUI boot + * Latest changes to dhcpcd networking plugin merged + * Improved support for running on pi-top devices + * Small design changes to PiX theme and icons + * Bug fix - hide spurious window resize handles + * Bug fix - Scratch 2 remote GPIO state block now works correctly + * Updated WiFi Firmware + - brcmfmac43455-sdio 7.45.154 + - brcmfmac43430-sdio 7.45.98.38 + * New packages: + - policykit-1 + - obconf + - python-buttonshim python3-buttonshim + - python-unicornhathd python3-unicornhathd + - python-pantilthat python3-pantilthat + * Linux kernel 4.9.80+ + * Raspberry Pi firmware 3347884c7df574bbabeff6dca63caf686e629699 +2017-11-29: + * Added battery monitor plugin for taskbar - works on x86 images or first-generation Pi-Top + * Added cutdown mode to PCManFM file manager to reduce complexity + * Added ability to rename files in PCManFM by clicking name when selected + * Bug fix in Bluetooth ALSA module to reduce truncation of audio at end of playback + * Various small tweaks, bug fixes and theme modifications + * New kernel and firmware +2017-09-07: + * Disable predictable network interface names for Ethernet devices + * Bug fix for keyboard settings dialog in Raspberry Pi Configuration + * Bug fix for crash on some videos and animations in Chromium + * Bug fix for taskbar crash when running RealVNC server + * Bug fix for reloading projects with extensions in Scratch 2 + * Bug fix for MAC address problem in Bluetooth + * Simple mode and new icons in Thonny + * New Japanese translations in Raspberry Pi Configuration + * Install fonts-droid-fallback for international fonts +2017-08-16: + * Based on Raspbian Stretch (Debian version 9) + * Version 60 of Chromium browser included + * Version 3.0.1 of Sonic Pi included + * Version 6.1.1 of RealVNC included + * Version 0.17.4 of NodeRED included + * Bluetooth audio routed via ALSA rather than Pulseaudio + * SenseHAT extension added to Scratch 2 + * Various desktop applications modified to prompt for sudo password if needed + * lxinput control options for mouse speed simplified + * lxpanel plugins moved into separate packages + * Wireless firmware for Pi 3 and Pi 0W modified to address Broadpwn exploit + * Latest kernel and firmware + * Various small tweaks, bug fixes and theme modifications +2017-07-05: + * New kernel and firmware + * Filesystem created without the metadata_csum feature +2017-06-21: + * Scratch 2 application included + * Thonny Python IDE included + * New icons with thinner outlines + * Volume control more linear in behaviour + * Updated Flash player + * Updated RealVNC server and viewer + * Various tweaks and bugfixes + * New kernel and firmware +2017-04-10: + * Wolfram Mathematica updated to version 11.0.1 + * Adobe Flash Player updated to version 25.0.0.127 + * Use PARTUUID to support USB boot +2017-03-02: + * Updated kernel and firmware (final Pi Zero W support) + * Wolfram Mathematica updated to version 11 + * NOOBS installs now checks for presence of 'ssh' file on the NOOBS partition. +2017-02-16: + * Chromium browser updated to version 56 + * Adobe Flash Player updated to version 24.0.0.221 + * RealVNC Server and Viewer updated to version 6.0.2 (RealVNC Connect) + * Sonic Pi updated to version 2.11 + * Node-RED updated to version 0.15.3 + * Scratch updated to version 120117 + * Detection of SSH enabled with default password moved into PAM + * Updated desktop GL driver to support use of fake KMS option + * Raspberry Pi Configuration and raspi-config allow setting of fixed HDMI resolution + * raspi-config allows enabling of serial hardware independent of serial terminal + * Updates to kernel and firmware + * Various minor bug fixes and usability and appearance tweaks +2017-01-11: + * Re-release of the 2016-11-25 image with a FAT32-formatted boot partition +2016-11-25: + * SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition + * Prompt for password change at boot when SSH enabled with default password unchanged + * Adobe Flash Player included + * Updates to hardware video acceleration in Chromium browser + * Greeter now uses background image from last set in Appearance Settings rather than pi user + * Updated version of Scratch + * Rastrack option removed from raspi-config and Raspberry Pi Configuration + * Ability to disable graphical boot splash screen added to raspi-config and Raspberry Pi Configuration + * Appearance Settings dialog made tabbed to work better on small screens + * Raspberry Pi Configuration now requires current password to change password + * Various small bug fixes + * Updated firmware and kernel +2016-09-23: + * New PIXEL desktop environment - new icon set, window design, desktop images, splash screen and greeter + * Chromium web browser included + * Infinality font rendering patches included + * RealVNC server and viewer included + * SenseHAT emulator included + * Rfkill entries added to Wifi and Bluetooth panel plugins + * Updates to various standard applications, including Scratch and NodeRED + * Various bug fixes, tweaks and translation updates + * Updated firmware and kernel (https://github.com/raspberrypi/firmware/commit/ad8608c08b122b2c228dba0ff5070d6e9519faf5) +2016-05-27: + * Fixed crash of lxpanel when D-bus not accessible + * Fixed permissions for D-bus Bluetooth access + * Removed sudo from shutdown options + * Appearance of tooltips updated in theme + * Fixed ejecter plugin grabbing focus + * raspi-config command line and GUI apps tidied; unnecessary reboots removed + * More error detection in piclone; copying of volume names and IDs added + * Updated translation files +2016-05-10: + * New version of Scratch, which no longer requires sudo + * New version of BlueJ + * New version of NodeRED + * New version of pypy + * pigpio included + * geany editor included + * SD Card Copier added (can be used to duplicate or back up the Pi) + * Bluetooth plugin added to taskbar + * Volume control on taskbar now compatible with Bluetooth devices + * New shutdown helper application + * Mouse double-click speed setting added to mouse and keyboard preference application + * Option to enable / disable 1-wire interface and remote access to pigpio added to Raspberry Pi config application + * File system automatically expanded on first boot + * Empty Wastebasket option added to right-click menu + * Ctrl-Alt-T can be used to open a terminal window + * Various small bug fixes and appearance tweaks + * Updated firmware and kernel (https://github.com/raspberrypi/firmware/commit/cc6d7bf8b4c03a2a660ff9fdf4083fc165620866) +2016-03-18: + * updated firmware and kernel (https://github.com/raspberrypi/firmware/commit/951799bbcd795ddf27769d14acf4813fdcbe53dc) + * use serial0 in cmdline.txt + * wpa_supplicant.conf country default to GB (allows use of channels 12 and 13) +2016-02-26: + * Support added for Pi 3, including Wifi and Bluetooth + * Option to set wifi country code added to raspi-config +2016-02-09: + * dtb that uses mmc sdcard driver (fixes problems experienced with certain SD cards) +2016-02-03: + * new version of Sonic Pi (2.9) + * new version of Scratch (15/1/16) + * new version of Node-Red (2.5) + * new version of Wolfram (10.3) + * optional experimental GL desktop driver (can be enabled using advanced options in command-line raspi-config) + * new version of Java (1.8.0_65) + * new version of WiringPi + * raspi-gpio included + * ping no longer requires sudo (except NOOBS installs) + * support for more USB audio devices in lxpanel + * bug fix for creation of new menus in Alacarte + * various changes to raspi-config and GUI to tidy up board support and fix bugs, and updated translations + * small tweaks to theme to support GL driver +2015-11-21: + * Included IBM Node-RED IoT application + * Included graphical package manager + * Included accelerated pixman library + * Updated Epiphany browser to improve video compatibility + * Updated Scratch with performance improvements and bug fixes + * Updated Raspberry Pi configuration to allow boot to pause while + network is established + * Various minor bug fixes +2015-09-25: + * Based on Debian Jessie + * Upgraded applications - Epiphany browser, Scratch and Sonic Pi + * Included applications - LibreOffice, Claws Mail, Greenfoot, BlueJ + * Included utilities - Alacarte menu editor, Lxkeymap, scrot, tree, pip + * New GUI-based Raspberry Pi Configuration application + * GPIO control now possible without need for sudo + * Web link to Magpi magazine included + * New taskbar plugin to eject mounted USB drives + * Default boot is now to GUI not desktop + * Look and feel now based on GTK+3 default theme + * Print screen key launches scrot to produce screenshot + * Common keyboards autodetected by GUI and drivers loaded accordingly + * Numerous small tweaks and bugfixes +2015-05-05: + * Updated UI changes + * Updated firmware + * Install raspberrypi-net-mods + * Install avahi-daemon + * Add user pi to new i2c and spi groups + * Modified udev rules for i2c and spi devices +2015-02-16: + * Newer firmware with various fixes + * New Sonic Pi release + * Pi2 compatible RPi.GPIO + * Updated Wolfram Mathematica +2015-01-31: + * Support for Pi2 + * Newer firmware + * New Sonic Pi release + * Updated Scratch + * New Wolfram Mathematica release + * Updated Epiphany +2014-12-24: + * Fix regression with omission of python-pygame +2014-12-22: + * New firmware with variosu fixes and improvements + * New UI configuration for lxde + * Various package updates + * python3-pygame preinstalled + * 'nuscratch', scratch running on the Cog StackVM + * Misc other changes +2014-09-09: + * New firmware with various fixes and improvements + * Minecraft Pi pre-installed + * Sonic Pi upgraded to 2.0 + * Include Epiphany browser work from Collabora + * Switch to Java 8 from Java 7 + * Updated Mathematica + * Misc minor configuration changes +2014-06-20: + * New firmware with various fixes, and kernel bugfix +2014-06-02: + * Many, many firmware updates with major USB improvements + * pyserial installed by default + * picamera installed by default +2014-01-07: + * Firmware updated + * Some space saved on the root filesystem +2013-12-20: + * Firmware updated, includes V4L2 fixes + * Update omxplayer +2013-12-18: + * Firmware updated and now using kernel 3.10. Many, many improvements + * fbturbo XOrg driver is now included and enabled by default. Thanks to + ssvb https://github.com/ssvb/xf86-video-fbturbo + * Update Scratch image with further bug fixes + * Include Wolfram Mathematica + * Update to PyPy 2.2 + * Update omxplayer + * Include v4l-utils for use with experimental V4L2 Raspberry Pi camera driver + * Update squeak-vm to fix issues with loading JPEGs +2013-09-25: + * Update Scratch image for further performance improvements + * Include Oracle JDK + * At least a 4GiB SD card is now required (see above) + * Include PyPy 2.1 + * Include base piface packages + * Update raspi-config to include bugfix for inheriting language settings + from NOOBS +2013-09-10: + * Updated to current top of tree firmware + * Update squeak-vm, including fastblit optimised for the Raspbery Pi + * Include Sonic Pi and a fixed jackd2 package + * Support boot to Scratch + * Inherit keyboard and language settings from NOOBS diff --git a/builder/export-noobs/prerun.sh b/builder/export-noobs/prerun.sh new file mode 100755 index 0000000..54e0c59 --- /dev/null +++ b/builder/export-noobs/prerun.sh @@ -0,0 +1,36 @@ +#!/bin/bash -e + +IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img" +NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}" +unmount_image "${IMG_FILE}" + +mkdir -p "${STAGE_WORK_DIR}" +cp "${WORK_DIR}/export-image/${IMG_FILENAME}${IMG_SUFFIX}.img" "${STAGE_WORK_DIR}/" + +rm -rf "${NOOBS_DIR}" + +PARTED_OUT=$(parted -sm "${IMG_FILE}" unit b print) +BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 2 | tr -d B) +BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 4 | tr -d B) + +ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^2:' | cut -d':' -f 2 | tr -d B) +ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^2:' | cut -d':' -f 4 | tr -d B) + +BOOT_DEV=$(losetup --show -f -o "${BOOT_OFFSET}" --sizelimit "${BOOT_LENGTH}" "${IMG_FILE}") +ROOT_DEV=$(losetup --show -f -o "${ROOT_OFFSET}" --sizelimit "${ROOT_LENGTH}" "${IMG_FILE}") +echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH" +echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" + +mkdir -p "${STAGE_WORK_DIR}/rootfs" +mkdir -p "${NOOBS_DIR}" + +mount "$ROOT_DEV" "${STAGE_WORK_DIR}/rootfs" +mount "$BOOT_DEV" "${STAGE_WORK_DIR}/rootfs/boot" + +ln -sv "/lib/systemd/system/apply_noobs_os_config.service" "$ROOTFS_DIR/etc/systemd/system/multi-user.target.wants/apply_noobs_os_config.service" + +bsdtar --numeric-owner --format gnutar -C "${STAGE_WORK_DIR}/rootfs/boot" -cpf - . | xz -T0 > "${NOOBS_DIR}/boot.tar.xz" +umount "${STAGE_WORK_DIR}/rootfs/boot" +bsdtar --numeric-owner --format gnutar -C "${STAGE_WORK_DIR}/rootfs" --one-file-system -cpf - . | xz -T0 > "${NOOBS_DIR}/root.tar.xz" + +unmount_image "${IMG_FILE}"