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

初始化硬件设备

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

挂载根文件系统

执行用户空间的程序

相关推荐
铁手飞鹰1 小时前
从零复现论文:深度学习域适应1
linux·pytorch·python·深度学习·ubuntu·ai·迁移学习
瑶总迷弟4 小时前
在 CentOS 7.6 上安装 Oracle WebLogic Server 12c 详细教程
linux·oracle·centos
156082072194 小时前
在飞腾D2000/8平台下ubuntu内核添加WX1860和WX1820的驱动
linux·ubuntu
心灵宝贝4 小时前
如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
linux·运维·centos
云心雨禅4 小时前
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
linux·服务器·数据库·缓存·memcached
鹿鸣天涯5 小时前
Kali Linux 2025.3 正式发布:更贴近前沿的安全平台
linux·运维·安全
奶茶树6 小时前
【Linux】基础指令
linux·服务器
半路_出家ren6 小时前
在Linux中安装应用
linux·apt·yum·rpm
CheungChunChiu6 小时前
在嵌入式 Linux 上配置 PulseAudio 默认输出设备的完整指南
linux·运维·ubuntu·audio·pulseaudio
^Lim6 小时前
ubuntu编译freerype报错找不到libfreetype.la
linux·chrome·ubuntu