Problems when building kernel 6.0 for Qubes

The main point here is that the linux kernel release candidate doesn’t have a signature file nor a checksum file at git.kernel.org, and the builder reports that there’s no available verification method. I didn’t find out how to instruct builder v2 to neglect the verification process. Any help is appreciated.

Now that 6.0 official was released, and I found out how to compile an -rc version of kernel using the old qubes-builder, this specific problem no longer blocks me from testing the new kernel for resume improvements.

However, the initial build attempt failed, asserting something like “macro not defined” and “sizeof() was used against incomplete structure”. I’ll try a second time to see if things go well.

1 Like

After long long CC and LD lines, in the log I found these:

+ '[' -d /home/user/rpmbuild/BUILD/dummy-psu ']'
+ make -C /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj M=/home/user/rpmbuild/BUILD/dummy-psu modules
make: Entering directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
  CC [M]  /home/user/rpmbuild/BUILD/dummy-psu/module/dummy_psu.o
  MODPOST /home/user/rpmbuild/BUILD/dummy-psu/Module.symvers
  CC [M]  /home/user/rpmbuild/BUILD/dummy-psu/module/dummy_psu.mod.o
  LD [M]  /home/user/rpmbuild/BUILD/dummy-psu/module/dummy_psu.ko
make: Leaving directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
+ '[' -d /home/user/rpmbuild/BUILD/dummy-backlight ']'
+ make -C /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj M=/home/user/rpmbuild/BUILD/dummy-backlight modules
make: Entering directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
  CC [M]  /home/user/rpmbuild/BUILD/dummy-backlight/module/dummy_backlight.o
  MODPOST /home/user/rpmbuild/BUILD/dummy-backlight/Module.symvers
  CC [M]  /home/user/rpmbuild/BUILD/dummy-backlight/module/dummy_backlight.mod.o
  LD [M]  /home/user/rpmbuild/BUILD/dummy-backlight/module/dummy_backlight.ko
make: Leaving directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
+ '[' -d /home/user/rpmbuild/BUILD/u2mfn ']'
+ make -C /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj M=/home/user/rpmbuild/BUILD/u2mfn modules
make: Entering directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
  CC [M]  /home/user/rpmbuild/BUILD/u2mfn/u2mfn.o
  MODPOST /home/user/rpmbuild/BUILD/u2mfn/Module.symvers
  CC [M]  /home/user/rpmbuild/BUILD/u2mfn/u2mfn.mod.o
  LD [M]  /home/user/rpmbuild/BUILD/u2mfn/u2mfn.ko
make: Leaving directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
+ '[' -d /home/user/rpmbuild/BUILD/macbook12-spi-driver ']'
+ make -C /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj M=/home/user/rpmbuild/BUILD/macbook12-spi-driver modules
make: Entering directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
  CC [M]  /home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.o
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c: In function 'applespi_get_saved_bl_level':
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1810:31: error: invalid application of 'sizeof' to incomplete type 'struct efivar_entry'
 1810 |  efivar_entry = kmalloc(sizeof(*efivar_entry), GFP_KERNEL);
      |                               ^
