From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail106.syd.optusnet.com.au (mail106.syd.optusnet.com.au [211.29.132.42]) by mx.groups.io with SMTP id smtpd.web08.1537.1628554229304981107 for ; Mon, 09 Aug 2021 17:10:29 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=softfail (domain: linux.com, ip: 211.29.132.42, mailfrom: chris.willing@linux.com) Received: from d8.hgw.net.au (pa49-197-140-170.pa.qld.optusnet.com.au [49.197.140.170]) (Authenticated sender: chris.willing@optusnet.com.au) by mail106.syd.optusnet.com.au (Postfix) with ESMTPSA id 9599A80BCB8; Tue, 10 Aug 2021 10:10:25 +1000 (AEST) Reply-To: chris.willing@linux.com Subject: Re: [edk2-devel] [PATCH 1/1] OvmfPkg PlatformBootManagerLib: Move TryRunningQemuKernel() To: devel@edk2.groups.io, James.Bottomley@HansenPartnership.com Cc: ardb+tianocore@kernel.org, jiewen.yao@intel.com References: <20210728020232.127332-1-chris.willing@linux.com> <1695D2E15A92C8E7.3876@groups.io> <62f9ffa0-786f-09dd-9546-c4c118fa2a17@linux.com> From: "Christoph Willing" Message-ID: <1b544f28-b5b9-c08c-bab7-8c1f41778dce@linux.com> Date: Tue, 10 Aug 2021 10:10:25 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.3 cv=F8MpiZpN c=1 sm=1 tr=0 a=jHkrTDijwrxVdaLaom9wOA==:117 a=jHkrTDijwrxVdaLaom9wOA==:17 a=IkcTkHD0fZMA:10 a=VAi4wqH1lg9mln8ro7sA:9 a=QEXdDO2ut3YA:10 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 10/8/21 12:52 am, James Bottomley wrote: > On Mon, 2021-08-09 at 22:53 +1000, Christoph Willing wrote: >> With soft feature freeze started, I wonder if this patch could be >> reviewed and pushed for edk2-stable202108 tag? I think it has >> languished because I didn't initially Cc appropriately - pls add >> others as necessary. >> >> This patch is a trivial (I think) change which fixes a long standing >> and annoying bug for those booting Qemu with UEFI using external >> kernel & initrd. > > I'm with Ard on this one: -kernel is working just fine for me and the > team at IBM working on Kata containers. It sounds like this might be a > problem local to your environment, so we need to debug it to understand > the issue rather than blindly reverse existing commits. > Thanks for responding James & Ard. Below is the script I'm using to create, then run, the VM. To verify that it works normally with UEFI boot, it initially uses the internal kernel & initrd. The OVMF_CODE & my_VARS lines contain git hash to identify the build from which OVMF_CODE.fd & OVMF_VARS.fd were taken; 97fdcg is from a build of yesterday's git master. After the OS has been installed, I can run the VM multiple times to verify that it boots under UEFI OK (I see the TianoCore splash screen) with internal kernel. #!/bin/bash /usr/bin/qemu-kvm \ -name "UEFI Testing" \ -enable-kvm \ -cpu kvm64 \ -smp cores=4 \ -boot once=c \ -m 8192 \ -device intel-hda \ -device hda-duplex \ -vga virtio \ -drive if=pflash,format=raw,file=OVMF_CODE_97fdcb.fd,readonly=on \ -drive if=pflash,format=raw,file=my_VARS_97fdcb.fd \ -drive file=disk.img,format=raw,cache=none,index=0,media=disk \ -cdrom /storage/iso/slackware/slackware64-15.0/slackware64-15.0-20210807.iso \ -daemonize \ "$@" To now use external kernel, I add the lines: -kernel /var/cache/vmbuilder/boot/15.0/x86_64/vmlinuz \ -initrd /var/cache/vmbuilder/boot/15.0/x86_64/initrd \ -append "root=/dev/sda2 rootfstype=ext4 ro vga=0x386" \ to the script just after "-boot once=c" (but I doubt the exact positioning makes any difference). In this case, I see the kernel running and initrd unpacked and its modules loaded but the root partition is unable to be mounted - the disk is not visible (running 'ls -l /dev/sd*' in recovery shell gives 'ls: /dev/sd*: No such file or directory'). The last lines of the Qemu screen are: /boot/initrd-5.13.8.gz: Loading kernel modules from initrd image: insmod /lib/modules/5.13.8/kernel/fs/jbd2/jbd2.ko insmod /lib/modules/5.13.8/kernel/fs/mbcache.ko insmod /lib/modules/5.13.8/kernel/fs/ext4/ext4.ko mount: mounting /dev/sda2 on /mnt failed: No such file or directory ERROR: No /sbin/init found on rootdev (or not mounted). Trouble ahead. You can try to fix it. Type 'exit' when things are done. At that point I'm dropped into a recovery shell to try fixing something but there's nothing that can be done since the disk containing the OS is not visible. However if I now change the script's OVMF files to those built from a patched git master, the VM boots all the way to login prompt. I'm using qemu-6.0.0 on SLackware64 but I've found exactly the same behaviour using other OS's (Ubuntu 20.04 with 4.2-3ubuntu6.17 and Clear Linux with 5.2.0) I've also tried using OVMF files from Ubuntu hirsute's ovmf package (2020.11-4) with same bad result. Of course, in this case, I was unable to use a patched version. >>From the above, I think I've done everything possible to verify the problem and a possible fix. Is there something fundamentally wrong in the way I'm going about this? chris