I tested the initramfs-tools in xenial-proposed, bionic-proposed, and disco-proposed with all 3 testcases (panic=-1, panic=10, and no panic), everything worked as expected: - panic=-1 rebooted instantly after the root partition is not found - panic=10 rebooted after 10 seconds - no "panic" entry caused to drop into a basic shell
ii initramfs-tools 0.122ubuntu8.16 all generic modular initramfs generator (automation) ii initramfs-tools 0.130ubuntu3.9 all generic modular initramfs generator (automation) ii initramfs-tools 0.131ubuntu19.2 all generic modular initramfs generator (automation) multipass@xenial:~$ apt-cache policy initramfs-tools initramfs-tools: Installed: 0.122ubuntu8.16 Candidate: 0.122ubuntu8.16 Version table: *** 0.122ubuntu8.16 400 400 http://archive.ubuntu.com/ubuntu xenial-proposed/main amd64 Packages 100 /var/lib/dpkg/status 0.122ubuntu8.15 500 500 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages 0.122ubuntu8.14 500 500 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages 0.122ubuntu8 500 500 http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages multipass@bionic:~$ apt-cache policy initramfs-tools initramfs-tools: Installed: 0.130ubuntu3.9 Candidate: 0.130ubuntu3.9 Version table: *** 0.130ubuntu3.9 400 400 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 Packages 100 /var/lib/dpkg/status 0.130ubuntu3.8 500 500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages 0.130ubuntu3.6 500 500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages 0.130ubuntu3 500 500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages multipass@disco:~$ apt-cache policy initramfs-tools initramfs-tools: Installed: 0.131ubuntu19.2 Candidate: 0.131ubuntu19.2 Version table: *** 0.131ubuntu19.2 400 400 http://archive.ubuntu.com/ubuntu disco-proposed/main amd64 Packages 100 /var/lib/dpkg/status 0.131ubuntu19.1 500 500 http://archive.ubuntu.com/ubuntu disco-updates/main amd64 Packages 0.131ubuntu19 500 500 http://archive.ubuntu.com/ubuntu disco/main amd64 Packages ** Tags removed: verification-needed verification-needed-bionic verification-needed-disco verification-needed-xenial ** Tags added: verification-done-bionic verification-done-disco verification-done-xenial -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to initramfs-tools in Ubuntu. https://bugs.launchpad.net/bugs/1831252 Title: panic=-1 is completely ignored by the initrd causing unexpected behaviour Status in initramfs-tools package in Ubuntu: Fix Released Status in initramfs-tools source package in Xenial: Fix Committed Status in initramfs-tools source package in Bionic: Fix Committed Status in initramfs-tools source package in Disco: Fix Committed Status in initramfs-tools source package in Eoan: Fix Released Bug description: [Impact] in Ubuntu Core we default to using panic=-1 on the kernel command line (documented at [1]) to speed up the auto-rollback mechanism of the kernel. on a kernel level this works just fine and the system reboots immediately ... when in the initramfs during boot and a panic occurs, no reboot happens at all, the initrd spawns a shell regardless of the panic= value ... [Test case] Before booting change root=$foo to root=x$foo - this will make it panic. Then test that 1) "panic=-1" causes an immediate reboot 2) "panic=5" waits 5 seconds 3) no "panic" drops you to a shell [Regression potential] This adds some very specific checks for -1 in places that use ${panic}, as such the regression potential is somewhat limited. If there were a regression, it could be a syntax error (causing boot to fail) or a sleep not working correctly (causing sleep to, well, not sleep) - but that's unrealistic. [Other info] this is caused by a filter in /usr/share/initramfs-tools/init panic=*) panic="${x#panic=}" case ${panic} in *[![:digit:].]*) panic= ;; esac ;; this function only lets positive values through, else panic= simply gets unset the panic() function itself is also not capable of handling negative values, it has a sleep call that interprets negative values as commandline options instead of simply ignoring a negative sleep time [2] (line 11). the filter in the init script should allow the -1 value (to comply with the kernel documentation and behaviour) and the panic() function should properly skip the sleep call when a negative value for panic= is set. [1] https://github.com/torvalds/linux/blob/v4.17/Documentation/admin-guide/kernel-parameters.txt#L2931 [2] https://paste.ubuntu.com/p/mswD8Cd869/ To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1831252/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp