summaryrefslogtreecommitdiff
path: root/TODO
blob: f25d8822c2597868b4f6613b2a002fd1ff1a0550 (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.   * Packages
  31.     + Optionally upgrade snapshot-based system with multistrap
  32.     + Fix mark auto-installed packages as such.
  33.     + Fix add suite components contrib non-free to APT config,
  34.       when option nonfree enabled.
  35.   * Security
  36.     + Validate with GnuPG downloads of installer parts
  37.     + Reset UUIDs (partitions, machine-ID, popularity-contest)
  38.     + Use UUIDs in fstab
  39.     + Ensure build host hostname/domain didn't leak into target system
  40.     + Try drop rootfs UUID from boot.scr (maybe initramfs works as-is)
  41.     + Add and bootstrap Monkeysphere
  42.     + Maybe Enable SElinux
  43.     + Maybe Enable AppArmor
  44.     + Maybe add sshguard and/or fail2ban.
  45.     + Maybe add suricata (tied to fail2ban?).
  46.     + Include libpam-abl
  47.   * Source
  48.     + Parallelize more targets
  49.     + Refactor to build a single final image:
  50.       + Use autoconf
  51.       + Flatten targets into single subdir per scope, and no-dir for final image
  52.     + Add testsuite
  53.     + Include top-level USE.md (from box.redpill.dk README.txt).
  54.     + Add top-level SETUP.md covering device name validation.
  55.     + configure kernel late, to process initramfs only once.
  56.   * Images
  57.     + Generate images at morla.jones.dk
  58.     + Generate index pages from source documents.
  59.     + Modernize index page styling: Use Sass plugin normalize (not h5bp).
  60.     + Test non-root same-arch build
  61. Ideas
  62. -----
  63.   * Core
  64.     + Maybe use bilibop or flashybrid
  65.   * Source
  66.     + Use fuse2fs, e2tools, fsarchiver, partclone or dump/restore to
  67.       populate root/boot images as non-root.
  68.     + Use debootstrap (likely at least 1.0.98 due to bug#741964).
  69.     + Use mmdebstrap.
  70.   * Images
  71.     + Sneakernet: add-on partition/image with all needed udebs and debs
  72.     + Full: add-on partition/image with full sources
  73.     + Resolve Erase Block size (EBS) and Page size (PS) with flashbench
  74.     + Format partition as ext4 with stride=PS and stripe-width=EBS
  75.       <https://thelastmaimou.wordpress.com/2013/05/04/magic-soup-ext4-with-ssd-stripes-and-strides/>
  76.       <https://thelastmaimou.wordpress.com/2013/05/19/optimizing-arch-linux-image-installation-on-the-raspberry-pi/>
  77.     + ...or maybe _avoid_ tuning stripe/stride, as mentioned at
  78.       <https://www.mayrhofer.eu.org/ssd-linux-benchmark>
  79.       According to <https://lwn.net/Articles/428584/> SDHC registers
  80.       preferred erase size to sysfs, so this should work:
  81.         test -e /sys/block/mmcblk0/device/preferred_erase_size \
  82.         && parted -s -a optimal /dev/mmcblk0 -- mklabel msdos \
  83.         mkpart primary ext2 $(cat /sys/block/mmcblk0/device/preferred_erase_size)B 100%
  84.     + maybe try make use of flashbench open-au tests as described in
  85.       above LWN article and summarized at
  86.       <https://lists.linaro.org/pipermail/flashbench-results/2014-July/000479.html>
  87.     + Optionally strip l10n and/docs:
  88.       <https://lists.debian.org/msgid-search/571f39fe-2ad7-909f-9b72-65190c9e09b8@derobert.net>
  89.   * User experience
  90.     + LED indicating health
  91.       - State from "systemctl status"
  92.       - NTP in sync?
  93.   * Profiles
  94.     + Gateway: Use kernel module sch_cake for traffic shaping
  95.       (available since Linux 4.19)
  96.       <https://www.bufferbloat.net/projects/codel/wiki/Cake/>
  97.     + Gateway: Enable traffic shaping
  98.       - Wondershaper
  99.       - Cake when Linux 4.19.x is available
  100.     + serve-email: postfix, dovecot, mailman3, automx
  101.       <https://github.com/mail-in-a-box/mailinabox>
  102.     + serve-events: aggregate-hook
  103.       <https://github.com/Kozea/Radicale/pull/429>
  104.     + serve-events: shared calendars using symlinks
  105.       <https://github.com/Kozea/Radicale/wiki/Sharing-Calendars>
  106.     + serve-events: Add iOS provision hints
  107.       <https://github.com/mail-in-a-box/mailinabox/blob/master/conf/ios-profile.xml>