adding a no-greeter startup option for everyday purpose
It should be supported to configure keyboard-layout, locales, default-user-groups and autologin using a custom boot command in grub.cfg so that for everyday use, especially for experts, Tails would become persistently configurable without going through the tails-greeter and without mounting persistent storage. It would help to start Tails up quicker and make Tails more comfortable for everyday use.
###########################################################
Step 1:
Given a user is able to add a custom boot command in grub.cfg:
menuentry 'Tails (no greeter)' --id 'livenogreeter' {
echo "Loading the Linux kernel..."
linux /live/vmlinuz initrd=/live/initrd.img boot=live locales=de_DE.UTF-8 keyboard-layouts=de user-default-groups=sudo,netdev,plugdev,cdrom config nopersistence noprompt timezone=Etc/UTC autologin module=Tails slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 init_on_free=1 mds=full,nosmt FSUUID=${rootuuid}
echo "Loading the initramfs..."
initrd /live/initrd.img
echo "Booting..."
boot
}
###########################################################
Step 2: network setup
after booting using the boot command in Step 1 (an example) the user will be logged in as amnesia automatically with the desired settings. However, the network startup has not taken place, since unfortunately this depends now on tails-greeter. We need to first setup the network by means of a setup_network script.
#!bin/sh
rm /etc/modprobe.d/*
# plug in the required ethernet device driver module
# example: the Realtek 8169 device driver
modprobe -i -v r8169
systemctl enable NetworkManager
systemctl start NetworkManager
systemctl status NetworkManager
###########################################################
Step 3 modifed version of tca
We now need to start a modified version of /usr/local/bin/tca we omitted the greeter and started up the network by a script setup_network.sh in Step 2, so then there are no greeter variables, we can simply start tcacmd in a new file /usr/local/bin/tca-no-greeter copied from /usr/local/bin/tca we would simply replace
if get_greeter_variable_bool("TAILS_NETWORK"):
tcacmd = [python_bin, '-u', program]
else:
tcacmd = get_display_error_cmd()
connect_drop = []
by
tcacmd = [python_bin, '-u', program]