树莓派内建驱动boot分区

树莓派目录结构
    
    /boot 放置Linux内核以及其他用来启动树莓派的软件包

    /bin 放置与Raspbian有关(包括运行图形界面所需的)的二进制可执行文件

    /dev 这是虚拟文件夹之一,用来访问所有连接设备,包括存储卡

    /etc 系统管理和配置文件

    /home Linux上的我的文档,包含用户名命名的文件夹

    /lib 各种应用需要的代码库

    /lost+found 一般情况下是空的,当系统非法关机后,这里就存放了一些文件

    /media 放置可移动存储驱动器,比如USB和CD

    /mnt 用来手动挂在外部硬件驱动器或存储设备

    /opt 可选软件文件夹,非系统部分的软件将会放置在这里

    /sbin 放置超级用户使用的系统管理命令

    /sys 放置操作系统文件

    /tmp 放置临时文件

    /usr 放置用户使用的程序

    /var 虚拟文件,用于程序保存数据

1./boot分区内的文件都有什么用?

树莓派引导文件存储在SD卡的第一个分区中,即/boot分区,该分区的文件系统是FAT,所以可以在Windows,macOS和Linux设备上读取这个分区。

当树莓派通电时,它将从启动分区(/boot)中加载各种文件以启动各种处理器,然后启动Linux内核。

当Linux启动后,启动分区将挂载为/boot


bootcode.bin

这是引导加载程序,由SoC在引导时加载,它执行一些非常基本的设置,然后加载其中一个start*.elf文件。Raspberry Pi 4上未使用bootcode.bin,因为它已由板载EEPROM中的启动代码替换

start.elf,start_x.elf,start_db.elf,start_cd.elf,start4.elf,start4x.elf,start4cd.elf,start4db.elf

这些是二进制 (blob) 固件,已加载到SoC中的VideoCore上,然后接管启动过程。 start.elf是基本固件,start_x.elf包括相机驱动程序和编解码器,start_db.elf是固件的调试版本,start_cd.elf是简化版本,不支持编解码器和3D之类的硬件模块,并且在gpu_mem=16中指定时使用config.txt。

start4.elfstart4x.elfstart4cd.elfstart4db.elf是树莓派4的固件文件。


fixup* .dat

这些是链接器文件,与 start*.elf 上一节中列出的文件配对。


cmdline.txt

引导时,内核命令行会传递到内核。

pi@raspberrypi:/boot $ cat cmdline.txt 
console=serial0,115200 console=tty1 root=PARTUUID=d9b3f436-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

config.txt

树莓派因为没有BIOS,所以Raspbian对设备的加载都是依赖在  /boot/config.txt  中的配置来加载。当Linux内核加载时,会读取  /boot/config.txt  中的设备配置和设备参数配置来把设备动态加载到Device Tree(DT)中。

dtoverlay=<device>
dtparam=<param1>,<param2>,...
  • dtoverlay上配你想要加载设备,这些设备都必须是Raspbian支持的,它们位于/boot/overlays下。这是设备他们的说明位于/boot/overlays/README,可以在这里查看到Raspbian支持的每个设备的具体信息和参数(也可以直接在官方Github查阅最新的设备支持)
  • dtparam是设备的参数,具体信息可根据/boot/overlays/README中的说明来配置

issue.txt

一些基于文本的管家信息,其中包含分发的日期和git commit ID。

pi@raspberrypi:/boot $ cat issue.txt 
Raspberry Pi reference 2019-09-26
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, 80d486687ea77d31fc3fc13cf3a2f8b464e129be, stage4

ssh或ssh.txt

如果存在此文件,则将在启动时启用SSH。内容无关紧要,可以为空。否则默认情况下禁用SSH。


wpa_supplicant.conf

这是用于配置无线网络设置的文件(如果硬件具备此功能)。编辑国家代码和网络部分以适合您的情况。使用方式可以参考这篇文章设置树莓派wifi的几种方式


设备树文件

有各种设​​备树blob文件,其扩展名为.dtb。它们包含树莓派各种模型的硬件定义,并在启动时用于根据检测到的树莓派模型来设置内核。


内核文件

引导文件夹将包含用于不同树莓派型号的各种内核映像文件:

文档名称 处理器 Raspberry Pi模型 笔记
kernel.img BCM2835 Pi zero,Pi 1  
kernel7.img BCM2836,BCM2837 Pi 2,Pi 3 后来的Pi 2使用BCM2837
kernel7l.img BCM2711 Pi 4 大型物理地址扩展(LPAE)
kernel8.img BCM2837,BCM2711 Pi 2,Pi 3,Pi 4 Beta 64位内核1。带有BCM2836的早期Pi 2不支持64位。

注:lscpu 该架构报告是 armv7l,表示用于32位系统(即除了kernel8.img一切),以及 aarch64 用于64位系统。所述的 armv7l 情况下指的是被架构小端,而不是 LPAE 如由所指示l的 kernel7l.img 文件名。


设备树覆盖

overlays子文件夹中包含设备树覆盖。这些用于配置可能连接到系统的各种硬件设备,例如Raspberry Pi Touch Display或第三方音板。使用以下条目中的条目来选择这些覆盖层config.txt

上一篇:CRC32碰撞攻击上传符合校验的可执行ELF文件


下一篇:RPATH是什么