Score:0

compile error during ubuntu kernel 5.4.0-42.46 build

za flag

I downloaded ubuntu source by git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git. and because I wanted to use a specific version, I did git checkout Ubuntu-5.4.0-42.46 (this version is the one used in a ubuntu installation .iso. See related question here : what ubuntu source version should I use to add some debug prints? (for ubuntu boot-up debug) )

After git-checkout, the git log shows this result :

commit 98c4545e2d65ed35c31056f72c4da20f6b5ea0d0 (HEAD, tag: Ubuntu-5.4.0-42.46)
Author: Khalid Elmously <[email protected]>
Date:   Thu Jul 9 19:50:26 2020 -0400

    UBUNTU: Ubuntu-5.4.0-42.46
    
    Signed-off-by: Khalid Elmously <[email protected]>

To build the kernel, I did ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- make defconfig and ARCH=arm64 CROSS_COMPILE=aarch64-none-elf- make -j24 Image. But this gives me a compile error below. What can be wrong?

  . 
  . 
  CC      mm/interval_tree.o
  CC      drivers/base/regmap/regcache.o
  CC      kernel/time/posix-cpu-timers.o
  CC      mm/list_lru.o
  CC      block/blk-mq.o
  AS      arch/arm64/lib/memchr.o
  CC      fs/ext4/migrate.o
security/security.c: In function 'security_add_hooks':
security/security.c:477:25: error: 'struct security_hook_heads' has no member named 'socket_getpeersec_stream'
  477 |     &security_hook_heads.socket_getpeersec_stream)
      |                         ^
  CC      kernel/time/posix-clock.o
  AS      arch/arm64/lib/memcmp.o
security/security.c: In function 'security_setprocattr':
  CC      arch/arm64/kvm/../../../virt/kvm/arm/vgic/vgic-v2.o
security/security.c:2058:27: error: 'union security_list_options' has no member named 'socket_getpeersec_stream'
 2058 |   socket_getpeersec_stream.socket_getpeersec_stream = NULL;
      |                           ^
In file included from ./include/linux/timer.h:5,
                 from ./include/linux/workqueue.h:9,
                 from ./include/linux/bpf.h:9,
                 from security/security.c:13:
security/security.c:2060:25: error: 'struct security_hook_heads' has no member named 'socket_getpeersec_stream'
 2060 |     &security_hook_heads.socket_getpeersec_stream,
      |                         ^
./include/linux/list.h:857:12: note: in definition of macro 'hlist_entry_safe'
  857 |  ({ typeof(ptr) ____ptr = (ptr); \
      |            ^~~
security/security.c:2059:3: note: in expansion of macro 'hlist_for_each_entry'
 2059 |   hlist_for_each_entry(hp,
      |   ^~~~~~~~~~~~~~~~~~~~
security/security.c:2060:25: error: 'struct security_hook_heads' has no member named 'socket_getpeersec_stream'
 2060 |     &security_hook_heads.socket_getpeersec_stream,
      |                         ^
./include/linux/list.h:857:28: note: in definition of macro 'hlist_entry_safe'
  857 |  ({ typeof(ptr) ____ptr = (ptr); \
      |                            ^~~
security/security.c:2059:3: note: in expansion of macro 'hlist_for_each_entry'
 2059 |   hlist_for_each_entry(hp,
      |   ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/list.h:9,
                 from ./include/linux/timer.h:5,
                 from ./include/linux/workqueue.h:9,
                 from ./include/linux/bpf.h:9,
                 from security/security.c:13:
./include/linux/kernel.h:993:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  993 |  void *__mptr = (void *)(ptr);     \
      |                 ^
./include/linux/list.h:847:40: note: in expansion of macro 'container_of'
  847 | #define hlist_entry(ptr, type, member) container_of(ptr,type,member)
      |                                        ^~~~~~~~~~~~
  . 
  . 

When I do the same with linux-5.4.21 source, it compiles ok.

Score:0
za flag

I found ubuntu has its own way of building the whole ubuntu including the kernel. It's shown in here : https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

The correct method for arm64 case was (from the above page)

LANG=C fakeroot debian/rules ARCH=arm64 clean
# quicker build:
LANG=C fakeroot debian/rules ARCH=arm64 binary-headers binary-generic binary-perarch
# if you need linux-tools or lowlatency kernel, run instead:
LANG=C fakeroot debian/rules ARCH=arm64 binary

You can add debug information using this commands (from the above page) :

sudo apt-get install pkg-config-dbgsym
LANG=C fakeroot debian/rules clean
LANG=C fakeroot debian/rules binary-headers binary-generic binary-perarch skipdbg=false
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.