diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d109a78e1e32ff61f15c5f86c225c94ccd614f95..eb8dfc1850c06b4ab72aea4c6f09b5bce2d95ac0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,11 +12,10 @@ build: apt-get --no-install-recommends -y install arch-test qemu-user-static arch-test arm64 || cat /usr/lib/binfmt.d/qemu-aarch64.conf > /proc/sys/fs/binfmt_misc/register arch-test arm64 - env --chdir=reform2-imx8mq ./mkimage.sh - pigz ./reform2-imx8mq/reform-system.img - env --chdir=reform2-a311d ./mkimage.sh - pigz ./reform2-a311d/reform-system.img + ./mkimage.sh + pigz ./reform-system-imx8mq.img + pigz ./reform-system-a311d.img artifacts: paths: - - "reform2-imx8mq/reform-system.img.gz" - - "reform2-a311d/reform-system.img.gz" + - "reform-system-imx8mq.img.gz" + - "reform-system-a311d.img.gz" diff --git a/reform2-a311d/README-BOOT.md b/README-BOOT-a311d.md similarity index 100% rename from reform2-a311d/README-BOOT.md rename to README-BOOT-a311d.md diff --git a/emulate.sh b/emulate.sh new file mode 100644 index 0000000000000000000000000000000000000000..f1aa0d93748a9ed5fd9b48cedc32544c5c4e6e87 --- /dev/null +++ b/emulate.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +qemu-system-aarch64 -netdev user,id=net0 -device virtio-net-pci,netdev=net0 \ + -device virtio-rng-pci,rng=rng0 -smp 4 -cpu host \ + -machine type=virt,gic-version=max,accel=kvm:tcg -no-user-config \ + -name debvm-run -m 1G \ + -drive media=disk,format=raw,discard=unmap,file=reform-system-imx8mq.img,if=virtio,cache=unsafe \ + -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-gpu-pci \ + -device virtio-keyboard-pci -device virtio-tablet-pci \ + -kernel kernel -initrd initrd diff --git a/mkimage.sh b/mkimage.sh new file mode 100755 index 0000000000000000000000000000000000000000..2104411c2bce0a2327870eb701f56d13d8dfb5ba --- /dev/null +++ b/mkimage.sh @@ -0,0 +1,197 @@ +#!/bin/bash + +set -eu + +export LC_ALL=C.UTF-8 + +#usage() { +# echo "usage: $0 imx8mq|a311d" >&2 +#} +# +#if [ "$#" -ne 1 ]; then +# usage +# exit 1 +#fi +# +#case "$1" in +# imx8mq|a311d) PLATFORM="$1";; +# *) usage; exit 1;; +#esac + +# make sure build tools are installed +DEPS="mmdebstrap genext2fs e2fsprogs git mount parted" +if [ "$(dpkg --print-architecture)" != arm64 ]; then + DEPS="$DEPS arch-test qemu-user-static" +fi +if [ "$(dpkg-query --showformat '${db:Status-Status}\n' --show $DEPS | sort -u)" != "installed" ]; then + echo "Not all dependencies of this script are installed." + echo "Run the following command to install them:" + echo + echo " sudo apt install $DEPS" + exit 1 +fi +if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show mmdebstrap)" lt "0.8.4-1"; then + echo "mmdebstrap version must be >= 0.8.4-1" + exit 1 +fi +if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show genext2fs)" lt "1.5.0-2"; then + echo "genext2fs version must be >= 1.5.0-2" + exit 1 +fi + +# if we are in a git repository and if SOURCE_DATE_EPOCH is not set, use the +# timestamp of the latest git commit +if [ -z ${SOURCE_DATE_EPOCH+x} ] && git -C . rev-parse 2>/dev/null; then + SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) +else + SOURCE_DATE_EPOCH=$(date +%s) +fi +export SOURCE_DATE_EPOCH + +# /tmp might be too small for the full system, so we set a different TMPDIR +export TMPDIR="$(pwd)" + +# We need a separate partition for /boot for two reasons: +# +# 1) To boot encrypted NVMe +# 2) If we boot a system that is not on the SD-Card (even unencrypted) then we +# need to mount the partition containing kernel, initrd and dtb. If /boot is +# not in its own partition, then mounting that partition to /boot will +# result in the files being in /boot/boot. So we need to create a partition +# where kernel, initrd and dtb are at the root of the partition. Otherwise +# we cannot upgrade the kernel from the booted system. + +# debian-installer chooses 999424 sectors (= 488MB) by default +BOOTSIZE=488 +ROOTSIZE=4096 + +for PLATFORM in imx8mq a311d; do + case "$PLATFORM" in + imx8mq) PROJECT="reform-boundary-uboot"; TAG="2023-07-04"; SHA1="41d2ba5fcc65f26224f7d1afed650e86662cea27";; + #a311d) PROJECT="reform-a311d-uboot"; TAG="FIXME"; SHA1="FIXME";; + a311d) PROJECT="reform-boundary-uboot"; TAG="2023-07-04"; SHA1="41d2ba5fcc65f26224f7d1afed650e86662cea27";; + esac + /usr/lib/apt/apt-helper download-file \ + "https://source.mnt.re/reform/$PROJECT/-/jobs/artifacts/$TAG/raw/flash.bin?job=build" \ + flash-$PLATFORM.bin "SHA1:$SHA1" +done + +# build the debian userland and configure it + +# fill $@ array with options passed to mmdebstrap +set -- --architectures=arm64 --components=main,non-free-firmware --variant="minbase" --verbose +# packages for graphical user interface +set -- "$@" --include="xwayland xterm foot sway fonts-inter fonts-noto-color-emoji waybar swayidle swaylock mesa-utils lxpolkit wayland-protocols wofi wireplumber papirus-icon-theme wayfire firedecor libglib2.0-bin gsettings-desktop-schemas gnome-disk-utility gnome-themes-extra-data gnome-icon-theme gnome-settings-daemon gnome-system-monitor firefox grim slurp gedit evince mpv sxiv thunar pavucontrol unicode-data engrampa neverball minetest qt5ct kde-style-breeze python3-gi gir1.2-ayatanaappindicator3-0.1 dunst pkexec synaptic pasystray" +# packages for networking +set -- "$@" --include="iproute2 iptables inetutils-ping ircii elinks isc-dhcp-client netcat-traditional net-tools network-manager network-manager-gnome nfacct ntp ntpdate rsync telnet traceroute wpasupplicant curl wget w3m rfkill ifupdown netbase openssh-client blueman firmware-realtek" +# packages for system administration +set -- "$@" --include="apt apt-utils apt-listbugs apt-file cron cryptsetup lvm2 dbus-bin e2fsprogs fbset init-system-helpers ncdu parted pciutils policykit-1 procps sudo systemd systemd-sysv tmux u-boot-tools screen" +# utilities +set -- "$@" --include="busybox console-data console-setup cpio file flash-kernel gnupg gpgv htop kbd lm-sensors readline-common usbutils xdg-utils bsdmainutils less nano micro vim alsa-utils dosfstools python3-psutil reform-handbook" +# miscellaneous +set -- "$@" --include="brightnessctl brightness-udev ca-certificates debian-archive-keyring dialog gpm ncurses-term locales bash-completion man-db cryptsetup-initramfs linux-image-arm64 linux-headers-arm64 reform-tools" +# should not be necessary anymore because mmdebstrap sets up systemd-firstboot +# --skip=cleanup/reproducible +# apt preferences +set -- "$@" --setup-hook='{ echo "Package: *"; echo "Pin: release n=reform, l=reform"; echo "Pin-Priority: 990"; } > "$1"/etc/apt/preferences.d/reform.pref' +# We write out /etc/default/flash-kernel with kernel cmdline arguments for +# imx8mq because u-boot for that SoM is not guaranteed to have ${bootargs} +# available in boot.scr. Other platforms set ${bootargs} to overwrite imx8mq +# specific values defined here. +# It would be possible to not encode imx8mq specific bootargs here by adding +# a custom boot.scr derived from bootscr.uboot-generic which adds imx8mq +# specific bootargs if it detects that platform and finds ${bootargs} to be +# empty. +# Another way to avoid this list here would be to add code to +# /usr/share/flash-kernel/ubootenv.d/00reform2_ubootenv which does the +# platform detection and then adds the options to ${bootargs}. +set -- "$@" --essential-hook='{ echo LINUX_KERNEL_CMDLINE=\"console=ttymxc0,115200 console=tty1\"; echo LINUX_KERNEL_CMDLINE_DEFAULTS=\"ro no_console_suspend cma=512M pci=nomsi\"; } > "$1"/etc/default/flash-kernel' +# even when above has been taken care of, we still want to overwrite +# /etc/default/flash-kernel because by default it will contain +# LINUX_KERNEL_CMDLINE="quiet" and we don't want that +#set -- "$@" --essential-hook='{ echo LINUX_KERNEL_CMDLINE=\"\"; echo LINUX_KERNEL_CMDLINE_DEFAULTS=\"\"; } > "$1"/etc/default/flash-kernel' +# select timezone and locales +# FIXME: this should be done by a firstboot script +set -- "$@" \ + --essential-hook='echo tzdata tzdata/Areas select Europe | chroot "$1" debconf-set-selections' \ + --essential-hook='echo tzdata tzdata/Zones/Europe select Berlin | chroot "$1" debconf-set-selections' \ + --essential-hook='echo locales locales/default_environment_locale select en_US.UTF-8 | chroot "$1" debconf-set-selections' \ + --essential-hook='echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | chroot "$1" debconf-set-selections' \ +# set up motd +set -- "$@" --customize-hook='rm -f "$1"/etc/motd' --customize-hook='ln -s motd-full "$1"/etc/motd' +# populate root user and skel +set -- "$@" \ + --customize-hook='echo '"'"'if [ "$(whoami)" = "root" ]; then cat /etc/reform-root-help; elif [ -z "$WAYLAND_DISPLAY" ]; then cat /etc/reform-help; fi'"'"' >> "$1"/etc/skel/.profile' \ + --customize-hook='chroot "$1" sh -c "rsync -Pha /etc/skel/ /root"' +# populate /etc +set -- "$@" \ + --essential-hook='{ echo LABEL=reformsdroot / auto errors=remount-ro 0 1; echo LABEL=reformsdboot /boot auto errors=remount-ro 0 1; } > "$1"/etc/fstab' \ + --customize-hook='echo reform > "$1"/etc/hostname' \ + --customize-hook='{ echo 127.0.0.1 localhost reform; echo ::1 localhost ip6-localhost ip6-loopback reform; echo ff02::1 ip6-allnodes; echo ff02::2 ip6-allrouters; } > "$1"/etc/hosts' +# or else EXTRA_GROUPS doesnt work? +set -- "$@" \ + --customize-hook='sed -i "s/^#EXTRA_GROUPS=.*/EXTRA_GROUPS=audio cdrom dip floppy video plugdev netdev/" "$1"/etc/adduser.conf' \ + --customize-hook='sed -i "s/^#ADD_EXTRA_GROUPS=.*/ADD_EXTRA_GROUPS=1/" "$1"/etc/adduser.conf' +# remove root password -- using `passwd -d root` produces unreproducible output +set -- "$@" \ + --customize-hook='echo "root:root" | chroot "$1" chpasswd' \ + --customize-hook='chroot "$1" sed -i "s/^root:[^:]\+:/root::/" /etc/shadow' \ + --customize-hook='rm "$1"/etc/resolv.conf' \ +# copy out kernel and initrd for use with qemu +set -- "$@" --customize-hook="download /vmlinuz kernel" --customize-hook="download /initrd.img initrd" + +mmdebstrap "$@" \ + unstable target-userland.tar \ + http://deb.debian.org/debian \ + "deb [arch=arm64 trusted=yes] https://mntre.com/reform-debian-repo reform main" + +# create a common root partition from the above +# this will be identical independent of the platform +mmtarfilter --path-exclude='/boot/*' < target-userland.tar \ + | genext2fs --volume-label reformsdroot --block-size 1024 --size-in-blocks $((ROOTSIZE*1024)) --bytes-per-inode 16384 --tarball - root.ext2 + +# system --------------------------------------------------------- + +for PLATFORM in imx8mq a311d; do + # invoke mmdebstrap again to produce a platform specific /boot + case "$PLATFORM" in + imx8mq) MACHINE="MNT Reform 2";; + a311d) MACHINE="MNT Reform 2 with BPI-CM4 Module";; + esac + mmdebstrap --variant=custom --skip=update,setup,cleanup \ + --setup-hook='mmtarfilter --path-exclude="/dev/*" --path-include=/dev/pts --path-include=/dev/shm < target-userland.tar | tar --numeric-owner --xattrs --xattrs-include="*" --directory "$1" --extract --file -' \ + --customize-hook="upload flash-$PLATFORM.bin /boot/flash.bin" \ + --chrooted-customize-hook="echo $MACHINE > /etc/flash-kernel/machine" \ + --chrooted-customize-hook='echo yes > /etc/flash-kernel/ignore-efi' \ + --chrooted-customize-hook='chown -R root:root /boot/flash.bin' \ + --chrooted-customize-hook='flash-kernel' \ + --chrooted-customize-hook='[ -e /boot/boot.scr ]' \ + unstable - \ + | mmtarfilter --path-exclude='*' --path-include=/boot \ + --path-include='/boot/*' --strip-components=2 \ + | genext2fs --volume-label reformsdboot --block-size 1024 \ + --size-in-blocks $((BOOTSIZE*1024)) --bytes-per-inode 16384 \ + --tarball - boot.ext2 + + IMGNAME=reform-system-$PLATFORM.img + dd if=root.ext2 of="$IMGNAME" seek=$((((BOOTSIZE+4)*1024*1024)/4194304)) bs=4194304 + dd if=boot.ext2 of="$IMGNAME" seek=1 bs=4194304 conv=notrunc + rm boot.ext2 + truncate --size="+512" "$IMGNAME" + /sbin/parted -s "$IMGNAME" "mklabel msdos" + # reproducible disk signature + printf mntr | dd of="$IMGNAME" seek=440 bs=1 conv=notrunc + /sbin/parted -s "$IMGNAME" "mkpart primary ext4 4MiB $((BOOTSIZE+4))MiB" + /sbin/parted -s "$IMGNAME" "mkpart primary ext4 $((BOOTSIZE+4))MiB $((BOOTSIZE+ROOTSIZE+4))MiB" + /sbin/parted -s "$IMGNAME" print + + # install u-boot + dd if=./flash-$PLATFORM.bin of="$IMGNAME" conv=notrunc bs=1k seek=33 +done + +for PLATFORM in imx8mq a311d; do + IMGNAME=reform-system-$PLATFORM.img + echo Reform System Image for $PLATFORM created: "$IMGNAME", MD5 checksum: + md5sum "$IMGNAME" +done +rm target-userland.tar root.ext2 diff --git a/reform2-a311d/boot/bananapi-cm4-mnt-reform2_defconfig b/reform2-a311d/boot/bananapi-cm4-mnt-reform2_defconfig deleted file mode 100644 index 35748b733f2e7e0fd96713320d5e8ec6226d5b75..0000000000000000000000000000000000000000 --- a/reform2-a311d/boot/bananapi-cm4-mnt-reform2_defconfig +++ /dev/null @@ -1,84 +0,0 @@ -CONFIG_ARM=y -CONFIG_ARCH_MESON=y -CONFIG_TEXT_BASE=0x01000000 -CONFIG_NR_DRAM_BANKS=1 -CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20000000 -CONFIG_ENV_SIZE=0x2000 -CONFIG_DM_GPIO=y -CONFIG_DEFAULT_DEVICE_TREE="meson-g12b-bananapi-cm4-mnt-reform2" -CONFIG_OF_LIBFDT_OVERLAY=y -CONFIG_DM_RESET=y -CONFIG_MESON_G12A=y -CONFIG_DEBUG_UART_BASE=0xff803000 -CONFIG_DEBUG_UART_CLOCK=24000000 -CONFIG_IDENT_STRING="bpi-cm4-mnt-reform2" -CONFIG_SYS_LOAD_ADDR=0x1000000 -CONFIG_PCI=y -CONFIG_DEBUG_UART=y -CONFIG_REMAKE_ELF=y -CONFIG_OF_BOARD_SETUP=y -# CONFIG_DISPLAY_CPUINFO is not set -CONFIG_MISC_INIT_R=y -CONFIG_SYS_MAXARGS=32 -# CONFIG_CMD_BDI is not set -# CONFIG_CMD_IMI is not set -CONFIG_CMD_GPIO=y -# CONFIG_CMD_LOADS is not set -CONFIG_CMD_MMC=y -CONFIG_CMD_PCI=y -CONFIG_CMD_USB=y -CONFIG_CMD_USB_MASS_STORAGE=y -# CONFIG_CMD_SETEXPR is not set -CONFIG_CMD_REGULATOR=y -CONFIG_OF_CONTROL=y -CONFIG_SYS_RELOC_GD_ENV_ADDR=y -CONFIG_ADC=y -CONFIG_SARADC_MESON=y -CONFIG_BUTTON=y -CONFIG_BUTTON_ADC=y -CONFIG_MMC_MESON_GX=y -CONFIG_PHY_REALTEK=y -CONFIG_DM_MDIO=y -CONFIG_DM_MDIO_MUX=y -CONFIG_ETH_DESIGNWARE_MESON8B=y -CONFIG_MDIO_MUX_MESON_G12A=y -CONFIG_PCIE_DW_MESON=y -CONFIG_MESON_G12A_USB_PHY=y -CONFIG_PINCTRL=y -CONFIG_PINCTRL_MESON_G12A=y -CONFIG_POWER_DOMAIN=y -CONFIG_MESON_EE_POWER_DOMAIN=y -CONFIG_DM_REGULATOR=y -CONFIG_DM_REGULATOR_FIXED=y -CONFIG_DEBUG_UART_ANNOUNCE=y -CONFIG_DEBUG_UART_SKIP_INIT=y -CONFIG_MESON_SERIAL=y -CONFIG_SYSINFO=y -CONFIG_SYSINFO_SMBIOS=y -CONFIG_USB=y -CONFIG_DM_USB_GADGET=y -CONFIG_USB_XHCI_HCD=y -CONFIG_USB_XHCI_DWC3=y -CONFIG_USB_DWC3=y -# CONFIG_USB_DWC3_GADGET is not set -CONFIG_USB_DWC3_MESON_G12A=y -CONFIG_USB_KEYBOARD=y -CONFIG_USB_GADGET=y -CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e -CONFIG_USB_GADGET_PRODUCT_NUM=0xfada -CONFIG_USB_GADGET_DWC2_OTG=y -CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y -CONFIG_USB_GADGET_DOWNLOAD=y -CONFIG_VIDEO=y -# CONFIG_VIDEO_BPP8 is not set -# CONFIG_VIDEO_BPP16 is not set -CONFIG_SYS_WHITE_ON_BLACK=y -CONFIG_VIDEO_MESON=y -CONFIG_VIDEO_DT_SIMPLEFB=y -CONFIG_SPLASH_SCREEN=y -CONFIG_SPLASH_SCREEN_ALIGN=y -CONFIG_VIDEO_BMP_RLE8=y -CONFIG_BMP_16BPP=y -CONFIG_BMP_24BPP=y -CONFIG_BMP_32BPP=y diff --git a/reform2-a311d/boot/dts-makefile.patch b/reform2-a311d/boot/dts-makefile.patch deleted file mode 100644 index 8b826eecb8b47037364378ed6d04d8cb58654d1e..0000000000000000000000000000000000000000 --- a/reform2-a311d/boot/dts-makefile.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 480269fa60..2801246e53 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -213,6 +213,7 @@ dtb-$(CONFIG_ARCH_MESON) += \ - meson-g12b-a311d-bananapi-m2s.dtb \ - meson-g12b-a311d-khadas-vim3.dtb \ - meson-g12b-bananapi-cm4-cm4io.dtb \ -+ meson-g12b-bananapi-cm4-mnt-reform2.dtb \ - meson-g12b-gsking-x.dtb \ - meson-g12b-gtking.dtb \ - meson-g12b-gtking-pro.dtb \ diff --git a/reform2-a311d/boot/meson-g12b-bananapi-cm4-mnt-reform2.dts b/reform2-a311d/boot/meson-g12b-bananapi-cm4-mnt-reform2.dts deleted file mode 100644 index ae3fd04b30528ad133571a465901cda7b4ae9f47..0000000000000000000000000000000000000000 --- a/reform2-a311d/boot/meson-g12b-bananapi-cm4-mnt-reform2.dts +++ /dev/null @@ -1,391 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -/* - * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org> - * Copyright 2023 MNT Research GmbH - */ - -/dts-v1/; - -#include "meson-g12b-bananapi-cm4.dtsi" -#include <dt-bindings/input/input.h> -#include <dt-bindings/leds/common.h> -#include <dt-bindings/sound/meson-g12a-tohdmitx.h> - -/ { - model = "MNT Reform 2 with BPI-CM4 Module"; - compatible = "mntre,reform2-cm4", "bananapi,bpi-cm4", "amlogic,a311d", "amlogic,g12b"; - chassis-type = "laptop"; - - aliases { - ethernet0 = ðmac; - i2c0 = &i2c1; - i2c1 = &i2c3; - }; - - hdmi_connector: hdmi-connector { - compatible = "hdmi-connector"; - type = "a"; - - port { - hdmi_connector_in: endpoint { - remote-endpoint = <&hdmi_tx_tmds_out>; - }; - }; - }; - - leds { - compatible = "gpio-leds"; - - led-blue { - color = <LED_COLOR_ID_BLUE>; - function = LED_FUNCTION_STATUS; - gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; - }; - - led-green { - color = <LED_COLOR_ID_GREEN>; - function = LED_FUNCTION_STATUS; - gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>; - }; - }; - - sound { - compatible = "amlogic,axg-sound-card"; - model = "MNT-REFORM2-BPI-CM4"; - audio-widgets = "Headphone", "Headphone Jack", - "Speaker", "External Speaker", - "Microphone", "Mic Jack"; - audio-aux-devs = <&tdmout_a>, <&tdmout_b>, <&tdmin_b>; - audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", - "TDMOUT_A IN 1", "FRDDR_B OUT 0", - "TDMOUT_A IN 2", "FRDDR_C OUT 0", - "TDM_A Playback", "TDMOUT_A OUT", - "TDMOUT_B IN 0", "FRDDR_A OUT 1", - "TDMOUT_B IN 1", "FRDDR_B OUT 1", - "TDMOUT_B IN 2", "FRDDR_C OUT 1", - "TDM_B Playback", "TDMOUT_B OUT", - "TDMIN_B IN 1", "TDM_B Capture", - "TDMIN_B IN 4", "TDM_B Loopback", - "TODDR_A IN 1", "TDMIN_B OUT", - "TODDR_B IN 1", "TDMIN_B OUT", - "TODDR_C IN 1", "TDMIN_B OUT", - "Headphone Jack", "HP_L", - "Headphone Jack", "HP_R", - "External Speaker", "SPK_LP", - "External Speaker", "SPK_LN", - "External Speaker", "SPK_RP", - "External Speaker", "SPK_RN", - "LINPUT1", "Mic Jack", - "Mic Jack", "MICB"; - - assigned-clocks = <&clkc CLKID_MPLL2>, - <&clkc CLKID_MPLL0>, - <&clkc CLKID_MPLL1>; - assigned-clock-parents = <0>, <0>, <0>; - assigned-clock-rates = <294912000>, - <270950400>, - <393216000>; - - dai-link-0 { - sound-dai = <&frddr_a>; - }; - - dai-link-1 { - sound-dai = <&frddr_b>; - }; - - dai-link-2 { - sound-dai = <&frddr_c>; - }; - - dai-link-3 { - sound-dai = <&toddr_a>; - }; - - dai-link-4 { - sound-dai = <&toddr_b>; - }; - - dai-link-5 { - sound-dai = <&toddr_c>; - }; - - /* 8ch hdmi interface */ - dai-link-6 { - sound-dai = <&tdmif_a>; - dai-format = "i2s"; - dai-tdm-slot-tx-mask-0 = <1 1>; - dai-tdm-slot-tx-mask-1 = <1 1>; - dai-tdm-slot-tx-mask-2 = <1 1>; - dai-tdm-slot-tx-mask-3 = <1 1>; - mclk-fs = <256>; - - codec { - sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; - }; - }; - - /* Analog Audio */ - dai-link-7 { - sound-dai = <&tdmif_b>; - dai-format = "i2s"; - dai-tdm-slot-tx-mask-0 = <1 1>; - mclk-fs = <256>; - - codec { - sound-dai = <&wm8960>; - }; - }; - - /* hdmi glue */ - dai-link-8 { - sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; - - codec { - sound-dai = <&hdmi_tx>; - }; - }; - }; - - reg_main_1v8: regulator-main-1v8 { - compatible = "regulator-fixed"; - regulator-name = "1V8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - vin-supply = <®_main_3v3>; - }; - - reg_main_1v2: regulator-main-1v2 { - compatible = "regulator-fixed"; - regulator-name = "1V2"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - vin-supply = <®_main_5v>; - }; - - reg_main_3v3: regulator-main-3v3 { - compatible = "regulator-fixed"; - regulator-name = "3V3"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - }; - - reg_main_5v: regulator-main-5v { - compatible = "regulator-fixed"; - regulator-name = "5V"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - }; - - reg_main_usb: regulator-main-usb { - compatible = "regulator-fixed"; - regulator-name = "USB_PWR"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - vin-supply = <®_main_5v>; - }; - - backlight: backlight { - compatible = "pwm-backlight"; - pwms = <&pwm_AO_ab 0 10000 0>; - power-supply = <®_main_usb>; - enable-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>; - brightness-levels = <0 32 64 128 160 200 255>; - default-brightness-level = <6>; - - status = "okay"; - }; - - /*panel { - compatible = "innolux,n125hce-gn1", "simple-panel"; - power-supply = <®_main_3v3>; - backlight = <&backlight>; - no-hpd; - - status = "okay"; - - port { - panel_in: endpoint { - remote-endpoint = <&edp_bridge_out>; - }; - }; - };*/ - - clock_12288: clock_12288 { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <12288000>; - }; -}; - -/* not yet supported by u-boot */ - -/*&mipi_analog_dphy { - status = "okay"; -}; - -&mipi_dphy { - status = "okay"; -}; - -&mipi_dsi { - status = "okay"; - - assigned-clocks = <&clkc CLKID_GP0_PLL>, - <&clkc CLKID_MIPI_DSI_PXCLK_SEL>, - <&clkc CLKID_MIPI_DSI_PXCLK>, - <&clkc CLKID_CTS_ENCL_SEL>, - <&clkc CLKID_VCLK2_SEL>; - assigned-clock-parents = <0>, - <&clkc CLKID_GP0_PLL>, - <0>, - <&clkc CLKID_VCLK2_DIV1>, - <&clkc CLKID_GP0_PLL>; - assigned-clock-rates = <936000000>, - <0>, - <936000000>, - <0>, - <0>; -}; - -&mipi_dsi_panel_port { - mipi_dsi_out: endpoint { - remote-endpoint = <&edp_bridge_in>; - }; -};*/ - -&cecb_AO { - status = "okay"; -}; - -ðmac { - status = "okay"; -}; - -&hdmi_tx { - status = "okay"; -}; - -&hdmi_tx_tmds_port { - hdmi_tx_tmds_out: endpoint { - remote-endpoint = <&hdmi_connector_in>; - }; -}; - -&pwm_AO_ab { - pinctrl-names = "default"; - pinctrl-0 = <&pwm_ao_a_pins>; - status = "okay"; -}; - -&i2c0 { - status = "okay"; -}; - -/*&i2c3 { - status = "okay"; - - edp_bridge: bridge@2c { - compatible = "ti,sn65dsi86"; - reg = <0x2c>; - enable-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>; // PIN_24 / GPIO8 - vccio-supply = <®_main_1v8>; - vpll-supply = <®_main_1v8>; - vcca-supply = <®_main_1v2>; - vcc-supply = <®_main_1v2>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - - edp_bridge_in: endpoint { - remote-endpoint = <&mipi_dsi_out>; - }; - }; - - port@1 { - reg = <1>; - - edp_bridge_out: endpoint { - remote-endpoint = <&panel_in>; - }; - }; - }; - }; -};*/ - -&i2c2 { - status = "okay"; - - wm8960: codec@1a { - compatible = "wlf,wm8960"; - reg = <0x1a>; - clocks = <&clock_12288>; - clock-names = "mclk"; - #sound-dai-cells = <0>; - wlf,shared-lrclk; - }; - - rtc@68 { - compatible = "nxp,pcf8523"; - reg = <0x68>; - }; -}; - -&pcie { - status = "okay"; -}; - -&sd_emmc_b { - status = "okay"; -}; - -&tdmif_a { - status = "okay"; -}; - -&tdmout_a { - status = "okay"; -}; - -&tdmif_b { - pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>; - pinctrl-names = "default"; - - assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>, - <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>; - assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>, - <&clkc_audio AUD_CLKID_MST_B_LRCLK>; - assigned-clock-rates = <0>, <0>; -}; - - -&tdmin_b { - status = "okay"; -}; - -&toddr_a { - status = "okay"; -}; - -&toddr_b { - status = "okay"; -}; - -&toddr_c { - status = "okay"; -}; - -&tohdmitx { - status = "okay"; -}; - -&usb { - dr_mode = "host"; - - status = "okay"; -}; diff --git a/reform2-a311d/flash.bin b/reform2-a311d/flash.bin deleted file mode 100644 index 860d311014bb7a9b63e95e8a6f5bbd44f8e52b0e..0000000000000000000000000000000000000000 Binary files a/reform2-a311d/flash.bin and /dev/null differ diff --git a/reform2-a311d/mkimage.sh b/reform2-a311d/mkimage.sh deleted file mode 100755 index 7a691068b418d82a029f0c7ca23bcfcbcf2ea9cb..0000000000000000000000000000000000000000 --- a/reform2-a311d/mkimage.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash - -set -x -set -e - -export LC_ALL=C.UTF-8 - -# make sure build tools are installed -DEPS="mmdebstrap genext2fs e2fsprogs git mount parted" -if [ "$(dpkg --print-architecture)" != arm64 ]; then - DEPS="$DEPS arch-test qemu-user-static" -fi -if [ "$(dpkg-query --showformat '${db:Status-Status}\n' --show $DEPS | sort -u)" != "installed" ]; then - echo "Not all dependencies of this script are installed." - echo "Run the following command to install them:" - echo - echo " sudo apt install $DEPS" - exit 1 -fi -if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show mmdebstrap)" lt "0.8.4-1"; then - echo "mmdebstrap version must be >= 0.8.4-1" - exit 1 -fi -if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show genext2fs)" lt "1.5.0-2"; then - echo "genext2fs version must be >= 1.5.0-2" - exit 1 -fi - -# if we are in a git repository and if SOURCE_DATE_EPOCH is not set, use the -# timestamp of the latest git commit -if [ -z ${SOURCE_DATE_EPOCH+x} ] && git -C . rev-parse 2>/dev/null; then - SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) -else - SOURCE_DATE_EPOCH=$(date +%s) -fi -export SOURCE_DATE_EPOCH - -# /tmp might be too small for the full system, so we set a different TMPDIR -export TMPDIR="$(pwd)" - -# We need a separate partition for /boot for two reasons: -# -# 1) To boot encrypted NVMe -# 2) If we boot a system that is not on the SD-Card (even unencrypted) then we -# need to mount the partition containing kernel, initrd and dtb. If /boot is -# not in its own partition, then mounting that partition to /boot will -# result in the files being in /boot/boot. So we need to create a partition -# where kernel, initrd and dtb are at the root of the partition. Otherwise -# we cannot upgrade the kernel from the booted system. - -# debian-installer chooses 999424 sectors (= 488MB) by default -BOOTSIZE=488 -ROOTSIZE=4096 -IMGNAME=reform-system.img - -# build u-boot -if [ ! -f flash.bin ] -then - cd boot - git clone --depth 1 https://github.com/u-boot/u-boot - cd u-boot - export CROSS_COMPILE=aarch64-linux-gnu- - export ARCH=arm64 - - cp ../meson-g12b-bananapi-cm4-mnt-reform2.dts arch/arm/dts/ - patch -p1 <../dts-makefile.patch - cp ../bananapi-cm4-mnt-reform2_defconfig configs/ - - make bananapi-cm4-mnt-reform2_defconfig - make -j8 - cd .. - # build FIP - git clone --depth 1 https://github.com/libreelec/amlogic-boot-fip - cd amlogic-boot-fip - mkdir mnt-reform2-a311d - ./build-fip.sh bananapi-cm4io ../u-boot/u-boot.bin mnt-reform2-a311d - cp mnt-reform2-a311d/u-boot.bin.sd.bin ../../flash.bin -fi - -# build the debian userland and configure it -./mkuserland.sh - -# system --------------------------------------------------------- - -mmtarfilter --path-exclude='/boot/*' < target-userland.tar \ - | genext2fs --volume-label reformsdroot --block-size 1024 --size-in-blocks $((ROOTSIZE*1024)) --bytes-per-inode 16384 --tarball - "$IMGNAME" -fallocate --insert-range --offset=0 --length=$((((BOOTSIZE+4)*1024*1024))) "$IMGNAME" -mmtarfilter --path-exclude='*' --path-include=/boot --path-include='/boot/*' --strip-components=2 < target-userland.tar \ - | genext2fs --volume-label reformsdboot --block-size 1024 --size-in-blocks $((BOOTSIZE*1024)) --bytes-per-inode 16384 --tarball - boot.img -dd if=boot.img of="$IMGNAME" seek=1 bs=4194304 conv=notrunc -rm boot.img -truncate --size="+512" "$IMGNAME" -/sbin/parted -s "$IMGNAME" "mklabel msdos" -# reproducible disk signature -printf mntr | dd of="$IMGNAME" seek=440 bs=1 conv=notrunc -/sbin/parted -s "$IMGNAME" "mkpart primary ext4 4MiB $((BOOTSIZE+4))MiB" -/sbin/parted -s "$IMGNAME" "mkpart primary ext4 $((BOOTSIZE+4))MiB $((BOOTSIZE+ROOTSIZE+4))MiB" -/sbin/parted -s "$IMGNAME" print - -# install u-boot for A311D -dd if=./flash.bin of="$IMGNAME" conv=notrunc bs=512 skip=1 seek=1 - -rm target-userland.tar - -echo Reform System Image for BPI-CM4 A311D created: "$IMGNAME", MD5 checksum: -md5sum "$IMGNAME" diff --git a/reform2-a311d/mkuserland.sh b/reform2-a311d/mkuserland.sh deleted file mode 100755 index 68a240f92bae54faaa0a83eb52f188a2be318007..0000000000000000000000000000000000000000 --- a/reform2-a311d/mkuserland.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -e -set -x - -source ../reform2-common/userland-common.sh - -mmdebstrap \ - --architectures=arm64 \ - --components=main,non-free-firmware \ - --variant="minbase" \ - --verbose \ - --include="$PKGSGUI $PKGSNET $PKGSADMIN $PKGSUTILS $PKGSMISC firmware-realtek" \ - --skip=cleanup/reproducible \ - ${comment#setup apt preferences} \ - --setup-hook='{ echo "Package: *"; echo "Pin: release n=reform, l=reform"; echo "Pin-Priority: 990"; } > "$1"/etc/apt/preferences.d/reform.pref' \ - ${comment#setup flash-kernel} \ - --essential-hook='mkdir -p "$1"/etc/flash-kernel/ubootenv.d' \ - --essential-hook='mkdir -p "$1"/etc/flash-kernel/preboot.d' \ - --essential-hook='echo "MNT Reform 2 with BPI-CM4 Module" > "$1"/etc/flash-kernel/machine' \ - --essential-hook='{ echo LABEL=reformsdroot / auto errors=remount-ro 0 1; echo LABEL=reformsdboot /boot auto errors=remount-ro 0 1; } > "$1"/etc/fstab' \ - --essential-hook='{ echo LINUX_KERNEL_CMDLINE=\"console=ttyAML0,115200 console=tty1\"; echo LINUX_KERNEL_CMDLINE_DEFAULTS=\"ro no_console_suspend cma=512M pci=pcie_bus_perf libata.force=noncq nvme_core.default_ps_max_latency_us=0\"; } > "$1"/etc/default/flash-kernel' \ - ${comment#create boot.scr even if host running this uses EFI} \ - --essential-hook='echo yes > "$1"/etc/flash-kernel/ignore-efi' \ - ${comment#select timezone} \ - --essential-hook='echo tzdata tzdata/Areas select Europe | chroot "$1" debconf-set-selections' \ - --essential-hook='echo tzdata tzdata/Zones/Europe select Berlin | chroot "$1" debconf-set-selections' \ - ${comment#select locales} \ - --essential-hook='echo locales locales/default_environment_locale select en_US.UTF-8 | chroot "$1" debconf-set-selections' \ - --essential-hook='echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | chroot "$1" debconf-set-selections' \ - ${comment#set up motd} \ - --customize-hook='rm -f "$1"/etc/motd' \ - --customize-hook='ln -s motd-full "$1"/etc/motd' \ - ${comment#provide a copy of u-boot for (re)flashing} \ - --customize-hook='copy-in flash.bin /boot' \ - --customize-hook='chown -R root:root "$1"/boot/flash.bin' \ - ${comment#populate root user and skel} \ - --customize-hook='echo '"'"'if [ "$(whoami)" = "root" ]; then cat /etc/reform-root-help; elif [ -z "$WAYLAND_DISPLAY" ]; then cat /etc/reform-help; fi'"'"' >> "$1"/etc/skel/.profile' \ - --customize-hook='chroot "$1" sh -c "rsync -Pha /etc/skel/ /root"' \ - ${comment#populate /etc} \ - --customize-hook='echo reform > "$1"/etc/hostname' \ - --customize-hook='{ echo 127.0.0.1 localhost reform; echo ::1 localhost ip6-localhost ip6-loopback reform; echo ff02::1 ip6-allnodes; echo ff02::2 ip6-allrouters; } > "$1"/etc/hosts' \ - ${comment#or else EXTRA_GROUPS doesnt work?} \ - --customize-hook='sed -i "s/^#EXTRA_GROUPS=.*/EXTRA_GROUPS=audio cdrom dip floppy video plugdev netdev/" "$1"/etc/adduser.conf' \ - --customize-hook='sed -i "s/^#ADD_EXTRA_GROUPS=.*/ADD_EXTRA_GROUPS=1/" "$1"/etc/adduser.conf' \ - ${comment#remove root password -- using `passwd -d root` produces unreproducible output} \ - --customize-hook='echo "root:root" | chroot "$1" chpasswd' \ - --customize-hook='chroot "$1" sed -i "s/^root:[^:]\+:/root::/" /etc/shadow' \ - --customize-hook='rm "$1"/etc/resolv.conf' \ - --customize-hook='rm "$1"/var/lib/dbus/machine-id' ${comment#gets regenerated by dbus} \ - unstable target-userland.tar http://deb.debian.org/debian "deb [arch=arm64 trusted=yes] https://mntre.com/reform-debian-repo reform main" diff --git a/reform2-common/userland-common.sh b/reform2-common/userland-common.sh deleted file mode 100755 index 16bfe6198bfd122873d21a60294bdf402a273279..0000000000000000000000000000000000000000 --- a/reform2-common/userland-common.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -export PKGSGUI="xwayland xterm foot sway fonts-inter fonts-noto-color-emoji waybar swayidle swaylock mesa-utils lxpolkit wayland-protocols wofi wireplumber papirus-icon-theme wayfire firedecor libglib2.0-bin gsettings-desktop-schemas gnome-disk-utility gnome-themes-extra-data gnome-icon-theme gnome-settings-daemon gnome-system-monitor firefox grim slurp gedit evince mpv sxiv thunar pavucontrol unicode-data engrampa neverball minetest qt5ct kde-style-breeze python3-gi gir1.2-ayatanaappindicator3-0.1 dunst pkexec synaptic pasystray" - -export PKGSNET="iproute2 iptables inetutils-ping ircii elinks isc-dhcp-client netcat-traditional net-tools network-manager network-manager-gnome nfacct ntp ntpdate rsync telnet traceroute wpasupplicant curl wget w3m rfkill ifupdown netbase openssh-client blueman" - -export PKGSADMIN="apt apt-utils apt-listbugs apt-file cron cryptsetup lvm2 dbus-bin e2fsprogs fbset init-system-helpers ncdu parted pciutils policykit-1 procps sudo systemd systemd-sysv tmux u-boot-tools screen" - -export PKGSUTILS="busybox console-data console-setup cpio file flash-kernel gnupg gpgv htop kbd lm-sensors readline-common usbutils xdg-utils bsdmainutils less nano micro vim alsa-utils dosfstools python3-psutil reform-handbook" - -export PKGSMISC="brightnessctl brightness-udev ca-certificates debian-archive-keyring dialog gpm ncurses-term locales bash-completion man-db cryptsetup-initramfs linux-image-arm64 linux-headers-arm64 reform-tools" diff --git a/reform2-imx8mq/.gitignore b/reform2-imx8mq/.gitignore deleted file mode 100644 index acbc325140ceb4cebee95eff0852fcb234339ebc..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -linux-5.7-rc6.imx8mq-mnt-reform2.kernel -linux-5.7-rc6.tar.gz -linux-5.7-rc6 -!linux-5.7-rc6/.config -!linux-5.7-rc6/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts -!linux-5.7-rc6/arch/arm64/boot/dts/freescale/imx8mq.dtsi -linux/ -target-userland/ -u-boot/ -reform-system.img diff --git a/reform2-imx8mq/cleanup.sh b/reform2-imx8mq/cleanup.sh deleted file mode 100755 index ad1dd8aa1de17611b360de67e2762cdae682d740..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/cleanup.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -for d in dev proc sys -do - umount -f target-userland/$d || echo "Umounting $d failed" -done - -rm -rf target-userland -rm reform-system.img - diff --git a/reform2-imx8mq/emulate.sh b/reform2-imx8mq/emulate.sh deleted file mode 100755 index 056b666e5edc14a3a6fd067229753ac674fb3697..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/emulate.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -DISK="" -if [ -e /dev/loop0p1 ] -then - DISK="-drive if=none,file=/dev/loop0p1,id=rfs -device virtio-blk-device,drive=rfs" -else - echo "Hint: mount the disk image with: udisksctl loop-setup -f ./reform-system.img" -fi - -qemu-system-aarch64 \ - -machine virt \ - -cpu cortex-a53 \ - -smp 4 \ - -kernel ./linux/arch/arm64/boot/Image \ - -device virtio-gpu-pci,virgl=on \ - -append "console=ttyAMA0 root=/dev/vda rw" \ - -m 4096 \ - -nic user,model=virtio-net-pci \ - -display gtk,gl=on \ - -device usb-ehci -device usb-kbd -device usb-tablet -usb \ - -serial stdio \ - $DISK - - diff --git a/reform2-imx8mq/flash-image.sh b/reform2-imx8mq/flash-image.sh deleted file mode 100644 index 5d8a56614239017d277a0857b1465fcfb46134e8..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/flash-image.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -# an example of how to flash the image to an SD card. -# be sure to select the correct of= device below! - -# sudo dd if=reform-system.img of=/dev/sdc bs=8M status=progress diff --git a/reform2-imx8mq/mkimage.sh b/reform2-imx8mq/mkimage.sh deleted file mode 100755 index c9dca811d991ed2ef1a0c68031d85b561b6b8743..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/mkimage.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash - -set -x -set -e - -export LC_ALL=C.UTF-8 - -# make sure build tools are installed -DEPS="mmdebstrap genext2fs e2fsprogs git mount parted" -if [ "$(dpkg --print-architecture)" != arm64 ]; then - DEPS="$DEPS arch-test qemu-user-static" -fi -if [ "$(dpkg-query --showformat '${db:Status-Status}\n' --show $DEPS | sort -u)" != "installed" ]; then - echo "Not all dependencies of this script are installed." - echo "Run the following command to install them:" - echo - echo " sudo apt install $DEPS" - exit 1 -fi -if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show mmdebstrap)" lt "0.8.4-1"; then - echo "mmdebstrap version must be >= 0.8.4-1" - exit 1 -fi -if dpkg --compare-versions "$(dpkg-query --showformat='${Version}\n' --show genext2fs)" lt "1.5.0-2"; then - echo "genext2fs version must be >= 1.5.0-2" - exit 1 -fi - -# if we are in a git repository and if SOURCE_DATE_EPOCH is not set, use the -# timestamp of the latest git commit -if [ -z ${SOURCE_DATE_EPOCH+x} ] && git -C . rev-parse 2>/dev/null; then - SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) -else - SOURCE_DATE_EPOCH=$(date +%s) -fi -export SOURCE_DATE_EPOCH - -# /tmp might be too small for the full system, so we set a different TMPDIR -export TMPDIR="$(pwd)" - -# We need a separate partition for /boot for two reasons: -# -# 1) To boot encrypted NVMe -# 2) If we boot a system that is not on the SD-Card (even unencrypted) then we -# need to mount the partition containing kernel, initrd and dtb. If /boot is -# not in its own partition, then mounting that partition to /boot will -# result in the files being in /boot/boot. So we need to create a partition -# where kernel, initrd and dtb are at the root of the partition. Otherwise -# we cannot upgrade the kernel from the booted system. - -# debian-installer chooses 999424 sectors (= 488MB) by default -BOOTSIZE=488 -ROOTSIZE=4096 -IMGNAME=reform-system.img - -# download u-boot v3 for imx8mq from CI -/usr/lib/apt/apt-helper download-file https://source.mnt.re/reform/reform-boundary-uboot/-/jobs/artifacts/2023-07-04/raw/flash.bin\?job\=build flash.bin SHA1:41d2ba5fcc65f26224f7d1afed650e86662cea27 - -# build the debian userland and configure it -./mkuserland.sh - -# system --------------------------------------------------------- - -mmtarfilter --path-exclude='/boot/*' < target-userland.tar \ - | genext2fs --volume-label reformsdroot --block-size 1024 --size-in-blocks $((ROOTSIZE*1024)) --bytes-per-inode 16384 --tarball - "$IMGNAME" -fallocate --insert-range --offset=0 --length=$((((BOOTSIZE+4)*1024*1024))) "$IMGNAME" -mmtarfilter --path-exclude='*' --path-include=/boot --path-include='/boot/*' --strip-components=2 < target-userland.tar \ - | genext2fs --volume-label reformsdboot --block-size 1024 --size-in-blocks $((BOOTSIZE*1024)) --bytes-per-inode 16384 --tarball - boot.img -dd if=boot.img of="$IMGNAME" seek=1 bs=4194304 conv=notrunc -rm boot.img -truncate --size="+512" "$IMGNAME" -/sbin/parted -s "$IMGNAME" "mklabel msdos" -# reproducible disk signature -printf mntr | dd of="$IMGNAME" seek=440 bs=1 conv=notrunc -/sbin/parted -s "$IMGNAME" "mkpart primary ext4 4MiB $((BOOTSIZE+4))MiB" -/sbin/parted -s "$IMGNAME" "mkpart primary ext4 $((BOOTSIZE+4))MiB $((BOOTSIZE+ROOTSIZE+4))MiB" -/sbin/parted -s "$IMGNAME" print - -# install u-boot for i.MX8MQ -dd if=./flash.bin of="$IMGNAME" conv=notrunc bs=1k seek=33 - -rm target-userland.tar - -echo Reform System Image for i.MX8MQ created: "$IMGNAME", MD5 checksum: -md5sum "$IMGNAME" diff --git a/reform2-imx8mq/mkreform-tools.sh b/reform2-imx8mq/mkreform-tools.sh deleted file mode 100755 index a4500b16af2feb7bc4c50dbac8bb88b955af2cdf..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/mkreform-tools.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -dpkg-deb --build reform-tools_* - diff --git a/reform2-imx8mq/mkuserland.sh b/reform2-imx8mq/mkuserland.sh deleted file mode 100755 index ad6ad8b643f7b0af4d321b271554f93e10170c83..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/mkuserland.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -set -e -set -x - -source ../reform2-common/userland-common.sh - -mmdebstrap \ - --architectures=arm64 \ - --components=main \ - --variant="minbase" \ - --verbose \ - --include="$PKGSGUI $PKGSNET $PKGSADMIN $PKGSUTILS $PKGSMISC" \ - --skip=cleanup/reproducible \ - ${comment#setup apt preferences} \ - --setup-hook='{ echo "Package: *"; echo "Pin: release n=reform, l=reform"; echo "Pin-Priority: 990"; } > "$1"/etc/apt/preferences.d/reform.pref' \ - ${comment#setup flash-kernel} \ - --essential-hook='mkdir -p "$1"/etc/flash-kernel/ubootenv.d' \ - --essential-hook='mkdir -p "$1"/etc/flash-kernel/preboot.d' \ - --essential-hook='echo "MNT Reform 2" > "$1"/etc/flash-kernel/machine' \ - --essential-hook='{ echo LABEL=reformsdroot / auto errors=remount-ro 0 1; echo LABEL=reformsdboot /boot auto errors=remount-ro 0 1; } > "$1"/etc/fstab' \ - --essential-hook='{ echo LINUX_KERNEL_CMDLINE=\"console=ttymxc0,115200 console=tty1\"; echo LINUX_KERNEL_CMDLINE_DEFAULTS=\"ro no_console_suspend cma=512M pci=nomsi\"; } > "$1"/etc/default/flash-kernel' \ - ${comment#create boot.scr even if host running this uses EFI} \ - --essential-hook='echo yes > "$1"/etc/flash-kernel/ignore-efi' \ - ${comment#select timezone} \ - --essential-hook='echo tzdata tzdata/Areas select Europe | chroot "$1" debconf-set-selections' \ - --essential-hook='echo tzdata tzdata/Zones/Europe select Berlin | chroot "$1" debconf-set-selections' \ - ${comment#select locales} \ - --essential-hook='echo locales locales/default_environment_locale select en_US.UTF-8 | chroot "$1" debconf-set-selections' \ - --essential-hook='echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | chroot "$1" debconf-set-selections' \ - ${comment#set up motd} \ - --customize-hook='rm -f "$1"/etc/motd' \ - --customize-hook='ln -s motd-full "$1"/etc/motd' \ - ${comment#provide a copy of u-boot for (re)flashing} \ - --customize-hook='copy-in flash.bin /boot' \ - --customize-hook='chown -R root:root "$1"/boot/flash.bin' \ - ${comment#populate root user and skel} \ - --customize-hook='echo '"'"'if [ "$(whoami)" = "root" ]; then cat /etc/reform-root-help; elif [ -z "$WAYLAND_DISPLAY" ]; then cat /etc/reform-help; fi'"'"' >> "$1"/etc/skel/.profile' \ - --customize-hook='chroot "$1" sh -c "rsync -Pha /etc/skel/ /root"' \ - ${comment#populate /etc} \ - --customize-hook='echo reform > "$1"/etc/hostname' \ - --customize-hook='{ echo 127.0.0.1 localhost reform; echo ::1 localhost ip6-localhost ip6-loopback reform; echo ff02::1 ip6-allnodes; echo ff02::2 ip6-allrouters; } > "$1"/etc/hosts' \ - ${comment#or else EXTRA_GROUPS doesnt work?} \ - --customize-hook='sed -i "s/^#EXTRA_GROUPS=.*/EXTRA_GROUPS=audio cdrom dip floppy video plugdev netdev/" "$1"/etc/adduser.conf' \ - --customize-hook='sed -i "s/^#ADD_EXTRA_GROUPS=.*/ADD_EXTRA_GROUPS=1/" "$1"/etc/adduser.conf' \ - ${comment#remove root password -- using `passwd -d root` produces unreproducible output} \ - --customize-hook='echo "root:root" | chroot "$1" chpasswd' \ - --customize-hook='chroot "$1" sed -i "s/^root:[^:]\+:/root::/" /etc/shadow' \ - --customize-hook='rm "$1"/etc/resolv.conf' \ - --customize-hook='rm "$1"/var/lib/dbus/machine-id' ${comment#gets regenerated by dbus} \ - ${comment#smoke test to check if boot.scr exists despite EFI, see https://salsa.debian.org/installer-team/flash-kernel/-/merge_requests/33} \ - --customize-hook='[ -e "$1"/boot/boot.scr ]' \ - unstable target-userland.tar http://deb.debian.org/debian "deb [arch=arm64 trusted=yes] https://mntre.com/reform-debian-repo reform main" diff --git a/reform2-imx8mq/mkuserland3.sh b/reform2-imx8mq/mkuserland3.sh deleted file mode 100755 index 773e757ff0688e4634a6b639220bcaf1be94849d..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/mkuserland3.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -# -# This script installs extra applications that are not included in the minimal rescue image. -# - -set -e - -ETC=./template-etc -SKEL=./template-skel - -mmdebstrap \ - --architectures=arm64 \ - --variant=custom \ - --setup-hook='mmtarfilter "--path-exclude=/dev/*" < target-userland.tar | tar -C "$1" -x' \ - ${comment#set up motd} \ - --customize-hook='rm -f "$1"/etc/motd' \ - --customize-hook='ln -s motd-full "$1"/etc/motd' \ - ${comment#install applications} \ - --customize-hook='mv "$1"/etc/apt/apt.conf.d/10apt-listbugs "$1"/etc/apt/apt.conf.d/10apt-listbugs.bak' \ - --customize-hook='chroot "$1" apt-get install --yes git libreoffice libreoffice-gtk3 firefox-esr chromium emacs gimp wmaker x11-utils imagemagick-6.q16' \ - --customize-hook='chroot "$1" apt-get install --yes evolution freecad ardour sxiv minetest neverball scummvm dosbox wf-recorder wev linphone-desktop kicad' \ - ${comment#install patched software from mntre} \ - --customize-hook='chroot "$1" apt-get install --yes cage wayvnc ffmpeg' \ - ${comment#install a minimal gnome desktop} \ - --customize-hook='chroot "$1" apt-get install --yes --no-install-recommends gnome-control-center gnome-session default-jre-headless gnome-disk-utility gnome-icon-theme breeze-icon-theme gnome-system-monitor gnome-settings-daemon mpv eog evince gedit thunar pavucontrol grim fonts-inter fonts-noto-color-emoji pulseaudio unicode-data engrampa slurp arc-theme' \ - ${comment#install kde plasma} \ - --customize-hook='chroot "$1" apt-get install --yes plasma-workspace-wayland kde-plasma-desktop plasma-nm systemsettings powerdevil qtwayland5' \ - --customize-hook='chroot "$1" apt-get install --yes --no-install-recommends plasma-discover apt-config-icons-large' \ - --customize-hook='mv "$1"/etc/apt/apt.conf.d/10apt-listbugs.bak "$1"/etc/apt/apt.conf.d/10apt-listbugs' \ - --customize-hook='rm "$1"/etc/resolv.conf' \ - ${comment#workaround for minetest camera-in-head bug https://github.com/minetest/minetest/issues/11987 fixed in mesa 22.0} \ - --customize-hook='chroot "$1" mogrify -fill black -colorize 255 -transparent black /usr/share/games/minetest/games/minetest_game/mods/player_api/models/character.png' \ - ${comment#remove broken gnome online accounts panel} \ - --customize-hook='rm "$1"/usr/share/applications/gnome-online-accounts-panel.desktop' \ - --customize-hook='rm "$1"/etc/ssl/certs/java/cacerts' ${comment#regenerate with update-ca-certificates -f} \ - '' target-userland-full.tar diff --git a/reform2-imx8mq/mount-img.sh b/reform2-imx8mq/mount-img.sh deleted file mode 100755 index 5871acac0e5de9b7232ea5713d3775f073cc52ab..0000000000000000000000000000000000000000 --- a/reform2-imx8mq/mount-img.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -losetup -o $((4 * 1024 * 1024)) /dev/loop0 ./reform-system.img -mount /dev/loop0 /mnt - -echo "When you're done, use: losetup -d /mnt" -