A hardware solution: get an HDMI extender or switch with an on-off button, and activate it via GPIO when the Pi is fully booted.
Perhaps it could be possible to simply cut a wire in the HDMI cable which you would then reconnect with a relay. No idea which one though. Cutting the clock will disable the HDMI for sure, but I'm not certain HDMI will work well if ...
Here's the solutions so far*
The goal is to make the system upgrade as atomic as possible.
Before these steps a new full Linux system is unpacked onto a separate partition that will be referenced in cmdline.txt below.
Create a folder for new update: /boot/linux2
Copy the following files from /boot/linux2
My answer is offered in the spirit of KISS, and is this:
Don't try to automate your updates & upgrades - not in rc.local, not in cron, and not even in systemd. Why? As the bumper sticker says, "Shit Happens".
Also - there are times when a reboot is required to load a new kernel - not doing so can cause strange and errant behavior with some apps....
Do NOT put ANYTHING in rc.local - especially anything which is dependent on networking.
Automatic update is a bad idea as it sometimes prompts for user input.
If you REALLY need this for some remote application (I still think it is a bad idea) install unattended-upgrades.
rc.local gives you no guarantees that the network is available, so your command will likely fail without doing what you expect it to do.
There is a proper way to get unattended upgrades working, which is configured in /etc/apt and activated by
sudo dpkg-reconfigure --priority=low unattended-upgrades
Note that automatic updates work best when you also have ...
I would do this with a bunch of Systemd targets. You already have graphical.target for GUI and multi-user.target for the console, so write two more, e.g. emulation.target and mediacenter.target. You could probably find good examples of such target files in OpenELEC / RetroPi projects.
Then make another target, e.g. menu.target, which would be the default one ...