qemu I'm trying to virtualize FreeBSD 13.2 for armv7 on my ARM Chromebook (armhf) with qemu-kvm

if its a stdandard freebsd usb-stick image than mdconfig -t vnode FreeBSD.img
the mount the freebsd partition
mount /dev/md0s2a /mnt
cp the_kernel_file_above /mnt/boot/kernel
umount /mnt
mdconfig -d -u 0

that will be if you don't have other mds connected otherwise it might be md1 md2 etc
and you need change the mount and mdconfig -d accordingly

I did what you have suggested. I would like to have the confirmation that I did everything correct :

Code:
mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mdconfig -t vnode FreeBSD-qemu.img
md0

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mount /dev/md0p2 ./mount

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS/mount # find . -name kernel.bin
./usr/obj/usr/src/arm.armv7/sys/GENERIC/kernel.bin

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS/mount # cp ./usr/obj/usr/src/arm.armv7/sys/GENERIC/kernel.bin ..

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mdconfig -d -u 0

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mdconfig -t vnode FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img
md0

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mount /dev/md0s2a ./mount

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS/mount # find . -name kernel.bin
./boot/kernel/kernel.bin

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS/mount/boot/kernel # mv kernel.bin kernel_.bin

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS/mount/boot/kernel # cd /mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # cp kernel.bin /mnt/zroot2/zroot2/OS
/Chromebook/FreeBSD-guestOS/mount/boot/kernel

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mdconfig -d -u 0

mdconfig: ioctl(/dev/mdctl): Device busy

mario@marietto:/mnt/zroot2/zroot2/OS/Chromebook/FreeBSD-guestOS # mdconfig -d -o force -u 0
 
To apply my patch I used:

Code:
cd /build/arm6
fetch -o if_vtnet.c.patch https://bugs.freebsd.org/bugzilla/attachment.cgi?id=242127&action=diff
patch -u < if_vtnet.c.patch
cd usr/src
export BASEDIR=/build/arm6
export MAKEOBJDIRPREFIX=/build/arm6/obj
make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv6 KERNCONF=RPI-B
Tested this on current 13.2 release src and it worked just fine.
 
I've followed the covacat instructions :

if you have a 13.2 box amd64 with the source tree installed
cd /usr/src
make -DNO_MODULES KERNCONF=GENERIC TARGET=arm TARGET_ARCH=armv7 buildkernel
after the build finishes the kernel binary will be at /usr/obj/usr/src/arm.armv7/sys/GENERIC/kernel
you need to copy that to the virtual machine

because I have an easier access to a 13.2 box amd64 than to a 13.2 box armv7. Can this :

Code:
make  -DNO_MODULES   KERNCONF=GENERIC TARGET=arm TARGET_ARCH=armv7 buildkernel

be compared to a "cross compiling" ? because I'm on amd64 but I can compile for a different architecture,armv7. I see that this can be done easier in FreeBSD than in Linux,where I should get a specific package for the cross-compiling.
 
The example I showed above is how you can crosscompile kernel on a different host (amd64 in my example) to an arm target , arm6 in my example.

It's just matter of personal preference, I don't like /usr/src being touched by anything outside of the actual host system. I have /build/$arch/, each has its own /build/$arch/usr/src.
 
I tried the new recompiled kernel that I pasted inside the image "FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img" virtualized with qemu (5.1) on Linux Ubuntu 22.04 using these parameters :

Code:
UEFICODE=/usr/share/AAVMF/AAVMF32_CODE.fd
UEFIVARS=/usr/share/AAVMF/AAVMF32_VARS.fd
CD=/Dati/img/FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img
DISK=/Dati/img/FreeBSD.img

qemu-system-arm \
   -enable-kvm -serial stdio \
   -m 400 -M virt -cpu cortex-a15 \
   -drive if=pflash,format=raw,unit=0,file=$UEFICODE \
   -drive if=pflash,format=raw,unit=1,file=$UEFIVARS \
   -drive file=$CD,media=disk,format=raw \
   -drive file=$DISK,format=raw \
   -device virtio-net,netdev=net0,mac="52:54:00:12:34:55" \
   -netdev type=user,id=net0 \
   -device virtio-gpu-pci \
   -usb -device nec-usb-xhci \
   -device usb-kbd -device usb-mouse \
   -device vmware-svga,id=video0,vgamem_mb=16

on my ARM chromebook. Unfortunately as you can see below,the error message is clear. The applied patch does not work as expected :

