根文件系统制作并启动 Linux
根文件系统制作并启动 Linux
busybox 下载链接:https://busybox.net/
下载
wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2
解压
tar -vxf busybox-1.36.1.tar.bz2
并进入其根目录
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-gnueabihf-
make defconfig
make menuconfig
# 勾选 Settings-> [*] Build static binary (no shared libs)
make -j6
make install
上述步骤执行完后在 busybox 根目录生成了一个 _install 文件夹。
随便找一个目录,来创建 linux 的根文件系统
# 随便找一个目录,创建 linux 的根文件系统
cd rootfs# 将 _install 的所有文件拷贝到 rootfs 文件夹中
cp -r /home/tyustli/code/open_source/busybox/busybox-1.36.1/_install/* ./# 复制库文件
mkdir lib
cp -r /home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/lib/* lib/# 创建设备节点
mkdir dev
cd dev
# 创建多个 tty 设备,注意子设备号不要重复
sudo mknod -m 666 tty1 c 4 1
sudo mknod -m 666 tty2 c 4 2
sudo mknod -m 666 tty3 c 4 3
sudo mknod -m 666 tty4 c 4 4
sudo mknod -m 666 tty5 c 4 5
sudo mknod -m 666 tty6 c 4 6
# 创建一个控制台节点
sudo mknod -m 666 console c 5 1
# 创建一个空节点
sudo mknod -m 666 null c 1 3cd ../../
# 生成虚拟 SD 卡系统镜像
sudo dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
# 格式化镜像
sudo mkfs.ext3 rootfs.ext3#将根文件系统中的文件复制到镜像中
sudo mkdir tmpfs # 创建一个临时目录
sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop # 将 rootfs.ext3 镜像挂载到 tmpfs 目录下
sudo cp -r rootfs/* tmpfs/ # 将 rootfs 目录下所有文件拷贝到 tmpfs 目录下,即拷贝的到 rootfs.ext3 镜像中
sudo umount tmpfs # 将临时挂载的文件系统卸载掉
上面的步骤执行完后,rootfs.ext3 镜像中就包含了 rootfs 目录下的所有内容,此时linux的根文件系统就已经制作完成,下一步就是使用这个 rootfs.ext3 镜像来启动 linux 内核
linux 启动文件
sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb -nographic \
-append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd /home/tyustli/code/open_source/busybox/rootfs.ext3
这里比之前多指定了一个 sd 镜像。
linux 启动日志
#0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 37
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/bus@40000000/bus@40000000:motherboard-bus@40000000/bus@40000000:motherboard-bus@40000000:iofpga@7,00000000/10007000.kmi/serio1/input/input2
drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
EXT4-fs (mmcblk0): mounting ext3 file system using the ext4 subsystem
EXT4-fs (mmcblk0): mounted filesystem b28f1697-44d3-4ac5-879c-fffa4116c9cc r/w with ordered data mode. Quota mode: disabled.
VFS: Mounted root (ext3 filesystem) on device 179:0.
Freeing unused kernel image (initmem) memory: 1024K
Run /sbin/init as init process
random: crng init done
can't run '/etc/init.d/rcS': No such file or directoryPlease press Enter to activate this console.
~ # drm-clcd-pl111 10020000.clcd: DVI muxed to daughterboard 1 (core tile) CLCD
drm-clcd-pl111 10020000.clcd: initializing Versatile Express PL111
amba 1000f000.wdt: deferred probe pending
amba 10020000.clcd: deferred probe pending
amba 100e0000.memory-controller: deferred probe pending
amba 100e1000.memory-controller: deferred probe pending
amba 100e5000.watchdog: deferred probe pending
i2c 0-0039: deferred probe pending~ # ls
bin lib lost+found usr
dev linuxrc sbin
~ #
相关文章:
根文件系统制作并启动 Linux
根文件系统制作并启动 Linux busybox 下载链接:https://busybox.net/ 下载 wget https://busybox.net/downloads/busybox-1.36.1.tar.bz2解压 tar -vxf busybox-1.36.1.tar.bz2 并进入其根目录 export ARCHarm export CROSS_COMPILEarm-none-linux-gnueabihf- m…...
JSKarel教学编程机器人使用介绍
JSKarel教学编程机器人使用介绍 为了避免被编程语言固有的复杂性所困扰,有一个被称为卡雷尔(Karel)机器人的微型世界(microworld)的简化环境,可以让编程初学者从中学习理解编程的基本概念,而不…...
换低挡装置(Kickdown, ACM/ICPC NEERC 2006, UVa1588)rust解法
给出两个长度分别为n1,n2(n1,n2≤100)且每列高度只为1或2的长条。需要将它们放入一个高度为3的容器(如图3-8所示),问能够容纳它们的最短容器长度。 样例 2112112112 2212112 1012121212 2121…...
Windows10用Navicat 定时备份报错80070057
直接按照网上的教程配置定时任务发现报错,提示参数非法之类的,80070057。 搜索加自己测试发现是用户权限问题。 设置任务计划的时候,我用了用户组,选了administors,在勾选上run with hightest privileges。 查找用户…...
JimuReport 积木报表 v1.6.4 稳定版本正式发布 — 开源免费的低代码报表
项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…...
为什么要把 String 设计为不可变?
将字符串设计为不可变具有多个重要的原因: 线程安全性: 不可变字符串可以在多线程环境中共享而无需额外的同步措施。因为字符串不会改变,多个线程可以同时访问它而不会导致竞态条件或数据不一致性。 缓存和性能优化: 字符串不可变…...
华为OD机考算法题:服务器广播
题目部分 题目服务器广播难度难题目说明服务器连接方式包括直接相连,间接连接。A 和 B 直接连接,B 和 C 直接连接,则 A 和 C 间接连接。直接连接和间接连接都可以发送广播。 给出一个 N * N 数组,代表 N 个服务器,mat…...
Android ViewBinding和DataBinding功能作用区别
简述 ViewBinding和DataBinding都是用于在 Android 应用程序中处理视图的工具,但它们有不同的作用和用途。 ViewBinding: ViewBinding 是 Android Studio 的一个工具,用于生成一个绑定类,能够轻松访问 XML 布局文件中的视图。ViewBinding 为…...
【云计算网络安全】DDoS 攻击类型:什么是 ACK 洪水 DDoS 攻击
文章目录 一、什么是 ACK 洪水 DDoS 攻击?二、什么是数据包?三、什么是 ACK 数据包?四、ACK 洪水攻击如何工作?五、SYN ACK 洪水攻击如何工作?六、文末送书《AWD特训营》内容简介读者对象 一、什么是 ACK 洪水 DDoS 攻…...
springboot 导出word模板
一、安装依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version></dependency>二、定义工具类 package com.example.springbootmp.utils;import com.deepoove.poi.XWP…...
Angular安全专辑之五 —— 防止URL中敏感信息泄露
URL 中的敏感数据是指在网址上的机密或者个人信息,包括 UserId, usernames, passwords, session, token 等其他认证信息。 由于URL 可能会被第三方拦截和查看(比如互联网服务商、代理或者其他监视网络流量的攻击者),所以URL中的敏…...
vueday01——文本渲染与挂载
1.定义html样式字符串 const rawHtml "<span stylecolor:red>htmlTest</span>" 2.创建标签,分别渲染普通文本和html文本 <p> 你好<span v-html"rawHtml"></span></p> 3.代码展示 4.结果展示...
Prometheus的Pushgateway快速部署及使用
prometheus-pushgateway安装 一. Pushgateway简介 Pushgateway为Prometheus整体监控方案的功能组件之一,并做于一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙&…...
spring cloud config 占位符 application用法
前一篇讲过spring cloud config pattern 的用法,但是在使用spring cloud config的时候,我们经常会根据config client的application name来选择对应的central config的路径,当然spring cloud config官网也给出了相关的说明,但是说的并不算明朗,也没有举例说明在spring clou…...
SAP ERP系统解决光伏电池产业管理难题
无锡哲讯聚焦光伏行业的业务需求和流程,推出SAP光伏能源行业整体化解决方案。该系统着眼于“企业管理信息化、资源合理配置、利润扩张”三个方面,提供实用丰富的管理功能,同时具有较高的信息综合利用效率。SAP解决方案实现了光伏企业产、供、…...
el-table的formatter属性的使用方法
一、formatter是什么? formatter是el-table-column的一个属性,用来格式化内容。(比如后台给你返0或1,你需要展示成“否”和“是”) 二、详细使用 1.知道formatter之前: 代码如下(示例&#…...
高质量床上用品类网站带手机端的pbootcms模板
模板介绍: 这是一个基于PbootCMS内核开发的床上用品类网站模板,专为床上用品、家用纺织类企业设计和开发。它不仅提供了网站界面简洁简单、易于管理的特点,还附带了测试数据,方便用户进行演示和学习。 模板特点: 采用…...
paddlenlp:社交网络中多模态虚假媒体内容核查(特征篇)
初赛之特征构造 写在前面一、安装paddleOCR二、代码部分三、模型优缺点四、写在最后 写在前面 通过前面两篇文章的介绍,我们可以大致的知道模型用到的特征分为四块:qCap,qImg,captions,imgs。根据这些特征,…...
【网络】总览(待更新)
网络Ⅰ 零、概述0. 网络协议1. 网络协议分层OSI 七层模型TCP/IP 五层模型 2. 协议报头3. 通信过程 一、应用层1.1 🔗HTTP 协议1.2 🔗HTTPS 协议 二、传输层2.1 端口号2.2 netstat - - 查询网络状态2.3 pidof - - 查看服务器的进程 id2.4 🔗UD…...
策略模式——多重if-else解决方案
概念 大量的 if 判断操作,逻辑比较复杂,并且处理起来相对麻烦。可以采用策略模式来优化分支代码。 策略模式 💤:是一种行为设计模式,它允许你在运行时根据不同情况选择不同的算法或行为。 设计模式 🤌&…...
避坑指南:为什么你的PyTorch 1.8 + CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖
避坑指南:为什么你的PyTorch 1.8 CUDA 10.1跑不了Grad-CAM?深入torch.fx模块依赖 当你兴致勃勃地准备用Grad-CAM可视化模型注意力时,终端突然抛出ModuleNotFoundError: No module named torch.fx——这个看似简单的报错背后,其实…...
达达主义AI艺术正在消失?深度起底平台内容审核算法对“无意义美学”的误判逻辑(含绕过策略与伦理边界声明)
更多请点击: https://intelliparadigm.com 第一章:达达主义AI艺术正在消失? 达达主义以反逻辑、反美学、拥抱偶然性为内核,而当代AI艺术生成工具却日益依赖确定性提示词工程、风格迁移约束与商业审美对齐——这种张力正悄然消解达…...
AD21编译报错“contains floating input pins”?别慌,可能是你的元件库电气类型没设对
AD21编译报错“contains floating input pins”深度解析与实战解决方案 当你满怀信心地在AD21中完成PCB设计,点击编译按钮时,突然跳出的"contains floating input pins"报错就像一盆冷水浇下来。这个看似简单的错误提示背后,隐藏着…...
【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?
📌 PDF:大白话说Java面试题 — 02-JVM篇 第15题:JVM有哪些垃圾收集算法 📚 回答: 核心概念: JVM 的垃圾收集算法是垃圾回收的核心机制,决定了如何高效地标记和回收内存中的垃圾对象。常见的垃…...
Power Query处理月度报表,遇到数据有null怎么办?详解【标准】运算与自定义列的计算逻辑差异
Power Query空值处理实战:标准运算与自定义列的计算逻辑深度解析 财务总监Lisa盯着屏幕上满是错误标记的月度汇总报表,眉头紧锁。她刚刚用Power Query合并了六个部门的销售数据,却发现总金额列出现了大量意料之外的null值——这直接导致季度预…...
图表数据提取神器:WebPlotDigitizer让科研图表重获新生
图表数据提取神器:WebPlotDigitizer让科研图表重获新生 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 你是否曾面对论文中…...
在VSCode+GCC+STM32环境中实现非阻塞式串口调试:中断驱动的printf重定向实践
1. 为什么需要非阻塞式串口调试 在嵌入式开发中,串口调试就像是我们和硬件对话的"嘴巴"和"耳朵"。想象一下,当你和朋友聊天时,如果每次说话都要等对方完全听完才能做其他事情,那该有多难受?传统的…...
Promises/A+性能优化指南:让你的异步代码运行得更快
Promises/A性能优化指南:让你的异步代码运行得更快 【免费下载链接】promises-spec An open standard for sound, interoperable JavaScript promises—by implementers, for implementers. 项目地址: https://gitcode.com/gh_mirrors/pr/promises-spec 在Ja…...
解放双手!绝区零智能自动化工具让你的游戏体验翻倍升级
解放双手!绝区零智能自动化工具让你的游戏体验翻倍升级 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 还在为《…...
RK3506开发板PWM输入捕获配置与调试实战指南
1. 项目概述:在RK3506上搞定PWM输入捕获最近在做一个工业网关项目,需要精确测量外部传感器发来的PWM信号频率和占空比,核心板选型正好落在了触觉智能的RK3506开发板上。这块板子接口丰富,性能也够用,但上手调试PWM输入…...
