Are you sure? QEMU reports the kvm module not being found.
qemu-system-aarch64: Could not access KVM kernel module: No such file or directory
qemu-system-aarch64: failed to initialize kvm: No such file or directory
cr ) sudo kvm-ok
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm
modprobe: FATAL: Module msr not found in directory /lib/modules/6.17.0-8-qcom-x1e
I have tried loading the kvm driver manually and it does not do anything.
Has anyone managed to install a kernel via efi stub? I’ve installed this Ubuntu on my surface 7 15 laptop (working okay) and am currently trying to install Gentoo on the same machine. I’ve no problems working inside the chroot using the gentoo arm64 stage3 file and have compiled the whole system.
I can boot a kernel (6.17-rc6 from git-sources) which flashes some boot messages for an instant then the screen goes black though the backlight remains on. I’ve been building the firmware, kernel command-line and drivers into the kernel image but no luck properly booting as of now. I’ve a feeling that I’m missing something related to the display driver as I’m pretty sure the device tree is being found.
Just curious on why a window manager would affect anything. I have been running Dwm (and Ubuntu’s Gnome) since I first got Ubuntu installed. No problems whatsoever related to window management.
Good to hear, I’m having a weird issue where my kernel panics because it cannot mount my root partition even though I’m using the right partuuid on the kernel command-line. I’ll just try the kernel you mentioned with grub. Thanks
Thanks @glathe for setting up the plucky-desktop-arm64+x1e-20250827_extended.iso and adding the partition to hold your latest kernel build 6.16-el2-jg-5 files.
The good news for my Asus Vivobook S15 x1p42100 is that the install doesn’t crash and now runs to completion on a second USB-A drive, downloading and installing 6.17.0-8 kernel.
The bad news is that booting it up crashes out quite early, after only about a page of large text displayed on the screen (after the EFI-stub messages). I chrooted into my target USB drive and installed your 6.16-el2-jg-5 kernel but suffered the same boot problem.
It also fails to boot on the iso’s 6.16.0-27 kernel.
I finally known that why my arm64 ubuntu install USB always reboot and can’t do any thing. I think may because there is no dtb file for surface pro11 and the watchdog always reboot the OS.
But I found a way to start the kernel. I modified the grubcfg, seted grub timeout equal to 0, and seted fixed use dtb file of Surface Laptop 7. Then the wachtdog and reboot stopped. But a new problem appeared: There was nothing on the screen, and I tried starting text mode or disabling GPU acceleration, but they didn’t work, still nothing on the screen.
Why is that? Because of the dtb file?
copy over the dtbs from the root of that KERNEL_PKG partition to /boot,
add the line
devicetree /boot/x1p42100-asus-vivobook-s15.dtb
on every Linux menu entry in grub.cfg. I would also recommend to make a copy of that modified grub.cfg for future updates / devastations by standard scripts. All three mentioned kernels can boot and operate the laptop afaik, tested with Ideapad 5.
The reason for that pitfall is the new-ish stubble boot loader (which I don’t have). With that, flash-kernel is removed and automatic install of a new kernel (regardless) goes south if the Laptop isn’t supported by stubble.
I’m a bit (or so) behind in documenting things. Still WIP.
Why the dtbs from the KERNEL_PKG partition: They are a bit modified and have lenovo,thinkpad-t14s in the compatible string. This enables scm and efivars access, essential for installing grub or doing stuff in efibootmgr. My kernel packages have a modified qcom_scm driver that doesn’t need it, but Ubuntu Concept kernels don’t.
Thanks for the tip @glathe - I should have let this problem simmer overnight before bothering you as I woke up at 2am and suddenly thought “I bet it is the .dtb file and the devicetree statement like your extended iso uses to boot up”. I did as you suggested and it is booting up just fine. That’s a great achievement being able to do a regular install to an X1P42100 from your iso. Thanks again.
I’ve found the firmware for the X1P42100 Adreno X1-45 GPU via poking around the linux-firmware mailing list as suggested. See https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/qcom
which has two files gen71500_sqe.fw and gen71500_gmu.bin at this level and gen71500_zap.mbn in its x1p42100 subdirectory. I’ve also added the ernstp/mesaaco PPA to my apt sources.
However, I’m not sure how to progress. I copied that pair of firmware files and the x1p42100 subdirectory to /lib/firmware/qcom. Note there is only the gen71500_zap.mbn in that x1p42100 subdirectory whereas its sibling x1e80100 has ten or so firmware files.
That mesa PPA could update various existing packages I have. But there is also the snap mesa-2404 package that I have installed. Do I just upgrade the packages the PPA updates and leave the snap as is?
If I install mesa-utils and run glxinfo | grep “OpenGL renderer”
it just sayas “llvmpipe” rather than “Adreno …” so I’m assume this confirms I’m still using software rendering and not using the GPU at this stage.
That’s a lot of questions Well, getting the gen71500* firmware was right, and it should be in /lib/firmware/qcom/ or /lib/firmware/updates/qcom/. The first has theadvantage of being overwritten when the files are in the linux-firmware package. Assuming its “more valid” this should be the place.
For the other firmware files, well. As I said its still WIP, the qcom-firmware-extract package naturally doesn’t know this device (and says so). The solution to this would be to use the fetch script I used on the dedicated images. I have uploaded it to the repo. This should be enough when on the nvme, it needs to be executed when booted from the nvme once:
On next reboot it should load the required firmwares.
gen71500_zap.mbn shouldn’t be required, the Vivobook has its own indivdually signed zap firmware. Only that one works.
Regarding ernstp/mesaaco and the mesa snap: This works but is a bit unclean. On a new install it might be worth it to try the 25.10 sudo do-release-upgrade -d, it contains a mesa that directly supports x1p. The renderer in glxinfo should be Adreno, yes.
I’ve been going at setting up my T14s gen 6 32GB on Ubuntu 25.04 and I’ve had some trouble getting slbounce to work. I compiled a 6.17 rc7 kernel, the sltest worked and now I’m trying to boot into slbounce. When I try to use the DT overlay Linux doesn’t boot complaining about not loading the cdsp and adsp. I created the DTB overlay using the command in the repository based on the DT that I have created using the extract script.
What am I missing? To boot into slbounce I added a grub entry, I run the load slbounce.efi command, I run exit and then load the appropriate GRUB entry using the DTBO file. When doing the above mentioned procedure with the regular DTB file the OS boots up but kvm-ok, which I’m trying to get out of this, is still not working.
Also a side quest, is cpufreq working for you? My cpu is pegged at 2977MHz based on the dmidecode command and I expect this is what’s hitting the battery runtime hard.
Hi, welcome to the forum. I’m afraid the slbounce documentation may not be up to date… I use slbounce regularly on the T14s (among others) and I just use the -el2 dtb generated by building the kernel. Just this way:
boot an efi shell
in startup.nsh change to the right partition and load slbounce.efi, then exit
exit will relinquish control back to the next boot entry (which is grub here).
Select the entry to boot and fire
Current slbounce.efi built with make and no additional options will check if the dtb loaded before calling EBS is el2-compatible, and switch to EL2 in this case. So, you can boot EL1 and EL2 menu entries (and Windows and whatnot) without further change.
So from what I’m getting I don’t need to create a special grub entry with the -el2 DTB file that I have generated using the fdtoverlay as in the tutorial on the repo? How can I check that I have booted correctly into EL2?