macmini2-intel kernel-5.4.229-arm-akita # ./mybuild-2024 2
[step2] compiling
kernel-5.4.229(arm/zaurus-akita)
| vanilla + patches from Void
| status:
| boots(from SD)
| boots(from CF-microdrive)
| usb-lan DM9601 works
| suspend
| failure on c1k
| success on c3k
| irda/raw serial, added, to be tested
toolchain(armv5tel-softfloat-linux-gnueabi:2.40.0/12)
-----------------------------------------------
checking myhost as qualified_host ... success
checking .config ... success
checking blobs ... success
-----------------------------------------------
gadget_to_do(build) ... overlay/build
cleaning ............... done
gadget_to_do(clean) ... kernel/clean
building kernel ... success
-----------------------------------------------
gadget_to_do(binary) ... overlay/binary
gadget_to_do(sweep) ... kernel/sweep
app_body =kernel.zImage
app_size =5003576 byte
app_size_max=6000000 byte
checking size ... passed
gadget_to_do(binary_report) ... overlay/binary_report
macmini2-intel kernel-5.4.229-arm-akita #
that's how I compile kernels for all the platforms I support, mainly MIPS, POWERPC and HPPA2.
I wrote a "builder" in bash-scripting + C/89, to help managing patches, configuration, and checks
Every build comes with a "profile", which tells about
- the toolchain, with constraints on the min and max versions of binutils and gcc
- the ecosystem (it's called "qualified machines", can also be a chroot, or a container), to ensure you are using the right setup, at least "tested"
- the final size of the kernel
- the final file-format { uboot, elf, bin, zImage, ... }
- etc...
checking .config ... success
Here, it checks a file in ensures that the .config contains options considered "essential", and that it does not contain options considered "to be avoided"
macmini2-intel kernel-5.4.229-arm-akita # cat profile/config_check.list
CONFIG_PANIC_TIMEOUT # without this, panic() loops forever
CONFIG_USB_NET_DM9601 # Davicom DM9601 USBv1.1 10/100 Ethernet NIC
not CONFIG_CMDLINE_FROM_BOOTLOADER # do not allow the bootloader to pass cmdline
CONFIG_CMDLINE_FORCE # built-in cmdline
CONFIG_CMDLINE #
# console=ttyS0,9600n8 console=tty1
# noinitrd
# root=/dev/hda2 /dev/sda2
# init=/bin/bash
# rootfstype=xfs ro
# video=pxafb,mode:640x480-2
# fbcon=rotate:1
# (debug)
CONFIG_EXT2_FS
CONFIG_EXT3_FS
CONFIG_XFS_FS
CONFIG_IKCONFIG # save .config into /proc/config.gz
CONFIG_GPIO_PCA953X # set the GPIOs in Akita
....