当前位置: 首页 > 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
初始化硬件设备
静态编译进内核的驱动模块
挂载根文件系统
执行用户空间的程序

相关文章:

  • 插入排序(直接插入排序、折半插入排序和希尔排序)
  • C++中析构函数
  • log4cpp进阶指南
  • LeetCode 每日一题 2025/4/21-2025/4/27
  • 关于Spark知识点与代码测试的学习总结
  • element-ui dropdown 组件源码分享
  • 【c++】AVL树模拟实现
  • Comfy UI 笔记
  • 文章记单词 | 第47篇(六级)
  • 面试记录1-春招补录0427
  • 基础学习:(9)vit -- vision transformer 和其变体调研
  • 《大型网站技术架构-核心原理与案例分析》笔记
  • UV工具的安装与使用
  • Leetcode:283. 移动零
  • Scala 函数柯里化及闭包
  • 343. 整数拆分
  • Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(二)
  • 【SF】在 Android 显示系统中,图层合成方式 Device 和 Client 的区别
  • 信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV
  • 汽车产业链主表及类别表设计
  • 监狱法修订草案提请全国人大常委会会议审议
  • 上海出台灵活就业人员公积金新政:不限户籍、提取自由,6月起施行
  • 科学时代重读“老子”的意义——对谈《老子智慧八十一讲》
  • 中纪报:五一节前公开通报释放强烈信号,以铁律狠刹歪风邪气
  • 第二十届中国电影华表奖揭晓!完整获奖名单来了
  • 上海超万套保租房供应高校毕业生,各项目免押、打折等优惠频出