Skip to content

gportay/kmake

Repository files navigation

kmake

NAME

kmake - maintain kernel dependencies by extending Kbuild

DESCRIPTION

kmake(1) runs on top of make(1) using a set of Makefiles to extend the Kbuild's features.

It enhances the kernel build-system with the build of a tiny rootfs and an additional Qemu target to emulate the linux kernel alongside a userland.

The userland is a tiny InitRAMFS cpio archive based on a static build of busybox(1). It contains many common UNIX utilities into a single small executable.

MAN PAGE

Build the man page using asciidoctor

$ make doc
asciidoctor -b manpage -o kmake.1 kmake.1.adoc
gzip -c kmake.1 >kmake.1.gz
rm kmake.1

INSTALL

Run the following command to install kmake(1)

$ sudo make install

Traditional variables DESTDIR and PREFIX can be overridden

$ sudo make install PREFIX=/opt/kmake

or

$ make install DESTDIR=$PWD/pkg PREFIX=/usr

TRY IT

Here is a quick example to try kmake(1) on host.

PREREQUISITES

Fetch the kernel sources using the target linux_download from kmake(1)

$ make linux_download
...

Go in the sources and configure linux using the host features and save the configuration into .config file

$ cd linux
$ make menuconfig 
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/mconf.o
  YACC    scripts/kconfig/zconf.tab.c
  LEX     scripts/kconfig/zconf.lex.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTLD  scripts/kconfig/mconf
scripts/kconfig/mconf  Kconfig
#
# using defaults found in arch/x86/configs/x86_64_defconfig
#
configuration written to .config

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

THE KERNEL IMAGE

Use kmake(1) to build the kernel image

$ kmake

Note: It is equivalent to run make(1)

$ make

THE USERLAND ARCHIVE

Fetch the busybox sources using the target busybox_download from kmake(1)

$ kmake busybox_download
...

... and then use kmake(1) to build the userland archive

$ kmake initramfs.cpio

EMULATE

Use the target runqemu from kmake(1) to emulate the kernel alongside the userland using qemu(1)

$ kmake runqemu

LINKS

Check for kmake(1) man-page and its examples.

Enjoy!

BUGS

Report bugs at https://github.com/gportay/kmake/issues

AUTHOR

Written by Gaël PORTAY gael.portay@gmail.com

COPYRIGHT

Copyright (C) 2019 Gaël PORTAY 2018 Savoir-Faire Linux Inc.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

SEE ALSO

make(1), busybox(1), qemu(1)

About

maintain kernel dependencies by extending Kbuild

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published