summaryrefslogtreecommitdiff
path: root/TODO
blob: db1a1cbad0a7b884b73accee247f5d46db3d153f (plain)
  1. Final release
  2. -------------
  3.   * Network
  4.     + Add root script to setup dyndns.
  5.     + Configure dhcpd config
  6.   * Packages
  7.     + Preinstall security updates
  8.     + Fix flash-kernel for LIME2: Breaks updating to security update of linux
  9.     + Set /etc/mailname (or maybe just set hostname) before package postinst
  10.   * Security
  11.     + Reset crypto (ssh, gnupg, rng)
  12.     + Disable password-based remote login
  13. Point releases
  14. --------------
  15.   * Core
  16.     + Include root script to call dpkg-reconfigure (with -u by default).
  17.     + Integrate root scripts into Debian
  18.     + Optimize initramfs:
  19.       - Include minimal set of modules. ("dep" not "most").
  20.       - Avoid including busybox.
  21.       - Compress with xz (not gzip).
  22.     + Figure out and document when qemu-user-static/qemu-user is needed.
  23.     + Have multistrap (flag auto-installed and try) remove libeatmydata.
  24.   * Devices
  25.     + Make serial tweaks board-specific: Teres-I need tty0 (not tty1)
  26.     + Make boot.scr tweak board-specific: Unneeded for Teres-I
  27.   * Network
  28.     + Tweak MTA
  29.     + Try configure network during build (reducing/eliminating root script)
  30.     + Setup WWAN connection
  31.       - Known working APN values:
  32.         + data.tre.dk
  33.         + internet
  34.       - See /usr/share/mobile-broadband-provider-info/serviceproviders.xml
  35.     nmcli connection add ifname '' autoconnect yes type gsm apn $apn connection.id gsm-$apn-noauth connection.zone external gsm.password-flags 1
  36.     + setup dynamic-IP subnet
  37.     incfile="/etc/dhcp/dhcpd.d/80-shared-network-10-10-0.conf"
  38.     cfgfile="/etc/dhcp/dhcpd.conf"
  39.     line="#include \"$incfile\";"
  40.     mkdir -p "/etc/dhcp/dhcpd.d"
  41.     cat <<'EOf' > "$incfile"
  42.     # Dynamic-IP subnet in private class A net
  43.     shared-network 10-10-0 {
  44.         option domain-search "internal.localnet";
  45.         option domain-name-servers 10.10.0.1;
  46.         subnet 10.10.0.0 netmask 255.255.255.0 {
  47.         option routers 10.10.0.1;
  48.             range 10.10.0.100 10.10.0.254;
  49.         }
  50.     }
  51.     EOf
  52.     grep -q "$line" "$cfgfile" || echo "$line" >> "$cfgfile"
  53.   * Packages
  54.     + Optionally upgrade snapshot-based system with multistrap
  55.     + Fix mark auto-installed packages as such.
  56.     + Fix add suite components contrib non-free to APT config,
  57.       when option nonfree enabled.
  58.   * Security
  59.     + Validate with GnuPG downloads of installer parts
  60.     + Reset UUIDs (partitions, machine-ID, popularity-contest)
  61.     + Use UUIDs in fstab
  62.     + Ensure build host hostname/domain didn't leak into target system
  63.     + Try drop rootfs UUID from boot.scr (maybe initramfs works as-is)
  64.     + Add and bootstrap Monkeysphere
  65.     + Maybe Enable SElinux
  66.     + Maybe Enable AppArmor
  67.     + Maybe add sshguard and/or fail2ban.
  68.     + Maybe add suricata (tied to fail2ban?).
  69.     + Include libpam-abl
  70.   * Source
  71.     + Parallelize more targets
  72.     + Refactor to build a single final image:
  73.       + Use autoconf
  74.       + Flatten targets into single subdir per scope, and no-dir for final image
  75.     + Add testsuite
  76.     + Include top-level USE.md (from box.redpill.dk README.txt).
  77.     + Add top-level SETUP.md covering device name validation.
  78.     + configure kernel late, to process initramfs only once.
  79.   * Images
  80.     + Generate images at morla.jones.dk
  81.     + Generate index pages from source documents.
  82.     + Modernize index page styling: Use Sass plugin normalize (not h5bp).
  83.     + Test non-root same-arch build
  84. Ideas
  85. -----
  86.   * Core
  87.     + Maybe use bilibop or flashybrid
  88.   * Source
  89.     + Use fuse2fs, e2tools, fsarchiver, partclone or dump/restore to
  90.       populate root/boot images as non-root.
  91.     + Use debootstrap (likely at least 1.0.98 due to bug#741964).
  92.     + Use mmdebstrap.
  93.   * Images
  94.     + Sneakernet: add-on partition/image with all needed udebs and debs
  95.     + Full: add-on partition/image with full sources
  96.     + Resolve Erase Block size (EBS) and Page size (PS) with flashbench
  97.     + Format partition as ext4 with stride=PS and stripe-width=EBS
  98.       <https://thelastmaimou.wordpress.com/2013/05/04/magic-soup-ext4-with-ssd-stripes-and-strides/>
  99.       <https://thelastmaimou.wordpress.com/2013/05/19/optimizing-arch-linux-image-installation-on-the-raspberry-pi/>
  100.     + ...or maybe _avoid_ tuning stripe/stride, as mentioned at
  101.       <https://www.mayrhofer.eu.org/ssd-linux-benchmark>
  102.       According to <https://lwn.net/Articles/428584/> SDHC registers
  103.       preferred erase size to sysfs, so this should work:
  104.         test -e /sys/block/mmcblk0/device/preferred_erase_size \
  105.         && parted -s -a optimal /dev/mmcblk0 -- mklabel msdos \
  106.         mkpart primary ext2 $(cat /sys/block/mmcblk0/device/preferred_erase_size)B 100%
  107.     + maybe try make use of flashbench open-au tests as described in
  108.       above LWN article and summarized at
  109.       <https://lists.linaro.org/pipermail/flashbench-results/2014-July/000479.html>
  110.     + Optionally strip l10n and/docs:
  111.       <https://lists.debian.org/msgid-search/571f39fe-2ad7-909f-9b72-65190c9e09b8@derobert.net>
  112.   * User experience
  113.     + LED indicating health
  114.       - State from "systemctl status"
  115.       - NTP in sync?
  116.   * Profiles
  117.     + Gateway: Use kernel module sch_cake for traffic shaping
  118.       (available since Linux 4.19)
  119.       <https://www.bufferbloat.net/projects/codel/wiki/Cake/>
  120.     + Gateway: Enable traffic shaping
  121.       - Wondershaper
  122.       - Cake when Linux 4.19.x is available
  123.     + serve-email: postfix, dovecot, mailman3, automx
  124.       <https://github.com/mail-in-a-box/mailinabox>
  125.     + serve-events: aggregate-hook
  126.       <https://github.com/Kozea/Radicale/pull/429>
  127.     + serve-events: shared calendars using symlinks
  128.       <https://github.com/Kozea/Radicale/wiki/Sharing-Calendars>
  129.     + serve-events: Add iOS provision hints
  130.       <https://github.com/mail-in-a-box/mailinabox/blob/master/conf/ios-profile.xml>