树莓派镜像 DIY 制作

  1. 安装交叉编译环境

    需要一个 Ubunut18.04 的64位的主机 或者直接在树莓派系统上进行编译;

    复制代码
    apt-get update
    apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip
  2. 获取树莓派内核源码

    bash 复制代码
    # 下载成功后,在当前目录下有一个 linux 的文件夹
    git clone --depth=1 https://github.com/raspberrypi/linux --branch rpi-6.6.y

    获取树莓派官方 img 文件

    bash 复制代码
    wget https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2024-10-28/2024-10-22-raspios-bookworm-arm64-lite.img.xz

    解压 2024-10-22-raspios-bookworm-arm64-lite.img.xz

    bash 复制代码
    # 安装解压工具
    sudo apt-get install xz-utils
    # 解压
    xz --decompress --stdout 2024-10-22-raspios-bookworm-arm64-lite.img.xz > 2024-10-22-raspios-bookworm-arm64-lite.img
  3. 编译内核

    bash 复制代码
    # 进入到内核源码
    cd linux
    # 生成配置
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2712_defconfig
    # 配置内核
    make menuconfig
    # 编译内核
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-   -j8
  4. 查看 2024-10-22-raspios-bookworm-arm64-lite.img

    bash 复制代码
    # fdisk -l 2024-10-22-raspios-bookworm-arm64-lite.img
    Disk 2024-10-22-raspios-bookworm-arm64-lite.img: 2.67 GiB, 2864709632 bytes, 5595136 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x385cce61
    
    Device                                      Boot   Start     End Sectors  Size Id Type
    2024-10-22-raspios-bookworm-arm64-lite.img1         8192 1056767 1048576  512M  c W95 FAT32 (LBA)
    2024-10-22-raspios-bookworm-arm64-lite.img2      1056768 5595135 4538368  2.2G 83 Linux
  5. 挂在镜像分区到文件系统

    bash 复制代码
    # 根分区
    # offset: 541065216 = 512*1056768	  sector size:512 bytes     起始地址:1056768
    mount -o loop,offset=541065216 2024-10-22-raspios-bookworm-arm64-lite.img /mnt
    # 启动分区
    # offset: 4194304 = 512*8192,sizelimit:536870912 = 512*1048576
    mount -o loop,offset=4194304,sizelimit=536870912  2024-10-22-raspios-bookworm-arm64-lite.img /mnt/boot
  6. 安装内核, 将编译好的内核以及设备树复制到系统中

    bash 复制代码
    cp linux/arch/arm64/boot/Image /mnt/boot/kernel8.img
    cp linux/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dtb /mnt/boot
  7. 安装内核模块

    bash 复制代码
    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
  8. 调整config.txt

    bash 复制代码
    vim /mnt/boot/config.txt
    
    # 在最后加上 kernel=kernel8.img
  9. 卸载分区

    bash 复制代码
    umount /mnt/boot && umount /mnt
  10. 结束

    可以将 2024-10-22-raspios-bookworm-arm64-lite.img 镜像通过 Raspberry Pi Imager 烧录工具制作系统启动的 SD 卡。

相关推荐
神梦流9 分钟前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
袁煦丞 cpolar内网穿透实验室10 分钟前
精准模拟各种弱网场景!树莓派+ATC打造便携弱网网关。cpolar 内网穿透实验室第781个成功挑战
远程工作·树莓派·内网穿透·cpolar·弱网网关
凡人叶枫11 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog17 分钟前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
xuhe233 分钟前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
Lsir10110_1 小时前
【Linux】进程信号(下半)
linux·运维·服务器
酉鬼女又兒1 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面1 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
zl_dfq1 小时前
Linux 之 【多线程】(pthread_xxx、轻量级进程、原生线程库、线程ID、__thread、线程栈、线程与信号、线程与程序替换)
linux
choke2331 小时前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器