当前位置: 首页 > news >正文

hi3518ev200 从sd卡启动rootfs

板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs。

1. 准备rootfs

由于需要从sd卡中加载 rootfs,因此需要把我们编译生成的rootfs下载到sd卡中。这里我们使用 ext4 文件系统。

将sd卡通过读卡器接入到PC上,这里接入后,出来的分区设备是 /dev/sdc1,先将其格式化为 ext4:

umount /dev/sdc1
sudo mke2fs -t ext4 -F -L "rootfs" /dev/sdc1

格式化完成后,挂载分区,然后把编译的跟文件系统复制到这个分区中即可:

mkdir /tmp/rootfs
sudo mount /dev/sdc1 /tmp/rootfs
tar -xvf /media/linuxdata/workspace/buildroot-2022.02.8/output/images/rootfs.tar -C /tmp/rootfs/
umount /dev/sdc1

拔下sd卡,将其插到板卡上。

2. 挂载rootfs

由于默认uboot不支持emmc sd卡驱动,因此,无法从sd卡中加载kernel。所以先从 Flash 中加载 kernel,先将 kernel 和 initrd 加载 RAM中,然后运行kernel,kernel启动后,会先挂载 initrd 为初始的/,然后进行一系列的初始化后,再挂载真正的 rootfs。默认是从 Flash 中去挂载这个 rootfs,bootargs 参数为 setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'

这里需要将root参数修改为如下:

set bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mmcblk0p1 rw rootwait'

完整的参数如下:

set bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 init=/linuxrc'

我这里只要加了下面的参数(blkdevparts),就会报错导致挂载失败:

set bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 init=/linuxrc blkdevparts=mmcblk0:-(rootfs.ext4)'

失败报错如下:

mmc1: error -84 whilst initialising SD card
usb 1-1.2: new high-speed USB device number 4 using hiusb-ehci
mmc1: new high speed SDHC card at address 5048
mmcblk0: mmc1:5048 SD32G 29.7 GiBmmcblk0: p1(rootfs)
List of all partitions:
b300        31178752 mmcblk0  driver: mmcblkb301        31178752 mmcblk0p1 00000000-0000-0000-0000-000000000000
No filesystem could mount root, tried:  ext4
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,1)

那么,使用上面最简单的参数就可以了。

保存,然后启动:

sa
sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000

挂载成功:

mmc1: error -84 whilst initialising SD card
usb 1-1.2: new high-speed USB device number 4 using hiusb-ehci
mmc1: new high speed SDHC card at address 5048
mmcblk0: mmc1:5048 SD32G 29.7 GiBmmcblk0: p1
EXT4-fs (mmcblk0p1): warning: mounting fs with errors, running e2fsck is recommended
EXT4-fs (mmcblk0p1): recovery complete
EXT4-fs (mmcblk0p1): mounted filesystem with writeback data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:1.
devtmpfs: mounted
Freeing init memory: 148K
EXT4-fs (mmcblk0p1): re-mounted. Opts: (null)
devpts: called with bogus options
Starting syslogd: OK
Starting watchdogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev... OK
Initializing random number generator: OK
Saving random seed: OK
Starting iptables: OK
Starting network: OK
Starting dhcpcd...
dhcpcd-9.4.1 starting
sandbox unavailable: seccomp
DUID 00:01:00:01:c7:92:bc:85:00:00:00:00:00:00
sandbox unavailable: seccomp
forked to background, child pid 592
ADDRCONF(NETDEV_UP): eth0: link is not ready

启动成功,sd卡是一张32G的内存卡:

# df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/root            ext4           29.0G    187.5M     27.3G   1% /
devtmpfs             devtmpfs       28.7M         0     28.7M   0% /dev
tmpfs                tmpfs          28.8M         0     28.8M   0% /dev/shm
tmpfs                tmpfs          28.8M     36.0K     28.8M   0% /tmp
tmpfs                tmpfs          28.8M     32.0K     28.8M   0% /run
#

相关文章:

hi3518ev200 从sd卡启动rootfs

板卡为 hisi 的 hi3518ev200,16M RAM,64M Flash。板卡不支持从SD卡启动,但是由于Flash空间有限,很多应用都放不下,因此考虑把 rootfs 放到 SD 卡中。先从 Flash 中启动 kernel,然后再加载 SD 卡中的 rootfs…...

