Preparing to develop for the Linux Kernel
MIT License
The purpose of this repo is to get you started with packages and resources necessary to develop for the Linux Kernel
The check.sh script checks and installs the required packages to compile Linux Kernel for your distribution.
Usage: bash check.sh
Example:
Gcc OK
Clang OK
Make OK
Binutils OK
Flex OK
Bison OK
Perl OK
Bc OK
OpenSSL OK
kmod OK
Util-Linux OK
e2fsprogs OK
### If everything is OK above you should be able to compile
jfsutils NO
reiserfsprogs NO
squashfs-tools NO
pcmciautils NO
quota-tools OK
PPP NO
nfs-utils OK
nfs-utils OK
Xfsprogs OK
udev NO
Grub NO
Mcelog NO
Iptables OK
Git OK
GCC is a compiler for C and C++ programming languages, the Linux Kernel is written in C and GCC is it's default compiler
Clang is an "LLVM native" C/C++/Objective-C compiler a substitute to GCC. Distributions such as Android, ChromeOS use Clang built kernels. 😄 Pronounced klang, not see-lang.
Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
Binutils is a collection of software development tools containing a linker, assembler and other tools to work with object files and archives.
Flex is a tool that generates programs that perform pattern-matching on text.
Bison is a general-purpose parser generator that converts a grammar description (Bison Grammar Files) for an LALR(1) context-free grammar into a C program to parse that grammar, the linux kernel build system generates parsers during build. This requires bison 2.0 or later.
Might wonder why perl? Obviously the Linux Kernel isn't written in Perl but it is needed to built some packages, you need perl 5 and the following modules: Getopt::Long
, Getopt::Std
, File::Basename
, and File::Find
to build the kernel.
bc is used during the kernel build to generate time constants in header files. Perl was formerly used but required a mechanism to support Perl < 5.8 installations lacking the Math::BigInt
module check this commit. Though this could still be implemented with C or Perl.
Module signing and external certificate handling use the OpenSSL and crypto library to do key creation and signature generation.
kmod is a multi-call binary which implements the programs used to control Linux Kernel modules. Linux distributions use modules in order to load only the needed driver for the system based on the hardware present, instead of building all possible drivers in the kernel to one large chunk.
These are the basic packages required listed, you can find others here
Read more about mutt
Read more about git
Both scripts help with the configuration of email.
Usage: bash mutt_setup.sh
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git