PiShrink
PiShrink copied to clipboard
Fix autoresize if no console
If a raspi image is configured to boot really silent, the console may be disabled in /boot/cmdline.txt
In this case the auto-expander may not be called in some cirmunstances. Usually /etc/rc.local which
does expanding, is called by systemd. But systemd may fail to start /etc/rc.local if no console is there.
In the log there is first a
Aug 13 11:17:01 HOSTNAME kernel: Warning: unable to open an initial console.
and later:
Aug 13 11:17:16 HOSTNAME systemd[1]: Starting /etc/rc.local Compatibility...
Aug 13 11:17:16 HOSTNAME systemd[740]: Failed at step STDOUT spawning /etc/rc.local: No such device
Aug 13 11:17:16 HOSTNAME systemd[1]: Failed to start /etc/rc.local Compatibility.
As a result the image runs un-expanded.
This pull request fixes this: If a disabled console is detected it will be enabled temporarily until the auto-expander is called.
Since the expander-code in /etc/rc.local must be changed to implement this fix, the implementation changed how an already auto-expanding image is detected: It does no longer check md5 sum but compares the code directly. This makes it even easier to add further features to the auto-expander code.
I did not face problems with autoresize on my headless CM4 raspberry having the console disabled, even without including this pull request.