From c218fcb67e0224dcf02c6dc8e4745beb6033b5f0 Mon Sep 17 00:00:00 2001 From: Aaron Dewes Date: Sun, 28 Jun 2020 19:37:28 +0200 Subject: [PATCH] ARM64 support --- README.md | 4 ++ build.sh | 16 ++++- scripts/common | 10 ++- stage0/00-configure-apt/00-run.sh | 5 ++ stage0/00-configure-apt/files/sources.list | 4 +- stage0/files/debian.gpg | Bin 0 -> 48747 bytes stage0/prerun.sh | 2 +- stage1/00-boot-files/00-run.sh | 6 +- stage1/00-boot-files/files/config.arm64.txt | 68 ++++++++++++++++++ .../01-packages | 0 .../02-run.sh | 0 stage3/00-install-packages/00-packages | 3 +- stage3/00-install-packages/00-packages-nr | 2 +- stage3/00-install-packages/01-run.sh | 4 +- stage4/00-install-packages/00-packages | 3 +- stage4/00-install-packages/00-packages-nr | 1 - stage4/01-install-packages-armhf/00-packages | 1 + .../01-install-packages-armhf/00-packages-nr | 1 + .../00-run.sh | 0 stage4/{02-extras => 03-extras}/00-run.sh | 0 stage4/{03-magpi => 04-magpi}/00-run.sh | 0 .../{03-magpi => 04-magpi}/files/.gitignore | 0 .../00-run.sh | 0 stage5/00-install-extras-armhf/00-packages | 5 ++ stage5/00-install-extras/00-packages | 6 +- .../00-packages | 0 26 files changed, 121 insertions(+), 20 deletions(-) create mode 100644 stage0/files/debian.gpg create mode 100644 stage1/00-boot-files/files/config.arm64.txt rename stage2/{00-copies-and-fills => 00-copies-and-fills-armhf}/01-packages (100%) rename stage2/{00-copies-and-fills => 00-copies-and-fills-armhf}/02-run.sh (100%) create mode 100644 stage4/01-install-packages-armhf/00-packages create mode 100644 stage4/01-install-packages-armhf/00-packages-nr rename stage4/{01-console-autologin => 02-console-autologin}/00-run.sh (100%) rename stage4/{02-extras => 03-extras}/00-run.sh (100%) rename stage4/{03-magpi => 04-magpi}/00-run.sh (100%) rename stage4/{03-magpi => 04-magpi}/files/.gitignore (100%) rename stage4/{04-enable-xcompmgr => 05-enable-xcompmgr}/00-run.sh (100%) create mode 100644 stage5/00-install-extras-armhf/00-packages rename stage5/{00-install-libreoffice => 01-install-libreoffice}/00-packages (100%) diff --git a/README.md b/README.md index 29d8166..00d0bc0 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,10 @@ The following environment variables are supported: If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to `"stage0 stage1 mystage stage2"` will run the contents of `mystage` before stage2. Note that quotes are needed around the list. An absolute or relative path can be given for stages outside the pi-gen directory. + * `ENABLE_ARM64` (Default: `0`) + + If set, the image uses arm64 instead of armhf. Arm64 is not fully stable yet, some programs may be not available or broken. + A simple example for building Raspbian: ```bash diff --git a/build.sh b/build.sh index a8247ab..f1a8a3b 100755 --- a/build.sh +++ b/build.sh @@ -105,7 +105,19 @@ run_stage(){ for SUB_STAGE_DIR in "${STAGE_DIR}"/*; do if [ -d "${SUB_STAGE_DIR}" ] && [ ! -f "${SUB_STAGE_DIR}/SKIP" ]; then - run_sub_stage + if [[ ${SUB_STAGE_DIR} == *arm64 ]]; then + if [ "$ENABLE_ARM64"="1" ]; then + run_sub_stage + fi + elif [[ ${SUB_STAGE_DIR} == *armhf ]]; then + echo "elif" + if [[ ${ENABLE_ARM64} == 0 ]]; then + echo "here" + run_sub_stage + fi + else + run_sub_stage + fi fi done fi @@ -203,6 +215,8 @@ export QUILT_NO_DIFF_INDEX=1 export QUILT_NO_DIFF_TIMESTAMPS=1 export QUILT_REFRESH_ARGS="-p ab" +export ENABLE_ARM64="${ENABLE_ARM64:-0}" + # shellcheck source=scripts/common source "${SCRIPT_DIR}/common" # shellcheck source=scripts/dependencies_check diff --git a/scripts/common b/scripts/common index e2048d9..cd15369 100644 --- a/scripts/common +++ b/scripts/common @@ -9,13 +9,17 @@ bootstrap(){ export http_proxy=${APT_PROXY} - if [ "$(dpkg --print-architecture)" != "armhf" ] && [ "$(dpkg --print-architecture)" != "aarch64" ]; then + if [ "$(dpkg --print-architecture)" != "armhf" ] && [ "$(dpkg --print-architecture)" != "arm64" ]; then BOOTSTRAP_CMD=qemu-debootstrap fi - BOOTSTRAP_ARGS+=(--arch armhf) + if [ "$ENABLE_ARM64"="1" ]; then + BOOTSTRAP_ARGS+=(--arch arm64) + else + BOOTSTRAP_ARGS+=(--arch armhf) + fi + BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/debian.gpg") BOOTSTRAP_ARGS+=(--components "main,contrib,non-free") - BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg") BOOTSTRAP_ARGS+=("$@") printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}" diff --git a/stage0/00-configure-apt/00-run.sh b/stage0/00-configure-apt/00-run.sh index d10a49f..01943ef 100755 --- a/stage0/00-configure-apt/00-run.sh +++ b/stage0/00-configure-apt/00-run.sh @@ -12,7 +12,12 @@ else rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" fi +on_chroot << EOF +apt-get update -o Acquire::AllowInsecureRepositories=true +apt install gnupg -y +EOF on_chroot apt-key add - < files/raspberrypi.gpg.key + on_chroot << EOF apt-get update apt-get dist-upgrade -y diff --git a/stage0/00-configure-apt/files/sources.list b/stage0/00-configure-apt/files/sources.list index 4a5dd8a..e4e58e9 100644 --- a/stage0/00-configure-apt/files/sources.list +++ b/stage0/00-configure-apt/files/sources.list @@ -1,3 +1,3 @@ -deb http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi +deb http://deb.debian.org/debian RELEASE main contrib non-free # Uncomment line below then 'apt-get update' to enable 'apt-get source' -#deb-src http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi +#deb-src http://deb.debian.org/debian RELEASE main contrib non-free diff --git a/stage0/files/debian.gpg b/stage0/files/debian.gpg new file mode 100644 index 0000000000000000000000000000000000000000..e897ec52fbeb9379db9157389acc356ccda416d4 GIT binary patch literal 48747 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
    4^V6U~=|NofA- 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 literal 0 HcmV?d00001 diff --git a/stage0/prerun.sh b/stage0/prerun.sh index 3b25783..283ffd5 100755 --- a/stage0/prerun.sh +++ b/stage0/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e if [ ! -d "${ROOTFS_DIR}" ]; then - bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/ + bootstrap ${RELEASE} "${ROOTFS_DIR}" http://deb.debian.org/debian/ fi diff --git a/stage1/00-boot-files/00-run.sh b/stage1/00-boot-files/00-run.sh index bc61397..2902bef 100755 --- a/stage1/00-boot-files/00-run.sh +++ b/stage1/00-boot-files/00-run.sh @@ -1,4 +1,8 @@ #!/bin/bash -e install -m 644 files/cmdline.txt "${ROOTFS_DIR}/boot/" -install -m 644 files/config.txt "${ROOTFS_DIR}/boot/" +if [ "$ENABLE_ARM64"="1" ]; then + install -m 644 files/config.txt "${ROOTFS_DIR}/boot/config.txt" +else + install -m 644 files/config.arm64.txt "${ROOTFS_DIR}/boot/config.txt" +fi diff --git a/stage1/00-boot-files/files/config.arm64.txt b/stage1/00-boot-files/files/config.arm64.txt new file mode 100644 index 0000000..fd978bd --- /dev/null +++ b/stage1/00-boot-files/files/config.arm64.txt @@ -0,0 +1,68 @@ +# For more options and information see +# http://rpf.io/configtxt +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +#hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +#dtparam=i2c_arm=on +#dtparam=i2s=on +#dtparam=spi=on + +# Uncomment this to enable infrared communication. +#dtoverlay=gpio-ir,gpio_pin=17 +#dtoverlay=gpio-ir-tx,gpio_pin=18 + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on + +# Enable ARM64 +arm_64bit=1 + +[pi4] +# Enable DRM VC4 V3D driver on top of the dispmanx display stack +dtoverlay=vc4-fkms-v3d +max_framebuffers=2 + +[all] +#dtoverlay=vc4-fkms-v3d diff --git a/stage2/00-copies-and-fills/01-packages b/stage2/00-copies-and-fills-armhf/01-packages similarity index 100% rename from stage2/00-copies-and-fills/01-packages rename to stage2/00-copies-and-fills-armhf/01-packages diff --git a/stage2/00-copies-and-fills/02-run.sh b/stage2/00-copies-and-fills-armhf/02-run.sh similarity index 100% rename from stage2/00-copies-and-fills/02-run.sh rename to stage2/00-copies-and-fills-armhf/02-run.sh diff --git a/stage3/00-install-packages/00-packages b/stage3/00-install-packages/00-packages index eac74ea..b9efbc2 100644 --- a/stage3/00-install-packages/00-packages +++ b/stage3/00-install-packages/00-packages @@ -2,12 +2,11 @@ gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-g qpdfview gtk2-engines alsa-utils desktop-base git -omxplayer raspberrypi-artwork policykit-1 gvfs rfkill -chromium-browser rpi-chromium-mods +chromium rpi-chromium-mods gldriver-test fonts-droid-fallback fonts-liberation2 diff --git a/stage3/00-install-packages/00-packages-nr b/stage3/00-install-packages/00-packages-nr index ffc324b..dff33f4 100644 --- a/stage3/00-install-packages/00-packages-nr +++ b/stage3/00-install-packages/00-packages-nr @@ -3,4 +3,4 @@ mousepad lxde lxtask menu-xdg zenity xdg-utils gvfs-backends gvfs-fuse -lightdm gnome-themes-standard-data gnome-icon-theme +lightdm adwaita-icon-theme gnome-icon-theme diff --git a/stage3/00-install-packages/01-run.sh b/stage3/00-install-packages/01-run.sh index d768747..e084311 100755 --- a/stage3/00-install-packages/01-run.sh +++ b/stage3/00-install-packages/01-run.sh @@ -2,7 +2,7 @@ on_chroot << EOF update-alternatives --install /usr/bin/x-www-browser \ - x-www-browser /usr/bin/chromium-browser 86 + x-www-browser /usr/bin/chromium 86 update-alternatives --install /usr/bin/gnome-www-browser \ - gnome-www-browser /usr/bin/chromium-browser 86 + gnome-www-browser /usr/bin/chromium 86 EOF diff --git a/stage4/00-install-packages/00-packages b/stage4/00-install-packages/00-packages index f9f5ef4..dc669d4 100644 --- a/stage4/00-install-packages/00-packages +++ b/stage4/00-install-packages/00-packages @@ -13,7 +13,7 @@ tree libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr geany piclone -wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio +pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio python-spidev python3-spidev python-twython python3-twython python-smbus python3-smbus @@ -21,5 +21,6 @@ python-flask python3-flask pprompt piwiz rp-prefapps +rp-bookshelf ffmpeg vlc diff --git a/stage4/00-install-packages/00-packages-nr b/stage4/00-install-packages/00-packages-nr index b904b80..88c1cd4 100644 --- a/stage4/00-install-packages/00-packages-nr +++ b/stage4/00-install-packages/00-packages-nr @@ -1,2 +1 @@ pi-package -realvnc-vnc-server diff --git a/stage4/01-install-packages-armhf/00-packages b/stage4/01-install-packages-armhf/00-packages new file mode 100644 index 0000000..b2b149b --- /dev/null +++ b/stage4/01-install-packages-armhf/00-packages @@ -0,0 +1 @@ +wiringpi diff --git a/stage4/01-install-packages-armhf/00-packages-nr b/stage4/01-install-packages-armhf/00-packages-nr new file mode 100644 index 0000000..81b1487 --- /dev/null +++ b/stage4/01-install-packages-armhf/00-packages-nr @@ -0,0 +1 @@ +realvnc-vnc-server diff --git a/stage4/01-console-autologin/00-run.sh b/stage4/02-console-autologin/00-run.sh similarity index 100% rename from stage4/01-console-autologin/00-run.sh rename to stage4/02-console-autologin/00-run.sh diff --git a/stage4/02-extras/00-run.sh b/stage4/03-extras/00-run.sh similarity index 100% rename from stage4/02-extras/00-run.sh rename to stage4/03-extras/00-run.sh diff --git a/stage4/03-magpi/00-run.sh b/stage4/04-magpi/00-run.sh similarity index 100% rename from stage4/03-magpi/00-run.sh rename to stage4/04-magpi/00-run.sh diff --git a/stage4/03-magpi/files/.gitignore b/stage4/04-magpi/files/.gitignore similarity index 100% rename from stage4/03-magpi/files/.gitignore rename to stage4/04-magpi/files/.gitignore diff --git a/stage4/04-enable-xcompmgr/00-run.sh b/stage4/05-enable-xcompmgr/00-run.sh similarity index 100% rename from stage4/04-enable-xcompmgr/00-run.sh rename to stage4/05-enable-xcompmgr/00-run.sh diff --git a/stage5/00-install-extras-armhf/00-packages b/stage5/00-install-extras-armhf/00-packages new file mode 100644 index 0000000..4a5ec59 --- /dev/null +++ b/stage5/00-install-extras-armhf/00-packages @@ -0,0 +1,5 @@ +nuscratch +minecraft-pi python-minecraftpi python-picraft python3-picraft +wolfram-engine +nodered +realvnc-vnc-viewer diff --git a/stage5/00-install-extras/00-packages b/stage5/00-install-extras/00-packages index 609e718..229ce6b 100644 --- a/stage5/00-install-extras/00-packages +++ b/stage5/00-install-extras/00-packages @@ -1,16 +1,12 @@ mu-editor sonic-pi -scratch nuscratch scratch2 scratch3 +scratch scratch3 smartsim -minecraft-pi python-minecraftpi python-picraft python3-picraft python-sense-emu sense-emu-tools python-sense-emu-doc -wolfram-engine claws-mail greenfoot-unbundled bluej -nodered -realvnc-vnc-viewer python-games code-the-classics diff --git a/stage5/00-install-libreoffice/00-packages b/stage5/01-install-libreoffice/00-packages similarity index 100% rename from stage5/00-install-libreoffice/00-packages rename to stage5/01-install-libreoffice/00-packages