Package: live-boot
Version: 1:20190614
Severity: important
Tags: patch upstream
Since Stretch, initramfs-tools has provided support for specifying
multiple stages for the parameter break=, which was introduced in
the commit b215c18c of initramfs-tools (#795832). However, the function
`maybe_break` gets overriden in live-boot and multiple stages cannot be
specified. This can be reproduced by creating a live-boot image and use
qemu to boot it:
```
debootstrap --variant=minbase --merged-usr buster rootfs
chroot rootfs/ apt-get install --no-install-recommends linux-image-amd64
live-boot busybox live-tools
chroot rootfs/ bash -c '/usr/sbin/busybox --list-full | while read cmd; do [ !
-e "$cmd" ] && ln -s /sbin/busybox "$cmd"; done'
mksquashfs rootfs/ livetest.squashfs -noI -noD -noF -noX -noappend -e boot
ln -s rootfs/vmlinuz rootfs/initrd.img ./
python3 -m http.server 8000 &
qemu-system-x86_64 -cpu kvm64 -machine pc,accel=kvm -smp
cpus=1,cores=1,sockets=1 -m 2G -chardev stdio,mux=on,id=char0 -netdev
user,id=net0 -device e1000e,netdev=net0,id=net0 -monitor chardev:char0 -serial
chardev:char0 -kernel vmlinuz -initrd initrd.img -append
'fetch=http://xx.xx.xx.xx:8000/livetest.squashfs boot=live toram console=ttyS0
break=mount,mountroot,bottom'
```
In the above senario, the boot process only stops at ``mount" stage, but
not at ``mountroot" and ``bottom".
The following patch can fix this bug by directly calling the original
`maybe_break` function provided by initramfs-tools.
From 1dde5d3680e0f7c475b9d58cb8337fa99515bdaa Mon Sep 17 00:00:00 2001
From: Miao Wang
Date: Sun, 4 Oct 2020 04:57:40 +0800
Subject: [PATCH] Call orignial maybe_break in our overriden verison
Signed-off-by: Miao Wang
---
components/9990-initramfs-tools.sh | 13 ++---
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/components/9990-initramfs-tools.sh
b/components/9990-initramfs-tools.sh
index b251754..0954904 100755
--- a/components/9990-initramfs-tools.sh
+++ b/components/9990-initramfs-tools.sh
@@ -16,13 +16,12 @@ log_wait_msg ()
# Override maybe_break from scripts/functions
maybe_break()
-{
- if [ "${break}" = "$1" ]; then
- # Call original panic
- . /scripts/functions
- panic "Spawning shell within the initramfs"
- fi
-}
+(
+ # Call original maybe_break
+ # which will call panic defined there
+ . /scripts/functions
+ maybe_break "$@"
+)
# Override panic from scripts/functions
panic()
--
2.28.0
-- Package-specific info:
-- System Information:
Debian Release: 10.6
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-10-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: unable to detect
Versions of packages live-boot depends on:
ii live-boot-initramfs-tools [live-boot-backend] 1:20190614
Versions of packages live-boot recommends:
pn live-boot-doc
ii live-tools 1:20171207
pn rsync
pn uuid-runtime
Versions of packages live-boot suggests:
pn cryptsetup
pn curlftpfs
pn httpfs2
pn wget
-- no debconf information