1. 编译内核
默认编译bzImage,位于arch/x86/boot/bzImage
make -j4
- -j4: 根据CPU内核数编译
2. 编译模块
- 编译所有模块
make modules -j4
- 编译指定模块
make SUBDIRS=drivers/net/can/sja1000 modules
3. 安装内核模块
make INSTALL_MOD_PATH=output/ INSTALL_MOD_STRIP=" --strip-debug --strip-unneeded" modules_install
- INSTALL_MOD_PATH:将模块安装到指定目录下,不添加则默认安装到根目录/, 会自动生成文件夹lib/modules/<内核版本>
- INSTALL_MOD_STRIP:安装模块时的strip选项,可以减小模块大小
如果需要手动安装其他模块或调整模块的路径,则需要执行下面的命令,重新生成模块依赖文件
depmod -b output 4.19.59-rt24
- -b:内核模块所在的路径
- 4.19.59-rt24:内核版本号
4. 安装内核
安装内核会自动生成四个文件:
System.map-4.19.59-rt24 config-4.19.59-rt24 initrd.img-4.19.59-rt24 vmlinuz-4.19.59-rt24
1. 安装内核到系统
make install
2. 安装内核到指定目录
make install INSTALL_PATH=output/boot/
这样只能生成三个文件,缺少一个initrd.img。
2.1 制作initrd.img
- 将内核模块目录软链接到/lib/modules下
ln -s `pwd`/output/lib/modules/4.19.59-rt24 /lib/modules
- 生成initrd.img
update-initramfs -c -k 4.19.59-rt24 -b output/boot
update-initramf会根据配置文件/etc/initramfs-tools/initramfs.conf生成initrd.img,可以配置加载哪些模块及压缩算法。