[BUUCTF NewStar 2023] week5 Crypto/pwn

最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…...

使用seldom编写http接口用例

在编写接口用例的过程中,针对一个接口,往往只是参数不同,那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活,这里仅介绍file_data() 的N种玩法。 二维列表 当参数比较简单时可以试试下面的方式。 参数化数据 {"…...

Redis中Hash类型的命令

目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…...

Java 函数式编程

1.Lambda 1.1 格式 JDK 从 1.8 版本开始支持 Lambda 表达式,通过 Lambda 表达式我们可以将一个函数作为参数传入方法中。在 JDK 1.8 之前,我们只能通过匿名表达式来完成类似的功能,但是匿名表达式比较繁琐,存在大量的模板代码&…...

类的成员函数总结

前言: 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现,编译器会生成的…...

java高级之单元测试、反射

1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法,执行在所有方法之后 3.被Before标记的方法,执行在每一个Test方法之前 4.被After标记的方法,执行在每一个Test方法之后 public …...

MSQL系列(十三) Mysql实战-left/right/inner join 使用详解及索引优化

Mysql实战-left/right/inner join 使用详解及索引优化 前面我们讲解了BTree的索引结构,也详细讲解下Join的底层驱动表 选择原理,今天我们来了解一下为什么会出现内连接外连接,两种连接方式,另外实战一下内连接和几种最常用的join…...

前端面试题之HTML篇

1、src 和 href 的区别 具有src的标签有:script、img、iframe 具有href的标签有:link、a 区别 src 是source的缩写。表示源的意思,指向资源的地址并下载应用到文档中。会阻塞文档的渲染,也就是为什么js脚本放在底部而不是头部的…...

Django ORM:数据库操作的Python化艺术

Django的对象关系映射器(ORM)是其核心功能之一,允许开发者使用Python代码来定义、操作和查询数据库。这篇文章将带你深入了解Django ORM的强大之处,从基本概念到高级查询技巧,提供丰富的示例帮助你掌握使用Django ORM进…...

react受控组件与非受控组件

React中的组件可以分为受控组件和非受控组件: 受控组件:受控组件是指组件的值受到React组件状态的控制。通常在组件中,我们会通过state来存储组件的值,然后再将state的值传递给组件的props,从而实现组件的双向数据绑定…...

小米产品面试题:淘宝为何需要确认收货?京东为何不需要?

亲爱的小米粉丝们,大家好!我是小米,一个热爱技术、热衷于分享的小编。今天,我要和大家聊聊一个有趣的话题:为什么淘宝购物需要确认收货,而京东不需要?这可是一个让很多人纳闷的问题,…...

(1)上位机底部栏 UI如何设置

上位机如果像设置个多页面切换: 位置: 代码如下: "tabBar": {"color": "black","selectedColor": "#d43c33","borderStyle":"black","backgroundColor": …...

中国多主数据库:压强投入,期待破茧

拿破仑曾说:“战争的艺术就是在某一点上集中最大优势兵力”,强调了力量集中的重要性。 如今,国际形势风云变幻,西方世界对中国的围剿不再仅仅体现在军事和地缘政治上,而更多表现在经济与科技上。在科技领域&#xff0…...

JavaScript在ES6及后续新增的常用新特性

JavaScript经历了不同标本的迭代,在不断完善中会添加不同的新特性来解决前一个阶段的瑕疵,让我们开发更加便捷与写法更加简洁! 1、箭头函数: 箭头函数相比传统的函数语法,具有更简洁的语法、没有自己的this值、不会绑…...

试试流量回放,不用人工写自动化测试case了

大家好,我是洋子,接触过接口自动化测试的同学都知道,我们一般要基于某种自动化测试框架,编写自动化case,编写自动化case的依据来源于接口文档,对照接口文档里面的请求参数进行人工添加接口自动化case 其实…...

密钥管理系统功能及作用简介 安当加密

密钥管理系统的功能主要包括密钥生成、密钥注入、密钥备份、密钥恢复、密钥更新、密钥导出和服务,以及密钥的销毁等。 密钥生成:通过输入一到多组的密钥种子,按照可再现或不可再现的模式生成所需要的密钥。一般采用不可再现模式作为密钥生成…...

vue中watch属性的用法

在Vue中,watch属性用于监听一个数据的变化,并且在数据变化时执行一些操作。它可以观察一个具体的数据对象,从而在该数据对象发生变化时触发对应的回调函数。 使用watch属性的步骤如下: 在Vue实例中添加一个watch对象 new Vue({…...

Redis-使用java代码操作Redis

🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这…...

0基础学习PyFlink——事件时间和运行时间的窗口

大纲 定制策略运行策略Reduce完整代码滑动窗口案例参考资料 在 《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》一文中,我们使用的是运行时间(Tumbling ProcessingTimeWindows)作为窗口的参考时间: reducedkeyed.window(TumblingProcess…...

CS4.0实战:手把手教你搭建Cobalt Strike渗透测试环境(附避坑指南)

CS4.0实战:从零构建企业级红队测试环境的完整指南 当企业安全团队需要模拟真实攻击者的战术时,Cobalt Strike 4.0(CS4.0)无疑是当前最强大的红队协作平台之一。不同于简单的漏洞扫描工具,CS4.0提供的是完整的攻击生命周…...

HCIP IP-VLAN 实验报告

一、实验拓扑二、实验思路1、完成二层vlan的划分,实现二层隔离 2、三层IP配置 3、DHCP配置按照要求在拓扑图上标注了一下三、测试1、划分接口情况(display port vlan active)SW1SW2SW32、IP 配置情况 (display ip interface brief)R13、DHCPR1池塘配置(display ip p…...

如何快速安装和配置Pop Shell:面向初学者的完整教程

如何快速安装和配置Pop Shell:面向初学者的完整教程 【免费下载链接】shell Pop!_OS Shell 项目地址: https://gitcode.com/gh_mirrors/sh/shell Pop Shell是一款功能强大的窗口管理扩展,专为提升Linux桌面操作效率设计。本教程将带您逐步完成Pop…...

3大核心功能彻底解决环世界MOD管理难题:RimSort完整指南

3大核心功能彻底解决环世界MOD管理难题:RimSort完整指南 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-ma…...

Gerrit与GitLab单向同步实战:配置详解与常见问题排查

1. 为什么需要Gerrit与GitLab单向同步? 在代码管理的工作流中,Gerrit和GitLab各自扮演着不同角色。Gerrit以强大的代码审核机制著称,而GitLab则更擅长作为Git仓库托管平台。很多团队既想保留GitLab现有的CI/CD流程,又希望引入Gerr…...

HR 人才库管理全解:从搭建到激活的实操指南

人才是企业发展的核心资源,HR 人才库管理作为人力资源管理的重要环节,是企业沉淀、激活与复用人才资源的关键手段。传统人才管理模式下,信息分散、检索低效、资源沉睡等问题普遍存在,难以支撑企业高效招聘与长期人才储备需求。 系…...

3大维度解锁BG3 Mod Manager潜能:构建高效博德之门3模组管理体系

3大维度解锁BG3 Mod Manager潜能:构建高效博德之门3模组管理体系 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 价值定位:重…...

IDR:交互式Delphi重构工具 - 从二进制迷雾到代码清晰的逆向工程解决方案

IDR:交互式Delphi重构工具 - 从二进制迷雾到代码清晰的逆向工程解决方案 【免费下载链接】IDR Interactive Delphi Reconstructor 项目地址: https://gitcode.com/gh_mirrors/id/IDR 揭开逆向工程的神秘面纱:Delphi程序分析的痛点与破局 在软件维…...

实战起步:基于快马ai生成集成openclaw的windows自动化监控项目脚手架

实战起步:基于快马AI生成集成OpenClaw的Windows自动化监控项目脚手架 最近在做一个网络资源监控的小项目,需要在Windows环境下使用OpenClaw工具。作为一个经常被环境配置折磨的开发者,这次尝试用InsCode(快马)平台来生成完整的项目脚手架&am…...

老游戏兼容性终极解决方案:让经典游戏在现代Windows系统重生

老游戏兼容性终极解决方案:让经典游戏在现代Windows系统重生 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/…...