Karena program-program itu dibuat untuk menggunakan hal-hal yang didefinisikan dalam header kernel:
busybox-1.22.1]$ egrep -RHn '^#include <linux'
modutils/modutils-24.c:194:#include <linux/elf-em.h>
include/fix_u32.h:17:#include <linux/types.h>
libbb/loop.c:11:#include <linux/version.h>
console-tools/openvt.c:23:#include <linux/vt.h>
console-tools/kbd_mode.c:23:#include <linux/kd.h>
console-tools/showkey.c:19:#include <linux/kd.h>
util-linux/blockdev.c:36:#include <linux/fs.h>
util-linux/mkfs_ext2.c:50:#include <linux/fs.h>
util-linux/mkfs_vfat.c:28:#include <linux/hdreg.h> /* HDIO_GETGEO */
util-linux/mkfs_vfat.c:29:#include <linux/fd.h> /* FDGETPRM */
....
Untuk setiap alat tertentu, Anda harus membaca sumber alat dan header kernel yang relevan untuk mencari tahu apa sebenarnya.
Anda dapat melihat beberapa hal yang dikomentari untuk membuatnya mudah.
Misalnya, mkfs_vfat
termasuk linux/fd.h
untuk mendapatkan FDGETPRM
:
$ egrep -RHn FDGETPRM util-linux/mkfs_vfat.c
util-linux/mkfs_vfat.c:29:#include <linux/fd.h> /* FDGETPRM */
util-linux/mkfs_vfat.c:351: int not_floppy = ioctl(dev, FDGETPRM, ¶m);
Anda mungkin dapat menghapus yang relevan #include
dan mengawasi kesalahan kompiler untuk membuatnya lebih mudah, Anda akan mendapatkan peringatan bahwa beberapa hal tidak didefinisikan. Hal-hal itu kemungkinan berasal dari header kernel.