In file included from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/string.h:253,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/bitmap.h:11,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/cpumask.h:12,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/smp.h:13,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/lockdep.h:14,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/mutex.h:17,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/kernfs.h:11,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/sysfs.h:16,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/kobject.h:20,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/of.h:17,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/irqdomain.h:35,
                 from /home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/acpi.h:13,
                 from /home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:44:
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:21: error: invalid use of undefined type 'struct efivar_entry'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |                     ^~
/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/fortify-string.h:376:37: note: in definition of macro '__fortify_memcpy_chk'
  376 |  fortify_memcpy_chk(__fortify_size, p_size, q_size,  \
      |                                     ^~~~~~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:2: note: in expansion of macro 'memcpy'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |  ^~~~~~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:21: error: invalid use of undefined type 'struct efivar_entry'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |                     ^~
/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/fortify-string.h:377:7: note: in definition of macro '__fortify_memcpy_chk'
  377 |       p_size_field, q_size_field, #op);  \
      |       ^~~~~~~~~~~~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:2: note: in expansion of macro 'memcpy'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |  ^~~~~~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:21: error: invalid use of undefined type 'struct efivar_entry'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |                     ^~
/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/include/linux/fortify-string.h:378:20: note: in definition of macro '__fortify_memcpy_chk'
  378 |  __underlying_##op(p, q, __fortify_size);   \
      |                    ^
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1814:2: note: in expansion of macro 'memcpy'
 1814 |  memcpy(efivar_entry->var.VariableName, EFI_BL_LEVEL_NAME,
      |  ^~~~~~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1816:14: error: invalid use of undefined type 'struct efivar_entry'
 1816 |  efivar_entry->var.VendorGuid = EFI_BL_LEVEL_GUID;
      |              ^~
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1819:8: error: implicit declaration of function 'efivar_entry_get'; did you mean 'efi_mokvar_entry_next'? [-Werror=implicit-function-declaration]
 1819 |  sts = efivar_entry_get(efivar_entry, NULL, &efi_data_len, &efi_data);
      |        ^~~~~~~~~~~~~~~~
      |        efi_mokvar_entry_next
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c: In function 'applespi_save_bl_level':
/home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.c:1846:8: error: implicit declaration of function 'efivar_entry_set_safe' [-Werror=implicit-function-declaration]
 1846 |  sts = efivar_entry_set_safe((efi_char16_t *)EFI_BL_LEVEL_NAME, efi_guid,
      |        ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[1]: *** [/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/scripts/Makefile.build:249: /home/user/rpmbuild/BUILD/macbook12-spi-driver/applespi.o] Error 1
make: *** [/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-6.0/Makefile:1852: /home/user/rpmbuild/BUILD/macbook12-spi-driver] Error 2
make: Leaving directory '/home/user/rpmbuild/BUILD/kernel-latest-6.0/linux-obj'
error: Bad exit status from /var/tmp/rpm-tmp.R75To0 (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.R75To0 (%build)
make[2]: *** [/home/user/qubes-builder/qubes-src/builder-rpm/Makefile-legacy.rpmbuilder:66: dist-package-build] Error 1
make[2]: Leaving directory '/home/user/qubes-builder'

Can I simply disable macbook12-spi-driver, as long as I don’t use a Macbook? I’ll test.

Edit: Reverting cd32e018f8718b1d746f394010437ad6ce120ee7 solved the above error.

An new error occurred:

+ flags=,no_copy_xattrs,hash_seed=dcee2318-92bd-47a5-a15d-e79d1412cdce
+ PATH=/usr/sbin:/sbin:/home/user/.local/bin:/home/user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
+ mkfs.ext3 -F -Enum_backup_sb=0,root_owner=0:0,no_copy_xattrs,hash_seed=dcee2318-92bd-47a5-a15d-e79d1412cdce -d /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules.img 512M
mke2fs 1.45.5 (07-Jan-2020)
Creating regular file /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules.img
Creating filesystem with 131072 4k blocks and 32768 inodes
Filesystem UUID: 30b7e654-c068-4133-9d0f-43a36cb3ea0c
Superblock backups stored on blocks: 
	32768, 98304

Allocating group tables: 0/4   done                            
Writing inode tables: 0/4   done                            
Creating journal (4096 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: 0/4   done

+ SOURCE_DATE_EPOCH=1664841600
+ /home/user/rpmbuild/BUILD/genfs /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules.img 6.0-1.fc32.qubes.x86_64 immutable=yes
genfs: Unexpected inode 6.0.0-1.fc32.qubes.x86_64 found in root of file system
error: Bad exit status from /var/tmp/rpm-tmp.8HNkLH (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.8HNkLH (%install)
make[2]: *** [/home/user/qubes-builder/qubes-src/builder-rpm/Makefile-legacy.rpmbuilder:66: dist-package-build] Error 1
make[2]: Leaving directory '/home/user/qubes-builder'

But I found packed vmlinuz and initramfs files in BUILDROOT. I’ll try transfer them directly to dom0.

It’s a great amount of work to maunally install all those drivers, modules and firmwares. I need to write a script for uninstalling purpose.

Edit: The kernel refused to start as expected. It claimed that VFS: Unable to mount root fs on unknown-block. I’ll continue investigating.

According to genfs.c

else if (strncmp(dirent->name, "vmlinuz", (size_t)name_len) &&
               strncmp(dirent->name, "lost+found", (size_t)name_len) &&
               strncmp(dirent->name, "initramfs", (size_t)name_len)) {
        errx(1, "Unexpected inode %.*s found in root of file system", name_len, dirent->name);
    }

I guess dirent->name got an input 6.0.0-1.fc32.qubes.x86_64, where it should be any of the three strings in genfs.c. I’m looking for reasons.

I found out that

+ /home/user/rpmbuild/BUILD/genfs /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules.img 6.0-1.fc32.qubes.x86_64 immutable=yes

should be

+ /home/user/rpmbuild/BUILD/genfs /home/user/rpmbuild/BUILDROOT/kernel-latest-6.0-1.fc32.qubes.x86_64/var/lib/qubes/vm-kernels/6.0-1.fc32/modules.img 6.0.0-1.fc32.qubes.x86_64 immutable=yes

Don’t know how to proceed maunally nor how to correct that command in building auto scripts.