0%

linux设备启动过程

一开始就是芯片厂商的引导程序了,然后就到uboot,接着加载内核和驱动,挂载根文件系统,加载虚拟文件系统,加载tty中断,自启动开机脚本和软件。

uboot

uboot 属于bootloader的一种,是用来引导启动内核的,它的最终目的就是,从flash中读出内核,放到内存中,启动内核

所以,由上面描述的,就知道,UBOOT需要具有读写flash的能力。

uboot使用

uboot刚开始被放到flash中,板子上电后,会自动把其中的一部分代码拷到内存中执行,这部分代码负责把剩余的uboot代码拷到内存中,然后uboot代码再把kernel部分代码也拷到内存中,并且启动,内核启动后,挂着根文件系统,执行应用程序。

为什么要uboot

1)uboot主要作用是用来启动操作系统内核。体现在uboot最后一句代码就是启动内核。
2)uboot还要负责部署整个计算机系统。体现在uboot最后的传参。3)uboot中还有操作Flash等板子上硬件的驱动。例如串口要打印,ping网络成功,擦除、烧写flash是否成功等。
4)uboot还得提供一个命令行界面供人来操作。很简单,至少你能看到。

计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM)。而一般的PC机启动过程为:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了)。

uboot环境变量
uboot修改
uboot烧写
uboot和裸机

一般uboot都是有一个开机时间,也就是倒计时,这个期间进行任意键输入就会取消加载内核,从而变成变成裸机开发。

此时就是跟51的单片机开发一样了,对着手册看着寄存器进行编写,然后把代码编译完毕,ftp传到特定地址,然后去运行那个地址的代码,就是裸机运行了,不过这个一般只是用来测试硬件的而已,不会真的裸机开发的。

总结

什么地方用到了ISO?

这里的iso,可不是网络七层协议/OSI七层模型。

这刚入门linux,搞VMware虚拟机的都应该见过,但是,当时大家都是萌新嘛,谁记得那么多东西,库库一顿导入,虚拟机跑起来就高兴了,然后就是跟着那些博客、手册一步步配置环境了。

这里就用一个镜像系统,也就是ISO,是有人把ubuntu、Debian这类系统拷贝了一份得到了镜像,生成了ISO格式,然后VMware虚拟机才能加载系统,才能干之后的事情。这样一说,估计大家就有印象了。

IMG又是啥?
两者差异是什么?
我想要搞一个自己的系统
ISO怎么生成
IMG怎么生成
总结

都是加载系统的,不过,两者差异还是比较大,一个类似hex,一个类似bin,但是他们的目的都是一样为了得到一个系统镜像。

Linux的缓冲区
重定向
文件标识符
日志系统
历史操作
操作查询