百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

树莓派4B初级6-移植bootloader和rootfs

ninehua 2025-05-03 15:55 3 浏览

后面想使用buildroot和yocto来构建raspberry os。这里用手动的方式来移植bootloader和rootfs,通过这种方式和自动化方式做对比,更能突出后者的优势。

系统从上电到界面显示大致的流程如下,其中必备的3个阶段:bootloader、kernel和rootfs。RomCode是内嵌在CPU或者GPU中的,开发者无法进行修改。

在这里通过移植bootloader和rootfs,对该启动过程有更深入的了解。

环境:

  • ubuntu 22.04
  • raspiberry 4B
  • U盘 64G

U盘格式化

Raspberry4B默认是支持U盘启动的,启动前需要进行格式化,创建2个分区,ROOT和BOOT。

  • BOOT - 启动分区,该分区包含了bootloader,kernel,dtb和一些配置文件如cmdline.txt和config.txt等;
  • ROOT -根分区,主要包含根文件系统

步骤如下:

1.查看U盘设备:fdisk -l

2.通过parted命令对其进行格式化并创建2个分区:

  • boot分区格式为fat32,start位置为1M,end位置为100M;
  • root分区格式为ext4,start位置为100M,end位置为U盘剩余空间。
sudo umount /dev/sdb1
sudo parted -s /dev/sdb mklabel msdos mkpart primary fat32 1M 100M mkpart primary ext4 100M 100%

查看结果是否成功:lsblk

3.对创建的分区进行格式化,即创建文件系统

sudo mkfs.vfat /dev/sdb1 
sudo mkfs.ext4 /dev/sdb2  

4.对分区创建卷标,对应window的C\D等盘符

sudo fatlabel /dev/sdb1 BOOT
sudo e2label /dev/sdb2 ROOT 

5.创建2个文件夹,分别挂载分区到主机

sudo mkdir /mnt/BOOT
sudo mkdir /mnt/ROOT
sudo mount /dev/sdb1 /mnt/BOOT
sudo mount /dev/sdb2 /mnt/ROOT

查询分区UUID

每个分区都对应有一个UUID,可以通过blkid查看,由于这里会移植rootfs,移植的文件中会带有分区的静态信息(/etc/fstab),启动的时候系统会读取该文件并相应的挂载各个目录,如果说创建的分区的UUID和rootfs的不对应,会导致起不来。

sudo blkid
  • BOOT - PARTUUID=caa6cd92-01
  • ROOT - PARTUUID=caa6cd92-02

Bootloader

下载bootloader文件并copy到BOOT分区,github国内较慢,也可以直接gitee

git clone https://github.com/raspberrypi/firmware.git
或者
git clone https://gitee.com/KisChang/raspberrypi_firmware.git

把firmware文件夹中的boot所有文件copy到BOOT分区:

