zerotracepen (4.0~beta1)

  • Major changes

    • Upgrade to a snapshot of Debian 10 (Buster) from 2018-08-06.

    • Removed features

    • Remove scribus completely (refs: 16290).

    • Remove LibreOffice Math (#16911).

    • Bugfixes

    • Fix Electrum wrapper's persistence check (Closes: #16821).

    • Remove pre-generated Pidgin accounts (Closes: #16744).

    • Hide the security level button in the unsafe browser (Closes:

      16735).

    • Only hide unlocked Zero Trace PenData partitions from the boot device
      (Closes: #16789).

    • Minor improvements and updates

    • Remove KeePassX and replace it with KeePassXC (Closes:

      15297). As KeePassX was used around for a longer time, we don't

      need automatic upgrading cappability from old KeePass file
      format (Zero Trace Pen 2 times). The user can still import those old
      files, if they want to access it.

    • Ship a pre-compiled AppArmor policy to make boot faster (Closes:

      16138).

    • Change the splash screen for Zero Trace Pen 4.0 (#16837). Add SVG source
      while we're at it!

    • Remove our predefined bookmarks and ship default upstream Tor
      Browser bookmarks instead (Closes: #15895).

    • Install bolt for improved Thunderbolt support (Closes: #5463).

    • Don't display the Home launcher on the desktop (Closes: #16799).
      Since the switch to the desktop-icons GNOME Shell extension, the
      nicer XDG-blah name ("Home" in English, translated in many
      languages) is not used to label this launcher anymore: instead,
      the name of the directory is displayed, in this case: "amnesia",
      which makes no sense to our users. Our other options to fix that
      are more costly and we've decided a while ago, when I proposed
      to remove the desktop icons, to keep them until they were too
      expensive to support. So this one goes: we have the Places menu
      already.

    • Add Files to favorite apps (Closes: #16799). This gives another
      entry point to the home folder, which partially mitigates any UX
      regression that might be caused by the previous changelog entry.

    • Explicitly install imagemagick. We ship it on purpose (see
      [[contribute/meetings/201707]]).

    • MAT:

      • Drop obsolete optional MAT dependencies it isn't using any
        more.
      • Stop explicitly installing MAT dependencies. The package
        depends on those so we don't need to pull them ourselves.
    • Move translations from root-terminal.desktop.in into own PO
      files (Closes: #15335).

    • Drop obsolete live-boot patch: the bug it workarounds only
      happens with CONFIG_AUFS_DEBUG enabled. We disable
      CONFIG_AUFS_DEBUG in config/chroot_local-hooks/13-aufs and the
      Debian package did it as well (Refs: Debian#886329).

    • Rename /usr/share/amnesia to /usr/share/zerotracepen.

    • Drop APT pinning for non-existing live.debian.net, that we
      haven't used since 2010.

    • Don't install the cryptsetup initramfs integration and startup
      scripts (Closes: #16264). We probably only need the binaries.
      Not installing the initramfs integration will get rid of some
      noise

    • Don't install full-blown cryptsetup, take 2 (refs: #15690). We've
      stopped installing it (#16264) but this branch independently
      reintroduced it.

    • Disable live-tools.service (Closes: #16324). This service is only
      useful to display the "Please remove the live-medium, close the
      tray (if any) and press ENTER to continue:" prompt on shutdown,
      that we don't want to display in Zero Trace Pen: shutdown and memory
      erasure should not require a confirmation once the user has
      triggered it. In Stretch this code was broken and we were
      relying on this. But the Buster upgrade of this code has
      repaired it, so I sometimes see that prompt. This might also
      explain some issues such as #16312.

    • AppArmor: allow cups-brf, driverless, and gutenprint53+usb
      printer backends (Closes: #15030). Technically, cups-brf and
      driverless are not third-party and should be confined more
      strictly with "ixr", under the cupsd profile. But I don't know
      how to to test these backends and confining them more strictly
      may break them. Anyway, that's an upstream matter: the purpose
      of our Zero Trace Pen-specific patch is to replace the third party
      backends /usr/lib/cups/backend/* catch all rule, that doesn't
      work for us, and not to keep the list of backends which come
      with CUPS up-to-date.

    • Make export_gnome_env() exit early if gnome-shell isn't running.
      Without this e.g. the automated test suite, which will call
      export_gnome_env() before gnome-shell is running, will have its
      journal polluted with errors about this. This is not the first
      time I see this and get worried and waste minutes investigating,
      so let's just fix it.

    • Build system

    • Bump VM_MEMORY_BASE to 2048M. With the previous 1024M setting,
      the squashfs preparation gets OOM-killed.

    • Limit the memory used by mksquashfs to 512M (Closes: #16177). By
      default mksquashfs will use 25% of the physical memory. So when
      we use the "ram" build option, build in a VM with 13GB of RAM,
      of which up to 12G is supposed to be used by the build tmpfs,
      mksquashfs will try using 13/4 = 3.25G of memory. And then it
      will get reaped by the OOM killer more or less occasionally
      depending on how much space is really used in the build tmpfs
      and how much memory the rest of the system is using. So let's
      limit the memory used by mksquashfs to 50% of the memory we
      allocate to the build VM, excluding the part of it that we
      expect tmpfs data to fill. In passing, the fact mksquashfs does
      not get killed every time suggests that our current
      BUILD_SPACE_REQUIREMENT value exceeds the real needs of a build:
      a value around 10 or 11G should be enough. But that will be for
      another commit.

    • Use xz with default settings to compress non-release SquashFS
      (refs: #16177). squashfs-tools 1:4.3-11, used to build
      feature/buster, does not consistently honor the value passed to
      -mem: the xz compressor does but at least the gzip and lzo ones
      don't. This makes the build often fail because mksquashfs gets
      reaped by the OOM-killer. Our only other option is currently to
      bump the build VM memory a lot, which is going to be painful on
      developers' systems and might not be an option on Jenkins. So
      let's fall back to xz with default settings (not the crazy slow
      but efficient we use at release time) when building non-release
      images.

    • Rename the "gzipcomp" build option to "fastcomp". What matters
      in the "user" interface is not the exact algorithm that's used,
      it's the fact it's supposed to be faster than the compression
      settings we use to build releases. We may have to changes these
      fast(er) settings occasionally, possibly to use a non-gzip
      algorithm. So let's keep supporting "gzipcomp" for backward
      compatibility but stop documenting it. Instead, support and
      document "fastcomp".

    • Add the vmproxy+extproxy build option. When enabled, use the
      vmproxy but configure it to in turn use the exproxy set via the
      http_proxy environment variable.

    • Support the case when we don't ship a custom AppArmor feature
      set. Let's keep this sanity check for the times when we do ship
      a custom feature set, but building an ISO without a custom one
      should remain supported. (Closes: #15149)

    • Don't remove packages whose deinstallation removes most of the
      system; don't explicitly remove packages that are taken care of
      by "apt-get autoremove" already. On Buster, removing dpkg-dev
      or make deinstalls python3, gnome-shell and more.

    • Install all "Priority: standard" packages via an explicit
      packages list instead of via --tasks (Closes: #15690). This will
      make it easier to remove some of these packages from the list of
      those that should be installed in the first place, as opposed to
      letting them be installed by tasksel only to uninstall them
      later. I've seeded zerotracepen-000-standard.list with the output of:
      tasksel --task-packages standard | sort … run on a clean Buster
      system. Also:

      • live-build forcibly translates --packages-lists="standard"
        into "tasksel install standard", so to make this change
        effective we also need to switch to "--packages-lists
        minimal" or "--packages-lists none". The former has
        problematic side-effects so let's use the latter.
      • Add to zerotracepen-common.list some of the packages that were
        previously installed automatically, e.g. via live-build's
        lists/standard → lists/minimal.
    • Test suite

    • Tons of tiny updates for the Stretch → Buster transition, mainly
      updated reference images, but also a few other trivial changes
      (e.g. close with Alt+F4 instead of menu, or vice versa) due to
      changes in applications.

    • Drop test case about migrating from a Jessie-area persistent
      volume. If our code happens to support Zero Trace Pen 2.x → 4.x upgrades
      without going through 3.x, fine. But let's not spend cycles in
      our CI to guarantee this.

    • Revert "Test suite: add backward compatibility with redir <
      3.0." We don't support running the test suite on Jessie anymore.

    • Adjust dhclient listening address for Buster.

    • Bump timeout for poweroff from 3 to 10 minutes (Refs: #16312).

    • Adjust dogtail patterns for gobby test (Closes: #16335). With the
      gobby upgrade from 0.5.0 to 0.6.0 pre-series, the case changed a
      little for a menu item and the window it leads to.

    • Update key shortcut to close seahorse's Preferences window
      (Closes: #16341). The “Close” button is gone from the
      Preferences window in the buster version of the seahorse
      package, making it impossible to close that window. Switch to
      sending ESC instead of Alt-C.

    • Update MAT test case for MAT2 (Closes: #16623).

    • Add debug logging for when we call Sikuli. When following a
      (debug) log live (through --format debug) I find this change
      useful to know what is going on right now since Sikuli only
      reports what it has done after it is done.

    • Be more careful when finding ASP notifications. For some reason
      both the label and button has a "weird" invisible (despite
      showingOnly) twin located just below the Applications
      menu. So let's make some extra effort to actually find the real
      notification, and then look for the label and button among its
      children.

    • Remove obsolete method. Display::take_screenshot() hasn't
      existed for years.

    • Remove workaround "Desktop icons are sometimes not shown" (Refs:

      13461)

    • Wait longer between search steps in the GNOME Overview. On
      jenkins.lizard — which was under high load at that time — I've
      seen failures while starting GNOME Terminal from the Overview,
      where:

      • The debug log claims we did type "c", waited 1 second, then
        typed "ommandline", then slept another 1 second, then pressed
        Enter. I.e. just as the code says.
      • The video shows that GNOME Shell did pick up "c", which
        selected the first search result ("Configure Persistent
        Volume"), but then there's no trace of typing "ommandline".
        So I suspect that "ommandline" was lost because GNOME Shell
        was still busy, somehow. Let's sleep a bit longer before
        these steps, to give GNOME Shell a better chance to recover
        and notice keyboard input.
    • Log exceptions thrown in generated (i.e. snapshot) steps (Refs:

      16747). Hopefully this will help us track down these elusive

      exceptions.

    • Extend waiting time for additional software to be installed.

    • Sometimes we need more more time to load a page over tor.

    • Remove useless Zero Trace PenUpgraderApplyingUpgrade.png. The "progress
      prompt" it was used for just flashes by and can easily be
      missed. There is no reason at all to wait for it since the only
      two final outcomes are success or failure, which we already look
      for.

    • debug_log() when we save/restore snapshots. These actions can
      take a long time (especially saving snapshots on a system under
      load) and can make it appear like if the test suite has gotten
      stuck for those following the debug log.

    • Don't rely on mtimes from Debian packages we download, to
      indicate which one has the biggest version (Closes: #16819).
      These mtimes are copied from the HTTP server where APT downloads
      packages from, which contradicts our assumption that the newest
      file must be the one with the biggest version. Instead we use ls
      to sort by version number, to pick the biggest version.

    • Only send TAB every second to get the syslinux kernel
      command-line (Closes: #16820). Our syslinux has a timeout of 5s so
      sending TAB every second should be enough to guarantee we do
      open the kernel command line. As anonym reported, "the spammer
      makes the splash show for significantly longer: I've seen >10x,
      so the boot splash never managed to appear, which is worrying".

    • Drop workaround to make the TAB spammer compatible with the UEFI
      firmware (Closes: #16820). As reported by anonym on #16820, and
      confirmed by my testing, pressing TAB doesn't seem to open the
      UEFI configuration, so the very reason why we had this
      workaround is gone.

    • Adjustments for Debian 10 (Buster) with no or very little user-visible impact

    • Adjust APT sources and pinning for Buster.

    • Refresh and unfuzzy patches for Buster.

    • Pass --ellipsize to zenity (refs: #16286). This fixes dialog
      width and height on Buster.

    • Update expected /etc/passwd and /etc/group for Buster.

    • Display TopIcons systray on the left of the system menu (Refs:

      14796).

    • Remove apparmor-adjust-freedesktop-abstraction.diff patch,
      merged upstream in apparmor. The
      9d8b6f4dbd8a04470490ae2bfd52044906abd7f6 commit (first appeared
      upstream in apparmor v2.13.1) implements this change in a
      generic way.

    • Adjust hook to the fact the Dovecot AppArmor profiles are not
      shipped in /etc anymore.

    • Import iuk.git's feature/buster branch at commit 919335e
      (Closes: #16286).

    • Enable desktop-icons gnome-shell extension (Closes: #16283).

    • Add autostart script to have gnome-shell trust desktop icons
      (Closes: #16283). Various conditions must be met for gnome-shell
      to make desktop icons launchable, including file
      permissions. But the GIO metadata::trusted setting is also
      needed, and can apparently only be set from an opened session,
      so let's set the right things with an autostart script.

    • Drop code that sets the cursor to "WATCH" (hourglass) after
      logging in (Closes: #16305) This fixes "GDM's GNOME Shell floods
      the Journal with XFIXES/cursor issues on Buster" by importing
      the relevant bits of greeter:feature/buster's commit abad17b6.

    • Remove 8 development packages that are not part of Zero Trace Pen 3.11 so
      we probably don't need to ship them in Zero Trace Pen 4.0 either (Closes:

      16272).

    • Completely get rid of Qt4 (Closes: #15182).

    • SSH client: remove obsolete CompressionLevel setting (Closes:

      16320).

    • Removing /usr/share/live/config/xserver-xorg/intel.ids (Closes:

      14991). Let's hope the graphics hardware issues we fixed via

      that file is fixed no.

    • Adjust Onion Grater and AppArmor configuration for OnionShare
      1.3 (Closes: #16306).

    • Have OnionShare 1.3 connect to the system Tor via Onion Grater
      for the control port (Closes: #16306). By default, OnionShare
      1.3 will start its own tor process, which can't possibly work on
      Zero Trace Pen.

    • Don't install binutils-* (Closes: #16272). It wasn't in Zero Trace Pen 3.x
      and we have no reason to ship it in 4.0.

    • Install mat2 instead of the transitional mat package.

    • Don't suspend automatically (Closes: #16624)

    • zerotracepen-additional-software: Adjust arguments to
      zerotracepen-persistence-setup (Closes: #16622). It seems like the perl
      library which previously nicely handled the tps command-line
      arguments now doesn't support taking dashes instead of
      underscores anymore.

    • Start zerotracepen-unblock-network in a blocking way (Closes: #16620)
      This reverts commit 59e99c51f15ab9e756e287acb03b4d3a91ca1dd2 in
      greeter.git. NetworkManager starting at the same time as GNOME
      Shell makes things racy: the Wi-Fi password prompt is sometimes
      not displayed (unreproduce on Debian Buster Live).

    • Patch ibus to fix an issue that prevented the on-screen keyboard
      from displaying in Zero Trace Pen Greeter (Closes: #16291).

    • oniongrater: give onioncircuits empty STATUS_SERVER events.
      Connection to STATUS_SERVER events is required by stem 1.7
      connect() function, but we actually don't need them, so let's
      suppress them (Closes: #16626).

    • Fix GNOME bookmarks file for Buster (Closes: #16629).

    • Build VeraCrypt packages with our patches applied for Buster
      (Closes: #16634).

    • Avoid new "render" group stealing a GID we have already
      statically allocated to another group (Closes: #16649) With the
      systemd 241-1~bpo9+1 → 241-3~bpo9+1 upgrade, udev.postinst now
      creates a "render" system group, which shifts GIDs and makes our
      devel branch FTBFS.

    • update-acng-config: add support for 4.x and 5.x, drop 2.x. We
      won't build 2.x releases anymore but we'll start building 4.x
      from this branch soon.

    • Restore Plymouth theme to "text" (Closes: #16743). The default
      theme in Buster ("futureprototype") is Debian-branded and thus
      unsuitable for Zero Trace Pen. Let's revert to the one we use in Zero Trace Pen
      3.x.

    • Stop installing caribou and libcaribou*: they're not used by
      GNOME Shell in Buster anymore (Closes: #16628)

    • Allow read access to /etc/machine-id in the AppArmor profile for
      Thunderbird (Closes: #16756). It breaks access to the D-Bus
      service where the GNOME on-screen keyboard listens on Buster.

    • Fix screen locker not working in Buster (Closes: #16763).

    • Hide lstopo in the Applications menu (Closes: #16797). It's
      pulled as a dependency by aircrack-ng but is probably not useful
      to the vast majority of Zero Trace Pen users.

    • Hide nm-connection-editor in the Applications menu (Closes:

      16798). We still need the network-manager-gnome package that

      installs this .desktop file (for dezerotracepen, see
      commit:40290be3651eaa6f08346231aef80eddd8b33c64), but there's no
      reason to expose it directly to users.

    • TorStatus: call our custom destructor to avoid a use-after-free
      crashing GNOME Shell (Closes: #16791). It was ported to an ES6
      class in the process.

    • Copy dmidecode to initramfs (Closes: #16857). On Buster,
      partprobe complains if dmidecode is missing. It's not clear what
      the consequences are, at least it doesn't cause partprobe to
      exit with an error status code - but it's cheap to just copy
      dmidecode to the initramfs.

    • Adjust path for webext-ublock-origin 1.19.0+dfsg-2 (Closes:

      16858).

    • Update Tor Browser AppArmor profile to take into account new
      uBlock installation path (Closes: #16858).

    • Disable the uBlock logger sidebar. This brings back
      the hack we had before we removed it in #16206. Without this,
      the uBlock logger sidebar is displayed.

    • Reintroduce the same APT pinning as we use in 3.x for uBlock.
      Granted, the version from Buster should probably be sufficient
      right now, but it probably won't be once Tor Browser gets
      updated to a future major Firefox ESR. And in the meantime,
      this pinning discrepancy between devel and feature/buster makes
      it harder to maintain our patch against
      /usr/share/webext/ublock-origin/js/background.js.

    • Drop obsolete libdesktop-notify-perl patches: they were merged
      upstream.

    • Use X.Org in amnesia's GNOME session (Closes: #12213). Since a
      few months gdm3 defaults to Wayland in Debian testing/sid, just
      like upstream. But we're not ready yet.

    • Adjust Greeter's gdm-zerotracepen.session for Buster (Closes:

      12551). This should ultimately be applied in greeter.git, but

      let's deal with it as a patch for now to avoid having to
      maintain two parallel branches of the Greeter.

    • Patch udisks2 and libblockdev and fix Zero Trace Pen Installer to repair
      USB boot on Buster (Closes: #14809).

    • Install gnome-user-docs directly instead of the gnome-user-guide
      transitional package.

    • Install the "crypto" libblockdev plugin (Closes: #14816). It's
      needed by recent udisks to do crypto operations.

    • Use ConditionUser=1000 instead of manually testing the output of
      `id -u' in some of our systemd services.

    • Have debootstrap install gnupg when setting up the chroot.
      Otherwise the build fails after debootstrap has done its job and
      live-build tries to use apt-key.

    • Don't try to install the obsolete gnome-search-tool package.
      It's been removed from testing/sid by its maintainers:
      https://bugs.debian.org/885975

    • Don't try to retrieve syslinux.exe from the syslinux source
      package. Since syslinux 3:6.03+dfsg1-1 this file is (rightfully)
      not included anymore in the Debian source package. This commit
      is meant to fix the feature/buster ISO build. We of course need
      to find a proper solution, which is what #15178 is about.

    • Drop our pinned AppArmor feature set (Closes: #15149). On current
      Buster the AppArmor package pins to the Linux 4.14.13-1 feature
      set and I expect it'll keep pinning something that should work
      with the policy shipped in Buster.

    • Drop Stretch-specific workaround. This essentially workarounds
      4f8b50afb10a1ce1faf7645971bc020d2eb5d7dd,
      3e2d8a6a025b86f8191d125783ad507c57171bad and
      d56633a3089e5b177e07c2888442745557772f42.

    • Disable the usr.bin.man AppArmor profile. On Buster it breaks
      apparmor.service due to "profile has merged rule with
      conflicting x modifiers" that's most likely caused by the "/**
      mrixwlk" rule vs. our tweaks for aufs support.

    • Import files (from gksu 2.0.2-9+b1) needed for the Root Terminal
      into Git instead of fetching the package and extracting them at
      build time.

    • Use orca's current package name instead of pre-Buster
      transitional one.

    • Stop explicitly installing gstreamer1.0-pulseaudio. This was
      needed on Jessie due to Debian#852870 which was fixed in
      Stretch.

    • Drop adwaita-qt4: it was removed from Debian sid and won't be in
      Buster.

    • Disable man-db.timer on Buster (Closes: #16631)

    • Fix invalid seq range in update-acng-config so we geberate proper
      rules for Zero Trace Pen 4.x and 5.x.