* Kernel module build error with system image cross-build @ 2022-07-28 0:59 Frank Terbeck 2022-08-23 16:57 ` Frank Terbeck 0 siblings, 1 reply; 5+ messages in thread From: Frank Terbeck @ 2022-07-28 0:59 UTC (permalink / raw) To: help-guix Good day, good people! I've been playing around with building guix images for a beaglebone black board that's been catching dust in my flat. I've been giving it a go with the template from guix's git repository, like this: guix system image --target=arm-linux-gnueabihf ~/src/guix/gnu/system/examples/beaglebone-black.tmpl After a while, this breaks like this: […] building /gnu/store/nv461zd7rs6mhns9s3jx4v65ln3jsrv7-linux-modules.drv... builder for `/gnu/store/nv461zd7rs6mhns9s3jx4v65ln3jsrv7-linux-modules.drv' failed with exit code 1 build of /gnu/store/nv461zd7rs6mhns9s3jx4v65ln3jsrv7-linux-modules.drv failed View build log at '/var/log/guix/drvs/nv/461zd7rs6mhns9s3jx4v65ln3jsrv7-linux-modules.drv.gz'. […] guix system: error: build of `/gnu/store/lqwjj7fjf235psw2br5i8y10cm22pq4l-disk-image.drv' failed The build log looks like this: Backtrace: 5 (primitive-load "/gnu/store/axmhy07daha215gwbqghh39k7ja?") In ice-9/eval.scm: 619:8 4 (_ #f) 626:19 3 (_ #<directory (guile-user) 7ffff3fd7c80>) 293:34 2 (_ #(#<directory (guile-user) 7ffff3fd7c80> #<procedu?>)) In srfi/srfi-1.scm: 586:17 1 (map1 ("omap_hsmmc" "ahci" "usb-storage" "uas" "usbh?" ?)) In gnu/build/linux-modules.scm: 257:5 0 (_) gnu/build/linux-modules.scm:257:5: kernel module not found "omap_hsmmc" "/gnu/store/rslz7zlq11wjnvixzfasyvr4b6rv2m7j-linux-libre-5.18.14/lib/modules" I am not at all familiar with how the kernel (and its modules) build au- tomation in guix works, so I am not sure how to approach this. FWIW, the host system in this case is x86_64, so this is a cross-build. Any ideas would be appreciated. Regards, Frank ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel module build error with system image cross-build 2022-07-28 0:59 Kernel module build error with system image cross-build Frank Terbeck @ 2022-08-23 16:57 ` Frank Terbeck 2022-08-25 8:42 ` pelzflorian (Florian Pelz) 0 siblings, 1 reply; 5+ messages in thread From: Frank Terbeck @ 2022-08-23 16:57 UTC (permalink / raw) To: help-guix I looked into this over the weekend. Frank Terbeck wrote: > […] like this: > > guix system image --target=arm-linux-gnueabihf ~/src/guix/gnu/system/examples/beaglebone-black.tmpl > > After a while, this breaks like this: > […] > guix system: error: build of `/gnu/store/lqwjj7fjf235psw2br5i8y10cm22pq4l-disk-image.drv' failed […] > Backtrace: > 5 (primitive-load "/gnu/store/axmhy07daha215gwbqghh39k7ja?") > In ice-9/eval.scm: > 619:8 4 (_ #f) > 626:19 3 (_ #<directory (guile-user) 7ffff3fd7c80>) > 293:34 2 (_ #(#<directory (guile-user) 7ffff3fd7c80> #<procedu?>)) > In srfi/srfi-1.scm: > 586:17 1 (map1 ("omap_hsmmc" "ahci" "usb-storage" "uas" "usbh?" ?)) > In gnu/build/linux-modules.scm: > 257:5 0 (_) > > gnu/build/linux-modules.scm:257:5: kernel module not found "omap_hsmmc" "/gnu/store/rslz7zlq11wjnvixzfasyvr4b6rv2m7j-linux-libre-5.18.14/lib/modules" Yeah, so the build-process here, as far as I can see, works like this: Build the kernel, then to build the initrd, use the kernel installation directory. The list of modules is just a list of strings, for which the system tries to find corresponding ‘.ko’ files in the kernel's module tree for. If the module can't be found, this is what you end up with. The ‘beaglebone-black.tmpl’ file is basically just an ‘operating-system’ specification: (operating-system ;; … ;; This module is required to mount the SD card. (initrd-modules (cons "omap_hsmmc" %base-initrd-modules)) ;; … ) There's also a ‘beaglebone-black-installation-os’ specification in ‘gnu/system/install.scm’. It uses the deprecated ‘#:extra-modules’ to add ‘omap_hsmmc’ to its list of initrd-modules. So it'll fail similarly. Odd. So I took a look at the actual kernel build result. When you check for ‘omap_hsmmc’ you'll notice that it comes up in ‘modules.builtin’, an output from ‘kbuild’: This file lists all modules that are built into the kernel. This is used by modprobe to not fail when trying to load something builtin. This would suggest that this feature is not built as a module, but in- stead is a fixed part of the kernel build. And indeed, looking at the corresponding ‘.config’ file for the kernel build, you'll find this: CONFIG_MMC_OMAP_HS=y …which is the Kconfig option, that controls the inclusion of this fea- ture. Clearly something changed with time and this setting is no longer valid. Fair enough. Take it out and you should be golden, right? Not quite — it'll break again, complaining about another module. The rest of the modules is take from ‘default-initrd-modules’, which is identifier-syntax'd to ‘%base-initrd-modules’. It's value for the ‘arm-linux-gnueabihf’ target is: ahci, usb-storage, uas, usbhid, hid-generic, hid-apple, dm-crypt, xts, serpent_generic, wp512, nls_iso8859-1, pata_acpi, pata_atiixp, isci, virtio_pci, virtio_balloon, virtio_blk, virtio_net, virtio_console, virtio-rng Of these, the modules that are available as actual modules: uas, xts, virtio_pci, virtio_balloon, virtio_blk, virtio_net Features that are builtin, and thus not available as a ‘.ko’ file: ahci, usb-storage, usbhid, hid-generic, nls_iso8859-1, virtio_console Unavailable features: hid-apple, dm-crypt, serpent_generic, wp512, pata_acpi, pata_atiixp, isci, virtio-rng With all that in mind, I used this specification; mostly based on what's in ‘beaglebone-black.tmpl’: #+begin_src scheme (use-modules (srfi srfi-1) (gnu) (gnu bootloader u-boot)) (use-service-modules networking) (use-package-modules bootloaders screen ssh) (operating-system (host-name "bbb-test") (timezone "Europe/Berlin") (locale "en_GB.utf8") (bootloader (bootloader-configuration (bootloader u-boot-beaglebone-black-bootloader) (targets '("/dev/mmcblk1")))) (initrd-modules (map symbol->string '(uas xts virtio_pci virtio_balloon virtio_blk virtio_net))) (file-systems (cons (file-system (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) (users (cons (user-account (name "ft") (home-directory "/home/ft") (group "users") (supplementary-groups '("wheel" "audio" "video"))) %base-user-accounts)) (packages (cons* screen openssh %base-packages)) (services (cons* (service dhcp-client-service-type) (agetty-service (agetty-configuration (extra-options '("-L")) (baud-rate "115200") (term "vt100") (tty "ttyO0"))) %base-services))) #+end_src This builds. Not sure of it boots, because of course none of my micro-sd cards work. I'm building a VM image now and will try to see if QEMU can boot the thing. Regards, Frank -- In protocol design, perfection has been reached not when there is nothing left to add, but when there is nothing left to take away. -- RFC 1925 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel module build error with system image cross-build 2022-08-23 16:57 ` Frank Terbeck @ 2022-08-25 8:42 ` pelzflorian (Florian Pelz) 2022-08-25 23:08 ` Frank Terbeck 0 siblings, 1 reply; 5+ messages in thread From: pelzflorian (Florian Pelz) @ 2022-08-25 8:42 UTC (permalink / raw) To: Frank Terbeck; +Cc: help-guix Hello Frank, sorry for the late reply. HDMI stays black, but I can’t find the cables for my UART adapter, so I cannot properly test. I think you are doing it right, but if what used to work does not, perhaps an easier way would be to copy the rock64.scm image, and adapt that to use the Beaglebone Black’s u-boot and the kernel linux-libre-arm-generic instead of linux-libre-arm64-generic, then pass this file to guix system image. But perhaps this still is the wrong kernel and you need an older kernel, either as an old linux-libre-arm-generic-4.19 kernel or an old kernel via a Guix inferior. Regards, Florian ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel module build error with system image cross-build 2022-08-25 8:42 ` pelzflorian (Florian Pelz) @ 2022-08-25 23:08 ` Frank Terbeck 2022-08-26 14:50 ` pelzflorian (Florian Pelz) 0 siblings, 1 reply; 5+ messages in thread From: Frank Terbeck @ 2022-08-25 23:08 UTC (permalink / raw) To: pelzflorian (Florian Pelz); +Cc: help-guix pelzflorian@pelzflorian.de wrote: > Hello Frank, sorry for the late reply. Hey Florian, no worries! I'm only working on this when time permits anyway. It is cool when things aren't complete monologues, though. So thanks for chiming in. :) It's interesting to see how Guix does these things. > HDMI stays black, but I can’t > find the cables for my UART adapter, so I cannot properly test. I think Ah, so you tried, nice! I couldn't yet… Maybe this weekend. > you are doing it right, but if what used to work does not, perhaps an > easier way would be to copy the rock64.scm image, and adapt that to use > the Beaglebone Black’s u-boot and the kernel linux-libre-arm-generic > instead of linux-libre-arm64-generic, then pass this file to guix system > image. Certainly. I didn't even know gnu/system/images was a place to look. :) I'm still finding out about Guix's structure and API. Apart from a couple of package definitions, I didn't do a lot yet. Things in this field do feel a little all over to place, though. There's these tem- plates, then there's gnu/system/install.scm (which also has a rock64- installation-os definition) and also this images place. Maybe there's a point to it, that I'm not seeing. Or maybe it's just a lack of manpower to keep stuff up to date when the rest of the project moves along at a swift pace. > But perhaps this still is the wrong kernel and you need an older > kernel, either as an old linux-libre-arm-generic-4.19 kernel or an old > kernel via a Guix inferior. I think the interface into the kernel data is lacking. It might be use- ful to have an interface to the kernel's ‘.config’, as well as meta data files such at the mentioned ‘modules.builtin’. The fact that the beaglebone specs reference "omap_hsmmc" is correct on its face, because that driver is indeed required. If it's builtin, then not finding the file is to be expected and not an issue. With better introspection to the kernel's build configuration, an OS specification could easier react to upstream changes, I think. Not sure if that sort of discussion isn't more appropriate for -devel. Regards, Frank -- In protocol design, perfection has been reached not when there is nothing left to add, but when there is nothing left to take away. -- RFC 1925 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kernel module build error with system image cross-build 2022-08-25 23:08 ` Frank Terbeck @ 2022-08-26 14:50 ` pelzflorian (Florian Pelz) 0 siblings, 0 replies; 5+ messages in thread From: pelzflorian (Florian Pelz) @ 2022-08-26 14:50 UTC (permalink / raw) To: Frank Terbeck; +Cc: help-guix Frank Terbeck <ft@bewatermyfriend.org> writes: > pelzflorian@pelzflorian.de wrote: >> HDMI stays black, but I can’t >> find the cables for my UART adapter, so I cannot properly test. I think > > Ah, so you tried, nice! I couldn't yet… Maybe this weekend. Yes, although by now I noticed HDMI stays black for my Beaglebone Black on the official Debian 8, 9, 10 images too. But unlike your image, on the official images the keyboard is powered so that I can reboot with Ctrl+Alt+Del and that works because the BBB LEDs turn off and on again. Also I can ping it. (I am on the lookout for what to run my server on; I guess the dusty BBB is out. Back in the day Debian 8 worked and Debian 10 worked after changing the .dtb file <https://elinux.org/BeagleBoneBlack_Stock_Debian_from_External_HD>.) > do feel a little all over to place, though. There's these tem- > plates, then there's gnu/system/install.scm (which also has a rock64- > installation-os definition) and also this images place. Images are more constrained in that they cannot be used for guix system init. >> But perhaps this still is the wrong kernel and you need an older >> kernel, either as an old linux-libre-arm-generic-4.19 kernel or an old >> kernel via a Guix inferior. Using a custom u-boot-beaglebone-black-bootloader changed to use an inferior of Guix commit 6b99afeef89233b71d113a63cf04a6b4b49a4679 for u-boot did not boot either and only gets hot and cannot be pinged. I have not yet tried older u-boots or kernels. > I think the interface into the kernel data is lacking. It might be use- > ful to have an interface to the kernel's ‘.config’, as well as meta data > files such at the mentioned ‘modules.builtin’. > […] > Not sure if that sort of discussion isn't more appropriate for -devel. If one of us finds a working beaglebone-black.tmpl or makes progress, or has a proposal for kernel code/docs, then it certainly belongs in guix-devel or guix-patches. Note that `info guix-cookbook` has more info on building a custom kernel; maybe it is reasonably recent. Regards, Florian ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-08-26 15:15 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-07-28 0:59 Kernel module build error with system image cross-build Frank Terbeck 2022-08-23 16:57 ` Frank Terbeck 2022-08-25 8:42 ` pelzflorian (Florian Pelz) 2022-08-25 23:08 ` Frank Terbeck 2022-08-26 14:50 ` pelzflorian (Florian Pelz)
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.