sudo cp -r firmware/boot/* /mnt/BOOT/

系统系统后的console输出需要借助cmdline.txt文件,正常刷镜像后也是存在该文件的,现在需要手动创建,其中xxx为root分区的PARTUUID:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=xxx rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

启动

启动后系统会有报错,[end Kernel panic] --not syncing: no working init found.xxx。

这里发生了panic,主要原因是找不到init进程,该文件存在于rootfs中,还没有移植rootfs的原因。

移植rootfs

上面步骤已经完成了bootloader移植的工作,接下来移植rootfs。

由于这里还没有用buildroot和yocto编译rootfs,需要借助NOOBS安装系统中的。

下载入口:
https://downloads.raspberrypi.org/NOOBS/images/NOOBS-2022-04-07/NOOBS_v3_8_1.zip。

把下载好的rootfs.tar.xz复制到U盘的ROOT分区,并进行解压,由于文件较多,并且和U盘的性能有关系,解压过程比较耗时,本人的环境下1h左右。

sudo cp root.tar.xz /mnt/ROOT/
tar xvf root.tar.xz

开机

解压完成后插到开发板上启动,正常情况下会报错:Cannot open access to console, the root account is locked,是由于rootfs中的/etc/fstab分区信息和手动创建PARTUUID不对应,需要进行修改。

编辑/etc/fstab,按照blkid中获取到的PARTUUID进行修改,在VM中进行编辑:vim /etc/fstab:

proc                    /proc           proc    defaults          0       0
PARTUUID=caa6cd92-01    /boot           vfat    defaults          0       2
PARTUUID=caa6cd92-02   /               ext4    defaults,noatime  0       1

编辑完后即可重启完成。

相关推荐

最简单的大白菜U盘装系统教程(2021大白菜u盘装系统教程)

今天我们介绍如何使用大白菜U盘启动重装系统,这里主要是使用win10系统作为教程。首先在装系统之前你需要准备以下的必备工具:8G以上的U盘电脑(台式,笔记本均可)下载U盘启动制作工具接下来我们首先来制...

如何实现黑客系统Kali linux系统下的U盘启动(小白指导)

按照官方网站的定义,KaliLinux是一个高级渗透测试和安全审计Linux发行版。作为使用者,我简单的把它理解为,一个特殊的Linux发行版,集成了精心挑选的渗透测试和安全审计的工具,供渗透测试和...

树莓派4B初级6-移植bootloader和rootfs

后面想使用buildroot和yocto来构建raspberryos。这里用手动的方式来移植bootloader和rootfs,通过这种方式和自动化方式做对比,更能突出后者的优势。系统从上电到界面显...

u盘启动盘重装win8,u盘一键安装windows8系统

win8系统使用的人不多,很多人基本都是通过u盘重装win8系统的方法使用上win8.有些网友想了解如何重装win8系统,下面小编就给大家介绍一个简单的u盘启动盘制作工具如何重装win8系统_小白一键...

秒杀一众PE系统,制作强大的U盘启动系统,自制新一代装机神器

安装电脑系统的方式有很多,是一个既复杂又简单的工作,有时候几分钟就可以装好,而有些时候却要折腾几个小时。重装系统的时候有很大一部分原因就是因为系统损坏,无法正常进入系统才选择的重装,就拿以前安装原版W...

闲置U盘变废为宝!电脑系统出了问题再也不求人|启动U盘制作教程

经常和电脑打交道的朋友,大约多多少少碰到过硬件故障或者系统故障吧。普通的用户,在电脑软硬件出现问题的时候,限于技术难度,只能求助于别人,而不能自己动手解决。但实际上,对于一些简单的电脑故障,我们自己完...

自己想装电脑系统的福音 看看U盘启动大全

现在自己想给点安装系统的人很多。因为现在安装系统简单了,系统能进去的有硬盘安装法。系统不能进去的有U盘安装法。那么U盘安装法的步骤是什么呢?首先准备一个U盘制作成U盘启动盘。u盘启动软件网上搜索一下很...

如何安装电脑系统,使用Ventoy打造多系统启动U盘

大家好,我是眼睛君。上一篇内容分享了如何使用微软官方的WindowsMediaCreationTool制作Windows10/11的安装启动U盘,对于偶尔需要重装系统的普通用户来说,官方工具在使...

3种可快速查出电脑如何一键U盘启动的方法送给大家!

在进行系统重装或维护的时候,除了自己熟悉的电脑,大部分的人都需要查询下目标电脑的一键U盘启动快捷键是什么,高手还好说,对新手而言,时常是百度几番查,依旧心茫然,有木有?因此,小编特别整理了3种可快速查...

U盘+Ventoy工具,让电脑多系统启动变得更加丰富

前言Ventoy是一款开源免费的多合一系统安装盘/启动盘制作工具,支持Windows系列与Linux几乎所有主流发行版。它最大的作用在于,可以在1个U盘或移动硬盘里集成N款不同类型的操作系统安...

电脑装系统制作U盘启动详细教程,免费帮大家解决装系统难题!

现在一些小白还在为装系统到电脑城装操作系统为难,笔者教大家不用出门求别人免费在家就可以自己装操作系统。一、准备工作:1、先准备一个32G或64G的U盘(越大越好,多存几个操作系统,方便以后灵活安装操作...

百毒不侵!软碟通制作隐藏PE启动U盘教程

下载一个WinPE的ISO光盘镜像想写入到U盘制作成WinPE启动U盘?或者说,下载了一个原版的Windows的ISO光盘镜像文件想将写入到U盘里做成一个Windows系统安装U盘?或者你就想知道,用...

Dell戴尔进入新版bios设置u盘启动教程

  Dell戴尔电脑新版bios与其他旧版的不一样,用户设置更方便简单,但是在一定程度上区别了老版的Bios。  Dell戴尔进入新版bios设置u盘启动  1、开机按F2进入BIOS设置界面,打开S...

教你如何用U盘启动盘装系统(用u盘启动怎样安装系统教程)

电脑重装系统其实是一件很简单的事,但是如果电脑没有光驱或者没有系统光盘,那么要重装系统却是非常难的。那么怎么才能比较简单的重装系统呢?这里给大家介绍一下如何用U盘启动盘装系统。首先需要准备好我们需...

如何制作macOS Big Sur 系统启动U盘

制作可引导macOSBigSurU盘启动是一种在Mac电脑上安装macOS新副本快速、便捷又干净的方法。制作macOSBigSur启动盘,有备无患。U盘在创建macOSU盘启动之前,...