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

一、linux系统启动过程操作记录

一、linux系统启动过程

经历:
上电–>uboot–>加载内核–>挂载根文件系统–>执行应用程序

uboot等效bootloader,启动过程进行了
跳转到固定的位置执行相应的代码
初始化硬件设备,如:cpu初始化 ,看门狗,时钟,内存,存储设备等。
加载内核代码到内存中。
跳转到内核代码起始位置执行。

uboot下常见指令

printenv 查看环境参数
如串口,网络,boot配置参数等
set bootdelay x 设置uboot停留等待时间
save
reset
配置uboot启动的位置,以及内核的位置
bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000

set ipaddr 192.168.x.x 设置当前设备的ip
set serverip 192.168.x,x+1 设置提供文件的设备ip
set gatewayipp 192.168.x.1 设置网关
set netmask 255.255.255.0 设置子网掩码
saveenv 保存

使用tftp通过网络对文件进行传输传输

tftp 内存地址 文件名
指定内存地址开始运行
go 内存地址

当进行裸机程序测试时:
arm-linux-gcc -c demo.o -nostdlib -O2 编译时不添加标准库,提高优化等级
arm-linux-ld -Ttext 地址 -o demo.elf demo.o 将.o文件链接到对应指定程序运行的地址,输出.elf执行文件
arm-linux-objcopy -O binary demo.elf demo.bin 无操作系统所以,将.elf转为可执行的bin文件

裸机编辑入口函数时为_start(),且需要要放到文件的首位置,否则会终止运行。
反汇编
arm-linux-xxx-objdump -D demo.elf >demo.dis

linux内核的功能与本质

功能:
进程管理
文件系统
设备管理
网络协议
本质:
c语言的函数合集
对硬件的管理与维护
给应用程序提供服务

在linux内核中进行了
解压uImage
初始化硬件设备
静态编译进内核的驱动模块
挂载根文件系统
执行用户空间的程序

http://www.xdnf.cn/news/168769.html

相关文章:

  • 「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言
  • 部署mongodb三幅本集群
  • [Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过(CVE-2024-43441)
  • RagFlow文档切块提升
  • 光敏材料与智能传感技术的能源系统创新研究
  • R语言操作n
  • SpringBoot自动装配
  • pytorch搭建并训练神经网络
  • C++ 基于多设计模式下的同步异步⽇志系统-2项目实现
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(二)
  • git回退commit
  • 如何打包一个QT 程序
  • rockermq多线程消费者配置
  • Android——RecyclerView
  • Qt 中 QSQLITE 和 QODBC 数据库连接的区别
  • CentOS7.9安装OpenSSL 1.1.1t和OpenSSH9.9p1
  • 常用描述性统计 - AxureMost
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(三)
  • Linux命令#文件操作
  • 基于Pytest接口自动化的requests模块项目实战以及接口关联方法详解
  • ubuntu 安装ollama后,如何让外网访问?
  • 《代码整洁之道》第4章 注释 - 笔记
  • Android开发中svg转xml工具使用
  • 微服务基础-Ribbon
  • 2.脚本文件初识
  • 基于单片机的智能药盒系统
  • 【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
  • 贪心算法-860.柠檬水找零-力扣(LeetCode)
  • 关于OCP认证:有Oracle和MySQL两种
  • 【vue3】购物车实战:从状态管理到用户体验的全流程实现