linux 烧写树莓派sd卡,树莓派3b+从0开始:(2)SD卡的配置

从上篇文章里已经了解到,ROM里的出厂代码决定了:GPU启动之后,只能去SD卡上的FAT32格式的文件系统里的目录下,寻找一个叫bootcode.bin的启动文件。所以,将SD卡里肯定有一个FAT32的分区。这个分区里存放启动文件bootcode.bin(阶段1)、类似U-Boot的BootLoader文件名叫start.elf(阶段2)和Linux内核文件kernel.img(阶段3)。

Linux启动以后,肯定要挂载根文件系统,那么显然SD卡里还需要一个EXT4格式的分区,EXT4是Linux御用的文件系统格式。这样一来,SD卡就有两个分区,一个FAT分区放启动文件和内核,一个EXT4分区放Linux操作系统文件。

官网上给出的SD卡安装镜像文件raspbian-stretch.img,你可以使用SD卡烧录软件etcher或者其他烧录软件,把镜像烧写到SD卡里。我们可以用二进制编辑软件winhex打开镜像看一下里面是啥:

图1 官方raspbian-stretch.img内容

你看,如文所述,里面有两个分区 。SD卡最开始预留了一段4MB的空白,两个分区之间有820KB的间隔(为了后面对齐)。

烧写完镜像之后,SD卡就变成图片中的样子。SD卡插在电脑上,win10系统只能读到一个FAT32分区,另一个分区显示磁盘没有格式化(win系统不认EXT4)。

把SD卡插入树莓派,上电就可以看到开机启动logo了,然后等一会儿就可以进入Raspbian系统。

另外,官方还推荐了另一套看似简单的办法,使用NOOBS工具。我不推荐使用NOOBS,因为它把事情弄得很复杂。

简单说一下:如果你把NOOBS解压后放在格式化为FAT32的SD卡里,开机后NOOBS内核会把SD卡的后续一部分空间格式化为EXT4,用来挂载NOOBS内核的文件系统;然后解压缩os目录下的boot.tar.xz(内核在里面),并把SD卡的再后续一部分空间格式化为FAT32,然后把boot.tar.xz的内容放进去;再解压root.tar.xz(操作系统在里面),再把SD卡的再后续一部分空间格式化为EXT4,然后把root.tar.xz的内容放进去。这样子,你的SD卡就有四个分区:FAT32 --> EXT4 --> FAT32 --> EXT4。把你的SD卡渗透得和筛子一样,让你想拿板砖拍人。

八卦时间到,为什么会诞生NOOBS这样一套看起来画蛇添足的办法呢?

据论坛里的水贴说,树莓派某Boss发话,“我们需要更简单的办法!我们要把系统文件直接复制粘贴到SD卡里就可以用!要让最小白的小白也能上手!” 于是,苦逼的程序员们,加班加点弄了一套NOOBS。

我的下一篇文章是《(3)移植最常用的BootLoader:U-Boot》。

你可能感兴趣的:(linux,烧写树莓派sd卡)