Code:
lo0: link state changed to UP
vtnet0: link state changed to UP
Starting Network: lo0 vtnet0.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vtnet0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
        ether 52:54:00:12:34:55
        media: Ethernet autoselect (10Gbase-T <full-duplex>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Starting devd.
eval: cannot open /dev/ttyv0: No such file or directory
eval: cannot open /dev/ttyv0: No such file or directory
Starting ums0 moused.
eval: cannot open /dev/ttyv*: No such file or directory
Starting dhclient.
DHCPDISCOVER on vtnet0 to 255.255.255.255 port 67 interval 4

Fatal kernel mode data abort: 'Alignment Fault' on read

trapframe: 0xc2dfba78
FSR=00000001, FAR=d0efe01a, spsr=20000013
r0 =00000000, r1 =00000001, r2 =00000001, r3 =c2dfbb64
r4 =00000014, r5 =cf9d5900, r6 =d0efe02e, r7 =0000022c
r8 =00000000, r9 =0000022c, r10=d0efe01a, r11=c2dfbba8
r12=4300ffff, ssp=c2dfbb08, slr=c04a9728, pc =c04a9750

panic: Fatal abort

cpuid = 0
time = 1694861020
KDB: stack backtrace:
#0 0xc035786c at kdb_backtrace+0x48
#1 0xc02fdd20 at vpanic+0x140
#2 0xc02fdbe0 at vpanic+0
#3 0xc06304ac at abort_align+0
#4 0xc063052c at abort_align+0x80
Consoles: EFI console
    Reading loader env vars from /efi/freebsd/loader.env
Setting currdev to disk0p1:
FreeBSD/arm EFI loader, Revision 1.1

It seems that the code of the patch is wrong,even if it has been able to be compiled without giving errors. Or ?
_martin : can you give a look at the code that I've used to check if there is some mistake inside ?
I see that you used :

Code:
TARGET_ARCH=armv6

but the covacat command is based on armv7 :

Code:
make  -DNO_MODULES   KERNCONF=GENERIC TARGET=arm TARGET_ARCH=armv7 buildkernel

Can this make some difference ? The panic generates a trace file,that I have attached.
 

Attachments

I'm not sure what is that trace file. Is that from qemu? Stack trace doesn't seem to be complete (missing stuff after frame #4).

Just to be sure I did the same thing (applied my patch) for armv7 (generic):
Code:
make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv7 KERNCONF=GENERIC
make -j4 -DNO_KERNELDEPEND -DNO_CLEAN installkernel TARGET_ARCH=armv7 KERNCONF=GENERIC DESTDIR=$BASEDIR/build

And copied over dtb kernel directories to a VM used by FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img.
My qemu VM is being executed by:
Code:
qemu-system-arm -M virt -m 2G -s -bios u-boot.bin \
-device virtio-blk-pci,id=pci0,drive=hd0 -drive if=none,id=hd0,file=FreeBSD-13.2-RELEASE-arm-armv7-GENERICSD.img \
-monitor telnet:127.0.0.1:10101,server,nowait \
-device virtio-net-pci,netdev=network0 -netdev user,id=network0,hostfwd=tcp::60022-:22,ipv6=off
And it works just fine:
Code:
[21:48:26] qarm:(~)# uname -a
FreeBSD qarm 13.2-RELEASE FreeBSD 13.2-RELEASE GENERIC arm
[21:48:28] qarm:(~)# ll /boot/kernel/kernel
-r-xr-xr-x  1 root  wheel  12115452 Sep 16 21:30 /boot/kernel/kernel
[21:48:34] qarm:(~)#
 
----> I'm not sure what is that trace file. Is that from qemu? Stack trace doesn't seem to be complete (missing stuff after frame #4).

yes. it is produced when I ran qemu with these parameters :

Code:
qemu-system-arm \
   -enable-kvm -serial stdio \
   -m 400 -M virt -cpu cortex-a15 \
   -drive if=pflash,format=raw,unit=0,file=$UEFICODE \
   -drive if=pflash,format=raw,unit=1,file=$UEFIVARS \
   -drive file=$CD,media=disk,format=raw \
   -drive file=$DISK,format=raw \
   -device virtio-net,netdev=net0,mac="52:54:00:12:34:55" \
   -netdev type=user,id=net0 \
   -device virtio-gpu-pci \
   -usb -device nec-usb-xhci \
   -device usb-kbd -device usb-mouse \
   -device vmware-svga,id=video0,vgamem_mb=16

it has been able to boot FreeBSD until this moment :

Code:
Starting devd.
eval: cannot open /dev/ttyv0: No such file or directory
eval: cannot open /dev/ttyv0: No such file or directory
Starting ums0 moused.
eval: cannot open /dev/ttyv*: No such file or directory
Starting dhclient.
DHCPDISCOVER on vtnet0 to 255.255.255.255 port 67 interval 4

Fatal kernel mode data abort: 'Alignment Fault' on read

First of all,which version of qemu did u use ? because I'm forced to use qemu 5.1,that's the last qemu version which support kvm on arm 32 bit. Secondly,on my qemu parameters I have enabled kvm. Did you enable it,too ?

point 3) : I've just tried to boot Ubuntu,it failed :


Screenshot from 2023-09-16 21-34-24.png



but I don't think this is the reason why FreeBSD failed to boot. The FreeBSD error seems to be correlated with your code. anyway,can you suggest to me what can I use instead of "-device vmware-svga" ? I want to exclude this parameter from the equation.
 
While I run qemu on various OSes this time I used osx - qemu version 8.0.2.

I'm not sure how good kvm support on amd64 hosts with arm targets is. Probably not so good if they dropped it. Try running it without kvm too. I don't use graphics too often with my VMs so I can't help you on the svga parameter.
I use kvm only on Linux amd64 hosts with amd64 targets.

You did hit some sort of alignment issue during read. But stack trace seems small.

Before anything, are you sure you did apply the patch properly and you are booting proper kernel ? You could add one more dummy printf() after my kassert() that would say:
Code:
printf("%s: fudge applied!\n", __func__);
You'd see this message flooded in syslog if you did it properly (you can remove it then).

You shared the register dump. Error occurred on 0xc04a9750. You could use gdb on that kernel and have a look at instruction that is with x/4i 0xc04a9750.
 
Even on a kernel you copied over to VM (i.e. one without debug symbols) you can launch gdb : gdb /path/to/the/kernel and execute the command above.
 
I think I might need code like this on my system but I don't know exactly what SOMETHING is (maybe SOMETHING is V7, maybe it's something else that is defined when building the kernel for armv7 instead of armv6. I know your patch code is triggered for armv6, I want to be sure it also triggered on my system with armv7:

Code:
#if defined __ARM_ARCH || defined __ARMSOMETHING_ARCH
#define VTNET_ALIGNMENT_FUDGE   2
              m->m_data += VTNET_ALIGNMENT_FUDGE;

              KASSERT(size > VTNET_ALIGNMENT_FUDGE,
                      ("%s: mbuf size (%d) is smaller than VTNET_ALIGNMENT_FUDGE (%d)", __func__, size, VTNET_ALIGNMENT_FUDGE));

              m->m_len = size - VTNET_ALIGNMENT_FUDGE;
#else
              m->m_len = size;
#endif  
              if (m_head != NULL) {
                      m_tail->m_next = m;
                      m_tail = m;
              } else
                      m_head = m_tail = m;
      }

      if (m_tailp != NULL)
              *m_tailp = m_tail;

      return (m_head);
}
 
