Linux 之 Uboot/GRUB
BootLoader
引言:
打开设备的电源,BIOS开机自检,按BIOS中设置的启动设备的顺序(通常是硬盘)启动。跳线/帽,或者 PCB图中的顺序
PCB图中有很多的GPIO设备引脚:固定的地址,可以外接各种设备(LCD等)
接着启动设备上安装的引导程序lilo/ winPE / bootmanager 或 grub 开始拷贝、引导Linux、unix、windows
uboot嵌入式bootloader严重依赖于硬件实现
汽车ECU中, 指代码更新程序
bootloader要实现的功能:
- 初始化硬件设备
- 建立正确的内存空间映射
- 初始化栈
- 检测并初始化内存
- 初始化全局变量
- 加载程序,将非易失性存储器中的特定软件组拷贝到RAM中,传递 tags 参数 并 运行
U-Boot
# 编译&& 裁剪**
# u-boot
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_ca9x4_defconfig
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig # setting bootcmd and other load-media
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- qemu-system-arm \-M vexpress-a9 \-kernel u-boot\-nographic \-m 512M \
# -nic tap # else add some env cmd
编译添加自己的 cmd on u-boot命令行模式 !
添加自己的所有权等功能。
./common 文件夹下 add authorize.c
./common 文件夹下 modify Makefile:# echo obj-y += authorize.o" > ./common/Makefile
#include <common.h>
#include <command.h>static int authorize(struct cmd_tbl *cmdtp, int flag, int argc,char *const argv[])
{ int i = 0;for(i=0; i< argc; ++i){printf("-author %d : [ %s ] not authored \n !", i, argv[i]);};return 0 ;
}U_BOOT_CMD(author, 4, 1, authorize, # 4 max_argv "Print the authors :","\n"," 张三,李四,王二麻子。。。"
);
U-BOOT 引导方法:
自动执行 bootcmd 环境变量内的内部的指令( copy bootm ):
bootcmd=ext4load mmc 2:1 0X48000000; bootm 0x48000000
a. 将内核镜像搬移到某一个地址: tftpboot 0x48000000 uImage
b. 到这个地址进行执行 二进制的 arch架构 可执行程序 : bootm 0x48000000在boot倒计时 3 2 1时候(按下键盘的回车键,将进入到uboot的命令行模式) 进入uboot交互模式,自己输入命令 拷贝 / 引导 内核镜像可执行程序 :
=>tftpboot 0x48000000 uImage && bootm 0x48000000
bootargs=root=/dev/mmcblk0p8 init=/linuxrc console=ttySACI,115200 lcd=wy070ml tp=gslx680
GRUB/2
GRUB源代码分析总结
- 通过对整个源代码的分析,大致上整个GRUB启动到引导其他操作系统分为如下几个步骤。
- 第一步 开机后,通过BIOS装载Stage1模块
- 第二步 通过Stage1模块装载Start模块
- 第三步 通过Start模块将整个GRUB的内核载入内存
- 第四步通过GRUB的一个Shell的机制,作为一个小型的操作系统,来通过指令的方式装载不同的其他操作系统。
****以标记列表(tagged_list)的形式来传递启动参数 --> copy&run内核–> dead * * * *
Linux 之 Uboot/GRUB相关推荐
- 一个在windowsXP启动linux as(grub引导)的简单方法
一个在windowsXP启动linux as(grub引导)的简单方法: 1.下载grub for dos 0.2.0 final 下载地址:http://newdos.yginfo.net/grub ...
- I.MX6 Android 5.1 纯Linux、U-Boot编译
/****************************************************************************** I.MX6 Android 5.1 纯L ...
- linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统
标题 +=================================================+ | 从硬盘安装 Linux 和从 GRUB 命令行启动操作系统 | +======== ...
- linux fedora35让GRUB 2记住上一次启动的操作系统
linux fedora35让GRUB 2记住上一次启动的操作系统 修改符号链接/boot/grub2/grubenvWiki上说对于Fedora 20以上的要修改/boot/grub2/gruben ...
- linux学习笔记——grub故障排除
注:本文为本人学习笔记,故只代表本人的理解,如有错误,请见谅并欢迎指正 1.grub简介 详细描述请自行搜索网络,非常多.这里只简单引用网络上的描述.grub是电脑的启动管理程序.是 计算机启动后运行 ...
- linux分区表与uboot,Linux和Uboot下eMMC boot分区读写
关键词:eMMC boot.PARTITION_CONFIG.force_ro等. 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT.RPMB和UDA一般是默认存在的,gpp分区需 ...
- linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc
启动linux停留在grub提示符的解决方法 想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面(Solution 1-3),或者是在Windows中删除了Linux分 ...
- linux grub error 22,Linux系統grub常見錯誤問題解決
Linux在現在已經很強大了,導致Linux系統越來越受到電腦用戶的歡迎,於是很多人開始學習Linux時,學習時你可能會遇到Linux系統grub常見錯誤問題,這裡將介紹Linux系統grub常見錯誤 ...
- 大白菜linux系统安装步骤,GRUB简单入门教程
一.什么是多重操作系统引导管理器,什么是GRUB: 1.什么是多重操作系统引导管理器及工作原理: 系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载.传输控制到操作系统的内核,一旦 ...
最新文章
- Windows数据类型探幽——千回百转你是谁?(2)
- 菜鸟学Linux 第050篇笔记 dhcp
- 错误:Parameter ‘0‘ not found.Available parameters are [arg1, arg0, param1, param2]的解决方法
- 随笔18 java中的类加载器
- 深度学习DL蒙特卡洛法平衡态分子动力学模拟并计算苯酚键值
- 台湾大学林轩田机器学习基石课程学习笔记2 -- Learning to Answer Yes/No
- Magento 获取有效属性 Display available options for attributes of Configurable
- Deep Learning的基本思想以及训练过程
- 【网络安全工程师面试合集】—CSRF跨站请求伪造 攻击及防御
- php5.5.35安装,如何安装php5
- 青岛工学院计算机专业分数线,青岛工学院分数线
- CF1041E Tree Reconstruction
- Dubbo实现分布式架构原理
- 【Linux】imx6ull Kernel 源码下载和编译环境配置
- magisk安装失败_刷入magisk+TWRP+Riru+edxposed教程!
- 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析(系列二)
- 我们小时候可没这么牛的露天电影
- 如何将 Credly 中的数字徽章转成二维码
- 手机计算机藏应用,手机“计算器”隐藏功能,一键把隐私照片加密
- 配置Druid数据源监控
热门文章
- strcmp函数的使用
- 多宝福袋系统开发模式介绍
- NRE论文总结:Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification
- dnf剑魂buff等级上限_DNF昨天·今天·明天:小晶体上架无数量限制,公会本奖励再增加...
- 水性氟碳涂料行业调研报告 - 市场现状分析与发展前景预测
- @Amap/Amap-vue使用(踩坑)记录
- 什么是PyPy? 更快的Python而无痛苦
- labelme-mask
- 使用银联商务实现微信小程序支付
- 条件随机场(CRF)极简原理与超详细代码解析