一、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

初始化硬件设备

静态编译进内核的驱动模块

挂载根文件系统

执行用户空间的程序

相关推荐
企鹅的蚂蚁32 分钟前
LubanCat RK3588 实时 Linux 开发(九):从 U-Boot 到 initramfs 的串口启动故障分析
linux·rk3588·u-boot·串口调试·initramfs·linux启动
kkkkkkkkkk_Z1 小时前
学嵌入式和Linux应用编程|学习日记:UDP协议与Wireshark抓包学习笔记
linux·笔记·学习
嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-Shell编程应用实例-提取字符并设置rtc时间
linux
刃神太酷啦1 小时前
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
linux·c语言·数据库·c++·redis·分布式·缓存
大卡片2 小时前
LCD相关知识
linux
闲云野鹤在人间2 小时前
Docker入门|第3章 镜像详解
linux·网络·docker·容器·centos·云计算·php
小卿噢2 小时前
malloc 成功 ≠ 你有内存:一次把 OOM 从头测到尾
linux·后端
团子股股东峥哥2 小时前
day38-RHEL-管理存储堆栈
linux·运维·服务器
闲云野鹤在人间3 小时前
Docker入门|第2章 容器架构详解
linux·运维·docker·容器·架构·云计算
张小姐的猫3 小时前
【AI大模型接入SDK】 —— SQLite上手
linux·开发语言·c++·人工智能·python·log4j