Like this one ?

Code:
gdb kernel-no.bin
"/Dati/img/kernel-no.bin": not in executable format: file format not recognized
(gdb) x/4i 0xc04a9750
0xc04a9750:  Cannot access memory at address 0xc04a9750
(gdb)
 
printf() is the easiest and probaly the most obvious way to check that. I don't have doubts about __ARM_ARCH (I tested it), there's no need to add anything.

Btw. this bug (alignment issue) is a result of a compiler bug that is failing to produce proper code for a given platform under the given circumstances (C code). Patch is just a dirty way of dealing with it.

gdb kernel.bin

FreeBSD's default kernel is /boot/kernel/kernel, it is expected you copied your compiled kernel here (the whole /boot/kernel and /boot/dtb directory actually).
 
To apply my patch I used:

Code:
cd /build/arm6
fetch -o if_vtnet.c.patch https://bugs.freebsd.org/bugzilla/attachment.cgi?id=242127&action=diff
patch -u < if_vtnet.c.patch
cd usr/src
export BASEDIR=/build/arm6
export MAKEOBJDIRPREFIX=/build/arm6/obj
make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv6 KERNCONF=RPI-B
Tested this on current 13.2 release src and it worked just fine.

I want to change method. I want to repatch the file using your method and not the covacat method. So,now I'm using FreeBSD for amd64 and I did :

Code:
mario@marietto:/ # mkdir -p /build/armv7
mario@marietto:/ # fetch -o if_vtnet.c.patch https://bugs.freebsd.org/bugzilla/attachment.cgi?id=242127&action=diff

[1] 7707
fetch: No match.
action=diff: Command not found.
 
My root shell is bash, it has no problem with the ?& characters. Try escaping the whole url with single quotes.

covacat shared you the source file already patched with my patch. So if you copied it over to a proper location you'd get the same results as applying my patch yourself.
 
