官网编译内核
https://www.raspberrypi.org/documentation/linux/kernel/building.md#choosing_sources
编译环境
ubuntu 1404
安装编译软件
交叉编译工具
git clone --depth 1 https://github.com/raspberrypi/tools ~/tools
echo PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin >> ~/.bashrc source ~/.bashrc
安装一些必要的工具库:
sudo apt-get install git bison flex libssl-dev
安装配置内核menuconfig的辅助工具:
sudo apt-get install libncurses5-dev
下载树莓派linux内核,下载master分支,只下载最后一次commit
git clone --depth=1 -b master https://github.com/raspberrypi/linux.git
配置内核
默认配置, For Pi 2, Pi 3, Pi 3+, or Compute Module 3:
./arch/arm/configs/bcm2709_defconfig
cd linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
ARCH=arm,架构是ARM架构,也就是armCPU
CROSS_COMPILE,指定交叉编译工具
bcm2709_defconfig,树莓派默认的内核编译配置
自定义配置
make ARCH=arm CROSS_COMPILE= arm-linux-gnueabihf- menuconfig
编译内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
2018-10-09-raspbian-stretch-lite.img浅析
两个分区
boot,启动分区
linux,linux系统分区
挂载分区
创建挂载点
mkdir mnt
mkdir mnt/boot
mkdir mnt/linux
挂载boot
sudo mount -o loop,offset= ( ( 512 ∗ 8192 ) ) , s i z e l i m i t = ((512 * 8192)),sizelimit= ((512∗8192)),sizelimit=((512 * 524289)) 2019-07-10-raspbian-buster-lite.img mnt/boot
挂载linux
sudo mount -o loop,offset=$((540672* 512)) 2019-07-10-raspbian-buster-lite.img mnt/linux
安装内核模块到mnt/linux
修改root密码,如果不知道的话
sudo passwd root
su root
vim ~/.bashrc
export PATH=$PATH:/home/v/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
source ~/.bashrc
arm-linux-gnueabihf-gcc,测试是否生效
这个命令需要再内核目录下执行
cd linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/v/work/raspbian/mnt/linux modules_install
exit,退出root用户
安装内核到mnt/boot
KERNEL=kernel7
定义一个局部变量,KERNEL的值为kernel7
sudo cp /home/v/work/raspbian/mnt/boot/
K
E
R
N
E
L
.
i
m
g
/
h
o
m
e
/
v
/
w
o
r
k
/
r
a
s
p
b
i
a
n
/
m
n
t
/
b
o
o
t
/
KERNEL.img /home/v/work/raspbian/mnt/boot/
KERNEL.img/home/v/work/raspbian/mnt/boot/KERNEL-backup.img
备份旧内核
sudo cp arch/arm/boot/zImage /home/v/work/raspbian/mnt/boot/$KERNEL.img
拷贝zImage
sudo cp arch/arm/boot/dts/*.dtb /home/v/work/raspbian/mnt/boot/
sudo cp arch/arm/boot/dts/overlays/.dtb /home/v/work/raspbian/mnt/boot/overlays/ sudo cp arch/arm/boot/dts/overlays/README /home/v/work/raspbian/mnt/boot/overlays/
卸载分区
sudo umount /home/v/work/raspbian/mnt/boot
sudo umount /home/v/work/raspbian/mnt/linux
mv 2019-07-10-raspbian-buster-lite.img k2-2019-07-10-raspbian-buster-lite.img
重命名已经替换好内核的镜像文件
烧写镜像
格式化SD卡
SD卡写入img
开机启动
2019-07-10-raspbian-buster-lite.img
pi@raspberrypi:~$ uname -a
Linux raspberrypi 4.19.57-v7+ #1244 SMP Thu Jul 4 18:45:25 BST 2019 armv7l GNU/Linux
升级后的内核,这里是降低内核版本
pi@raspberrypi:~$ uname -a
Linux raspberrypi 4.8.16-v7+ #1 SMP Sun Aug 18 08:57:11 CST 2019 armv7l GNU/Linux
ubuntu 1804显示的跟ubuntu1404显示的不一样,
fdisk -v
fdisk from util-linux 2.31.1
ubuntu1404显示的内容,没有显示扇区大小
fdisk (util-linux 2.20.1)
Diskraspbian-jessie-lite.img:1.3GiB,1390411776 bytes,2715648 sectors
Units: sectors of 1*512=512 bytes
Sectorsize(logical/physical):512 bytes /512 bytes
I/O size(minimum/optimal):512 bytes /512 bytes
Disklabel type: dos
Disk identifier:0x244b8248
Device Boot Start End Blocks Id System
raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux