diff options
author | Malte Voos <git@mal.tc> | 2024-12-20 23:19:18 +0100 |
---|---|---|
committer | Malte Voos <git@mal.tc> | 2024-12-20 23:19:18 +0100 |
commit | c3a8e89a4bfab3c64c94fc6df42e94b231be4bff (patch) | |
tree | be996179c9862c01e845a023fca5ad47d19a310f | |
parent | 806dc1ed43be0e638fc1d60881afdae812d0e4e6 (diff) | |
download | reMder-c3a8e89a4bfab3c64c94fc6df42e94b231be4bff.tar.gz reMder-c3a8e89a4bfab3c64c94fc6df42e94b231be4bff.zip |
initial attempt at rmpp emulation
-rw-r--r-- | flake.nix | 12 | ||||
-rw-r--r-- | server.nix | 76 |
2 files changed, 57 insertions, 31 deletions
diff --git a/flake.nix b/flake.nix index 97a3723..27a4a38 100644 --- a/flake.nix +++ b/flake.nix @@ -19,13 +19,13 @@ inherit sshPassword sshPort httpPort; }; - # reMder = pkgs.symlinkJoin { - # name = "reMder"; - # paths = [ client server ]; - # }; + reMder = pkgs.symlinkJoin { + name = "reMder"; + paths = [ client server ]; + }; in { - packages = { inherit server; }; + packages = { inherit reMder; }; - # defaultPackage = reMder; + defaultPackage = reMder; }); } diff --git a/server.nix b/server.nix index 31462cd..906e2c6 100644 --- a/server.nix +++ b/server.nix @@ -1,5 +1,5 @@ -{ fetchurl, writeText, libguestfs-with-appliance, pkgsCross, qemu, runCommand -, writeShellApplication, sshPassword, sshPort, httpPort }: +{ lib, fetchurl, writeText, libguestfs-with-appliance, pkgsCross, qemu +, runCommand, cpio, writeShellApplication, sshPassword, sshPort, httpPort }: let updateName = "remarkable-ct-prototype-image-3.16.1.0-ferrari-public"; @@ -7,7 +7,7 @@ let url = # TODO: this is not an official source. might be worth authenticating the updates "https://storage.googleapis.com/remarkable-versions/${updateName}.swu"; - hash = ""; + hash = "sha256-cwx2qcvxZBX0wAprYKls8P+gthwJJQTceVIO+qdPm/w="; }; xochitlConfig = writeText "xochitl.conf" '' @@ -42,14 +42,16 @@ let WantedBy=multi-user.target ''; - fakefbdev = pkgsCross.remarkable2.gcc11Stdenv.mkDerivation { + fakefbdev = pkgsCross.aarch64-multiplatform.gcc11Stdenv.mkDerivation { name = "fakefbdev"; src = ./fakefbdev; installFlags = [ "DESTDIR=${placeholder "out"}" ]; }; - rootfsImage = runCommand "rm-rootfs.ext4" '' + kernel = pkgsCross.aarch64-multiplatform.linux; + + rootfsImage = runCommand "rm-rootfs.ext4" { nativeBuildInputs = [ cpio ]; } '' cpio -i --file ${updateArchive} gzip -dc ${updateName}.ext4.verity.gz > $out ''; @@ -62,35 +64,62 @@ let guestfish --rw --blocksize=512 --add $out <<EOF run - part-init /dev/sda mbr - part-add /dev/sda p 2048 43007 - part-add /dev/sda p 43008 595967 - part-add /dev/sda p 595968 1148927 - part-add /dev/sda p 1148928 14942207 + # not the original partition table of the RMPP + part-init /dev/sda gpt + part-add /dev/sda p 2048 2099199 + part-add /dev/sda p 2099200 10487807 + part-add /dev/sda p 10487808 12584959 + part-add /dev/sda p 12584960 16775167 - mkfs vfat /dev/sda1 + mkfs ext4 /dev/sda1 upload ${rootfsImage} /dev/sda2 - mkfs ext4 /dev/sda3 + resize2fs /dev/sda2 + mkswap /dev/sda3 mkfs ext4 /dev/sda4 mount /dev/sda2 / + copy-in ${kernel}/lib/modules /lib + download /etc/fstab fstab - ! sed -i 's/mmcblk2p/vda/' fstab + ! sed -i 's#mmcblk0p1#vda1#' fstab + ! sed -i 's#/dev/mapper/home-encrypted-disk#/dev/vda4#' fstab upload fstab /etc/fstab + download /etc/passwd passwd + ! sed -i 's#/usr/sbin/rmdevlogin#/bin/sh#' passwd + upload passwd /etc/passwd + + download /etc/shadow shadow + ! sed -i 's/root:!:/root::/' shadow + upload shadow /etc/shadow + upload ${ifnameUdevRule} /etc/udev/rules.d/70-persistent-net.rules - download /lib/systemd/system/dhcpcd.service dhcpcd.service - ! sed -i 's/wlan/usb/' dhcpcd.service - upload dhcpcd.service /lib/systemd/system/dhcpcd.service + # download /lib/systemd/system/dhcpcd.service dhcpcd.service + # ! sed -i 's/wlan/usb/' dhcpcd.service + # upload dhcpcd.service /lib/systemd/system/dhcpcd.service TODO - rm /lib/systemd/system/remarkable-fail.service - rm /lib/systemd/system/rm-sync.service upload ${xochitlService} /lib/systemd/system/xochitl.service - upload ${fakefbdev}/lib/libfakefbdev.so /usr/lib/libfakefbdev.so - chmod 0755 /usr/lib/libfakefbdev.so + # delete stuff which hinders boot + rm /lib/systemd/system/rm-sync.service + rm /lib/systemd/system/xochitl.service.d/xochitl-service-override.conf + rm /lib/systemd/system/wpa_supplicant.service + rm /lib/systemd/system/dropbear-wlan.socket + rm /lib/systemd/system/keystore.service + rm /lib/systemd/system/swapcryptor.service + rm /lib/systemd/system/homecryptor.service + rm /lib/systemd/system/growpart-home.service + rm /lib/systemd/system/memfault-attributes.service + rm /lib/systemd/system/swupdate.service + rm /lib/systemd/system/swupdate.socket + rm /lib/systemd/system/usb-ether-once.service + rm /lib/systemd/system/marker-manager.service + rm /lib/systemd/system/rm-sanity.timer + + # upload ${fakefbdev}/lib/libfakefbdev.so /usr/lib/libfakefbdev.so + # chmod 0755 /usr/lib/libfakefbdev.so mount /dev/sda4 /home cp-a /etc/skel /home/root @@ -102,8 +131,6 @@ let EOF ''; - kernel = pkgsCross.aarch64-linux.linux_5_4; - in writeShellApplication { name = "reMder-server"; @@ -117,7 +144,7 @@ in writeShellApplication { -machine virt \ -cpu host \ -m 2048 \ - -kernel ${kernel}/zImage \ + -kernel ${kernel}/Image \ -drive if=none,file=./reMder.qcow2,format=qcow2,id=hd \ -device virtio-blk-device,drive=hd \ -netdev user,hostfwd=tcp::${toString sshPort}-:22,hostfwd=tcp::${ @@ -125,8 +152,7 @@ in writeShellApplication { }-:80,id=net \ -device virtio-net-device,netdev=net,mac=${usbMacAddr} \ -append "console=ttyAMA0 rootfstype=ext4 root=/dev/vda2 rw rootwait init=/sbin/init" \ - -serial stdio \ - -monitor none \ + -serial mon:stdio \ -nographic ''; } |