Code:
mario@marietto:/build/armv7 # bash

[mario@marietto /build/armv7]# fetch -o if_vtnet.c.patch https://bugs.freebsd.org/bugzilla/attachment.cgi?id=242127&action=diff
[1] 7872

[mario@marietto /build/armv7]#  ls
if_vtnet.c.patch

[mario@marietto /build/armv7]# patch -u < if_vtnet.c.patch

Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- usr/src/sys/dev/virtio/network/if_vtnet.c.orig     2023-05-11 20:01:32.446174000 +0000
|+++ usr/src/sys/dev/virtio/network/if_vtnet.c  2023-05-11 22:19:31.079292000 +0000
--------------------------
File to patch:   what should I write here ?
 
File to patch: what should I write here ?
Nothing, assuming you have full sources under /build/armv7/usr/src. Patch should just work. I'm using /tmp/a in my example below.

Code:
# cd /tmp/a
# ll -d /tmp/a/usr/src/
drwxr-xr-x  26 root  wheel  43 Apr  7 00:34 /tmp/a/usr/src/
#

# patch -u < if_vtnet.c.patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- usr/src/sys/dev/virtio/network/if_vtnet.c.orig    2023-05-11 20:01:32.446174000 +0000
|+++ usr/src/sys/dev/virtio/network/if_vtnet.c    2023-05-11 22:19:31.079292000 +0000
--------------------------
Patching file usr/src/sys/dev/virtio/network/if_vtnet.c using Plan A...
Hunk #1 succeeded at 1541.
done
#
 
---> Nothing, assuming you have full sources under /build/armv7/usr/src :

full source of what ? I don't have anything under /build/armv7/usr/src. The only file I have is under /build/armv7 and is called "
if_vtnet.c.patch"

Sources on my installation are under /usr/src ; should I put it also in /build/armv7/usr/src,doing something like this :

cp -r /usr/src /build/armv7

?

I suspect that on your instructions you missed some basic assumptions,giving for granted that I'm experienced. No,I'm not.

Anyway :

[mario@marietto /build/armv7]# patch -u < if_vtnet.c.patch
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- usr/src/sys/dev/virtio/network/if_vtnet.c.orig 2023-05-11 20:01:32.446174000 +0000
|+++ usr/src/sys/dev/virtio/network/if_vtnet.c 2023-05-11 22:19:31.079292000 +0000
--------------------------
Patching file usr/src/sys/dev/virtio/network/if_vtnet.c using Plan A...
Hunk #1 succeeded at 1541.
done
 
It's just matter of personal preference, I don't like /usr/src being touched by anything outside of the actual host system. I have /build/$arch/, each has its own /build/$arch/usr/src.
As I wrote before. I'm using custom location where I build stuff depending on architecture/project.

You used /usr/src. covacat gave you already patched file, I assume you did copy it to proper location (/usr/src/sys/dev/virtio/network/if_vtnet.c) before compiling a kernel. If so it should work just fine.

These steps above then help setting it up.
 
Let's move on. It didn't compile correctly :

The error starts here more or less :

Code:
[mario@marietto /build/armv7]# cd usr/src
[mario@marietto /build/armv7/usr/src]# export BASEDIR=/build/armv7
[mario@marietto /build/armv7/usr/src]# export MAKEOBJDIRPREFIX=/build/armv7/obj
[mario@marietto /build/armv7/usr/src]# make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv7 KERNCONF=GENERIC

......

