安装:
检查树莓派Linux版本,我的是6.1
uname -r
内核下载链接:
Raspberry Pi · GitHub
找对应版本下载
导入之后,解压安装即可
unzip linux-rpi-6.1.y.zip
其他内容
treee 指令安装 sudo apt-get install tree
使用这个指令查看源码树,相当于手册。
Linux内核源代码目录树结构.
arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存在1386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。
block:部分块设备驱动程序。
crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。
bocumentation:关于内核各部分的通用怪释和注释
drivers:设备驱动程序,每个不同的驱动占用一个子目录。(推荐阅读)
fs:各种支持的文件系统,如ext、fat、ntfs等.
include:头文件。其中,和系统相关的头文件被放置在linux子目录下。
init:内核初始化代码(注意不是系统引导代码)。
ipc:进程间通信的代码。
kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放arch/*/kernel目录下
lib:库文件代码。
mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。
net:网络相关代码,实现了各种常见的网络协议。
scripts:用于配置内核文件的脚本文件。
security:主要是一个SELinux的模块。
sound:常用音频设备的驱动程序等。
usr:实现了一个cpio.
在1386体系下,系统引导将从arch/1386/kernel/head.s开始执行,并进而转移到init/main.c中的
树莓派Linux内核源码配置
树莓派Linux源码配置
驱动代码的编写需要一个提前编译好的内核,编译内核就必须配置。
配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核
第一种方式:
cp 厂家.config .config
第二种方式:
make menuconfig 一项项配置,通常是基于厂家的config来配置
第三种方式:
完全自己来
linux源码中有很多工程:
树莓派1的工程是bcmrpi_defconfig;
树莓派2、3的工程是bcm2709_defconfig。
注意:树莓派4b的不能安照上面的方法
先使用 sudo apt-get install git 获取git 指令
获取树莓派4的内核源代码:git clone --depth=1 https://github.com/raspberrypi/linux.git
进入内核源代码目录:cd linux
设置交叉编译环境变量:export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
运行配置命令:make bcm2835_defconfig
在使用上面这个命令make bcm2835_defconfig的时候如果有下图的错误
需要使用: sudo apt-get update
sudo apt-get install flex
sudo apt-get install bison
再运行:make bcm2835_defconfig
另外:如果之前没有安装ncurses 库,可以现在安装
sudo apt-get update
sudo apt-get upgrade libncurses5 libncursesw5
构建内核:make
安装内核:make modules_install
sudo make install
这个不一定适合所有人,仅供参考。有不足之处请留言,另外大家在安装一些东西的时候经常会遇见各种错误,虽然大部分错误都能在CSDN上找到,但是版本可能已经过时,或者根本不合适大家,建议大家把错误信息复制到AI去问AI有时候会节省很多很多查找时间。虽然问AI这个习惯不一定好,但是可以节约时间去干跟多事情,毕竟大部分人安装了需要的东西之后不久就会忘记或者一直沿用,所以没必要浪费太多时间去找错误帮助。