-Wno-error=empty-body -Wno-error=parentheses-equality -Wno-error=unused-function -Wno-error=pointer-sign -Wno-error=shift-negative-valu
e -Wno-address-of-packed-member -Wno-error=unused-but-set-variable -Wno-format-zero-length   -mfpu=none  -std=iso9899:1999 -Werror  /bu
ild/armv7/usr/src/sys/cam/cam_iosched.c
--- modules-all ---
--- all_subdir_accf_data ---
===> accf_data (all)
[Creating objdir /build/armv7/obj/build/armv7/usr/src/arm.armv7/sys/GENERIC/modules/build/armv7/usr/src/sys/modules/accf_data...]
make[4]: "/build/armv7/usr/src/sys/conf/kmod.mk" line 234: Malformed conditional (!defined(DEBUG_FLAGS) || ${MK_SPLIT_KERNEL_DEBUG} ==
"no")
make[4]: "/build/armv7/usr/src/sys/conf/kmod.mk" line 334: Malformed conditional (defined(DEBUG_FLAGS) && ${MK_SPLIT_KERNEL_DEBUG} != "
no")
make[4]: Fatal errors encountered -- cannot continue
make[4]: stopped in /build/armv7/usr/src/sys/modules/accf_data
 
make[3]: stopped in /build/armv7/usr/src/sys/modules
*** [modules-all] Error code 2
 
make[2]: stopped in /build/armv7/obj/build/armv7/usr/src/arm.armv7/sys/GENERIC
--- cam_iosched.o ---
ctfconvert -L VERSION -g cam_iosched.o
--- cam.o ---
ctfconvert -L VERSION -g cam.o
--- cam_compat.o ---
ctfconvert -L VERSION -g cam_compat.o
1 error
 
make[2]: stopped in /build/armv7/obj/build/armv7/usr/src/arm.armv7/sys/GENERIC
 
make[1]: stopped in /build/armv7/usr/src
 
make: stopped in /build/armv7/usr/src
 
Well it's not my patch that is failing you here. I don't know what env you have set up, seems there are more problems there..
 
I used your instructions,except for TARGET_ARCH=armv7 instead of TARGET_ARCH=armv6 :

Code:
[mario@marietto /build/armv7]# cd usr/src
[mario@marietto /build/armv7/usr/src]# export BASEDIR=/build/armv7
[mario@marietto /build/armv7/usr/src]# export MAKEOBJDIRPREFIX=/build/armv7/obj
[mario@marietto /build/armv7/usr/src]# make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv7 KERNCONF=GENERIC

just because I'm using armv7.
 
Instead,this is what happens if I use armv6:

Code:
[mario@marietto /build/armv7/usr/src]# make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv6 KERNCONF=GENERIC

===> accf_data (all)
[Creating objdir /build/armv7/obj/build/armv7/usr/src/arm.armv6/sys/GENERIC/modules/build/armv7/usr/src/sys/modules/accf_data...]
make[4]: "/build/armv7/usr/src/sys/conf/kmod.mk" line 234: Malformed conditional (!defined(DEBUG_FLAGS) || ${MK_SPLIT_KERNEL_DEBUG} ==
"no")
make[4]: "/build/armv7/usr/src/sys/conf/kmod.mk" line 334: Malformed conditional (defined(DEBUG_FLAGS) && ${MK_SPLIT_KERNEL_DEBUG} != "
no")
make[4]: Fatal errors encountered -- cannot continue
make[4]: stopped in /build/armv7/usr/src/sys/modules/accf_data

make[3]: stopped in /build/armv7/usr/src/sys/modules
*** [modules-all] Error code 2

make[2]: stopped in /build/armv7/obj/build/armv7/usr/src/arm.armv6/sys/GENERIC
--- cam.o ---
ctfconvert -L VERSION -g cam.o
--- cam_compat.o ---
ctfconvert -L VERSION -g cam_compat.o
--- cam_iosched.o ---
ctfconvert -L VERSION -g cam_iosched.o
1 error

make[2]: stopped in /build/armv7/obj/build/armv7/usr/src/arm.armv6/sys/GENERIC

make[1]: stopped in /build/armv7/usr/src

make: stopped in /build/armv7/usr/src
 
I mean your system. It got choked up on something you are maybe setting via make.conf or possibly src.conf.

I tested my patch now on fresh sources with arm7. It does compile and it works.
 
I'm not experienced but I'm not stupid. I used the covacat make :

Code:
make  -DNO_MODULES   KERNCONF=GENERIC TARGET=arm TARGET_ARCH=armv7 buildkernel

and it gave no errors...

Code:
.....
ctfmerge -L VERSION -g -o kernel.full ...
     text     data       bss        dec        hex   filename
  8961526   725784   1998848   11686158   0xb2510e   kernel.full
objcopy --only-keep-debug kernel.full kernel.debug
objcopy --strip-debug --add-gnu-debuglink=kernel.debug  kernel.full kernel
linking kernel.bin
size kernel.bin
     text     data       bss        dec        hex   filename
  8961526   725784   1998848   11686158   0xb2510e   kernel.bin
--------------------------------------------------------------
>>> Kernel build for GENERIC completed on Sun Sep 17 00:39:23 CEST 2023
--------------------------------------------------------------
>>> Kernel(s)  GENERIC built in 188 seconds, ncpu: 16
--------------------------------------------------------------

so. now what's the difference between your make :

Code:
# make -j4 -DNO_KERNELDEPEND -DNO_CLEAN buildkernel TARGET_ARCH=armv7 KERNCONF=GENERIC

and the covacat make ?

Code:
# make  -DNO_MODULES   KERNCONF=GENERIC TARGET=arm TARGET_ARCH=armv7 buildkernel
 
Back
Top